diff --git a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/BasicHKLFilters.h b/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/BasicHKLFilters.h
deleted file mode 100644
index 8081a3ebe33d623b95637c87a4995dfab5e02f74..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/BasicHKLFilters.h
+++ /dev/null
@@ -1,162 +0,0 @@
-#ifndef MANTID_GEOMETRY_BASICHKLFILTERS_H_
-#define MANTID_GEOMETRY_BASICHKLFILTERS_H_
-
-#include "MantidGeometry/DllConfig.h"
-#include "MantidGeometry/Crystal/HKLFilter.h"
-#include "MantidGeometry/Crystal/ReflectionCondition.h"
-#include "MantidGeometry/Crystal/StructureFactorCalculator.h"
-#include "MantidGeometry/Crystal/SpaceGroup.h"
-#include "MantidGeometry/Crystal/UnitCell.h"
-
-#include <strstream>
-
-namespace Mantid {
-namespace Geometry {
-
-/** BasicHKLFilters
-
-  This file contains some implementations of HKLFilter that
-  provide filtering based on things like d-value, space group
-  or centering.
-
-  A common use would be to generate a specific list of HKLs,
-  for example all reflections that are allowed according to a certain
-  range of d-values and the reflection conditions of a space group:
-
-    HKLFilter_const_sptr filter =
-        boost::make_shared<HKLFilterDRange>(unitCell, 0.5)
-      & boost::make_shared<HKLFilterSpaceGroup>(spaceGroup);
-
-    HKLGenerator gen(unitCell, 0.5);
-    std::vector<V3D> hkls;
-
-    std::remove_copy_if(gen.begin(), gen.end(), std::back_inserter(hkls),
-                        (~filter)->fn());
-
-  An existing list of HKLs could be checked for indices that match the
-  reflection conditions of a space group:
-
-    HKLFilter_const_sptr sgFilter =
-        boost::make_shared<HKLFilterSpaceGroup>(spaceGroup);
-
-    auto matchingHKLCount = std::count_if(hkls.begin(), hkls.end(),
-                                          sgFilter->fn());
-
-    auto violatingHKLCount = std::count_if(hkls.begin(), hkls.end(),
-                                          (~sgFilter)->fn());
-
-  Combining HKLGenerator and different HKLFilters provides a very flexible
-  system for creating and processing specific sets of Miller indices that
-  is easy to expand by adding other HKLFilters.
-
-      @author Michael Wedel, ESS
-      @date 23/09/2015
-
-  Copyright &copy; 2015 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
-  National Laboratory & European Spallation Source
-
-  This file is part of Mantid.
-
-  Mantid is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 3 of the License, or
-  (at your option) any later version.
-
-  Mantid is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-  File change history is stored at: <https://github.com/mantidproject/mantid>
-  Code Documentation is available at: <http://doxygen.mantidproject.org>
-*/
-
-/**
- * A class to filter HKLs by their d-values
- *
- * This class takes a UnitCell object and calculates the spacing of
- * the lattice planes for each HKL. If the lattice spacing is within
- * the spcified range of values, the reflection is allowed.
- *
- * If the first constructor with only dMin is used, dMax is taken to
- * be the lattice parameter with the largest value. There can not be
- * a greater interplanar spacing than that value.
- */
-class MANTID_GEOMETRY_DLL HKLFilterDRange : public HKLFilter {
-public:
-  HKLFilterDRange(const UnitCell &cell, double dMin);
-  HKLFilterDRange(const UnitCell &cell, double dMin, double dMax);
-
-  std::string getDescription() const;
-  bool isAllowed(const Kernel::V3D &hkl) const;
-
-private:
-  void checkProperDRangeValues();
-
-  UnitCell m_cell;
-  double m_dmin, m_dmax;
-};
-
-/**
- * A class to filter HKLs according to a space group
- *
- * HKLFilterSpaceGroup stores a SpaceGroup object and marks those
- * reflections as allowed that are allowed according to the
- * reflection conditions of the space group.
- */
-class MANTID_GEOMETRY_DLL HKLFilterSpaceGroup : public HKLFilter {
-public:
-  HKLFilterSpaceGroup(const SpaceGroup_const_sptr &spaceGroup);
-
-  std::string getDescription() const;
-  bool isAllowed(const Kernel::V3D &hkl) const;
-
-protected:
-  SpaceGroup_const_sptr m_spaceGroup;
-};
-
-/**
- * A class to filter HKLs according to structure factor magnitudes
- *
- * This filter takes a StructureFactorCalculator and calculates the
- * structure factor for each HKL. If F^2 is larger than the specified
- * minimum, the reflection is considered allowed. The default minimum
- * is 1e-6.
- */
-class MANTID_GEOMETRY_DLL HKLFilterStructureFactor : public HKLFilter {
-public:
-  HKLFilterStructureFactor(const StructureFactorCalculator_sptr &calculator,
-                           double fSquaredMin = 1.0e-6);
-
-  std::string getDescription() const;
-  bool isAllowed(const Kernel::V3D &hkl) const;
-
-protected:
-  StructureFactorCalculator_sptr m_calculator;
-  double m_fSquaredMin;
-};
-
-/**
- * A class to filter HKLs according to a lattice centering
- *
- * HKLFilterCentering is a filter that stores a ReflectionCondition object
- * internally and filters the HKLs according to that.
- */
-class MANTID_GEOMETRY_DLL HKLFilterCentering : public HKLFilter {
-public:
-  HKLFilterCentering(const ReflectionCondition_sptr &centering);
-
-  std::string getDescription() const;
-  bool isAllowed(const Kernel::V3D &hkl) const;
-
-protected:
-  ReflectionCondition_sptr m_centering;
-};
-
-} // namespace Geometry
-} // namespace Mantid
-
-#endif /* MANTID_GEOMETRY_BASICHKLFILTERS_H_ */
diff --git a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/HKLFilter.h b/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/HKLFilter.h
deleted file mode 100644
index ca812aebdefeb7fdaa31219407f718d6becdfa2b..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/HKLFilter.h
+++ /dev/null
@@ -1,175 +0,0 @@
-#ifndef MANTID_GEOMETRY_HKLFILTER_H_
-#define MANTID_GEOMETRY_HKLFILTER_H_
-
-#include "MantidGeometry/DllConfig.h"
-#include "MantidKernel/V3D.h"
-
-#include <boost/shared_ptr.hpp>
-#include <functional>
-
-namespace Mantid {
-namespace Geometry {
-
-/** HKLFilter
-
-  There are many ways to filter lists of Miller indices HKL. In order
-  to be able to use HKLGenerator with arbitrary filters, HKLFilter provides
-  a general interface for such filters.
-
-  The abstract base class HKLFilter defines a pure virtual method
-  HKLFilter::isAllowed(), which takes a V3D as argument and returns a boolean.
-  Implementing classes can then implement this method, wrapping very different
-  concepts of checking HKLs for certain characteristics.
-
-  There are two general ways of using HKLFilters. When used "standalone",
-  the isAllowed()-function can be used directly:
-
-    if(filter->isAllowed(hkl)) {
-      // do something
-    }
-
-  For interoperability with STL-algorithms, HKLFilter provides a method that
-  returns a function-object with the filter:
-
-    std::copy_if(generator.begin(), generator.end(),
-                 hkls.begin(), filter->fn());
-
-  Often, it's not enough to filter a list by one criterion. To this end,
-  there are two implementations of HKLFilter that provide binary logic
-  operations
-  "and" (HKLFilterAnd) and "or" (HKLFilterOr). They can be constructed from two
-  HKLFilter_const_sptrs, or, more conveniently, by using the operators & and |
-  directly with those types. This makes it possible to combine filters in many
-  ways:
-
-    HKLFilter_const_sptr filter = (filter1 | filter2) & filter3;
-
-  Lastly, the unary logic operation "not" (HKLFilterNot) is implemented. This is
-  important for usability with the pre-C++11 algorithm std::remove_copy_if that
-  works logically reversed compared to std::copy_if:
-
-    std::remove_copy_if(generator.begin(), generator.end(), hkls.begin(),
-                        (~filter)->fn());
-
-  For actual implementations of HKLFilter, check out BasicHKLFilters, where some
-  important filters are defined.
-
-      @author Michael Wedel, ESS
-      @date 06/09/2015
-
-  Copyright &copy; 2015 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
-  National Laboratory & European Spallation Source
-
-  This file is part of Mantid.
-
-  Mantid is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 3 of the License, or
-  (at your option) any later version.
-
-  Mantid is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-  File change history is stored at: <https://github.com/mantidproject/mantid>
-  Code Documentation is available at: <http://doxygen.mantidproject.org>
-*/
-class MANTID_GEOMETRY_DLL HKLFilter {
-public:
-  virtual ~HKLFilter() {}
-
-  std::function<bool(const Kernel::V3D &)> fn() const;
-
-  virtual std::string getDescription() const = 0;
-  virtual bool isAllowed(const Kernel::V3D &hkl) const = 0;
-};
-
-typedef boost::shared_ptr<const HKLFilter> HKLFilter_const_sptr;
-
-/// Base class for unary logic operations for HKLFilter.
-class MANTID_GEOMETRY_DLL HKLFilterUnaryLogicOperation : public HKLFilter {
-public:
-  HKLFilterUnaryLogicOperation(const HKLFilter_const_sptr &filter);
-  ~HKLFilterUnaryLogicOperation() {}
-
-  /// Returns the operand of the function.
-  const HKLFilter_const_sptr &getOperand() const { return m_operand; }
-
-protected:
-  HKLFilter_const_sptr m_operand;
-};
-
-/// Logical "Not"-operation for HKLFilter.
-class MANTID_GEOMETRY_DLL HKLFilterNot : public HKLFilterUnaryLogicOperation {
-public:
-  /// Constructor, calls base class constructor, throws exception if filter is a
-  /// null pointer.
-  HKLFilterNot(const HKLFilter_const_sptr &filter)
-      : HKLFilterUnaryLogicOperation(filter) {}
-  ~HKLFilterNot() {}
-
-  std::string getDescription() const;
-  bool isAllowed(const Kernel::V3D &hkl) const;
-};
-
-/// Base class for binary logic operations for HKLFilter.
-class MANTID_GEOMETRY_DLL HKLFilterBinaryLogicOperation : public HKLFilter {
-public:
-  HKLFilterBinaryLogicOperation(const HKLFilter_const_sptr &lhs,
-                                const HKLFilter_const_sptr &rhs);
-  virtual ~HKLFilterBinaryLogicOperation() {}
-
-  /// Returns the left-hand side operand of the operation.
-  const HKLFilter_const_sptr &getLHS() const { return m_lhs; }
-
-  /// Returns the right-hand side operand of the operation.
-  const HKLFilter_const_sptr &getRHS() const { return m_rhs; }
-
-protected:
-  HKLFilter_const_sptr m_lhs;
-  HKLFilter_const_sptr m_rhs;
-};
-
-/// Logical "And"-operation for HKLFilter.
-class MANTID_GEOMETRY_DLL HKLFilterAnd : public HKLFilterBinaryLogicOperation {
-public:
-  /// Constructor, calls base class constructor, throws exception if either of
-  /// the operands is null.
-  HKLFilterAnd(const HKLFilter_const_sptr &lhs, const HKLFilter_const_sptr &rhs)
-      : HKLFilterBinaryLogicOperation(lhs, rhs) {}
-  ~HKLFilterAnd() {}
-
-  std::string getDescription() const;
-  bool isAllowed(const Kernel::V3D &hkl) const;
-};
-
-/// Logical "Or"-operation for HKLFilter.
-class MANTID_GEOMETRY_DLL HKLFilterOr : public HKLFilterBinaryLogicOperation {
-public:
-  /// Constructor, calls base class constructor, throws exception if either of
-  /// the operands is null.
-  HKLFilterOr(const HKLFilter_const_sptr &lhs, const HKLFilter_const_sptr &rhs)
-      : HKLFilterBinaryLogicOperation(lhs, rhs) {}
-  ~HKLFilterOr() {}
-
-  std::string getDescription() const;
-  bool isAllowed(const Kernel::V3D &hkl) const;
-};
-
-MANTID_GEOMETRY_DLL const HKLFilter_const_sptr
-operator~(const HKLFilter_const_sptr &filter);
-
-MANTID_GEOMETRY_DLL const HKLFilter_const_sptr
-operator&(const HKLFilter_const_sptr &lhs, const HKLFilter_const_sptr &rhs);
-
-MANTID_GEOMETRY_DLL const HKLFilter_const_sptr
-operator|(const HKLFilter_const_sptr &lhs, const HKLFilter_const_sptr &rhs);
-
-} // namespace Geometry
-} // namespace Mantid
-
-#endif /* MANTID_GEOMETRY_HKLFILTER_H_ */
diff --git a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/HKLGenerator.h b/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/HKLGenerator.h
deleted file mode 100644
index 5c4259677314690be059cfb72b1d252d8f5e19c8..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/HKLGenerator.h
+++ /dev/null
@@ -1,182 +0,0 @@
-#ifndef MANTID_GEOMETRY_HKLGENERATOR_H_
-#define MANTID_GEOMETRY_HKLGENERATOR_H_
-
-#include "MantidGeometry/DllConfig.h"
-#include "MantidGeometry/Crystal/UnitCell.h"
-#include "MantidKernel/V3D.h"
-
-#include <boost/iterator/iterator_facade.hpp>
-
-namespace Mantid {
-namespace Geometry {
-
-/** HKLGenerator
-
-  HKLGenerator is a pseudo-container that helps in generating actual
-  containers with V3D-objects representing Miller indices (HKL).
-
-  It's a common task to generate lists of Miller indices. The simplest
-  way of doing that is to simply create a nested loop structure that
-  goes through all combinations of H, K, L within some limits and then
-  put them into a container (vector, list, set, ...):
-
-    for(int h = -hmin; h <= hmax; ++h) {
-      for(int k = -kmin; k <= kmax; ++k) {
-        for(int l = -lmin; l <= lmax; ++l) {
-          hkls.push_back(V3D(h, k, l));
-        }
-      }
-    }
-
-  In most cases the list is not used like that, instead it's filtered
-  using some criteria, for example a certain range of d-spacings or
-  others, so the reflection needs to be checked first:
-
-    ...
-        hkl = V3D(h, k, l)
-        if(isOk(hkl)) {
-            hkls.push_back(hkl);
-        }
-    ...
-
-  Instead of explicitly stating the triple-loop, HKLGenerator provides
-  a shorter way for this process using a const_iterator. The first code
-  example then becomes this:
-
-    HKLGenerator generator(V3D(hmin, kmin, lmin), V3D(hmax, kmax, lmax));
-    for(auto hkl = generator.begin(); hkl != generator.end(); ++hkl) {
-        hkls.push_back(*hkl);
-    }
-
-  Or even shorter, using std::copy:
-
-    HKLGenerator generator(V3D(hmin, kmin, lmin), V3D(hmax, kmax, lmax));
-    std::copy(generator.begin(), generator.end(), std::back_inserter(hkls));
-
-  It's also possible to use filters this way, but in a much easier fashion,
-  using std::copy_remove_if (pre C++11) or std::copy_if (C++11):
-
-    // pre C++11
-    std::copy_remove_if(generator.begin(), generator.end(),
-                        std::back_inserter(hkls), isNotOk)
-
-    // C++11
-    std::copy_if(generator.begin(), generator.end(), std::back_inserter(hkls),
-                 isOk)
-
-  See the documentation for HKLFilter for more details on how to perform
-  actual filtering.
-
-  Please be aware that the iterator increments infinitely if it passes the
-  specified maximimum HKL. In that case K and L remain constant while H is
-  incremented (until it overflows).
-
-      @author Michael Wedel, ESS
-      @date 23/09/2015
-
-  Copyright &copy; 2015 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
-  National Laboratory & European Spallation Source
-
-  This file is part of Mantid.
-
-  Mantid is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 3 of the License, or
-  (at your option) any later version.
-
-  Mantid is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-  File change history is stored at: <https://github.com/mantidproject/mantid>
-  Code Documentation is available at: <http://doxygen.mantidproject.org>
-*/
-class MANTID_GEOMETRY_DLL HKLGenerator {
-public:
-  /**
-   * @brief The const_iterator class
-   *
-   * This class uses boost::iterator_facade to provide a const_iterator
-   * interface to HKLGenerator. This makes it very easy to use the standard
-   * library algorithms. It's a forward iterator, so it's not possible to use
-   * operator[] for random access of specific HKLs (this would have to be
-   * done on the generated container if that supports it).
-   *
-   * While the iterators can be instantiated directly, the intention is to
-   * use HKLGenerator::begin() and HKLGenerator::end().
-   */
-  class const_iterator
-      : public boost::iterator_facade<const_iterator, const Kernel::V3D &,
-                                      boost::forward_traversal_tag> {
-  public:
-    /// Default constructor, requirement from boost::iterator_facade
-    const_iterator() {}
-
-    explicit const_iterator(const Kernel::V3D &current);
-
-    explicit const_iterator(const Kernel::V3D &hklMin,
-                            const Kernel::V3D &hklMax);
-
-  private:
-    // Required for boost::iterator_facade to work
-    friend class boost::iterator_core_access;
-
-    void increment();
-
-    /// Returns true if other is at the same position
-    inline bool equal(const const_iterator &other) const {
-      return this->m_h == other.m_h && this->m_k == other.m_k &&
-             this->m_l == other.m_l;
-    }
-
-    /// Returns a const reference to the currently pointed at HKL.
-    inline const Kernel::V3D &dereference() const { return m_hkl; }
-
-    int m_h, m_k, m_l;
-    Kernel::V3D m_hkl;
-
-    int m_hMin, m_hMax;
-    int m_kMin, m_kMax;
-    int m_lMin, m_lMax;
-  };
-
-  HKLGenerator(const Kernel::V3D &hklMin, const Kernel::V3D &hklMax);
-  HKLGenerator(const Kernel::V3D &hklMinMax);
-  HKLGenerator(int hMinMax, int kMinMax, int lMinMax);
-  HKLGenerator(const UnitCell &unitCell, double dMin);
-
-  virtual ~HKLGenerator() {}
-
-  /// Returns the number of HKLs to be generated.
-  inline size_t size() const { return m_size; }
-
-  /// Returns an iterator to the beginning of the sequence.
-  inline const const_iterator &begin() const { return m_begin; }
-
-  /// Returns an iterator which "points at" one element past the end.
-  inline const const_iterator &end() const { return m_end; }
-
-private:
-  size_t getSize(const Kernel::V3D &min, const Kernel::V3D &max) const;
-
-  const_iterator getBeginIterator() const;
-  const_iterator getEndIterator() const;
-  Kernel::V3D getEndHKL() const;
-
-  Kernel::V3D m_hklMin;
-  Kernel::V3D m_hklMax;
-
-  size_t m_size;
-
-  const_iterator m_begin;
-  const_iterator m_end;
-};
-
-} // namespace Geometry
-} // namespace Mantid
-
-#endif /* MANTID_GEOMETRY_HKLGENERATOR_H_ */
diff --git a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/ReflectionGenerator.h b/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/ReflectionGenerator.h
deleted file mode 100644
index 439fcfa162daeee23ff22469fd2f258932b7ad74..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/ReflectionGenerator.h
+++ /dev/null
@@ -1,144 +0,0 @@
-#ifndef MANTID_GEOMETRY_REFLECTIONGENERATOR_H_
-#define MANTID_GEOMETRY_REFLECTIONGENERATOR_H_
-
-#include "MantidGeometry/DllConfig.h"
-#include "MantidGeometry/Crystal/CrystalStructure.h"
-#include "MantidGeometry/Crystal/StructureFactorCalculator.h"
-#include "MantidGeometry/Crystal/HKLFilter.h"
-
-namespace Mantid {
-namespace Geometry {
-
-enum struct ReflectionConditionFilter {
-  None,
-  Centering,
-  SpaceGroup,
-  StructureFactor
-};
-
-/** ReflectionGenerator
-
-  ReflectionGenerator is a class that provides the means to perform some
-  common tasks involving generation of reflections. While the combination
-  of HKLGenerator and HKLFilter is very flexible, very often a limited set
-  of operations has to be performed repeatedly, involving the crystal
-  structure.
-
-  ReflectionGenerator is constructed from a CrystalStructure object, which
-  is then stored internally. Additionally, a default filter for reflection
-  conditions can be set, which is applied for HKL-generation in addition
-  to a DRangeFilter. For more flexibility, a method is provided that accepts
-  an HKLFilter as additional argument, this filter is then added to the
-  DRangeFilter.
-
-  This way it's very simple to obtain for example a list of unique reflections
-  for a given crystal structure:
-
-    CrystalStructure structure("5.43 5.43 5.43",
-                               "F d -3 m", "Si 0 0 0 1.0 0.05");
-    ReflectionGenerator generator(structure);
-
-    // Get all unique HKLs between 0.5 and 5.0 Angstrom
-    std::vector<V3D> hkls = generator.getUniqueHKLs(0.5, 5.0);
-
-  Additionally there are methods to obtain structure factors and d-values
-  for a given list of HKLs.
-
-  The generated reflection lists can be filtered by several criteria to remove
-  reflections that are not allowed. In the default case, the reflection
-  conditions of the space group are used. Alternatively, the reflections can be
-  filtered according to the centering of the lattice or, with some more
-  computational effort, by their structure factors.
-
-  The default filter method can be supplied to the constructor in the form of
-  the enum ReflectionConditionFilter. Furthermore, it's possible to provide
-  self-defined filters in overloaded versions of the HKL generation methods.
-  These can also be generated by using a small helper method that creates
-  the filters and populates them with values associated to the stored crystal
-  structure:
-
-
-    ReflectionGenerator generator(
-                            CrystalStructure("5.43 5.43 5.43",
-                                    "F d -3 m", "Si 0 0 0 1.0 0.05"));
-    auto filter = generator.getReflectionConditionFilter(
-                                    ReflectionConditionFilter::StructureFactor);
-
-  The filter can then be used in connection with HKLGenerator or the HKL-
-  generation methods of ReflectionGenerator.
-
-  An example where structure factors are required can be found in a very
-  common crystal structure, the structure of Silicon. Silicon crystallizes
-  in the space group Fd-3m (No. 227) and the asymmetric unit consists of
-  one Si-atom at the position (1/8, 1/8, 1/8) (for origin choice 2, with the
-  inversion at the origin). Looking up this space group in the International
-  Tables for Crystallography A reveals that placing a scatterer at this
-  position introduces a new reflection condition for general reflections hkl:
-
-         h = 2n + 1 (reflections with odd h are allowed)
-      or h + k + l = 4n
-
-  This means that for example the reflection family {2 2 2} is not allowed,
-  even though the F-centering would allow it. Using the structure factor
-  calculation filter solves this problem.
-
-      @author Michael Wedel, ESS
-      @date 30/09/2015
-
-  Copyright &copy; 2015 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
-  National Laboratory & European Spallation Source
-
-  This file is part of Mantid.
-
-  Mantid is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 3 of the License, or
-  (at your option) any later version.
-
-  Mantid is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-  File change history is stored at: <https://github.com/mantidproject/mantid>
-  Code Documentation is available at: <http://doxygen.mantidproject.org>
-*/
-class MANTID_GEOMETRY_DLL ReflectionGenerator {
-public:
-  ReflectionGenerator(const CrystalStructure &crystalStructure,
-                      ReflectionConditionFilter defaultFilter =
-                          ReflectionConditionFilter::SpaceGroup);
-  ~ReflectionGenerator() {}
-
-  const CrystalStructure &getCrystalStructure() const;
-
-  HKLFilter_const_sptr getDRangeFilter(double dMin, double dMax) const;
-  HKLFilter_const_sptr
-  getReflectionConditionFilter(ReflectionConditionFilter filter);
-
-  std::vector<Kernel::V3D> getHKLs(double dMin, double dMax) const;
-  std::vector<Kernel::V3D>
-  getHKLs(double dMin, double dMax,
-          HKLFilter_const_sptr reflectionConditionFilter) const;
-
-  std::vector<Kernel::V3D> getUniqueHKLs(double dMin, double dMax) const;
-  std::vector<Kernel::V3D>
-  getUniqueHKLs(double dMin, double dMax,
-                HKLFilter_const_sptr reflectionConditionFilter) const;
-
-  std::vector<double> getDValues(const std::vector<Kernel::V3D> &hkls) const;
-  std::vector<double> getFsSquared(const std::vector<Kernel::V3D> &hkls) const;
-
-private:
-  CrystalStructure m_crystalStructure;
-  StructureFactorCalculator_sptr m_sfCalculator;
-  HKLFilter_const_sptr m_defaultHKLFilter;
-};
-
-} // namespace Geometry
-} // namespace Mantid
-
-#endif /* MANTID_GEOMETRY_REFLECTIONGENERATOR_H_ */
diff --git a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/StructureFactorCalculator.h b/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/StructureFactorCalculator.h
deleted file mode 100644
index 04b51ff0b49f016817b43884dd822c9c59e09041..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/StructureFactorCalculator.h
+++ /dev/null
@@ -1,82 +0,0 @@
-#ifndef MANTID_GEOMETRY_STRUCTUREFACTORCALCULATOR_H_
-#define MANTID_GEOMETRY_STRUCTUREFACTORCALCULATOR_H_
-
-#include "MantidGeometry/DllConfig.h"
-#include "MantidGeometry/Crystal/CrystalStructure.h"
-
-namespace Mantid {
-namespace Geometry {
-
-/** StructureFactorCalculator
-
- This is a base class for concrete structure factor calculators. It is used
- to logically separate this calculation from CrystalStructure so that different
- methods of calculation can be used. For actual implementations please consult
- the available sub-classes.
-
-      @author Michael Wedel, ESS
-      @date 05/09/2015
-
-  Copyright &copy; 2015 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
-  National Laboratory & European Spallation Source
-
-  This file is part of Mantid.
-
-  Mantid is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 3 of the License, or
-  (at your option) any later version.
-
-  Mantid is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-  File change history is stored at: <https://github.com/mantidproject/mantid>
-  Code Documentation is available at: <http://doxygen.mantidproject.org>
-*/
-class MANTID_GEOMETRY_DLL StructureFactorCalculator {
-public:
-  StructureFactorCalculator();
-  virtual ~StructureFactorCalculator() {}
-
-  void setCrystalStructure(const CrystalStructure &crystalStructure);
-
-  /// In implementations this method should return the structure factor for the
-  /// specified HKL.
-  virtual StructureFactor getF(const Kernel::V3D &hkl) const = 0;
-  virtual double getFSquared(const Kernel::V3D &hkl) const;
-
-  virtual std::vector<StructureFactor>
-  getFs(const std::vector<Kernel::V3D> &hkls) const;
-  virtual std::vector<double>
-  getFsSquared(const std::vector<Kernel::V3D> &hkls) const;
-
-protected:
-  virtual void
-  crystalStructureSetHook(const CrystalStructure &crystalStructure);
-};
-
-typedef boost::shared_ptr<StructureFactorCalculator>
-    StructureFactorCalculator_sptr;
-
-namespace StructureFactorCalculatorFactory {
-/// Small templated factory function that creates the desired calculator
-/// and initializes it by setting the crystal structure.
-template <typename T>
-StructureFactorCalculator_sptr
-create(const CrystalStructure &crystalStructure) {
-  boost::shared_ptr<T> calculator = boost::make_shared<T>();
-  calculator->setCrystalStructure(crystalStructure);
-
-  return calculator;
-}
-}
-
-} // namespace Geometry
-} // namespace Mantid
-
-#endif /* MANTID_GEOMETRY_STRUCTUREFACTORCALCULATOR_H_ */
diff --git a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/StructureFactorCalculatorSummation.h b/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/StructureFactorCalculatorSummation.h
deleted file mode 100644
index 5cfed836be0c671fee66916460800dcfc735911f..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/inc/MantidGeometry/Crystal/StructureFactorCalculatorSummation.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORSUMMATION_H_
-#define MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORSUMMATION_H_
-
-#include "MantidGeometry/DllConfig.h"
-#include "MantidGeometry/Crystal/StructureFactorCalculator.h"
-
-namespace Mantid {
-namespace Geometry {
-
-/** StructureFactorCalculatorSummation
-
-  This implementation of StructureFactorCalculator uses the summation method
-  provided by BraggScatterer and its sub-classes. It obtains all scatterers in
-  the unit cell by combining the space group and the scatterers located in the
-  asymmetric unit (both taken from CrystalStructure) and stores them.
-
-      @author Michael Wedel, ESS
-      @date 05/09/2015
-
-  Copyright &copy; 2015 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
-  National Laboratory & European Spallation Source
-
-  This file is part of Mantid.
-
-  Mantid is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 3 of the License, or
-  (at your option) any later version.
-
-  Mantid is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-  File change history is stored at: <https://github.com/mantidproject/mantid>
-  Code Documentation is available at: <http://doxygen.mantidproject.org>
-*/
-class MANTID_GEOMETRY_DLL StructureFactorCalculatorSummation
-    : public StructureFactorCalculator {
-public:
-  StructureFactorCalculatorSummation();
-  virtual ~StructureFactorCalculatorSummation() {}
-
-  StructureFactor getF(const Kernel::V3D &hkl) const;
-
-protected:
-  void crystalStructureSetHook(const CrystalStructure &crystalStructure);
-
-  void updateUnitCellScatterers(const CrystalStructure &crystalStructure);
-  std::string getV3DasString(const Kernel::V3D &point) const;
-
-  CompositeBraggScatterer_sptr m_unitCellScatterers;
-};
-
-typedef boost::shared_ptr<StructureFactorCalculatorSummation>
-    StructureFactorSummation_sptr;
-
-} // namespace Geometry
-} // namespace Mantid
-
-#endif /* MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORSUMMATION_H_ */
diff --git a/Code/Mantid/Framework/Geometry/src/Crystal/BasicHKLFilters.cpp b/Code/Mantid/Framework/Geometry/src/Crystal/BasicHKLFilters.cpp
deleted file mode 100644
index 9dfec3038a8b7d458404e4ea5490392e80bc2182..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/src/Crystal/BasicHKLFilters.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-#include "MantidGeometry/Crystal/BasicHKLFilters.h"
-
-namespace Mantid {
-namespace Geometry {
-
-/// Constructor, dMax is set to the largest lattice parameter.
-HKLFilterDRange::HKLFilterDRange(const UnitCell &cell, double dMin)
-    : m_cell(cell), m_dmin(dMin) {
-  m_dmax = std::max(m_cell.a(), std::max(m_cell.b(), m_cell.c()));
-
-  checkProperDRangeValues();
-}
-
-/// Constructor with explicit dMax.
-HKLFilterDRange::HKLFilterDRange(const UnitCell &cell, double dMin, double dMax)
-    : m_cell(cell), m_dmin(dMin), m_dmax(dMax) {
-  checkProperDRangeValues();
-}
-
-/// Returns a description containing the parameters of the filter.
-std::string HKLFilterDRange::getDescription() const {
-  std::ostringstream strm;
-  strm << "(" << m_dmin << " <= d <= " << m_dmax << ")";
-
-  return strm.str();
-}
-
-/// Returns true if the d-value of the HKL is within the specified range.
-bool HKLFilterDRange::isAllowed(const Kernel::V3D &hkl) const {
-  double d = m_cell.d(hkl);
-
-  return d >= m_dmin && d <= m_dmax;
-}
-
-/// Throws exception if m_dMin or m_dMax is <= 0 or if m_dMax < m_dMin.
-void HKLFilterDRange::checkProperDRangeValues() {
-  if (m_dmin <= 0.0) {
-    throw std::range_error("dMin cannot be <= 0.");
-  }
-
-  if (m_dmax <= 0.0) {
-    throw std::range_error("dMax cannot be <= 0.");
-  }
-
-  if (m_dmax <= m_dmin) {
-    throw std::range_error("dMax cannot be smaller than dMin.");
-  }
-}
-
-/// Constructor, throws exception if the supplied pointer is invalid.
-HKLFilterSpaceGroup::HKLFilterSpaceGroup(
-    const SpaceGroup_const_sptr &spaceGroup)
-    : m_spaceGroup(spaceGroup) {
-  if (!m_spaceGroup) {
-    throw std::runtime_error(
-        "Cannot construct HKLFilterSpaceGroup from null space group.");
-  }
-}
-
-/// Returns a description of the filter that contains the space group symbol.
-std::string HKLFilterSpaceGroup::getDescription() const {
-  std::ostringstream strm;
-  strm << "(Space group: " << m_spaceGroup->hmSymbol() << ")";
-
-  return strm.str();
-}
-
-/// Returns true if the reflection is allowed by the space group reflection
-/// conditions.
-bool HKLFilterSpaceGroup::isAllowed(const Kernel::V3D &hkl) const {
-  return m_spaceGroup->isAllowedReflection(hkl);
-}
-
-/// Constructor, throws exception if the calculator pointer is invalid.
-HKLFilterStructureFactor::HKLFilterStructureFactor(
-    const StructureFactorCalculator_sptr &calculator, double fSquaredMin)
-    : m_calculator(calculator), m_fSquaredMin(fSquaredMin) {
-  if (!m_calculator) {
-    throw std::runtime_error(
-        "Cannot construct HKLFilterStructureFactor from null calculator.");
-  }
-}
-
-/// Returns a description for the filter that contains the minimum F^2.
-std::string HKLFilterStructureFactor::getDescription() const {
-  std::ostringstream strm;
-  strm << "(F^2 > " << m_fSquaredMin << ")";
-
-  return strm.str();
-}
-
-/// Returns true if F^2(hkl) is larger than the stored minimum.
-bool HKLFilterStructureFactor::isAllowed(const Kernel::V3D &hkl) const {
-  return m_calculator->getFSquared(hkl) > m_fSquaredMin;
-}
-
-/// Constructor, throws exception if pointer is null.
-HKLFilterCentering::HKLFilterCentering(
-    const ReflectionCondition_sptr &centering)
-    : m_centering(centering) {
-  if (!m_centering) {
-    throw std::runtime_error(
-        "Cannot construct HKLFilterCentering from null centering.");
-  }
-}
-
-/// Returns a description with the centering symbol.
-std::string HKLFilterCentering::getDescription() const {
-  return "(Centering: " + m_centering->getSymbol() + ")";
-}
-
-/// Returns true if the HKL is allowed according to the lattice centering.
-bool HKLFilterCentering::isAllowed(const Kernel::V3D &hkl) const {
-  return m_centering->isAllowed(static_cast<int>(hkl.X()),
-                                static_cast<int>(hkl.Y()),
-                                static_cast<int>(hkl.Z()));
-}
-
-} // namespace Geometry
-} // namespace Mantid
diff --git a/Code/Mantid/Framework/Geometry/src/Crystal/HKLFilter.cpp b/Code/Mantid/Framework/Geometry/src/Crystal/HKLFilter.cpp
deleted file mode 100644
index ed218cb7fdb2f3fce2bdeaa204efc113e8479009..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/src/Crystal/HKLFilter.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-#include "MantidGeometry/Crystal/HKLFilter.h"
-#include <boost/make_shared.hpp>
-#include <stdexcept>
-
-namespace Mantid {
-namespace Geometry {
-
-/**
- * Returns a function object that wraps HKLFilter::isAllowed
- *
- * This method uses std::bind to create a function object that
- * represents the HKLFilter::isAllowed() method. This way it's
- * possible to pass the function to STL-algorithms easily (see
- * class documentation).
- *
- * @return Function object with filter function for V3D.s
- */
-std::function<bool(const Kernel::V3D &)> HKLFilter::fn() const {
-  return std::bind(&HKLFilter::isAllowed, this, std::placeholders::_1);
-}
-
-/// Stores the supplied filter, throws exception if filter is null.
-HKLFilterUnaryLogicOperation::HKLFilterUnaryLogicOperation(
-    const HKLFilter_const_sptr &filter)
-    : m_operand(filter) {
-  if (!m_operand) {
-    throw std::runtime_error(
-        "Cannot create HKLFilterUnaryLogicOperation from null operand.");
-  }
-}
-
-/// Returns a description of the HKLFilterNot.
-std::string HKLFilterNot::getDescription() const {
-  return "!" + m_operand->getDescription();
-}
-
-/// Returns true if the wrapped filter returns false and false otherwise.
-bool HKLFilterNot::isAllowed(const Kernel::V3D &hkl) const {
-  return !(m_operand->isAllowed(hkl));
-}
-
-/// Stores the left-hand and right-hand side operators, throws exception if
-/// either is null.
-HKLFilterBinaryLogicOperation::HKLFilterBinaryLogicOperation(
-    const HKLFilter_const_sptr &lhs, const HKLFilter_const_sptr &rhs)
-    : m_lhs(lhs), m_rhs(rhs) {
-  if (!m_lhs || !m_rhs) {
-    throw std::runtime_error("Cannot construct HKLFilterBinaryLogicOperation "
-                             "with one or more null-operands.");
-  }
-}
-
-/// Returns a description of the HKLFilterAnd.
-std::string HKLFilterAnd::getDescription() const {
-  return "(" + m_lhs->getDescription() + " & " + m_rhs->getDescription() + ")";
-}
-
-/// Returns true if both wrapped filters return true.
-bool HKLFilterAnd::isAllowed(const Kernel::V3D &hkl) const {
-  return m_lhs->isAllowed(hkl) && m_rhs->isAllowed(hkl);
-}
-
-/// Returns a description of the HKLFilterOr.
-std::string HKLFilterOr::getDescription() const {
-  return "(" + m_lhs->getDescription() + " | " + m_rhs->getDescription() + ")";
-}
-
-/// Returns true if either of the wrapped filters returns true.
-bool HKLFilterOr::isAllowed(const Kernel::V3D &hkl) const {
-  return m_lhs->isAllowed(hkl) || m_rhs->isAllowed(hkl);
-}
-
-/**
- * Constructs an HKLFilterNot from the operand
- *
- * This function makes it easy to construct HKLFilterNot by using the
- * operator ~, which inverts the wrapped filter.
- *
- * @param filter :: HKLFilter to invert.
- * @return HKLFilterNot with the wrapped filter.
- */
-const HKLFilter_const_sptr operator~(const HKLFilter_const_sptr &filter) {
-  return boost::make_shared<const HKLFilterNot>(filter);
-}
-
-/**
- * Constructs an HKLFilterAnd from the operands
- *
- * This function makes it easy to construct HKLFilterAnd by using the
- * operator & directly on HKLFilter_const_sptr.
- *
- * @param lhs :: Left-hand side HKLFilter operand.
- * @param rhs :: Right-hand side HKLFilter operand.
- * @return HKLFilterAnd with two wrapped filters.
- */
-const HKLFilter_const_sptr operator&(const HKLFilter_const_sptr &lhs,
-                                     const HKLFilter_const_sptr &rhs) {
-  return boost::make_shared<const HKLFilterAnd>(lhs, rhs);
-}
-
-/**
- * Constructs an HKLFilterOr from the operands
- *
- * This function makes it easy to construct HKLFilterOr by using the
- * operator | directly on HKLFilter_const_sptr.
- *
- * @param lhs :: Left-hand side HKLFilter operand.
- * @param rhs :: Right-hand side HKLFilter operand.
- * @return HKLFilterOr with two wrapped filters.
- */
-const HKLFilter_const_sptr operator|(const HKLFilter_const_sptr &lhs,
-                                     const HKLFilter_const_sptr &rhs) {
-  return boost::make_shared<HKLFilterOr>(lhs, rhs);
-}
-
-} // namespace Geometry
-} // namespace Mantid
diff --git a/Code/Mantid/Framework/Geometry/src/Crystal/HKLGenerator.cpp b/Code/Mantid/Framework/Geometry/src/Crystal/HKLGenerator.cpp
deleted file mode 100644
index 0156cd97045b0a347af482893774907c011935c0..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/src/Crystal/HKLGenerator.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-#include "MantidGeometry/Crystal/HKLGenerator.h"
-
-namespace Mantid {
-namespace Geometry {
-
-using namespace Kernel;
-
-/// Constructs a generator that creates all indices from hklMin to hklMax.
-HKLGenerator::HKLGenerator(const Kernel::V3D &hklMin, const Kernel::V3D &hklMax)
-    : m_hklMin(hklMin), m_hklMax(hklMax), m_size(getSize(m_hklMin, m_hklMax)),
-      m_begin(getBeginIterator()), m_end(getEndIterator()) {}
-
-/// Constructs a generator that creates all indices from -hklMinMax to
-/// hklMinMax.
-HKLGenerator::HKLGenerator(const Kernel::V3D &hklMinMax)
-    : m_hklMin(hklMinMax * -1), m_hklMax(hklMinMax),
-      m_size(getSize(m_hklMin, m_hklMax)), m_begin(getBeginIterator()),
-      m_end(getEndIterator()) {}
-
-/// Constructs a generator that creates all indices from -h,-k,-l to h,k,l.
-HKLGenerator::HKLGenerator(int hMinMax, int kMinMax, int lMinMax) {
-  m_hklMax = V3D(hMinMax, kMinMax, lMinMax);
-  m_hklMin = m_hklMax * -1;
-  m_size = getSize(m_hklMin, m_hklMax);
-
-  m_begin = getBeginIterator();
-  m_end = getEndIterator();
-}
-
-/// Constructs a generator that creates all indices for the given cell up to
-/// dMin.
-HKLGenerator::HKLGenerator(const UnitCell &unitCell, double dMin) {
-  m_hklMax = V3D(unitCell.a() / dMin, unitCell.b() / dMin, unitCell.c() / dMin);
-  m_hklMin = m_hklMax * -1;
-  m_size = getSize(m_hklMin, m_hklMax);
-
-  m_begin = getBeginIterator();
-  m_end = getEndIterator();
-}
-
-/// Returns the number of indices between min and max.
-size_t HKLGenerator::getSize(const V3D &min, const V3D &max) const {
-  V3D diff = (max - min) + V3D(1, 1, 1);
-  return static_cast<size_t>(diff.X() * diff.Y() * diff.Z());
-}
-
-/// Constructs an iterator that points to the beginning of the sequence.
-HKLGenerator::const_iterator HKLGenerator::getBeginIterator() const {
-  return HKLGenerator::const_iterator(m_hklMin, m_hklMax);
-}
-
-/// Constructs an iterator that points to an HKL one past the maximum.
-HKLGenerator::const_iterator HKLGenerator::getEndIterator() const {
-  return HKLGenerator::const_iterator(getEndHKL());
-}
-
-/// Returns the HKL "one past the maximum".
-V3D HKLGenerator::getEndHKL() const {
-  return V3D(m_hklMax.X() + 1, m_hklMin.Y(), m_hklMin.Z());
-}
-
-/// Return an iterator with min = max = current.
-HKLGenerator::const_iterator::const_iterator(const V3D &current)
-    : m_h(static_cast<int>(current.X())), m_k(static_cast<int>(current.Y())),
-      m_l(static_cast<int>(current.Z())), m_hkl(current), m_hMin(m_h),
-      m_hMax(m_h), m_kMin(m_k), m_kMax(m_k), m_lMin(m_l), m_lMax(m_l) {}
-
-/// Return an iterator that can move from min to max, with current = min
-HKLGenerator::const_iterator::const_iterator(const V3D &hklMin,
-                                             const V3D &hklMax)
-    : m_h(static_cast<int>(hklMin.X())), m_k(static_cast<int>(hklMin.Y())),
-      m_l(static_cast<int>(hklMin.Z())), m_hkl(hklMin), m_hMin(m_h),
-      m_hMax(static_cast<int>(hklMax.X())), m_kMin(m_k),
-      m_kMax(static_cast<int>(hklMax.Y())), m_lMin(m_l),
-      m_lMax(static_cast<int>(hklMax.Z())) {}
-
-/// Increments HKL, l moves fastest, h moves slowest, wrapping around at the max
-/// for each index.
-void HKLGenerator::const_iterator::increment() {
-  ++m_l;
-
-  if (m_l > m_lMax) {
-    m_l = m_lMin;
-
-    ++m_k;
-    if (m_k > m_kMax) {
-      m_k = m_kMin;
-      ++m_h;
-    }
-  }
-
-  m_hkl = V3D(m_h, m_k, m_l);
-}
-
-} // namespace Geometry
-} // namespace Mantid
diff --git a/Code/Mantid/Framework/Geometry/src/Crystal/ReflectionGenerator.cpp b/Code/Mantid/Framework/Geometry/src/Crystal/ReflectionGenerator.cpp
deleted file mode 100644
index 59fd597ef216ad55f5d601c3a8f688c5e443738d..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/src/Crystal/ReflectionGenerator.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-#include "MantidGeometry/Crystal/ReflectionGenerator.h"
-#include "MantidGeometry/Crystal/BasicHKLFilters.h"
-#include "MantidGeometry/Crystal/StructureFactorCalculatorSummation.h"
-#include "MantidGeometry/Crystal/HKLGenerator.h"
-
-namespace Mantid {
-namespace Geometry {
-
-using namespace Kernel;
-
-/// Small helper functor to calculate d-Values from a unit cell.
-class LatticeSpacingCalculator {
-public:
-  LatticeSpacingCalculator(const UnitCell &cell) : m_cell(cell) {}
-
-  double operator()(const V3D &hkl) { return m_cell.d(hkl); }
-
-private:
-  UnitCell m_cell;
-};
-
-/// Constructor
-ReflectionGenerator::ReflectionGenerator(
-    const CrystalStructure &crystalStructure,
-    ReflectionConditionFilter defaultFilter)
-    : m_crystalStructure(crystalStructure),
-      m_sfCalculator(StructureFactorCalculatorFactory::create<
-          StructureFactorCalculatorSummation>(m_crystalStructure)),
-      m_defaultHKLFilter(getReflectionConditionFilter(defaultFilter)) {}
-
-/// Returns the internally stored crystal structure
-const CrystalStructure &ReflectionGenerator::getCrystalStructure() const {
-  return m_crystalStructure;
-}
-
-/// Returns a DRangeFilter from the supplied d-limits and the internally stored
-/// cell.
-HKLFilter_const_sptr ReflectionGenerator::getDRangeFilter(double dMin,
-                                                          double dMax) const {
-  return boost::make_shared<const HKLFilterDRange>(m_crystalStructure.cell(),
-                                                   dMin, dMax);
-}
-
-/// Returns a reflection condition HKLFilter based on the supplied enum.
-HKLFilter_const_sptr ReflectionGenerator::getReflectionConditionFilter(
-    ReflectionConditionFilter filter) {
-  switch (filter) {
-  case ReflectionConditionFilter::Centering:
-    return boost::make_shared<const HKLFilterCentering>(
-        m_crystalStructure.centering());
-    break;
-  case ReflectionConditionFilter::SpaceGroup:
-    return boost::make_shared<const HKLFilterSpaceGroup>(
-        m_crystalStructure.spaceGroup());
-    break;
-  case ReflectionConditionFilter::StructureFactor:
-    return boost::make_shared<const HKLFilterStructureFactor>(m_sfCalculator);
-  default:
-    return HKLFilter_const_sptr();
-  }
-}
-
-/// Returns a list of HKLs within the specified d-limits using the default
-/// reflection condition filter.
-std::vector<V3D> ReflectionGenerator::getHKLs(double dMin, double dMax) const {
-  return getHKLs(dMin, dMax, m_defaultHKLFilter);
-}
-
-/// Returns a list of HKLs within the specified d-limits using the specified
-/// filter. If the pointer is null, it's ignored.
-std::vector<Kernel::V3D> ReflectionGenerator::getHKLs(
-    double dMin, double dMax,
-    HKLFilter_const_sptr reflectionConditionFilter) const {
-  HKLGenerator generator(m_crystalStructure.cell(), dMin);
-
-  HKLFilter_const_sptr filter = getDRangeFilter(dMin, dMax);
-  if (reflectionConditionFilter) {
-    filter = filter & reflectionConditionFilter;
-  }
-
-  std::vector<V3D> hkls;
-  hkls.reserve(generator.size());
-
-  std::remove_copy_if(generator.begin(), generator.end(),
-                      std::back_inserter(hkls), (~filter)->fn());
-  return hkls;
-}
-
-/// Returns a list of symetrically independent HKLs within the specified
-/// d-limits using the default reflection condition filter.
-std::vector<V3D> ReflectionGenerator::getUniqueHKLs(double dMin,
-                                                    double dMax) const {
-  return getUniqueHKLs(dMin, dMax, m_defaultHKLFilter);
-}
-
-/// Returns a list of symetrically independent HKLs within the specified
-/// d-limits using the specified reflection condition filter.
-std::vector<V3D> ReflectionGenerator::getUniqueHKLs(
-    double dMin, double dMax,
-    HKLFilter_const_sptr reflectionConditionFilter) const {
-  HKLGenerator generator(m_crystalStructure.cell(), dMin);
-
-  HKLFilter_const_sptr filter = getDRangeFilter(dMin, dMax);
-  if (reflectionConditionFilter) {
-    filter = filter & reflectionConditionFilter;
-  }
-
-  std::vector<V3D> hkls;
-  hkls.reserve(generator.size());
-
-  PointGroup_sptr pg = m_crystalStructure.spaceGroup()->getPointGroup();
-
-  for (auto hkl = generator.begin(); hkl != generator.end(); ++hkl) {
-    if (filter->isAllowed(*hkl)) {
-      hkls.push_back(pg->getReflectionFamily(*hkl));
-    }
-  }
-
-  std::sort(hkls.begin(), hkls.end());
-  hkls.erase(std::unique(hkls.begin(), hkls.end()), hkls.end());
-
-  return hkls;
-}
-
-/// Returns a list of d-values that correspond to the supplied hkl list, using
-/// the unit cell of the stored crystal structure.
-std::vector<double>
-ReflectionGenerator::getDValues(const std::vector<V3D> &hkls) const {
-  std::vector<double> dValues;
-  dValues.reserve(hkls.size());
-
-  std::transform(hkls.begin(), hkls.end(), std::back_inserter(dValues),
-                 LatticeSpacingCalculator(m_crystalStructure.cell()));
-
-  return dValues;
-}
-
-/// Returns a list of squared structure factor amplitudes corresponding to the
-/// supplied list of HKLs.
-std::vector<double>
-ReflectionGenerator::getFsSquared(const std::vector<V3D> &hkls) const {
-  return m_sfCalculator->getFsSquared(hkls);
-}
-
-} // namespace Geometry
-} // namespace Mantid
diff --git a/Code/Mantid/Framework/Geometry/src/Crystal/StructureFactorCalculator.cpp b/Code/Mantid/Framework/Geometry/src/Crystal/StructureFactorCalculator.cpp
deleted file mode 100644
index df4cb44ed97825cee453bb450b2be33a9b5be755..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/src/Crystal/StructureFactorCalculator.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-#include "MantidGeometry/Crystal/StructureFactorCalculator.h"
-
-#include <boost/bind.hpp>
-
-namespace Mantid {
-namespace Geometry {
-
-StructureFactorCalculator::StructureFactorCalculator() {}
-
-/**
- * Sets the crystal structure for which to calculate structure factors
- *
- * Additionally StructureFactorCalculator::crystalStructureSetHook() is called
- * with the CrystalStructure. This function may be re-implemented
- * by concrete structure factor calculators to perform other necessary actions
- * that involve the crystal structure (for example extracting and storing
- * members of it).
- *
- * @param crystalStructure :: Crystal structure for calculations.
- */
-void StructureFactorCalculator::setCrystalStructure(
-    const CrystalStructure &crystalStructure) {
-  crystalStructureSetHook(crystalStructure);
-}
-
-/// Returns F^2 for the given HKL, calling StructureFactorCalculator::getF().
-double StructureFactorCalculator::getFSquared(const Kernel::V3D &hkl) const {
-  StructureFactor sf = getF(hkl);
-
-  return sf.real() * sf.real() + sf.imag() * sf.imag();
-}
-
-/**
- * Returns structure factors for each HKL in the container
- *
- * The default implementation uses StructureFactorCalculator::getF() to get
- * the structure factor for each HKL. This behavior can be overriden in
- * sub-classes for example to implement this in a more efficient way.
- *
- * @param hkls :: Vector of HKLs.
- * @return :: Vector of structure factors for the given HKLs.
- */
-std::vector<StructureFactor>
-StructureFactorCalculator::getFs(const std::vector<Kernel::V3D> &hkls) const {
-  std::vector<StructureFactor> structureFactors(hkls.size());
-
-  std::transform(hkls.begin(), hkls.end(), structureFactors.begin(),
-                 boost::bind(&StructureFactorCalculator::getF, this, _1));
-
-  return structureFactors;
-}
-
-/**
- * Returns structure factors for each HKL in the container
- *
- * The default implementation uses StructureFactorCalculator::getFSquared() with
- * each HKL. This behavior can be overriden in
- * sub-classes for example to implement this in a more efficient way.
- *
- * @param hkls :: Vector of HKLs.
- * @return :: Vector of squared structure factors for the given HKLs.
- */
-std::vector<double> StructureFactorCalculator::getFsSquared(
-    const std::vector<Kernel::V3D> &hkls) const {
-  std::vector<double> fSquareds(hkls.size());
-
-  std::transform(
-      hkls.begin(), hkls.end(), fSquareds.begin(),
-      boost::bind(&StructureFactorCalculator::getFSquared, this, _1));
-
-  return fSquareds;
-}
-
-/// This function is called from
-/// StructureFactorCalculator::setCrystalStructure() and can be overriden to
-/// perform additional actions.
-void StructureFactorCalculator::crystalStructureSetHook(
-    const CrystalStructure &crystalStructure) {
-  UNUSED_ARG(crystalStructure)
-}
-
-} // namespace Geometry
-} // namespace Mantid
diff --git a/Code/Mantid/Framework/Geometry/src/Crystal/StructureFactorCalculatorSummation.cpp b/Code/Mantid/Framework/Geometry/src/Crystal/StructureFactorCalculatorSummation.cpp
deleted file mode 100644
index eabc22952cbd37217570255a766d4f023f170d83..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/src/Crystal/StructureFactorCalculatorSummation.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#include "MantidGeometry/Crystal/StructureFactorCalculatorSummation.h"
-#include "MantidGeometry/Crystal/BraggScattererInCrystalStructure.h"
-
-#include <iomanip>
-
-namespace Mantid {
-namespace Geometry {
-
-using namespace Kernel;
-
-StructureFactorCalculatorSummation::StructureFactorCalculatorSummation()
-    : StructureFactorCalculator(),
-      m_unitCellScatterers(CompositeBraggScatterer::create()) {}
-
-/// Returns the structure factor obtained from the stored scatterers.
-StructureFactor
-StructureFactorCalculatorSummation::getF(const Kernel::V3D &hkl) const {
-  return m_unitCellScatterers->calculateStructureFactor(hkl);
-}
-
-/// Calls updateUnitCellScatterers() to rebuild the complete list of scatterers.
-void StructureFactorCalculatorSummation::crystalStructureSetHook(
-    const CrystalStructure &crystalStructure) {
-  updateUnitCellScatterers(crystalStructure);
-}
-
-/**
- * Rebuilds the internal list of scatterers
- *
- * This method extracts two items from the supplied CrystalStructure object, the
- * list of scatterers in the asymmetric unit and the space group. Then it
- * generates all equivalent positions and creates a complete list of scatterers.
- *
- * @param crystalStructure :: CrystalStructure for structure factor calculation.
- */
-void StructureFactorCalculatorSummation::updateUnitCellScatterers(
-    const CrystalStructure &crystalStructure) {
-  m_unitCellScatterers->removeAllScatterers();
-
-  CompositeBraggScatterer_sptr scatterersInAsymmetricUnit =
-      crystalStructure.getScatterers();
-  SpaceGroup_const_sptr spaceGroup = crystalStructure.spaceGroup();
-
-  if (spaceGroup) {
-    std::vector<BraggScatterer_sptr> braggScatterers;
-    braggScatterers.reserve(scatterersInAsymmetricUnit->nScatterers() *
-                            spaceGroup->order());
-
-    for (size_t i = 0; i < scatterersInAsymmetricUnit->nScatterers(); ++i) {
-      BraggScattererInCrystalStructure_sptr current =
-          boost::dynamic_pointer_cast<BraggScattererInCrystalStructure>(
-              scatterersInAsymmetricUnit->getScatterer(i));
-
-      if (current) {
-        std::vector<V3D> positions =
-            spaceGroup->getEquivalentPositions(current->getPosition());
-
-        for (auto pos = positions.begin(); pos != positions.end(); ++pos) {
-          BraggScatterer_sptr clone = current->clone();
-          clone->setProperty("Position", getV3DasString(*pos));
-
-          braggScatterers.push_back(clone);
-        }
-      }
-    }
-
-    m_unitCellScatterers->setScatterers(braggScatterers);
-  }
-}
-
-/// Return V3D as string without losing precision.
-std::string
-StructureFactorCalculatorSummation::getV3DasString(const V3D &point) const {
-  std::ostringstream posStream;
-  posStream << std::setprecision(17);
-  posStream << point;
-
-  return posStream.str();
-}
-
-} // namespace Geometry
-} // namespace Mantid
diff --git a/Code/Mantid/Framework/Geometry/test/BasicHKLFiltersTest.h b/Code/Mantid/Framework/Geometry/test/BasicHKLFiltersTest.h
deleted file mode 100644
index 7295290c09a156062be0e9cd70d3c2308ef2bead..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/test/BasicHKLFiltersTest.h
+++ /dev/null
@@ -1,146 +0,0 @@
-#ifndef MANTID_GEOMETRY_BASICHKLFILTERSTEST_H_
-#define MANTID_GEOMETRY_BASICHKLFILTERSTEST_H_
-
-#include <cxxtest/TestSuite.h>
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
-#include "MantidGeometry/Crystal/BasicHKLFilters.h"
-#include "MantidGeometry/Crystal/SpaceGroupFactory.h"
-#include "MantidGeometry/Crystal/StructureFactorCalculator.h"
-
-#include <strstream>
-
-using namespace Mantid::Geometry;
-using namespace Mantid::Kernel;
-
-using ::testing::_;
-using ::testing::Return;
-using ::testing::Mock;
-
-class BasicHKLFiltersTest : public CxxTest::TestSuite {
-public:
-  // This pair of boilerplate methods prevent the suite being created statically
-  // This means the constructor isn't called when running other tests
-  static BasicHKLFiltersTest *createSuite() {
-    return new BasicHKLFiltersTest();
-  }
-  static void destroySuite(BasicHKLFiltersTest *suite) { delete suite; }
-
-  void testHKLFilterDRangeConstructors() {
-    UnitCell cell(10., 10., 10.);
-
-    TS_ASSERT_THROWS_NOTHING(HKLFilterDRange dFilter(cell, 1.0));
-    TS_ASSERT_THROWS(HKLFilterDRange dFilter(cell, -1.0), std::range_error);
-    TS_ASSERT_THROWS(HKLFilterDRange dFilter(cell, 0.0), std::range_error);
-
-    TS_ASSERT_THROWS_NOTHING(HKLFilterDRange dFilter(cell, 1.0, 2.0));
-    TS_ASSERT_THROWS(HKLFilterDRange dFilter(cell, 1.0, 0.5), std::range_error);
-    TS_ASSERT_THROWS(HKLFilterDRange dFilter(cell, 1.0, -0.5),
-                     std::range_error);
-  }
-
-  void testHKLFilterDRangeDescription() {
-    UnitCell cell(10., 10., 10.);
-
-    std::ostringstream reference;
-    reference << "(" << 1.0 << " <= d <= " << 10.0 << ")";
-
-    HKLFilterDRange dFilter(cell, 1.0);
-    TS_ASSERT_EQUALS(dFilter.getDescription(), reference.str());
-  }
-
-  void testHKLFilterDRangeIsAllowed() {
-    UnitCell cell(10., 10., 10.);
-    HKLFilterDRange dFilter(cell, 1.0, 9.0);
-
-    TS_ASSERT(dFilter.isAllowed(V3D(1, 2, 3)));
-
-    TS_ASSERT(dFilter.isAllowed(V3D(2, 0, 0)));
-    TS_ASSERT(!dFilter.isAllowed(V3D(1, 0, 0)));
-
-    TS_ASSERT(dFilter.isAllowed(V3D(10, 0, 0)));
-    TS_ASSERT(!dFilter.isAllowed(V3D(11, 0, 0)));
-  }
-
-  void testHKLFilterSpaceGroupConstructor() {
-    SpaceGroup_const_sptr invalid;
-    TS_ASSERT_THROWS(HKLFilterSpaceGroup sgFilter(invalid), std::runtime_error);
-
-    SpaceGroup_const_sptr sg =
-        SpaceGroupFactory::Instance().createSpaceGroup("F d -3 m");
-    TS_ASSERT_THROWS_NOTHING(HKLFilterSpaceGroup sgFilter(sg));
-  }
-
-  void testHKLFilterSpaceGroupDescription() {
-    SpaceGroup_const_sptr sg =
-        SpaceGroupFactory::Instance().createSpaceGroup("F d -3 m");
-
-    HKLFilterSpaceGroup sgFilter(sg);
-
-    TS_ASSERT_EQUALS(sgFilter.getDescription(),
-                     "(Space group: " + sg->hmSymbol() + ")");
-  }
-
-  void testHKLFilterSpaceGroupIsAllowed() {
-    SpaceGroup_const_sptr sg =
-        SpaceGroupFactory::Instance().createSpaceGroup("F d -3 m");
-
-    HKLFilterSpaceGroup sgFilter(sg);
-
-    TS_ASSERT(!sgFilter.isAllowed(V3D(1, 0, 0)));
-    TS_ASSERT(!sgFilter.isAllowed(V3D(1, 1, 0)));
-    TS_ASSERT(sgFilter.isAllowed(V3D(1, 1, 1)));
-
-    TS_ASSERT(!sgFilter.isAllowed(V3D(2, 0, 0)));
-    TS_ASSERT(!sgFilter.isAllowed(V3D(3, 0, 0)));
-    TS_ASSERT(sgFilter.isAllowed(V3D(4, 0, 0)));
-  }
-
-  void testHKLFilterStructureFactorConstructor() {
-    StructureFactorCalculator_sptr invalid;
-    TS_ASSERT_THROWS(HKLFilterStructureFactor sfFilter(invalid),
-                     std::runtime_error);
-
-    StructureFactorCalculator_sptr mock =
-        boost::make_shared<MockStructureFactorCalculator>();
-    TS_ASSERT_THROWS_NOTHING(HKLFilterStructureFactor sfFilter(mock));
-    TS_ASSERT_THROWS_NOTHING(HKLFilterStructureFactor sfFilter(mock, 12.0));
-  }
-
-  void testHKLFilterStructureFactorDescription() {
-    std::ostringstream reference;
-    reference << "(F^2 > " << 1.0 << ")";
-
-    StructureFactorCalculator_sptr mock =
-        boost::make_shared<MockStructureFactorCalculator>();
-    HKLFilterStructureFactor sfFilter(mock, 1.0);
-    TS_ASSERT_EQUALS(sfFilter.getDescription(), reference.str());
-  }
-
-  void testHKLFilterStructureFactorIsAllowed() {
-    boost::shared_ptr<MockStructureFactorCalculator> mock =
-        boost::make_shared<MockStructureFactorCalculator>();
-
-    EXPECT_CALL(*mock, getFSquared(_))
-        .WillOnce(Return(2.0))
-        .WillOnce(Return(0.5))
-        .WillOnce(Return(1.0));
-
-    HKLFilterStructureFactor sfFilter(mock, 1.0);
-    TS_ASSERT(sfFilter.isAllowed(V3D(1, 1, 1)));
-    TS_ASSERT(!sfFilter.isAllowed(V3D(1, 1, 1)));
-    TS_ASSERT(!sfFilter.isAllowed(V3D(1, 1, 1)));
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(mock.get()))
-  }
-
-private:
-  class MockStructureFactorCalculator : public StructureFactorCalculator {
-  public:
-    MOCK_CONST_METHOD1(getF, StructureFactor(const V3D &));
-    MOCK_CONST_METHOD1(getFSquared, double(const V3D &));
-  };
-};
-
-#endif /* MANTID_GEOMETRY_BASICHKLFILTERSTEST_H_ */
diff --git a/Code/Mantid/Framework/Geometry/test/HKLFilterTest.h b/Code/Mantid/Framework/Geometry/test/HKLFilterTest.h
deleted file mode 100644
index c0ef32dde759a8601d65ffdfd9fae6adc7e001e8..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/test/HKLFilterTest.h
+++ /dev/null
@@ -1,209 +0,0 @@
-#ifndef MANTID_GEOMETRY_HKLFILTERTEST_H_
-#define MANTID_GEOMETRY_HKLFILTERTEST_H_
-
-#include <cxxtest/TestSuite.h>
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
-#include "MantidGeometry/Crystal/HKLFilter.h"
-#include "MantidKernel/V3D.h"
-
-#include <boost/make_shared.hpp>
-
-using namespace Mantid::Geometry;
-using namespace Mantid::Kernel;
-
-using ::testing::_;
-using ::testing::Return;
-using ::testing::Mock;
-
-class HKLFilterTest : public CxxTest::TestSuite {
-public:
-  // This pair of boilerplate methods prevent the suite being created statically
-  // This means the constructor isn't called when running other tests
-  static HKLFilterTest *createSuite() { return new HKLFilterTest(); }
-  static void destroySuite(HKLFilterTest *suite) { delete suite; }
-
-  void testFn() {
-    MockHKLFilter filter;
-    EXPECT_CALL(filter, isAllowed(_))
-        .Times(2)
-        .WillOnce(Return(true))
-        .WillRepeatedly(Return(false));
-
-    std::function<bool(const V3D &)> f = filter.fn();
-
-    TS_ASSERT_EQUALS(f(V3D(1, 1, 1)), true);
-    TS_ASSERT_EQUALS(f(V3D(1, 1, 1)), false);
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&filter));
-  }
-
-  void testUnaryLogicOperation() {
-    HKLFilter_const_sptr filter = boost::make_shared<MockHKLFilter>();
-
-    TS_ASSERT_THROWS_NOTHING(MockHKLFilterUnaryLogicOperation op(filter));
-
-    MockHKLFilterUnaryLogicOperation op(filter);
-    TS_ASSERT_EQUALS(op.getOperand(), filter);
-
-    HKLFilter_const_sptr invalid;
-    TS_ASSERT_THROWS(MockHKLFilterUnaryLogicOperation op(invalid),
-                     std::runtime_error);
-  }
-
-  void testBinaryLogicOperation() {
-    HKLFilter_const_sptr lhs = boost::make_shared<MockHKLFilter>();
-    HKLFilter_const_sptr rhs = boost::make_shared<MockHKLFilter>();
-
-    TS_ASSERT_THROWS_NOTHING(MockHKLFilterBinaryLogicOperation op(lhs, rhs));
-
-    MockHKLFilterBinaryLogicOperation op(lhs, rhs);
-    TS_ASSERT_EQUALS(op.getLHS(), lhs);
-    TS_ASSERT_EQUALS(op.getRHS(), rhs);
-
-    HKLFilter_const_sptr invalid;
-    TS_ASSERT_THROWS(MockHKLFilterBinaryLogicOperation op(invalid, rhs),
-                     std::runtime_error);
-    TS_ASSERT_THROWS(MockHKLFilterBinaryLogicOperation op(lhs, invalid),
-                     std::runtime_error);
-    TS_ASSERT_THROWS(MockHKLFilterBinaryLogicOperation op(invalid, invalid),
-                     std::runtime_error);
-  }
-
-  void testHKLFilterNot() {
-    boost::shared_ptr<const MockHKLFilter> filter(new MockHKLFilter);
-
-    EXPECT_CALL(*filter, isAllowed(_))
-        .WillOnce(Return(true))
-        .WillOnce(Return(false));
-
-    HKLFilterNot notFilter(filter);
-
-    TS_ASSERT_EQUALS(notFilter.isAllowed(V3D(1, 1, 1)), false);
-    TS_ASSERT_EQUALS(notFilter.isAllowed(V3D(1, 1, 1)), true);
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(
-        boost::const_pointer_cast<MockHKLFilter>(filter).get()));
-  }
-
-  void testHKLFilterNotOperator() {
-    HKLFilter_const_sptr filter = boost::make_shared<MockHKLFilter>();
-
-    HKLFilter_const_sptr notFilter = ~filter;
-
-    boost::shared_ptr<const HKLFilterNot> notFilterCasted =
-        boost::dynamic_pointer_cast<const HKLFilterNot>(notFilter);
-    TS_ASSERT(notFilterCasted);
-
-    TS_ASSERT_EQUALS(notFilterCasted->getOperand(), filter);
-  }
-
-  void testHKLFilterAnd() {
-    boost::shared_ptr<const MockHKLFilter> lhs(new MockHKLFilter);
-    EXPECT_CALL(*lhs, isAllowed(_))
-        .WillOnce(Return(true))
-        .WillOnce(Return(false))
-        .WillOnce(Return(true));
-
-    boost::shared_ptr<const MockHKLFilter> rhs(new MockHKLFilter);
-    EXPECT_CALL(*rhs, isAllowed(_))
-        .WillOnce(Return(true))
-        .WillOnce(Return(false));
-
-    HKLFilterAnd andFilter(lhs, rhs);
-
-    TS_ASSERT_EQUALS(andFilter.isAllowed(V3D(1, 1, 1)), true);
-    TS_ASSERT_EQUALS(andFilter.isAllowed(V3D(1, 1, 1)), false);
-    TS_ASSERT_EQUALS(andFilter.isAllowed(V3D(1, 1, 1)), false);
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(
-        boost::const_pointer_cast<MockHKLFilter>(lhs).get()));
-    TS_ASSERT(Mock::VerifyAndClearExpectations(
-        boost::const_pointer_cast<MockHKLFilter>(rhs).get()));
-  }
-
-  void testHKLFilterAndOperator() {
-    HKLFilter_const_sptr lhs = boost::make_shared<MockHKLFilter>();
-    HKLFilter_const_sptr rhs = boost::make_shared<MockHKLFilter>();
-
-    HKLFilter_const_sptr andFilter = lhs & rhs;
-
-    boost::shared_ptr<const HKLFilterAnd> andFilterCasted =
-        boost::dynamic_pointer_cast<const HKLFilterAnd>(andFilter);
-
-    TS_ASSERT(andFilterCasted);
-
-    TS_ASSERT_EQUALS(andFilterCasted->getLHS(), lhs);
-    TS_ASSERT_EQUALS(andFilterCasted->getRHS(), rhs);
-  }
-
-  void testHKLFilterOr() {
-    boost::shared_ptr<const MockHKLFilter> lhs(new MockHKLFilter);
-    EXPECT_CALL(*lhs, isAllowed(_))
-        .WillOnce(Return(true))
-        .WillOnce(Return(false))
-        .WillOnce(Return(true))
-        .WillOnce(Return(false));
-
-    boost::shared_ptr<const MockHKLFilter> rhs(new MockHKLFilter);
-    EXPECT_CALL(*rhs, isAllowed(_))
-        .WillOnce(Return(false))
-        .WillOnce(Return(true));
-
-    HKLFilterOr orFilter(lhs, rhs);
-
-    TS_ASSERT_EQUALS(orFilter.isAllowed(V3D(1, 1, 1)), true);
-    TS_ASSERT_EQUALS(orFilter.isAllowed(V3D(1, 1, 1)), false);
-    TS_ASSERT_EQUALS(orFilter.isAllowed(V3D(1, 1, 1)), true);
-    TS_ASSERT_EQUALS(orFilter.isAllowed(V3D(1, 1, 1)), true);
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(
-        boost::const_pointer_cast<MockHKLFilter>(lhs).get()));
-    TS_ASSERT(Mock::VerifyAndClearExpectations(
-        boost::const_pointer_cast<MockHKLFilter>(rhs).get()));
-  }
-
-  void testHKLFilterOrOperator() {
-    HKLFilter_const_sptr lhs = boost::make_shared<MockHKLFilter>();
-    HKLFilter_const_sptr rhs = boost::make_shared<MockHKLFilter>();
-
-    HKLFilter_const_sptr orFilter = lhs | rhs;
-
-    boost::shared_ptr<const HKLFilterOr> orFilterCasted =
-        boost::dynamic_pointer_cast<const HKLFilterOr>(orFilter);
-
-    TS_ASSERT(orFilterCasted);
-
-    TS_ASSERT_EQUALS(orFilterCasted->getLHS(), lhs);
-    TS_ASSERT_EQUALS(orFilterCasted->getRHS(), rhs);
-  }
-
-private:
-  class MockHKLFilter : public HKLFilter {
-  public:
-    MOCK_CONST_METHOD0(getDescription, std::string());
-    MOCK_CONST_METHOD1(isAllowed, bool(const V3D &));
-  };
-
-  class MockHKLFilterUnaryLogicOperation : public HKLFilterUnaryLogicOperation {
-  public:
-    MockHKLFilterUnaryLogicOperation(const HKLFilter_const_sptr &filter)
-        : HKLFilterUnaryLogicOperation(filter) {}
-
-    MOCK_CONST_METHOD0(getDescription, std::string());
-    MOCK_CONST_METHOD1(isAllowed, bool(const V3D &));
-  };
-
-  class MockHKLFilterBinaryLogicOperation
-      : public HKLFilterBinaryLogicOperation {
-  public:
-    MockHKLFilterBinaryLogicOperation(const HKLFilter_const_sptr &lhs,
-                                      const HKLFilter_const_sptr &rhs)
-        : HKLFilterBinaryLogicOperation(lhs, rhs) {}
-
-    MOCK_CONST_METHOD0(getDescription, std::string());
-    MOCK_CONST_METHOD1(isAllowed, bool(const V3D &));
-  };
-};
-#endif /* MANTID_GEOMETRY_HKLFILTERTEST_H_ */
diff --git a/Code/Mantid/Framework/Geometry/test/HKLGeneratorTest.h b/Code/Mantid/Framework/Geometry/test/HKLGeneratorTest.h
deleted file mode 100644
index f6cffd236d46002b8dac782b7defd1f04d12bc89..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/test/HKLGeneratorTest.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef MANTID_GEOMETRY_HKLGENERATORTEST_H_
-#define MANTID_GEOMETRY_HKLGENERATORTEST_H_
-
-#include <cxxtest/TestSuite.h>
-#include "MantidGeometry/Crystal/HKLGenerator.h"
-
-using namespace Mantid::Geometry;
-using namespace Mantid::Kernel;
-
-class HKLGeneratorTest : public CxxTest::TestSuite {
-public:
-  // This pair of boilerplate methods prevent the suite being created statically
-  // This means the constructor isn't called when running other tests
-  static HKLGeneratorTest *createSuite() { return new HKLGeneratorTest(); }
-  static void destroySuite(HKLGeneratorTest *suite) { delete suite; }
-
-  void test_HKLGeneratorReturnsCorrectSizeSymmetricInt() {
-    HKLGenerator gen(2, 2, 2);
-
-    TS_ASSERT_EQUALS(gen.size(), 125);
-  }
-
-  void test_HKLGeneratorReturnsCorrectSizeSymmetricV3D() {
-    HKLGenerator gen(V3D(2, 2, 2));
-
-    TS_ASSERT_EQUALS(gen.size(), 125);
-  }
-
-  void test_HKLGeneratorReturnsCorrectSizeAsymmetricV3D() {
-    HKLGenerator gen(V3D(-2, -1, -5), V3D(3, 4, -2));
-
-    TS_ASSERT_EQUALS(gen.size(), 144);
-  }
-
-  void test_HKLGeneratorReturnsCorrectSizeOne() {
-    HKLGenerator gen(V3D(-2, -1, -5), V3D(-2, -1, -5));
-    TS_ASSERT_EQUALS(gen.size(), 1);
-  }
-
-  void test_beginIterator() {
-    HKLGenerator gen(V3D(-2, -2, -3), V3D(1, 1, 0));
-
-    HKLGenerator::const_iterator it = gen.begin();
-    TS_ASSERT_EQUALS(*it, V3D(-2, -2, -3));
-  }
-
-  void test_endIterator() {
-    HKLGenerator gen(V3D(-2, -2, -3), V3D(1, 1, 0));
-
-    HKLGenerator::const_iterator it = gen.end();
-    TS_ASSERT_EQUALS(*it, V3D(2, -2, -3));
-  }
-
-  void test_iterator_dereference() {
-    HKLGenerator::const_iterator it;
-    TS_ASSERT_EQUALS(*it, V3D(0, 0, 0));
-  }
-
-  void test_comparison() {
-    HKLGenerator::const_iterator it1(V3D(-2, -3, 1));
-    HKLGenerator::const_iterator it2(V3D(-2, -3, 1));
-    HKLGenerator::const_iterator it3(V3D(-2, -3, 0));
-
-    TS_ASSERT_EQUALS(it1, it2);
-    TS_ASSERT_DIFFERS(it1, it3);
-  }
-
-  void test_iterator_increment() {
-    HKLGenerator::const_iterator defaultIterator;
-    TS_ASSERT_THROWS_NOTHING(++defaultIterator);
-  }
-
-  void test_iterator_dereference_range() {
-    HKLGenerator::const_iterator it(V3D(-1, -1, -1), V3D(1, 1, 1));
-    TS_ASSERT_EQUALS(*it, V3D(-1, -1, -1));
-    ++it;
-    TS_ASSERT_EQUALS(*it, V3D(-1, -1, 0));
-  }
-
-  void test_hkl_range() {
-    HKLGenerator::const_iterator it(V3D(-1, -1, -1), V3D(1, 1, 1));
-    HKLGenerator::const_iterator end(V3D(2, -1, -1));
-
-    std::vector<V3D> hkls;
-    std::copy(it, end, std::back_inserter(hkls));
-
-    TS_ASSERT_EQUALS(hkls.size(), 27);
-    TS_ASSERT_EQUALS(hkls[0], V3D(-1, -1, -1));
-    TS_ASSERT_EQUALS(hkls[1], V3D(-1, -1, 0));
-    TS_ASSERT_EQUALS(hkls[2], V3D(-1, -1, 1));
-    TS_ASSERT_EQUALS(hkls[3], V3D(-1, 0, -1));
-    TS_ASSERT_EQUALS(hkls[26], V3D(1, 1, 1));
-
-    TS_ASSERT_EQUALS(std::distance(it, end), 27);
-  }
-};
-
-#endif /* MANTID_GEOMETRY_HKLGENERATORTEST_H_ */
diff --git a/Code/Mantid/Framework/Geometry/test/ReflectionGeneratorTest.h b/Code/Mantid/Framework/Geometry/test/ReflectionGeneratorTest.h
deleted file mode 100644
index 9c3da2883aa0664fbd38315122247b895a5123cf..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/test/ReflectionGeneratorTest.h
+++ /dev/null
@@ -1,126 +0,0 @@
-#ifndef MANTID_GEOMETRY_REFLECTIONGENERATORTEST_H_
-#define MANTID_GEOMETRY_REFLECTIONGENERATORTEST_H_
-
-#include <cxxtest/TestSuite.h>
-
-#include "MantidGeometry/Crystal/ReflectionGenerator.h"
-#include "MantidGeometry/Crystal/BasicHKLFilters.h"
-
-using namespace Mantid::Geometry;
-using namespace Mantid::Kernel;
-
-class ReflectionGeneratorTest : public CxxTest::TestSuite {
-public:
-  // This pair of boilerplate methods prevent the suite being created statically
-  // This means the constructor isn't called when running other tests
-  static ReflectionGeneratorTest *createSuite() {
-    return new ReflectionGeneratorTest();
-  }
-  static void destroySuite(ReflectionGeneratorTest *suite) { delete suite; }
-
-  void test_getUniqueHKLs() {
-    double dMin = 0.55;
-    double dMax = 4.0;
-
-    ReflectionGenerator generator(
-        CrystalStructure("4.126 4.126 4.126", "P m -3 m", "Si 0 0 0 1.0 0.01"),
-        ReflectionConditionFilter::Centering);
-
-    TS_ASSERT_THROWS_NOTHING(generator.getUniqueHKLs(dMin, dMax));
-
-    std::vector<V3D> peaks = generator.getUniqueHKLs(dMin, dMax);
-
-    TS_ASSERT_EQUALS(peaks.size(), 68);
-    TS_ASSERT_EQUALS(peaks[0], V3D(1, 1, 0));
-    TS_ASSERT_EQUALS(peaks[11], V3D(3, 2, 0));
-    TS_ASSERT_EQUALS(peaks[67], V3D(7, 2, 1));
-
-    // make d-value list and check that peaks are within limits
-    std::vector<double> peaksD = generator.getDValues(peaks);
-
-    std::sort(peaksD.begin(), peaksD.end());
-
-    TS_ASSERT_LESS_THAN_EQUALS(dMin, peaksD.front());
-    TS_ASSERT_LESS_THAN_EQUALS(peaksD.back(), dMax);
-  }
-
-  void test_getHKLs() {
-    double dMin = 0.55;
-    double dMax = 4.0;
-
-    // make a structure with P-1
-    ReflectionGenerator generator(
-        CrystalStructure("4.126 4.126 4.126", "P -1", "Si 0 0 0 1.0 0.01"),
-        ReflectionConditionFilter::Centering);
-
-    std::vector<V3D> unique = generator.getUniqueHKLs(dMin, dMax);
-    std::vector<V3D> peaks = generator.getHKLs(dMin, dMax);
-
-    // Because of symmetry -1, each reflection has multiplicity 2.
-    TS_ASSERT_EQUALS(peaks.size(), 2 * unique.size());
-  }
-
-  void test_getDValues() {
-    std::vector<V3D> hkls;
-    hkls.push_back(V3D(1, 0, 0));
-    hkls.push_back(V3D(0, 1, 0));
-    hkls.push_back(V3D(0, 0, 1));
-
-    ReflectionGenerator generator(
-        CrystalStructure("2 3 5", "P -1", "Si 0 0 0 1.0 0.01"));
-    std::vector<double> dValues = generator.getDValues(hkls);
-
-    TS_ASSERT_EQUALS(dValues.size(), hkls.size());
-    TS_ASSERT_EQUALS(dValues[0], 2.0);
-    TS_ASSERT_EQUALS(dValues[1], 3.0);
-    TS_ASSERT_EQUALS(dValues[2], 5.0);
-  }
-
-  void test_getUniqueHKLsStructureFactor() {
-    CrystalStructure si("5.43 5.43 5.43", "F m -3 m",
-                        "Si 0.3 0.3 0.3 1.0 0.05");
-
-    ReflectionGenerator generator(si,
-                                  ReflectionConditionFilter::StructureFactor);
-
-    std::vector<V3D> hklsCentering = generator.getUniqueHKLs(
-        0.6, 10.0, boost::make_shared<HKLFilterCentering>(si.centering()));
-
-    std::vector<V3D> hklsStructureFactors = generator.getUniqueHKLs(0.6, 10.0);
-
-    TS_ASSERT_EQUALS(hklsCentering.size(), hklsStructureFactors.size());
-
-    for (size_t i = 0; i < hklsCentering.size(); ++i) {
-      TS_ASSERT_EQUALS(hklsCentering[i], hklsStructureFactors[i]);
-    }
-  }
-
-  void test_getUniqueHKLsHexagonal() {
-    ReflectionGenerator generator(
-        CrystalStructure("3.2094 3.2094 5.2108 90.0 90.0 120.0", "P 63/m m c",
-                         "Mg 1/3 2/3 1/4 1.0 0.005"),
-        ReflectionConditionFilter::StructureFactor);
-
-    std::vector<V3D> hkls = generator.getUniqueHKLs(0.5, 10.0);
-
-    TS_ASSERT_EQUALS(hkls.size(), 88);
-
-    std::vector<double> dValues = generator.getDValues(hkls);
-    for (size_t i = 0; i < hkls.size(); ++i) {
-      TS_ASSERT_LESS_THAN(0.5, dValues[i]);
-    }
-  }
-
-  void test_getUniqueHKLsTrigonal() {
-    ReflectionGenerator generator(
-        CrystalStructure("4.759355 4.759355 12.99231 90.0 90.0 120.0", "R -3 c",
-                         "Al 0 0 0.35217 1.0 0.005; O 0.69365 0 1/4 1.0 0.005"),
-        ReflectionConditionFilter::StructureFactor);
-
-    std::vector<V3D> hkls = generator.getUniqueHKLs(0.885, 10.0);
-
-    TS_ASSERT_EQUALS(hkls.size(), 44);
-  }
-};
-
-#endif /* MANTID_GEOMETRY_REFLECTIONGENERATORTEST_H_ */
diff --git a/Code/Mantid/Framework/Geometry/test/StructureFactorCalculatorSummationTest.h b/Code/Mantid/Framework/Geometry/test/StructureFactorCalculatorSummationTest.h
deleted file mode 100644
index a1ce3c9670a57b3edd0cd2dd6302d8c27c3a33bf..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/test/StructureFactorCalculatorSummationTest.h
+++ /dev/null
@@ -1,75 +0,0 @@
-#ifndef MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORSUMMATIONTEST_H_
-#define MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORSUMMATIONTEST_H_
-
-#include <cxxtest/TestSuite.h>
-
-#include "MantidGeometry/Crystal/StructureFactorCalculatorSummation.h"
-
-#include "MantidGeometry/Crystal/BraggScattererFactory.h"
-#include "MantidGeometry/Crystal/SpaceGroupFactory.h"
-
-using namespace Mantid::Geometry;
-using namespace Mantid::Kernel;
-
-class StructureFactorCalculatorSummationTest : public CxxTest::TestSuite {
-public:
-  // This pair of boilerplate methods prevent the suite being created statically
-  // This means the constructor isn't called when running other tests
-  static StructureFactorCalculatorSummationTest *createSuite() {
-    return new StructureFactorCalculatorSummationTest();
-  }
-  static void destroySuite(StructureFactorCalculatorSummationTest *suite) {
-    delete suite;
-  }
-
-  void testEquivalentPositionsAreUsed() {
-    // Approximate crystal structure of Silicon
-    CrystalStructure si = getCrystalStructure();
-
-    StructureFactorCalculatorSummation calculator;
-    calculator.setCrystalStructure(si);
-
-    // {1 0 0} reflections are not allowed because of F centering
-    TS_ASSERT_LESS_THAN(calculator.getFSquared(V3D(1, 0, 0)), 1e-9);
-
-    // {2 2 2} is forbidden because of Si on special position
-    TS_ASSERT_LESS_THAN(calculator.getFSquared(V3D(2, 2, 2)), 1e-9);
-
-    // With space group P-1, those are allowed.
-    si.setSpaceGroup(SpaceGroupFactory::Instance().createSpaceGroup("P -1"));
-
-    calculator.setCrystalStructure(si);
-    // {1 0 0} reflections are not allowed because of F centering
-    TS_ASSERT_LESS_THAN(1e-9, calculator.getFSquared(V3D(1, 0, 0)));
-
-    // {2 2 2} is forbidden because of Si on special position
-    TS_ASSERT_LESS_THAN(1e-9, calculator.getFSquared(V3D(2, 2, 2)));
-  }
-
-  void testCreateWithFactory() {
-    CrystalStructure si = getCrystalStructure();
-
-    StructureFactorCalculator_sptr calculator =
-        StructureFactorCalculatorFactory::create<
-            StructureFactorCalculatorSummation>(si);
-
-    // same reflections as in testEquivalentPositionsAreUsed
-    TS_ASSERT_LESS_THAN(calculator->getFSquared(V3D(1, 0, 0)), 1e-9);
-    TS_ASSERT_LESS_THAN(calculator->getFSquared(V3D(2, 2, 2)), 1e-9);
-  }
-
-private:
-  CrystalStructure getCrystalStructure() {
-    CompositeBraggScatterer_sptr scatterers = CompositeBraggScatterer::create();
-    scatterers->addScatterer(BraggScattererFactory::Instance().createScatterer(
-        "IsotropicAtomBraggScatterer", "Element=Si;Position=[0,0,0];U=0.05"));
-
-    CrystalStructure si(
-        UnitCell(5.43, 5.43, 5.43),
-        SpaceGroupFactory::Instance().createSpaceGroup("F d -3 m"), scatterers);
-
-    return si;
-  }
-};
-
-#endif /* MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORSUMMATIONTEST_H_ */
diff --git a/Code/Mantid/Framework/Geometry/test/StructureFactorCalculatorTest.h b/Code/Mantid/Framework/Geometry/test/StructureFactorCalculatorTest.h
deleted file mode 100644
index 72421449f7132c3b281a0f7873be91431a052d59..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/Geometry/test/StructureFactorCalculatorTest.h
+++ /dev/null
@@ -1,107 +0,0 @@
-#ifndef MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORTEST_H_
-#define MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORTEST_H_
-
-#include <cxxtest/TestSuite.h>
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
-#include "MantidGeometry/Crystal/StructureFactorCalculator.h"
-#include "MantidGeometry/Crystal/SpaceGroupFactory.h"
-
-using namespace Mantid::Geometry;
-using namespace Mantid::Kernel;
-using ::testing::Mock;
-using ::testing::_;
-using ::testing::Return;
-
-class StructureFactorCalculatorTest : public CxxTest::TestSuite {
-public:
-  // This pair of boilerplate methods prevent the suite being created statically
-  // This means the constructor isn't called when running other tests
-  static StructureFactorCalculatorTest *createSuite() {
-    return new StructureFactorCalculatorTest();
-  }
-  static void destroySuite(StructureFactorCalculatorTest *suite) {
-    delete suite;
-  }
-
-  void testCrystalStructureSetHookIsCalled() {
-    CrystalStructure cs(UnitCell(1, 2, 3),
-                        SpaceGroupFactory::Instance().createSpaceGroup("P -1"),
-                        CompositeBraggScatterer::create());
-
-    MockStructureFactorCalculator calculator;
-    EXPECT_CALL(calculator, crystalStructureSetHook(_)).Times(1);
-
-    calculator.setCrystalStructure(cs);
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&calculator));
-  }
-
-  void testGetFSquared() {
-    MockStructureFactorCalculator calculator;
-
-    EXPECT_CALL(calculator, getF(_))
-        .WillRepeatedly(Return(StructureFactor(2.21, 3.1)));
-
-    // Check that the square of 2.21 + i * 3.1 is returned
-    TS_ASSERT_DELTA(calculator.getFSquared(V3D()), 14.4941, 1e-15);
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&calculator));
-  }
-
-  void testGetFs() {
-    MockStructureFactorCalculator calculator;
-
-    int numHKLs = 10;
-    EXPECT_CALL(calculator, getF(_))
-        .Times(numHKLs)
-        .WillRepeatedly(Return(StructureFactor(2.0, 2.0)));
-
-    std::vector<V3D> hkls(numHKLs);
-    std::vector<StructureFactor> sfs = calculator.getFs(hkls);
-
-    TS_ASSERT_EQUALS(sfs.size(), hkls.size());
-
-    for (auto sf = sfs.begin(); sf != sfs.end(); ++sf) {
-      TS_ASSERT_EQUALS(*sf, StructureFactor(2.0, 2.0));
-    }
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&calculator));
-  }
-
-  void testGetFsSquared() {
-    MockStructureFactorCalculator calculator;
-
-    int numHKLs = 10;
-    EXPECT_CALL(calculator, getF(_))
-        .Times(numHKLs)
-        .WillRepeatedly(Return(StructureFactor(2.0, 2.0)));
-
-    std::vector<V3D> hkls(numHKLs);
-    std::vector<double> sfsSquared = calculator.getFsSquared(hkls);
-
-    TS_ASSERT_EQUALS(sfsSquared.size(), hkls.size());
-
-    for (auto sf = sfsSquared.begin(); sf != sfsSquared.end(); ++sf) {
-      TS_ASSERT_EQUALS(*sf, 8.0);
-    }
-
-    TS_ASSERT(Mock::VerifyAndClearExpectations(&calculator));
-  }
-
-private:
-  /* This MockStructureFactorCalculator helps to test whether the
-   * default implementations of the virtual methods work correctly.
-   * Furthermore it is used to confirm that crystalStructureSetHook
-   * is called appropriately.
-   */
-  class MockStructureFactorCalculator : public StructureFactorCalculator {
-  public:
-    MOCK_CONST_METHOD1(getF, StructureFactor(const V3D &hkl));
-    MOCK_METHOD1(crystalStructureSetHook,
-                 void(const CrystalStructure &crystalStructure));
-  };
-};
-
-#endif /* MANTID_GEOMETRY_STRUCTUREFACTORCALCULATORTEST_H_ */
diff --git a/Code/Mantid/Framework/PythonInterface/mantid/geometry/src/Exports/CrystalStructure.cpp b/Code/Mantid/Framework/PythonInterface/mantid/geometry/src/Exports/CrystalStructure.cpp
deleted file mode 100644
index daf4587a81da370e1ffd0adc07d04f7b625a99c4..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/PythonInterface/mantid/geometry/src/Exports/CrystalStructure.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "MantidGeometry/Crystal/CrystalStructure.h"
-#include "MantidGeometry/Crystal/IsotropicAtomBraggScatterer.h"
-#include <boost/python/class.hpp>
-#include <boost/python/make_constructor.hpp>
-#include <boost/python/register_ptr_to_python.hpp>
-
-using namespace Mantid::Geometry;
-using namespace Mantid::Kernel;
-using namespace boost::python;
-
-namespace {
-SpaceGroup_sptr getSpaceGroup(CrystalStructure &self) {
-  return boost::const_pointer_cast<SpaceGroup>(self.spaceGroup());
-}
-
-std::vector<std::string> getScatterers(CrystalStructure &self) {
-  CompositeBraggScatterer_sptr scatterers = self.getScatterers();
-
-  std::vector<std::string> scattererStrings;
-  scattererStrings.reserve(scatterers->nScatterers());
-
-  for (size_t i = 0; i < scatterers->nScatterers(); ++i) {
-    scattererStrings.push_back(
-        getIsotropicAtomBraggScattererString(scatterers->getScatterer(i)));
-  }
-
-  return scattererStrings;
-}
-}
-
-void export_CrystalStructure() {
-  class_<CrystalStructure>("CrystalStructure", no_init)
-      .def(init<const std::string &, const std::string &, const std::string &>(
-          (arg("unitCell"), arg("spaceGroup"), arg("scatterers"))))
-      .def("getUnitCell", &CrystalStructure::cell)
-      .def("getSpaceGroup", &getSpaceGroup)
-      .def("getScatterers", &getScatterers);
-}
diff --git a/Code/Mantid/Framework/PythonInterface/mantid/geometry/src/Exports/ReflectionGenerator.cpp b/Code/Mantid/Framework/PythonInterface/mantid/geometry/src/Exports/ReflectionGenerator.cpp
deleted file mode 100644
index 83882c117af6c3965b0e7ed3aae8a75d9dab063b..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/PythonInterface/mantid/geometry/src/Exports/ReflectionGenerator.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "MantidGeometry/Crystal/ReflectionGenerator.h"
-#include "MantidPythonInterface/kernel/Converters/PySequenceToVector.h"
-#include <boost/python/class.hpp>
-#include <boost/python/enum.hpp>
-#include <boost/python/list.hpp>
-
-using namespace Mantid::Geometry;
-using namespace Mantid::Kernel;
-using namespace Mantid::PythonInterface;
-using namespace boost::python;
-
-namespace {
-boost::python::list getListFromV3DVector(const std::vector<V3D> &hkls) {
-  boost::python::list hklList;
-  for (auto it = hkls.begin(); it != hkls.end(); ++it) {
-    hklList.append(*it);
-  }
-  return hklList;
-}
-
-boost::python::list getHKLsDefaultFilter(ReflectionGenerator &self, double dMin,
-                                         double dMax) {
-  return getListFromV3DVector(self.getHKLs(dMin, dMax));
-}
-
-boost::python::list getHKLsUsingFilter(ReflectionGenerator &self, double dMin,
-                                       double dMax,
-                                       ReflectionConditionFilter filter) {
-  return getListFromV3DVector(
-      self.getHKLs(dMin, dMax, self.getReflectionConditionFilter(filter)));
-}
-
-boost::python::list getUniqueHKLsDefaultFilter(ReflectionGenerator &self,
-                                               double dMin, double dMax) {
-  return getListFromV3DVector(self.getUniqueHKLs(dMin, dMax));
-}
-
-boost::python::list getUniqueHKLsUsingFilter(ReflectionGenerator &self,
-                                             double dMin, double dMax,
-                                             ReflectionConditionFilter filter) {
-  return getListFromV3DVector(self.getUniqueHKLs(
-      dMin, dMax, self.getReflectionConditionFilter(filter)));
-}
-
-std::vector<double> getDValues(ReflectionGenerator &self,
-                               const boost::python::object &hkls) {
-  Converters::PySequenceToVector<V3D> converter(hkls);
-
-  return self.getDValues(converter());
-}
-
-std::vector<double> getFsSquared(ReflectionGenerator &self,
-                                 const boost::python::object &hkls) {
-  Converters::PySequenceToVector<V3D> converter(hkls);
-
-  return self.getFsSquared(converter());
-}
-}
-
-void export_ReflectionGenerator() {
-  enum_<ReflectionConditionFilter>("ReflectionConditionFilter")
-      .value("None", ReflectionConditionFilter::None)
-      .value("Centering", ReflectionConditionFilter::Centering)
-      .value("SpaceGroup", ReflectionConditionFilter::SpaceGroup)
-      .value("StructureFactor", ReflectionConditionFilter::StructureFactor)
-      .export_values();
-
-  class_<ReflectionGenerator>("ReflectionGenerator", no_init)
-      .def(init<const CrystalStructure &, optional<ReflectionConditionFilter>>(
-          (arg("crystalStructure"), arg("defaultFilter"))))
-      .def("getHKLs", &getHKLsDefaultFilter)
-      .def("getHKLsUsingFilter", &getHKLsUsingFilter)
-      .def("getUniqueHKLs", &getUniqueHKLsDefaultFilter)
-      .def("getUniqueHKLsUsingFilter", &getUniqueHKLsUsingFilter)
-      .def("getDValues", &getDValues)
-      .def("getFsSquared", &getFsSquared);
-}
diff --git a/Code/Mantid/Framework/PythonInterface/test/python/mantid/geometry/CrystalStructureTest.py b/Code/Mantid/Framework/PythonInterface/test/python/mantid/geometry/CrystalStructureTest.py
deleted file mode 100644
index 147d8e1e232adbea44574f5a908e45e4a68614ba..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/PythonInterface/test/python/mantid/geometry/CrystalStructureTest.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# pylint: disable=no-init,invalid-name,too-many-public-methods,broad-except
-import unittest
-from mantid.geometry import CrystalStructure
-
-
-class CrystalStructureTest(unittest.TestCase):
-    def test_creation(self):
-        # Some valid constructions
-        self.assertTrue(self.createCrystalStructureOrRaise("5.43 5.43 5.43", "F d -3 m", "Al 1/3 0.454 1/12 1.0 0.01"))
-        self.assertTrue(self.createCrystalStructureOrRaise("5.43 5.43 5.43", "C m m m", "Al 1/3 0.454 1/12 1.0 0.01;\n"
-                                                                                        "Si 2/3 0.121 1/8"))
-        self.assertTrue(
-            self.createCrystalStructureOrRaise("5.43 5.43 5.43 90 90 120", "R -3 c", "Al 1/3 0.454 1/12 1.0 0.01;\n"
-                                                                                     "Si 2/3 0.121 1/8"))
-
-        # Invalid unit cell specification
-        self.assertFalse(
-            self.createCrystalStructureOrRaise("5.43 5.43 5.43 90.0", "C m m m", "Al 1/3 0.454 1/12 1.0 0.01"))
-
-        # Invalid space group
-        self.assertFalse(
-            self.createCrystalStructureOrRaise("5.43 5.43 5.43", "INVALID", "Al 1/3 0.454 1/12 1.0 0.01"))
-
-        # Invalid atom specification
-        self.assertFalse(
-            self.createCrystalStructureOrRaise("5.43 5.43 5.43", "C m c e", "Al 1/3 0"))
-
-    def createCrystalStructureOrRaise(self, unitCell, spaceGroup, atomStrings):
-        try:
-            CrystalStructure(unitCell, spaceGroup, atomStrings)
-            return True
-        except Exception:
-            return False
-
-    def test_UnitCell(self):
-        structure = CrystalStructure("5.43 5.42 5.41", "F d -3 m", "Al 1/3 0.454 1/12 1.0 0.01")
-        cell = structure.getUnitCell()
-
-        self.assertEqual(cell.a(), 5.43)
-        self.assertEqual(cell.b(), 5.42)
-        self.assertEqual(cell.c(), 5.41)
-
-    def test_SpaceGroup(self):
-        structure = CrystalStructure("5.43 5.42 5.41", "F d -3 m", "Al 1/3 0.454 1/12 1.0 0.01")
-        spaceGroup = structure.getSpaceGroup()
-
-        self.assertEqual(spaceGroup.getHMSymbol(), "F d -3 m")
-
-    def test_scatterers(self):
-        initialString = "Al 1/3 0.454 1/12 1 0.01;Si 0.1 0.2 0.3 0.99 0.1"
-
-        structure = CrystalStructure("5.43 5.42 5.41", "F d -3 m", initialString)
-        scatterers = structure.getScatterers()
-
-        self.assertEqual(';'.join(scatterers), initialString)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/Code/Mantid/Framework/PythonInterface/test/python/mantid/geometry/ReflectionGeneratorTest.py b/Code/Mantid/Framework/PythonInterface/test/python/mantid/geometry/ReflectionGeneratorTest.py
deleted file mode 100644
index 4c942f8a7ccd0140d98864097dc3f36f1cfc7ff8..0000000000000000000000000000000000000000
--- a/Code/Mantid/Framework/PythonInterface/test/python/mantid/geometry/ReflectionGeneratorTest.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# pylint: disable=no-init,invalid-name,too-many-public-methods
-import unittest
-from mantid.geometry import CrystalStructure, ReflectionGenerator, ReflectionConditionFilter
-from mantid.kernel import V3D
-import numpy as np
-
-
-class CrystalStructureTest(unittest.TestCase):
-    crystalStructure = CrystalStructure("5.431 5.431 5.431", "F d -3 m", "Si 0 0 0 1.0 0.02")
-
-    def test_create(self):
-        generator = ReflectionGenerator(self.crystalStructure)
-        generator = ReflectionGenerator(self.crystalStructure, ReflectionConditionFilter.Centering)
-
-    def test_getHKLs(self):
-        generator = ReflectionGenerator(self.crystalStructure)
-        hkls = generator.getHKLs(1.0, 10.0)
-
-        self.assertEqual(len(hkls), 138)
-
-        # default is filtering by space group reflection condition
-        self.assertTrue(V3D(2, 2, 2) in hkls)
-        self.assertFalse(V3D(1, 0, 0) in hkls)
-
-    def test_getHKLsUsingFilter(self):
-        generator = ReflectionGenerator(self.crystalStructure)
-        hkls = generator.getHKLsUsingFilter(1.0, 10.0, ReflectionConditionFilter.StructureFactor)
-
-        self.assertEqual(len(hkls), 130)
-
-        # The 222 is gone now
-        self.assertFalse(V3D(2, 2, 2) in hkls)
-
-    def test_getUniqueHKLs(self):
-        generator = ReflectionGenerator(self.crystalStructure)
-        hkls = generator.getUniqueHKLs(1.0, 10.0)
-
-        self.assertEqual(len(hkls), 9)
-
-        self.assertTrue(V3D(2, 2, 2) in hkls)
-        self.assertFalse(V3D(1, 0, 0) in hkls)
-
-    def test_getUniqueHKLsUsingFilter(self):
-        generator = ReflectionGenerator(self.crystalStructure)
-        hkls = generator.getUniqueHKLsUsingFilter(1.0, 10.0, ReflectionConditionFilter.StructureFactor)
-
-        self.assertEqual(len(hkls), 8)
-        self.assertFalse(V3D(2, 2, 2) in hkls)
-
-    def test_getDValues(self):
-        generator = ReflectionGenerator(self.crystalStructure)
-        hkls = [V3D(1, 0, 0), V3D(1, 1, 1)]
-
-        dValues = generator.getDValues(hkls)
-
-        self.assertEqual(len(hkls), len(dValues))
-        self.assertAlmostEqual(dValues[0], 5.431, places=10)
-        self.assertAlmostEqual(dValues[1], 5.431 / np.sqrt(3.), places=10)
-
-    def test_getFsSquared(self):
-        generator = ReflectionGenerator(self.crystalStructure)
-        hkls = generator.getUniqueHKLs(1.0, 10.0)
-
-        fsSquared = generator.getFsSquared(hkls)
-
-        self.assertEqual(len(fsSquared), len(hkls))
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/Code/Mantid/docs/source/concepts/CrystalStructureAndReflections.rst b/Code/Mantid/docs/source/concepts/CrystalStructureAndReflections.rst
deleted file mode 100644
index 443dd594566083f6cdd9d048bc7a2e6e3d1b698d..0000000000000000000000000000000000000000
--- a/Code/Mantid/docs/source/concepts/CrystalStructureAndReflections.rst
+++ /dev/null
@@ -1,293 +0,0 @@
-.. _Crystal structure and reflections:
-
-Crystal structure and reflections
-=================================
-
-This document describes how crystal structure data can be processed and used in Mantid. For the understanding of the
-concepts of :ref:`symmetry <Symmetry groups>` and :ref:`space groups <Point and space groups>` in Mantid it may be
-useful to read those introductory articles before proceeding with this document. While there is a short introduction
-into theoretical aspects this page is not a replacement for proper introductory text books on the subject where all
-these principles are explained in great detail and on a much more general basis.
-
-Theoretical aspects
-~~~~~~~~~~~~~~~~~~~
-
-Crystal structures
-------------------
-
-A crystal is modelled as an infinitely repeating three-dimensional arrangement of scatterers, usually atoms. Due to
-the periodic nature of crystals, the entire object can be described by specifying the repeated unit and how
-it is repeated. These information are called "crystal structure" and comprise three components:
-
-    1. Lattice (describes the periodicity of the structure)
-    2. Basis (distribution of scatterers in the unit cell)
-    3. Space group (describes the symmetry of the arrangement of scatterers)
-  
-The description of the basis depends on the model's level of detail. In the simplest case it could be a list of
-point scatterers that are fully characterized by three coordinates (x, y and z in terms of the lattice vectors) and
-a scattering length. In reality however, the scatterers are usually atoms that fluctuate about their average position
-due to thermal agitation. A basic way to model this motion is to assume it to be an isotropic phenomenon, allowing the
-description with one single parameter that quantifies the radius of a sphere in which the scatterer oscillates
-harmonically. This so called Debye-Waller-factor will be introduced later on.
-
-Another important parameter for a basic description of the basis is the so called occupancy. It describes the fraction
-of the total number of scatterer-positions that is actually occupied. A common example where this is required are
-unordered binary metal mixtures where the same position in the crystal structure is partly filled with two different
-atoms in a randomly distributed manner.
-
-To summarize, a very basic model of the basis comprises a list of scatterers that are in turn characterized by
-six parameters:
-
-    1. Scattering length (known for each element)
-    2. Fractional coordinate x
-    3. Fractional coordinate y
-    4. Fractional coordinate z
-    5. Occupancy of the site
-    6. Isotropic thermal displacement parameter
-  
-Knowledge of the space group makes it possible to derive all scatterers in the entire unit cell. The symmetry operations
-of the space group map each scatterer-position onto a set of equivalent positions that are consequently occupied by the
-same type of scatterer as well. Since the unit cell is repeated infinitely in all three directions of space, it is
-enough to describe one unit cell. Finally, the lattice is described by six parameters as well, the lengths of the three
-lattice vectors (usually given in :math:`\mathrm{\AA{}}`) and the three angles (in degree) between these vectors.
-
-Reflections and structure factors
----------------------------------
-
-In a diffraction experiment the periodic arrangement of atoms is probed using radiation, in this case in the form of
-neutrons, of an appropriate wavelength (on the same scale of interatomic distances, typically between 0.5 and
-5 :math:`\mathrm{\AA{}}`). The incident beam interacts with the scatterers and in certain orientations the beam is
-"reflected" by a flock of lattice planes, a phenomenon which is described by Bragg's law:
-
-.. math::
-    2d\sin\theta = \lambda
-  
-In this equation :math: `d` is the spacing between the lattice planes, :math:`\theta` is the angle of the incoming beam
-and the lattice plane normal and lambda is the wavelength of the radiation. In an experiment theta and lambda are
-usually limited, thus they are limiting the range of interplanar spacings that can be probed. In Bragg's law the lattice
-plane families are only described by one parameter, the interplanar distance. But each lattice plane family also has an
-orientation in space which can be described by the plane's normal vector. Usually the vector is given in terms of the
-reciprocal lattice of the structure, where it is reduced to three integers H, K, L, the so called Miller indices. With
-knowledge of the :ref:`unit cell <Lattice>` (and thus the :math:`\mathbf{B}`-matrix), the interplanar spacing can also
-be computed like this:
-
-.. math::
-    d = \frac{1}{\left|\mathbf{B}\cdot\mathbf{h}\right|}
-  
-The parameters taken into account so far determine the geometric characteristics of Bragg-reflections, i.e. their
-position on a detector and their time of flight. But besides these, each reflection also has an intensity. The
-intensity is proportional to the squared structure factor, which depends on the kind and arrangement of scatterers in
-the unit cell. The structure factor is a complex number and can be calculated for a certain HKL by summing the
-contributions of all N atoms j in the unit cell:
-
-.. math::
-    F_{\mathbf{h}} = \sum\limits_{j}^{N}b_j\exp\left(2\pi i \mathbf{h} \cdot \mathbf{x}_j\right)
-
-In the above equation :math:`b` is the scattering length, :math:`\mathbf{h}` is the Miller index triplet HKL and
-:math:`\mathbf{x}` contains the fractional coordinates of the j-th atom. To take into account isotropic thermal
-motion of atoms, the term is multiplied with the Debye-Waller factor:
-
-.. math::
-    F_{\mathbf{h}} = \sum\limits_{j}^{N}b_j\exp\left(2\pi i \mathbf{h} \cdot \mathbf{x}_j\right)
-                    \exp\left(-2\pi^2 U/d_{\mathbf{h}}^2\right)
-
-Here, :math:`U` is the isotropic atomic displacement parameter, usually given in :math:`\mathrm{\AA{}}^2` and
-:math:`d` is the lattice spacing discussed above. There are other, more complex models to describe the movement of
-atoms, taking into account anisotropic movement and also anharmonic effects.
-
-Implementation in Mantid
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-The concepts described above are available through the Python interface of Mantid. Crystal structures are represented
-by a class that stores the three necessary pieces of information. Objects of that class can be created by supplying
-string representations of those three arguments.
-
-.. testcode:: ExCrystalStructureConstruction
-
-    from mantid.geometry import CrystalStructure
-
-    silicon = CrystalStructure("5.431 5.431 5.431", "F d -3 m", "Si 0 0 0 1.0 0.05")
-
-    unitCell = silicon.getUnitCell()
-    print 'Crystal structure of silicon:'
-    print '  Unit cell:', unitCell.a(), unitCell.b(), unitCell.c(), unitCell.alpha(), unitCell.beta(), unitCell.gamma()
-
-    spaceGroup = silicon.getSpaceGroup()
-    print '  Space group:', spaceGroup.getHMSymbol()
-    print '  Point group:', spaceGroup.getPointGroup().getHMSymbol()
-
-    scatterers = silicon.getScatterers()
-    print '  Total number of scatterers:', len(scatterers)
-
-    for i, scatterer in enumerate(scatterers):
-        print '    ' + str(i) + ':', scatterer
-
-The above script produces the following output:
-
-.. testoutput:: ExCrystalStructureConstruction
-
-    Crystal structure of silicon:
-      Unit cell: 5.431 5.431 5.431 90.0 90.0 90.0
-      Space group: F d -3 m
-      Point group: m-3m
-      Total number of scatterers: 1
-        0: Si 0 0 0 1 0.05
-
-In general, the unit cell must be specified using either 3 or 6 space-separated floating point numbers, representing
-the three axis lengths and the three angles between them. The list of scatterers is required to be a semi-colon
-separated list of strings which contain the following information: Element symbol, x, y, z (fractional coordinates),
-occupancy (between 0 and 1) and isotropic atomic displacement parameter. The fractional coordinates can also be given
-as fractions (for example :math:`1/2` or :math:`1/3`) and for giving the coordinates in hexagonal or trigonal structures
-this is highly recommended as there may be precision problems with decimal numbers.
-
-While the CrystalStructure class is storing information, there is another class that makes use of these information to
-generate reflections and calculate structure factors. This class is called ReflectionGenerator and can be constructed
-from a CrystalStructure-object:
-
-.. testcode:: ExReflectionGeneratorConstruction
-
-    from mantid.geometry import CrystalStructure, ReflectionGenerator
-    from mantid.kernel import V3D
-
-    silicon = CrystalStructure("5.431 5.431 5.431", "F d -3 m", "Si 0 0 0 1.0 0.05")
-    generator = ReflectionGenerator(silicon)
-
-    # Create list of unique reflections between 0.7 and 3.0 Angstrom
-    hkls = generator.getUniqueHKLs(0.7, 3.0)
-
-    print 'There are', len(hkls), 'unique reflections for Si in the specified resolution range.'
-    print 'The reflection [222] is' + (' not' if not V3D(2, 2, 2) in hkls else '') + ' contained in the list.'
-
-.. testoutput:: ExReflectionGeneratorConstruction
-
-    There are 20 unique reflections for Si in the specified resolution range.
-    The reflection [222] is contained in the list.
-
-Checking the reflection conditions of space group :math:`Fd\bar{3}m` (origin choice 1) in the International Tables for
-Crystallography shows that if an atom is on the 8a position, additional conditions apply (:math:`h=2n+1` or
-:math:`h+k+l=4n` for general reflections). Using these additional conditions, the 222 reflection should in fact
-not be in the list. This can be verified by calculating structure factors for the list of reflections and check if
-there are very small values present.
-
-.. testcode:: ExReflectionGeneratorViolations
-
-    from mantid.geometry import CrystalStructure, ReflectionGenerator
-    import numpy as np
-
-    silicon = CrystalStructure("5.431 5.431 5.431", "F d -3 m", "Si 0 0 0 1.0 0.05")
-    generator = ReflectionGenerator(silicon)
-
-    # Create list of unique reflections between 0.7 and 3.0 Angstrom
-    hkls = generator.getUniqueHKLs(0.7, 3.0)
-
-    # Calculate structure factors for those HKLs
-    fSquared = generator.getFsSquared(hkls)
-
-    # Find HKLs with very small structure factors:
-    zeroFSquared = [(hkl, sf) for hkl, sf in zip(hkls, fSquared) if sf < 1e-9]
-
-    print 'HKL        F^2'
-    for hkl, sf in zeroFSquared:
-        print hkl, '  ', np.round(sf, 2)
-
-The output of the above script should show three reflections with very small values for :math:`F^2`. Their indices
-violate the special conditions mentioned in the previous paragraph, so the reflections are actually extinct:
-
-.. testoutput:: ExReflectionGeneratorViolations
-
-    HKL        F^2
-    [2,2,2]    0.0
-    [4,4,2]    0.0
-    [6,2,2]    0.0
-
-Those three reflections are included in the list of unique HKLs, because the standard method to determine whether a
-reflection is allowed or not uses the space group symmetry which only reflects the general conditions listed in ITA.
-It is however possible to exclude those reflections at the cost of more computations by making use of the structure
-factor calculation. This can either be done by passing an additional enum-value of the type ReflectionConditionFilter
-to the constructor of ReflectionGenerator or by passing it to the actual generator function:
-
-.. testcode:: ExReflectionGeneratorSF
-
-    from mantid.geometry import CrystalStructure, ReflectionGenerator, ReflectionConditionFilter
-    from mantid.kernel import V3D
-
-    silicon = CrystalStructure("5.431 5.431 5.431", "F d -3 m", "Si 0 0 0 1.0 0.05")
-    generator = ReflectionGenerator(silicon)
-
-    # Create list of unique reflections between 0.7 and 3.0 Angstrom, use structure factors for filtering
-    hkls = generator.getUniqueHKLsUsingFilter(0.7, 3.0, ReflectionConditionFilter.StructureFactor)
-
-    print 'There are', len(hkls), 'unique reflections for Si in the specified resolution range.'
-    print 'The reflection [222] is' + (' not' if not V3D(2, 2, 2) in hkls else '') + ' contained in the list.'
-
-With this option, the three reflections from the example above are missing and as an indicator, the [222] reflection
-is actually checked:
-
-.. testoutput:: ExReflectionGeneratorSF
-
-    There are 17 unique reflections for Si in the specified resolution range.
-    The reflection [222] is not contained in the list.
-
-Other options for filtering are Centering and None. If the latter one is used the reflections are only filtered
-according to their :math:`d`-value to fit the specified range.
-
-Another capability of ReflectionGenerator is the calculation of :math:`d`-values for a list of HKLs, very similar
-to the process for :math:`F^2`:
-
-.. testcode:: ExReflectionGeneratorCalculateD
-
-    from mantid.geometry import CrystalStructure, ReflectionGenerator, ReflectionConditionFilter
-    import numpy as np
-
-    silicon = CrystalStructure("5.431 5.431 5.431", "F d -3 m", "Si 0 0 0 1.0 0.05")
-    generator = ReflectionGenerator(silicon)
-
-    # Create list of unique reflections between 0.7 and 3.0 Angstrom
-    hkls = generator.getUniqueHKLsUsingFilter(0.7, 3.0, ReflectionConditionFilter.StructureFactor)
-
-    # Calculate d and F^2
-    dValues = generator.getDValues(hkls)
-    fSquared = generator.getFsSquared(hkls)
-
-    pg = silicon.getSpaceGroup().getPointGroup()
-
-    # Make list of tuples and sort by d-values, descending, include point group for multiplicity.
-    reflections = sorted([(hkl, d, fsq, len(pg.getEquivalents(hkl))) for hkl, d, fsq in zip(hkls, dValues, fSquared)],
-                                    key=lambda x: x[1], reverse=True)
-
-    print '{0:<8}{1:>8}{2:>8}{3:>4}'.format('HKL', 'd', 'F^2', 'M')
-    for reflection in reflections:
-        print '{0!s:<8}{1:>8.5f}{2:>8.2f}{3:>4}'.format(*reflection)
-
-This script will print a table with the reflections including their :math:`d`-value, :math:`F^2` and multiplicity due to point group
-symmetry:
-
-.. testoutput:: ExReflectionGeneratorCalculateD
-
-    HKL            d     F^2   M
-    [2,2,0]  1.92015  645.02  12
-    [3,1,1]  1.63751  263.85  24
-    [4,0,0]  1.35775  377.63   6
-    [3,3,1]  1.24596  154.47  24
-    [4,2,2]  1.10860  221.08  24
-    [3,3,3]  1.04520   90.43   8
-    [5,1,1]  1.04520   90.43  24
-    [4,4,0]  0.96007  129.43  12
-    [5,3,1]  0.91801   52.94  48
-    [6,2,0]  0.85872   75.78  24
-    [5,3,3]  0.82822   31.00  24
-    [4,4,4]  0.78390   44.36   8
-    [5,5,1]  0.76049   18.15  24
-    [7,1,1]  0.76049   18.15  24
-    [6,4,2]  0.72575   25.97  48
-    [5,5,3]  0.70706   10.62  24
-    [7,3,1]  0.70706   10.62  48
-
-Further reading
-~~~~~~~~~~~~~~~
-
-This concept page explains what's available in the Python interface. Some underlying parts may be interesting for C++
-developers, as the concepts of generating and filtering HKLs are pretty much hidden behind the ReflectionGenerator class
-in the Python interface. More detail is available in the generated C++ documentation.
-
-.. categories:: Concepts