From 2d76a62831f91f03833029a7ec1ff2befc406b51 Mon Sep 17 00:00:00 2001
From: Riccardo Maria Bianchi <riccardo.maria.bianchi@cern.ch>
Date: Thu, 6 Feb 2020 01:31:04 +0100
Subject: [PATCH 1/7] First implementation of the LAr SpecialShape I/O

---
 CMakeLists.txt                                |   1 +
 GeoModelRead/CMakeLists.txt                   |   2 +-
 GeoModelRead/src/ReadGeoModel.cpp             |  20 +-
 GeoModelWrite/CMakeLists.txt                  |   2 +-
 GeoModelWrite/src/WriteGeoModel.cpp           |  10 +-
 GeoSpecialShapes/CMakeLists.txt               |  44 ++
 .../GeoSpecialShapes/LArCustomShape.h         | 123 ++++
 .../GeoSpecialShapes/LArGeoCheckerDict.h      |  19 +
 .../GeoSpecialShapes/LArWheelCalculator.h     | 232 +++++++
 .../LArWheelCalculatorEnums.h                 |  25 +
 .../GeoSpecialShapes/selection.xml            |   3 +
 .../GeoSpecialShapes/selectionEnums.xml       |   7 +
 GeoSpecialShapes/GeoSpecialShapes/sincos.h    | 110 ++++
 GeoSpecialShapes/build/CMakeCache.txt         | 384 ++++++++++++
 .../CMakeFiles/3.10.3/CMakeCXXCompiler.cmake  |  75 +++
 .../3.10.3/CMakeDetermineCompilerABI_CXX.bin  | Bin 0 -> 4288 bytes
 .../build/CMakeFiles/3.10.3/CMakeSystem.cmake |  15 +
 .../CompilerIdCXX/CMakeCXXCompilerId.cpp      | 576 +++++++++++++++++
 .../CMakeFiles/3.10.3/CompilerIdCXX/a.out     | Bin 0 -> 8600 bytes
 .../CMakeDirectoryInformation.cmake           |  16 +
 .../build/CMakeFiles/CMakeOutput.log          | 381 +++++++++++
 .../GeoSpecialShapes.dir/DependInfo.cmake     |  31 +
 .../GeoSpecialShapes.dir/build.make           | 331 ++++++++++
 .../GeoSpecialShapes.dir/cmake_clean.cmake    |  18 +
 .../GeoSpecialShapes.dir/depend.make          |   2 +
 .../GeoSpecialShapes.dir/flags.make           |  10 +
 .../CMakeFiles/GeoSpecialShapes.dir/link.txt  |   1 +
 .../GeoSpecialShapes.dir/progress.make        |  11 +
 .../build/CMakeFiles/Makefile.cmake           | 108 ++++
 GeoSpecialShapes/build/CMakeFiles/Makefile2   | 108 ++++
 .../build/CMakeFiles/TargetDirectories.txt    |   7 +
 .../build/CMakeFiles/cmake.check_cache        |   1 +
 .../build/CMakeFiles/feature_tests.bin        | Bin 0 -> 8376 bytes
 .../build/CMakeFiles/feature_tests.cxx        | 405 ++++++++++++
 .../build/CMakeFiles/progress.marks           |   1 +
 GeoSpecialShapes/build/Makefile               | 468 ++++++++++++++
 GeoSpecialShapes/build/cmake_install.cmake    |  75 +++
 GeoSpecialShapes/doc/packagedoc.h             |  17 +
 GeoSpecialShapes/src/LArCustomShape.cxx       | 191 ++++++
 GeoSpecialShapes/src/LArWheelCalculator.cxx   | 589 ++++++++++++++++++
 .../src/LArWheelCalculatorGeometry.cxx        | 138 ++++
 .../DistanceCalculatorFactory.cxx             |  29 +
 .../DistanceCalculatorFactory.h               |  34 +
 .../DistanceCalculatorSaggingOff.cxx          | 526 ++++++++++++++++
 .../DistanceCalculatorSaggingOff.h            |  53 ++
 .../DistanceCalculatorSaggingOn.cxx           | 180 ++++++
 .../DistanceCalculatorSaggingOn.h             |  52 ++
 .../FanCalculatorFactory.cxx                  |  28 +
 .../FanCalculatorFactory.h                    |  34 +
 .../IDistanceCalculator.h                     |  44 ++
 .../LArWheelCalculator_Impl/IFanCalculator.h  |  42 ++
 .../ModuleFanCalculator.cxx                   | 112 ++++
 .../ModuleFanCalculator.h                     |  39 ++
 .../WheelFanCalculator.h                      | 273 ++++++++
 .../LArWheelCalculator_Impl/sincos_poly.cxx   | 247 ++++++++
 cmake/GeoModelIOPackaging.cmake               |   2 +-
 56 files changed, 6246 insertions(+), 6 deletions(-)
 create mode 100644 GeoSpecialShapes/CMakeLists.txt
 create mode 100644 GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h
 create mode 100644 GeoSpecialShapes/GeoSpecialShapes/LArGeoCheckerDict.h
 create mode 100644 GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
 create mode 100644 GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculatorEnums.h
 create mode 100644 GeoSpecialShapes/GeoSpecialShapes/selection.xml
 create mode 100644 GeoSpecialShapes/GeoSpecialShapes/selectionEnums.xml
 create mode 100644 GeoSpecialShapes/GeoSpecialShapes/sincos.h
 create mode 100644 GeoSpecialShapes/build/CMakeCache.txt
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeCXXCompiler.cmake
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeDetermineCompilerABI_CXX.bin
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeSystem.cmake
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/CMakeCXXCompilerId.cpp
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/a.out
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/CMakeDirectoryInformation.cmake
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/CMakeOutput.log
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/DependInfo.cmake
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/build.make
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/cmake_clean.cmake
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/depend.make
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/flags.make
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/link.txt
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/progress.make
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/Makefile.cmake
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/Makefile2
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/TargetDirectories.txt
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/cmake.check_cache
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/feature_tests.bin
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx
 create mode 100644 GeoSpecialShapes/build/CMakeFiles/progress.marks
 create mode 100644 GeoSpecialShapes/build/Makefile
 create mode 100644 GeoSpecialShapes/build/cmake_install.cmake
 create mode 100644 GeoSpecialShapes/doc/packagedoc.h
 create mode 100644 GeoSpecialShapes/src/LArCustomShape.cxx
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator.cxx
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
 create mode 100644 GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 97b8f5b..09c9fa1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,6 +27,7 @@ add_subdirectory( GeoModelDBManager )
 add_subdirectory( TFPersistification )
 add_subdirectory( GeoModelRead )
 add_subdirectory( GeoModelWrite )
+add_subdirectory( GeoSpecialShapes )
 
 # Create and install the version description of the project.
 include( CMakePackageConfigHelpers )
diff --git a/GeoModelRead/CMakeLists.txt b/GeoModelRead/CMakeLists.txt
index e436dff..fb19722 100644
--- a/GeoModelRead/CMakeLists.txt
+++ b/GeoModelRead/CMakeLists.txt
@@ -12,7 +12,7 @@ file( GLOB HEADERS GeoModelRead/*.h )
 # Set up the library.
 add_library( GeoModelRead SHARED ${HEADERS} ${SOURCES} )
 target_link_libraries( GeoModelRead PUBLIC Qt5::Core
-GeoModelCore::GeoModelKernel GeoModelDBManager TFPersistification )
+GeoModelCore::GeoModelKernel GeoModelDBManager TFPersistification GeoSpecialShapes )
 target_include_directories( GeoModelRead PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
    $<INSTALL_INTERFACE:include> )
diff --git a/GeoModelRead/src/ReadGeoModel.cpp b/GeoModelRead/src/ReadGeoModel.cpp
index f70a36c..ed97e24 100644
--- a/GeoModelRead/src/ReadGeoModel.cpp
+++ b/GeoModelRead/src/ReadGeoModel.cpp
@@ -13,6 +13,10 @@
 // TFPersistification includes
 #include "TFPersistification/TransFunctionInterpreter.h"
 
+// GeoSpecialShapes
+#include "GeoSpecialShapes/LArCustomShape.h"
+
+
 // GeoModelKernel
 #include "GeoModelKernel/GeoTransform.h"
 #include "GeoModelKernel/GeoAlignableTransform.h"
@@ -813,7 +817,7 @@ GeoShape* ReadGeoModel::buildShape(QString shapeId)
 				if (varName == "NVertices") NVertices = varValue.toUInt();
 			}
 
-			
+
 
 			// and now loop over the rest of the list, to get the parameters of all Z planes
 			for (int it=2; it < NVertices; it++)
@@ -857,7 +861,6 @@ GeoShape* ReadGeoModel::buildShape(QString shapeId)
 		if(error) qFatal("GeoGenericTrap shape error!!! Aborting...");
 		return gTrap;
 	}
-	
 	else if (type == "SimplePolygonBrep") {
 		//qInfo() << "Reading-in: SimplePolygonBrep: "; // debug
 		// shape parameters
@@ -1369,6 +1372,19 @@ GeoShape* ReadGeoModel::buildShape(QString shapeId)
 		// build and return the GeoShapeShift instance
 		return new GeoShapeUnion(shapeA, shapeB);
 	}
+  //LAr custom shape
+  else if(type == "CustomShape") {
+    std::string name = "";
+    // get parameters from DB string
+		QStringList shapePars = parameters.split(";");
+    foreach( QString par, shapePars) {
+			QStringList vars = par.split("=");
+			QString varName = vars[0];
+			QString varValue = vars[1];
+			if (varName == "name") name = varValue.toStdString();
+		}
+    return new LArCustomShape(name);
+  }
 	else {
 		// QString msg = "WARNING!! - Shape '" + type + "' not implemented yet!!! Returning a dummy cube.";
 		// qWarning(msg.toStdString().c_str());
diff --git a/GeoModelWrite/CMakeLists.txt b/GeoModelWrite/CMakeLists.txt
index 603d120..43e97d8 100644
--- a/GeoModelWrite/CMakeLists.txt
+++ b/GeoModelWrite/CMakeLists.txt
@@ -7,7 +7,7 @@ file( GLOB HEADERS GeoModelWrite/*.h )
 # Set up the library.
 add_library( GeoModelWrite SHARED ${HEADERS} ${SOURCES} )
 target_link_libraries( GeoModelWrite PUBLIC Qt5::Core
-GeoModelCore::GeoModelKernel GeoModelDBManager TFPersistification )
+   GeoModelCore::GeoModelKernel GeoModelDBManager TFPersistification GeoSpecialShapes )
 target_include_directories( GeoModelWrite PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
    $<INSTALL_INTERFACE:include> )
diff --git a/GeoModelWrite/src/WriteGeoModel.cpp b/GeoModelWrite/src/WriteGeoModel.cpp
index 49042e2..a76a392 100644
--- a/GeoModelWrite/src/WriteGeoModel.cpp
+++ b/GeoModelWrite/src/WriteGeoModel.cpp
@@ -7,6 +7,8 @@
 // TFPersistification includes
 #include "TFPersistification/TransFunctionPersistifier.h"
 
+// GeoSpecialShapes
+#include "GeoSpecialShapes/LArCustomShape.h"
 
 // GeoModelKernel includes
 #include "GeoModelKernel/GeoNodePath.h"
@@ -765,7 +767,7 @@ QVariant WriteGeoModel::storeTranform(const GeoTransform* node)
 				tr(0,3)=dx;
 				tr(1,3)=dy;
 				tr(2,3)=dz;
-				
+
 				// explicitely set the last row: (0,0,0,1)
 				tr(3,0)=0;
 				tr(3,1)=0;
@@ -1099,6 +1101,12 @@ QString WriteGeoModel::getShapeParameters(const GeoShape* shape)
 	  }
 	  shapePars = pars.join(";");
 	}
+  //LAr custom shape
+  else if(shape->typeID() == LArCustomShape::getClassTypeID()) {
+    const LArCustomShape* shapeIn = dynamic_cast<const LArCustomShape*> (shape);
+    if (nullptr==shapeIn) throw std::runtime_error("TypeID did not match cast for custom shape");
+    shapePars = "name=" + QString::fromStdString(shapeIn->name());
+  }
 	else {
 		std::cout << "\n\tWARNING!!! - Shape '" << shapeType.toStdString() << "' needs to be persistified!!\n\n";
 		m_objectsNotPersistified << shapeType;
diff --git a/GeoSpecialShapes/CMakeLists.txt b/GeoSpecialShapes/CMakeLists.txt
new file mode 100644
index 0000000..6b72d31
--- /dev/null
+++ b/GeoSpecialShapes/CMakeLists.txt
@@ -0,0 +1,44 @@
+
+# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+
+################################################################################
+# Package: GeoSpecialShapes
+################################################################################
+
+find_package(CLHEP)
+
+# Use the GNU install directory names.
+include( GNUInstallDirs )  # it defines CMAKE_INSTALL_LIBDIR
+
+# Find the header and source files.
+file( GLOB SOURCES src/*.cxx src/LArWheelCalculator_Impl/*.cxx )
+file( GLOB HEADERS GeoSpecialShapes/*.h src/LArWheelCalculator_Impl/*.h)
+
+# Set the library.
+add_library( GeoSpecialShapes SHARED ${HEADERS} ${SOURCES} )
+target_link_libraries( GeoSpecialShapes PUBLIC ${CLHEP_LIBRARIES}
+PRIVATE GeoModelCore::GeoModelKernel )
+target_include_directories( GeoSpecialShapes PUBLIC
+   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+   $<INSTALL_INTERFACE:include> )
+source_group( "GeoSpecialShapes" FILES ${HEADERS} )
+source_group( "src" FILES ${SOURCES} )
+set_target_properties( GeoSpecialShapes PROPERTIES
+   VERSION ${PROJECT_VERSION}
+   SOVERSION ${PROJECT_VERSION_MAJOR} )
+
+
+# Install the library.
+install( TARGETS GeoSpecialShapes
+   EXPORT ${PROJECT_NAME}-export
+   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+   COMPONENT Runtime
+   NAMELINK_SKIP )
+install( TARGETS GeoSpecialShapes
+   EXPORT ${PROJECT_NAME}-export
+   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+   COMPONENT Development
+   NAMELINK_ONLY )
+install( FILES ${HEADERS}
+   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/GeoSpecialShapes
+   COMPONENT Development )
diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h b/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h
new file mode 100644
index 0000000..3a24f3c
--- /dev/null
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h
@@ -0,0 +1,123 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef LArCustomShape_h
+#define LArCustomShape_h
+
+#include <string>
+#include <map>
+
+//#ifndef XAOD_STANDALONE
+//    #include "GaudiKernel/ServiceHandle.h"
+//    #include "GaudiKernel/StatusCode.h"
+//    #include "StoreGate/StoreGateSvc.h"
+//#endif // XAOD_STANDALONE
+
+#include "GeoModelKernel/GeoShape.h"
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+#include "GeoSpecialShapes/LArWheelCalculatorEnums.h"
+
+// Forward declaration
+class GeoShapeAction;
+
+/// @class LArCustomShape
+/// @brief The GeoModel representation of the custom LAr endcap shapes.
+///
+class LArCustomShape : public GeoShape
+{
+
+ public:
+  //  #ifndef XAOD_STANDALONE
+  //  typedef ServiceHandle<StoreGateSvc> StoreGateSvc_t;
+  //  #endif // XAOD_STANDALONE
+  	typedef std::pair<LArG4::LArWheelCalculator_t, int> CalcDef_t;
+  	typedef std::map<std::string,  CalcDef_t> ShapeCalc_typemap;
+
+  // The custom shape has only one property: a string that contains
+  // the name of the particular shape.  In the GeoModel->Geant4
+  // conversion, this name will be matched against a list of custom
+  // classes that inherit from G4VSolid to get the correct custom
+  // solid.
+  LArCustomShape(const std::string& shapeName);
+
+  /// Return the calculator:
+  const LArWheelCalculator *calculator() const;
+
+  /// Returns the volume of the shape, for mass inventory
+  virtual double volume() const;
+
+  /// Returns the shape type, as a string.
+  virtual const std::string& type() const;
+
+  /// Returns the shape type, as a coded integer.
+  virtual ShapeType typeID() const;
+
+  /// For type identification.
+  static const std::string& getClassType();
+
+  /// For type identification.
+  static ShapeType getClassTypeID();
+
+  /// Return the shape name, supplied in the constructor.
+  virtual const std::string& name() const;
+
+  /// Executes a GeoShapeAction
+  virtual void exec(GeoShapeAction* action) const;
+
+//#ifndef XAOD_STANDALONE
+//  /** @brief The standard @c StoreGateSvc/DetectorStore
+//    * Returns (kind of) a pointer to the @c StoreGateSvc
+//    */
+//   StoreGateSvc_t& detStore() const;
+//#endif // XAOD_STANDALONE
+
+ protected:
+
+  virtual ~LArCustomShape();
+
+ private:
+  //#if defined XAOD_STANDALONE
+    int createCalculator(const CalcDef_t & cdef);
+  //#else // XAOD_STANDALONE
+  // StatusCode createCalculator(const CalcDef_t & cdef);
+  //#endif
+
+  // Prohibited operations.
+  LArCustomShape(const LArCustomShape &right);
+  const LArCustomShape & operator=(const LArCustomShape &right);
+
+  /// General GeoModel shape attributes.
+  static const std::string s_classType;
+  static const ShapeType s_classTypeID;
+  static const ShapeCalc_typemap s_calculatorTypes;
+
+  /// Properties of the custom shape.
+  const std::string m_shapeName;
+
+  /// The calculator:
+  const LArWheelCalculator *m_calculator;
+
+   //#ifndef XAOD_STANDALONE
+       /// Pointer to StoreGate (detector store by default)
+   //    mutable StoreGateSvc_t m_detStore;
+   //#endif // XAOD_STANDALONE
+
+};
+
+inline const std::string& LArCustomShape::getClassType() {
+  return s_classType;
+}
+
+inline ShapeType LArCustomShape::getClassTypeID() {
+  return s_classTypeID;
+}
+
+//#ifndef XAOD_STANDALONE
+//    inline ServiceHandle<StoreGateSvc>& LArCustomShape::detStore() const  {
+//        return m_detStore;
+//    }
+//#endif // XAOD_STANDALONE
+
+
+#endif // LArCustomShape_h
diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArGeoCheckerDict.h b/GeoSpecialShapes/GeoSpecialShapes/LArGeoCheckerDict.h
new file mode 100644
index 0000000..3d19fcc
--- /dev/null
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArGeoCheckerDict.h
@@ -0,0 +1,19 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+/**
+ * @file LArGeoCheckerDict.h
+ *
+ * @brief This file includes the class for dictionary definitions
+ *
+ * @author Dmitriy Maximov <Dmitriy.Maximov@cern.ch>
+ *
+ * $Id: LArGeoCheckerDict.h 653855 2015-03-13 09:00:06Z dmaximov $
+ */
+#ifndef GeoSpecialShapes_LArGeoCheckerDICT_H
+#define GeoSpecialShapes_LArGeoCheckerDICT_H
+
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+
+#endif // GeoSpecialShapes_LArGeoCheckerDICT_H
diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
new file mode 100644
index 0000000..c89c87e
--- /dev/null
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
@@ -0,0 +1,232 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef GEOSPECIALSHAPES_LARWHEELCALCULATOR_H
+#define GEOSPECIALSHAPES_LARWHEELCALCULATOR_H
+
+#include <vector>
+
+#include "CLHEP/Vector/ThreeVector.h"
+//#ifndef XAOD_STANDALONE
+//    #include "AthenaKernel/CLASS_DEF.h"
+//#endif // XAOD_STANDALONE
+
+#include "GeoSpecialShapes/LArWheelCalculatorEnums.h"
+// Physical constants
+#include "GeoModelKernel/Units.h"
+#define SYSTEM_OF_UNITS GeoModelKernelUnits
+
+#define LARWC_SINCOS_POLY 5
+#define LARWC_DTNF_NEW
+
+class IRDBRecordset;
+//class RDBParamRecords;
+
+//#define HARDDEBUG
+
+// Forward declarations
+namespace LArWheelCalculator_Impl {
+  class IDistanceCalculator;
+  class DistanceCalculatorSaggingOff;
+  class DistanceCalculatorSaggingOn;
+
+  class IFanCalculator;
+  class ModuleFanCalculator;
+  template <typename SaggingType> class WheelFanCalculator;
+  template <typename SaggingType> class DistanceToTheNeutralFibre_OfFan;
+}
+
+/// @class LArWheelCalculator
+/// This class separates some of the geometry details of the LAr
+/// endcap.
+/// 26-May-2009 AMS: remove all previous comments from here as obsoleted
+///
+class LArWheelCalculator
+{
+
+    friend class LArWheelCalculator_Impl::DistanceCalculatorSaggingOff;
+    friend class LArWheelCalculator_Impl::DistanceCalculatorSaggingOn;
+    friend class LArWheelCalculator_Impl::ModuleFanCalculator;
+    template <typename SaggingType> friend class LArWheelCalculator_Impl::WheelFanCalculator;
+    template <typename SaggingType> friend class LArWheelCalculator_Impl::DistanceToTheNeutralFibre_OfFan;
+
+  public:
+
+    LArWheelCalculator(LArG4::LArWheelCalculator_t a_wheelType, int zside = 1);
+    virtual ~LArWheelCalculator();
+
+    LArWheelCalculator (const LArWheelCalculator&) = delete;
+    LArWheelCalculator& operator= (const LArWheelCalculator&) = delete;
+
+    static const char *LArWheelCalculatorTypeString(LArG4::LArWheelCalculator_t);
+    static double GetFanHalfThickness(LArG4::LArWheelCalculator_t);
+
+    // "Get constant" methods:
+    double GetWheelThickness() const { return m_WheelThickness; }
+    double GetdWRPtoFrontFace() const { return m_dWRPtoFrontFace; }
+    double GetStraightStartSection() const { return m_StraightStartSection; }
+    virtual LArG4::LArWheelCalculator_t type() const { return m_type; }
+    // "zShift" is the z-distance (cm) that the EM endcap is shifted
+    // (due to cabling, etc.)
+    int GetAtlasZside() const { return m_AtlasZside; }
+    double zShift() const { return m_zShift; }
+    double GetFanFoldRadius() const { return m_FanFoldRadius; }
+    double GetZeroFanPhi() const { return m_ZeroFanPhi; }
+    int GetNumberOfWaves() const { return m_NumberOfWaves; }
+    int GetNumberOfHalfWaves() const { return m_NumberOfHalfWaves; }
+    int GetNumberOfFans() const { return m_NumberOfFans; }
+
+    double GetActiveLength() const { return m_ActiveLength; }
+    double GetFanStepOnPhi() const { return m_FanStepOnPhi; }
+    double GetHalfWaveLength() const { return m_HalfWaveLength; }
+    double GetQuarterWaveLength() const { return m_QuarterWaveLength; }
+    double GetWheelRefPoint() const { return m_zWheelRefPoint; }
+    double GetFanHalfThickness() const { return m_FanHalfThickness; }
+
+    bool GetisModule() const { return m_isModule; }
+    bool GetisElectrode() const { return m_isElectrode; }
+    bool GetisInner() const { return m_isInner; }
+    bool GetisBarrette() const { return m_isBarrette; }
+    bool GetisBarretteCalib() const { return m_isBarretteCalib; }
+
+    double GetWheelInnerRadius(double *) const;
+    void GetWheelOuterRadius(double *) const;
+
+    double GetElecFocaltoWRP() const { return m_dElecFocaltoWRP; }
+    // "set constant" method:
+
+    int GetFirstFan() const { return m_FirstFan; }
+    int GetLastFan() const { return m_LastFan; }
+
+    int GetStartGapNumber() const { return m_ZeroGapNumber; }
+    void SetStartGapNumber(int n) { m_ZeroGapNumber = n; }
+
+    /// @name geometry methods
+    /// @{
+
+    /// Determines the nearest to the input point fan.
+    /// Rotates point p to the localFan coordinates and returns the
+    /// fan number to out_fan_number parameter.
+    double DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const;
+
+    /// Calculates aproximate, probably underestimate, distance to the
+    /// neutral fibre of the vertical fan. Sign of return value means
+    /// side of the fan; negative - lower phi.
+    double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
+
+    CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p,
+                                                 int fan_number) const;
+    std::vector<double> NearestPointOnNeutralFibre_asVector(const CLHEP::Hep3Vector &p,
+                                                            int fan_number) const;
+    int GetPhiGap(const CLHEP::Hep3Vector &p) const { return GetPhiGapAndSide(p).first; }
+    int PhiGapNumberForWheel(int) const;
+    std::pair<int, int> GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const;
+    double AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int fan_number) const;
+
+    /// @}
+
+  private:
+    LArG4::LArWheelCalculator_t m_type;
+    
+    int m_AtlasZside;
+    bool m_SaggingOn; // !
+    bool m_phiRotation;
+    bool m_slant_use_default;
+    double m_slant_parametrization[5]; // pol4
+    double m_sin_parametrization[7]; // up to pol6
+    double m_cos_parametrization[7];
+    std::vector<std::vector<double> > m_sagging_parameter; // !
+    //double m_WheelThickness;
+    // double m_HalfWheelThickness;
+    //double m_zWheelFrontFace, m_zWheelBackFace;
+    
+    // N.B. all const values copied from the DB@
+    // https://atlas-geometry-db.web.cern.ch/atlas-geometry-db/
+    const double m_ActiveLength         = 510   * SYSTEM_OF_UNITS::mm;   //mm
+    const double m_StraightStartSection = 2     * SYSTEM_OF_UNITS::mm;   //mm
+    const double m_dWRPtoFrontFace      = 11    * SYSTEM_OF_UNITS::mm;   //mm
+    const double m_HalfGapBetweenWheels = .15   * SYSTEM_OF_UNITS::cm;   //cm
+    const double m_zWheelRefPoint       = 368.95* SYSTEM_OF_UNITS::cm;   //cm
+    const double m_dMechFocaltoWRP      = 369.1 * SYSTEM_OF_UNITS::cm;   //cm
+    const double m_dElecFocaltoWRP      = 368.9 * SYSTEM_OF_UNITS::cm;   //cm
+    const double m_rOuterCutoff         = 203.4 * SYSTEM_OF_UNITS::cm;   //cm
+    const double m_eta_hi               = 3.2   * SYSTEM_OF_UNITS::cm;   //cm 3.2 ----> (1 is 2.5)
+    const double m_eta_mid              = 2.5   * SYSTEM_OF_UNITS::cm;   //cm 2.5 ----> (1 is 1.375)
+    const double m_eta_low              = 1.375   * SYSTEM_OF_UNITS::cm;   //cm 2.5 ----> (1 is 1.375)
+    const double m_zShift               = 4.5   * SYSTEM_OF_UNITS::cm;   //cm
+    
+    const double m_WheelThickness = m_ActiveLength + 2.*m_StraightStartSection;
+    const double m_HalfWheelThickness = m_WheelThickness * 0.5;
+    const double m_zWheelFrontFace = m_dMechFocaltoWRP + m_dWRPtoFrontFace;
+    const double m_zWheelBackFace = m_zWheelFrontFace + m_WheelThickness;
+    
+    /////
+    double m_QuarterWaveLength;
+    double m_HalfWaveLength;
+    double m_FanFoldRadius;
+    double m_ZeroFanPhi;
+    double m_ZeroFanPhi_ForDetNeaFan;
+    double m_FanStepOnPhi;
+    int m_NumberOfWaves;
+    int m_NumberOfHalfWaves;
+    int m_NumberOfFans;
+    //int m_HalfNumberOfFans; removed because unused. DM 2015-07-30
+    double m_FanHalfThickness;
+    int m_ZeroGapNumber;
+    int m_FirstFan;
+    int m_LastFan;
+
+    bool m_isModule;
+    bool m_isElectrode;
+    bool m_isInner;
+    bool m_isBarrette;
+    bool m_isBarretteCalib;
+
+    // int m_fan_number; // break thread-safety -> removed DM 2015-07-30
+
+    void outer_wheel_init();
+    void inner_wheel_init();
+    void module_init();
+
+  public:
+
+    /*void set_m_fan_number(const int &fan_number)
+    {
+      m_fan_number = fan_number;
+      if(m_fan_number < 0) m_fan_number += m_NumberOfFans;
+      m_fan_number += m_ZeroGapNumber;
+      if(m_fan_number >= m_NumberOfFans) m_fan_number -= m_NumberOfFans;
+    }*/
+    int adjust_fan_number(int fan_number) const {
+      int res_fan_number = fan_number;
+      if(res_fan_number < 0) res_fan_number += m_NumberOfFans;
+      res_fan_number += m_ZeroGapNumber;
+      if(res_fan_number >= m_NumberOfFans) res_fan_number -= m_NumberOfFans;
+      return res_fan_number;
+    }
+
+    /// Calculates wave slant angle using parametrization for current wheel
+    /// for given distance from calorimeter axis
+    double parameterized_slant_angle(double) const;
+
+  private:
+
+    void parameterized_sincos(const double, double &, double &) const;
+    void parameterized_sin(const double, double &, double &) const;
+
+  private:
+
+    LArWheelCalculator_Impl::IDistanceCalculator *m_distanceCalcImpl;
+    LArWheelCalculator_Impl::IFanCalculator *m_fanCalcImpl;
+
+    void fill_sincos_parameterization();
+};
+
+//#ifndef XAOD_STANDALONE
+    //using the macro below we can assign an identifier (and a version)
+    //This is required and checked at compile time when you try to record/retrieve
+//    CLASS_DEF(LArWheelCalculator , 900345678 , 1)
+//#endif // XAOD_STANDALONE
+
+#endif // GEOSPECIALSHAPES_LARWHEELCALCULATOR_H
diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculatorEnums.h b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculatorEnums.h
new file mode 100644
index 0000000..dcea707
--- /dev/null
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculatorEnums.h
@@ -0,0 +1,25 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef GEOSPECIALSHAPES_LARWHEELCALCULATORENUMS_H
+#define GEOSPECIALSHAPES_LARWHEELCALCULATORENUMS_H
+
+namespace LArG4 {
+
+  enum LArWheelCalculator_t {
+    InnerAbsorberWheel,  OuterAbsorberWheel,
+    InnerElectrodWheel,  OuterElectrodWheel,
+    InnerAbsorberModule, OuterAbsorberModule,
+    InnerElectrodModule, OuterElectrodModule,
+    BackInnerBarretteWheel,       BackOuterBarretteWheel,
+    BackInnerBarretteWheelCalib,  BackOuterBarretteWheelCalib,
+    BackInnerBarretteModule,      BackOuterBarretteModule,
+    BackInnerBarretteModuleCalib, BackOuterBarretteModuleCalib,
+    InnerGlueWheel, OuterGlueWheel,
+    InnerLeadWheel, OuterLeadWheel
+  };
+
+  struct ROOT6_NamespaceAutoloadHook_WheelCalc{};
+}
+#endif
diff --git a/GeoSpecialShapes/GeoSpecialShapes/selection.xml b/GeoSpecialShapes/GeoSpecialShapes/selection.xml
new file mode 100644
index 0000000..d5a4c1f
--- /dev/null
+++ b/GeoSpecialShapes/GeoSpecialShapes/selection.xml
@@ -0,0 +1,3 @@
+<lcgdict>
+  <class name="LArWheelCalculator" />
+</lcgdict>
diff --git a/GeoSpecialShapes/GeoSpecialShapes/selectionEnums.xml b/GeoSpecialShapes/GeoSpecialShapes/selectionEnums.xml
new file mode 100644
index 0000000..cd2c4ad
--- /dev/null
+++ b/GeoSpecialShapes/GeoSpecialShapes/selectionEnums.xml
@@ -0,0 +1,7 @@
+<lcgdict>
+
+ <enum pattern="LArG4::*"/>
+ <class name="LArG4::ROOT6_NamespaceAutoloadHook_WheelCalc" />
+
+</lcgdict>
+
diff --git a/GeoSpecialShapes/GeoSpecialShapes/sincos.h b/GeoSpecialShapes/GeoSpecialShapes/sincos.h
new file mode 100644
index 0000000..4f51983
--- /dev/null
+++ b/GeoSpecialShapes/GeoSpecialShapes/sincos.h
@@ -0,0 +1,110 @@
+// This file's extension implies that it's C, but it's really -*- C++ -*-.
+
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id: sincos.h,v 1.1 2008-11-24 04:34:07 ssnyder Exp $
+
+/**
+ * @file CxxUtils/sincos.h
+ * @author scott snyder
+ * @date Nov 2008, from older D0 code.
+ * @brief Helper to simultaneously calculate sin and cos of the same angle.
+ */
+
+
+#ifndef SINCOS_H
+#define SINCOS_H
+
+
+#include <cmath>
+
+
+//namespace CxxUtils {
+
+
+/**
+ * @brief Helper to simultaneously calculate sin and cos of the same angle.
+ *
+ * Instantiate an instance of this object, passing the angle to the
+ * constructor.  The sin and cos are then available as the sn and cs
+ * members.  In addition, the apply() method may be used to calculate
+ * a*sin(x) + b*cos(x).
+ *
+ * Implementation notes:
+ * 
+ * The i386/x87 architecture has an instruction to do this.
+ * So, on that platform, we use that instruction directly.
+ * It seems to be a win to use it even if we're using SSE math,
+ * so we'll use it for x86_64 too.
+ * Otherwise, we'll use sincos() if it's available (it's a GNU extension).
+ * Otherwise, just call sin() and cos() separately.
+ *
+ * Note that the fsincos instruction only works correctly
+ * if the input angle is in the range -2^63 ... 2^63.
+ * This is not likely to be an issue for us.
+ *
+ * Why prefer using the fsincos instruction directly to calling
+ * the sincos() library function?
+ *
+ * - It turns out to be a little difficult to ensure that
+ *   sincos()  actually gets inlined.  In general, one needs -ffast-math
+ *   (which isn't on for standard Atlas builds), but even that's not always
+ *   sufficient.
+ *
+ * - The library version includes extra code that we
+ *   don't really need to handle the case where
+ *   abs(angle) > 2^63.  (Runtime penalty, though, is
+ *   moving the FPU status word to $eax and one
+ *   taken branch.)
+ *
+ * - Most importantly, though, the library function
+ *   takes pointers into which the results are stored.
+ *   Playing with this, i was unable to prevent the
+ *   calculated values from being spilled to memory.
+ *   With the definition used below, we don't necessarily
+ *   spill to memory.  A sequence like
+ *
+ *      sincos sc (ang);
+ *      double a = sc.apply (x, y)
+ *
+ *   can be calculated entirely in the FPU register file,
+ *   with no spills.
+ */
+struct sincos
+{
+  // cppcheck-suppress uninitMemberVar  ; false positive
+  /// Calculate sine and cosine of x.
+  sincos (double x)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+  // Inline assembly version.  Uses x87 FPU.
+  { __asm __volatile__ ("fsincos\n\t" : "=t" (cs), "=u" (sn) : "0" (x)); }
+#elif defined(__USE_GNU)
+  // Version using the GNU sincos() function.
+  { ::sincos(x, &sn, &cs); }
+#else
+  // Generic version.
+  : sn (std::sin (x)), cs (std::cos (x)) {}
+#endif
+
+  /// @f$\sin(x)@f$
+  double sn;
+
+  /// @f$\cos(x)@f$
+  double cs;
+
+  /// @f$a\sin(x) + b\cos(x)@f$
+  double apply (double a, double b) const { return a*sn + b*cs; }
+
+  /// @f$a\sin^2(x) + b\sin(x)\cos(x) + c\cos^2(x)@f$
+  double apply2 (double a, double b, double c) const
+  { return a*sn*sn + b*sn*cs + c*cs*cs; }
+};
+
+
+//} // namespace CxxUtils
+
+
+#endif //not SINCOS_H
+
diff --git a/GeoSpecialShapes/build/CMakeCache.txt b/GeoSpecialShapes/build/CMakeCache.txt
new file mode 100644
index 0000000..cc51c8a
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeCache.txt
@@ -0,0 +1,384 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build
+# It was generated by CMake: /opt/local/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+
+//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
+// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
+CMAKE_BUILD_TYPE:STRING=
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//CXX compiler
+CMAKE_CXX_COMPILER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release builds for minimum
+// size.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during release builds with debug info.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
+
+//User executables (bin)
+CMAKE_INSTALL_BINDIR:PATH=bin
+
+//Read-only architecture-independent data (DATAROOTDIR)
+CMAKE_INSTALL_DATADIR:PATH=
+
+//Read-only architecture-independent data root (share)
+CMAKE_INSTALL_DATAROOTDIR:PATH=share
+
+//Documentation root (DATAROOTDIR/doc/PROJECT_NAME)
+CMAKE_INSTALL_DOCDIR:PATH=
+
+//C header files (include)
+CMAKE_INSTALL_INCLUDEDIR:PATH=include
+
+//Info documentation (DATAROOTDIR/info)
+CMAKE_INSTALL_INFODIR:PATH=
+
+//Object code libraries (lib)
+CMAKE_INSTALL_LIBDIR:PATH=lib
+
+//Program executables (libexec)
+CMAKE_INSTALL_LIBEXECDIR:PATH=libexec
+
+//Locale-dependent data (DATAROOTDIR/locale)
+CMAKE_INSTALL_LOCALEDIR:PATH=
+
+//Modifiable single-machine data (var)
+CMAKE_INSTALL_LOCALSTATEDIR:PATH=var
+
+//Man documentation (DATAROOTDIR/man)
+CMAKE_INSTALL_MANDIR:PATH=
+
+//Path to a program.
+CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool
+
+//C header files for non-gcc (/usr/include)
+CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/Users/mariba/Atlas/standaloneGeo2G4/install
+
+//Run-time variable data (LOCALSTATEDIR/run)
+CMAKE_INSTALL_RUNSTATEDIR:PATH=
+
+//System admin executables (sbin)
+CMAKE_INSTALL_SBINDIR:PATH=sbin
+
+//Modifiable architecture-independent data (com)
+CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com
+
+//Read-only single-machine data (etc)
+CMAKE_INSTALL_SYSCONFDIR:PATH=etc
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump
+
+//Build architectures for OSX
+CMAKE_OSX_ARCHITECTURES:STRING=
+
+//Minimum OS X version to target for deployment (at runtime); newer
+// APIs weak linked. Set to empty string for default value.
+CMAKE_OSX_DEPLOYMENT_TARGET:STRING=
+
+//The product will be built against the headers and libraries located
+// inside the indicated SDK.
+CMAKE_OSX_SYSROOT:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=GeoSpecialShapes
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make.  This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//The directory containing a CMake configuration file for Eigen3.
+Eigen3_DIR:PATH=/usr/local/share/eigen3/cmake
+
+//The directory containing a CMake configuration file for GeoModelCore.
+GeoModelCore_DIR:PATH=/Users/mariba/Atlas/standaloneGeo2G4/install/lib/cmake/GeoModelCore
+
+//Value Computed by CMake
+GeoSpecialShapes_BINARY_DIR:STATIC=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build
+
+//Dependencies for the target
+GeoSpecialShapes_LIB_DEPENDS:STATIC=general;GeoMaterial2G4;general;GeoModel2G4;general;GeoModelCore::GeoModelKernel;
+
+//Value Computed by CMake
+GeoSpecialShapes_SOURCE_DIR:STATIC=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=10
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=3
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/opt/local/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/opt/local/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/opt/local/bin/ctest
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Path to cache edit program executable.
+CMAKE_EDIT_COMMAND:INTERNAL=/opt/local/bin/ccmake
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes
+//ADVANCED property for variable: CMAKE_INSTALL_BINDIR
+CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_DATADIR
+CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR
+CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR
+CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR
+CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_INFODIR
+CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR
+CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR
+CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR
+CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR
+CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_MANDIR
+CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL
+CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR
+CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR
+CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR
+CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR
+CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR
+CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/opt/local/share/cmake-3.10
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+//Details about finding GeoModelCore
+FIND_PACKAGE_MESSAGE_DETAILS_GeoModelCore:INTERNAL=[/Users/mariba/Atlas/standaloneGeo2G4/install/lib/cmake/GeoModelCore][v2.0.0()]
+//CMAKE_INSTALL_PREFIX during last run
+_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/Users/mariba/Atlas/standaloneGeo2G4/install
+
diff --git a/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeCXXCompiler.cmake b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeCXXCompiler.cmake
new file mode 100644
index 0000000..5c100e5
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeCXXCompiler.cmake
@@ -0,0 +1,75 @@
+set(CMAKE_CXX_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++")
+set(CMAKE_CXX_COMPILER_ARG1 "")
+set(CMAKE_CXX_COMPILER_ID "AppleClang")
+set(CMAKE_CXX_COMPILER_VERSION "10.0.1.10010046")
+set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_CXX_COMPILER_WRAPPER "")
+set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98")
+set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17")
+set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
+set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
+set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
+set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
+
+set(CMAKE_CXX_PLATFORM_ID "Darwin")
+set(CMAKE_CXX_SIMULATE_ID "")
+set(CMAKE_CXX_SIMULATE_VERSION "")
+
+
+
+set(CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar")
+set(CMAKE_CXX_COMPILER_AR "")
+set(CMAKE_RANLIB "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib")
+set(CMAKE_CXX_COMPILER_RANLIB "")
+set(CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCXX )
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS TRUE)
+set(CMAKE_CXX_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP)
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+set(CMAKE_CXX_COMPILER_ABI "")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
+  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib")
+set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks")
diff --git a/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeDetermineCompilerABI_CXX.bin b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeDetermineCompilerABI_CXX.bin
new file mode 100644
index 0000000000000000000000000000000000000000..9e1ac450765d6b05920ffa94798f6f963b679dad
GIT binary patch
literal 4288
zcmeHKO=}ZT6n)dQ_*If_6h)CJC~7g8sz^{bilYfFZP5zSQl3pRB?I}8WCjx@(2a{A
zN*DeBLGU+-3lUv(sVmnmbR!XTSBi+|yu36s^#j-PE}Xo3X6`%hzBAd}w;Nx6Y!kwY
z39&LHgh&7-kozKuOo)9z7LaoG;#Ftfxi-V6(XgWQw~RU&6iPYg+?<P+sQqKnXF_xI
zCPo0Xq(VyHZTgyE*{XL77ogs0T|z!QC?{D7Qz;9zYGWX{Rqu(`+pRZ|NA$vC$fXRb
zcf4v*de!Bc;?es)*Lw7nK~CTQ6a)XKa?_K}<y_x8_!IF>`}Il-(Kq#8^TYVQw$A^$
zK!<hgX)llg=Y5-4+4C-77GO}HU@gB-_&m^mia4s0z$lOo8ufJ9%cqO2auJ-dA7CGo
z3+KPxvokNAzH7bz{OnQr6rLpkb!L305CC)aKZ(7zP9R6in{f>Hrw;!Q;o!M8z<0dI
z@Qzi;Sc6{BPhosKHIYJ7US9Q?3DsL0A7M|l{(7t7yOq=>y#>`m90k~qji2pUk84hU
zO&AA^1I7X4fN{V$U>q<G7zd04|AzxNvYk(B&Uap>(_YVZg0E{%mn>Td*0T>s4j@gu
zykN)L-A=pv!09f&Sq(>S`pV3?hIiMkEz9C<zrJ8+7P+0X4)-#`D`yzaIA^dDkM+F6
zoU_p=c8;mtAe6Br=IbF@DM`2K76RXuC3mUl*2SU9l2;W+dc)m^gQ{GJesU5#j(7d}
zm}Lp8H_WiNJ&N~w>Gz72Wh#=Glz%-_sxvwM$%Y@~Wge3>T9I;oYT_&>Y8kRZ>HGw9
C8JY(G

literal 0
HcmV?d00001

diff --git a/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeSystem.cmake b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeSystem.cmake
new file mode 100644
index 0000000..a2525ab
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-18.5.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "18.5.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+
+
+set(CMAKE_SYSTEM "Darwin-18.5.0")
+set(CMAKE_SYSTEM_NAME "Darwin")
+set(CMAKE_SYSTEM_VERSION "18.5.0")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/CMakeCXXCompilerId.cpp b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/CMakeCXXCompilerId.cpp
new file mode 100644
index 0000000..2d66298
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/CMakeCXXCompilerId.cpp
@@ -0,0 +1,576 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__COMO__)
+# define COMPILER_ID "Comeau"
+  /* __COMO_VERSION__ = VRR */
+# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
+
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# if defined(__INTEL_COMPILER_UPDATE)
+#  define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+# else
+#  define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER   % 10)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+# define COMPILER_ID "Watcom"
+   /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "OpenWatcom"
+   /* __WATCOMC__ = VVRP + 1100 */
+# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__SUNPRO_CC)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_CC >= 0x5100
+   /* __SUNPRO_CC = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# else
+   /* __SUNPRO_CC = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# endif
+
+#elif defined(__HP_aCC)
+# define COMPILER_ID "HP"
+  /* __HP_aCC = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_aCC     % 100)
+
+#elif defined(__DECCXX)
+# define COMPILER_ID "Compaq"
+  /* __DECCXX_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER         % 10000)
+
+#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
+# define COMPILER_ID "zOS"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
+# define COMPILER_ID "XL"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
+# define COMPILER_ID "VisualAge"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
+# define COMPILER_ID "Fujitsu"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+# define COMPILER_ID "AppleClang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__GNUC__) || defined(__GNUG__)
+# define COMPILER_ID "GNU"
+# if defined(__GNUC__)
+#  define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# else
+#  define COMPILER_VERSION_MAJOR DEC(__GNUG__)
+# endif
+# if defined(__GNUC_MINOR__)
+#  define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+#if defined(__VISUALDSPVERSION__)
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+# if defined(__VER__)
+#  define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
+#  define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
+#  define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
+#  define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
+# endif
+
+#elif defined(__ARMCC_VERSION)
+# define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+  /* __ARMCC_VERSION = VRRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION     % 10000)
+#else
+  /* __ARMCC_VERSION = VRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION    % 10000)
+#endif
+
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+
+/* These compilers are either not known or too old to define an
+  identification macro.  Try to identify the platform and guess that
+  it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXE) || defined(__CRAYXC)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+#  define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+#  define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+#  define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+#  define PLATFORM_ID "Windows3x"
+
+# else /* unknown platform */
+#  define PLATFORM_ID
+# endif
+
+#else /* unknown platform */
+# define PLATFORM_ID
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM64)
+#  define ARCHITECTURE_ID "ARM64"
+
+# elif defined(_M_ARM)
+#  if _M_ARM == 4
+#   define ARCHITECTURE_ID "ARMV4I"
+#  elif _M_ARM == 5
+#   define ARCHITECTURE_ID "ARMV5I"
+#  else
+#   define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+#  endif
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+#  define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# if defined(__ICCARM__)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(__ICCAVR__)
+#  define ARCHITECTURE_ID "AVR"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+#else
+#  define ARCHITECTURE_ID
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct a string literal encoding the internal version number. */
+#ifdef COMPILER_VERSION_INTERNAL
+char const info_version_internal[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
+  'i','n','t','e','r','n','a','l','[',
+  COMPILER_VERSION_INTERNAL,']','\0'};
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+  SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+  '.', SIMULATE_VERSION_MINOR,
+#  ifdef SIMULATE_VERSION_PATCH
+   '.', SIMULATE_VERSION_PATCH,
+#   ifdef SIMULATE_VERSION_TWEAK
+    '.', SIMULATE_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+
+#if defined(_MSC_VER) && defined(_MSVC_LANG)
+#define CXX_STD _MSVC_LANG
+#else
+#define CXX_STD __cplusplus
+#endif
+
+const char* info_language_dialect_default = "INFO" ":" "dialect_default["
+#if CXX_STD > 201402L
+  "17"
+#elif CXX_STD >= 201402L
+  "14"
+#elif CXX_STD >= 201103L
+  "11"
+#else
+  "98"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+  require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXE) || defined(__CRAYXC)
+  require += info_cray[argc];
+#endif
+  require += info_language_dialect_default[argc];
+  (void)argv;
+  return require;
+}
diff --git a/GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/a.out b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/a.out
new file mode 100644
index 0000000000000000000000000000000000000000..a5dafb114b35eed175337579b13d3e47ac1aa82c
GIT binary patch
literal 8600
zcmeHNOKTKC5UzC-jT(}uD2fIr0Y!~$b~O=S2NScpK}mu}5SQ3Yb|=Ze?8Dg^ABR8?
z#DpN`m}7o`zrlkdUKITidW+z}g9H)3>gmbOY!dV;bg{MFUv+hL&DVX{>Do_g-+u2P
zN+gNqwh>VWbgYT!85!si9fIbdLW~Vu&)&=48f9x-5^=aG;yCkg6k<GkcRcPQ=kvl*
zQ5d;VGZZOF5yG<`dkUawjJMK;hk@NyE{wyu($qwAYDhLh6l$Jpm#3AnG2Y(xAl@A{
z&NwQ}SyT|OQm)k#Y>Zb`@h+)JjAQvlgP|{kUw&kli^48XRV0q{_e#a%Jz`<pm{Twk
zeDgjmLxmU`7$1m?fbZBog!>WM2b__>N6s&ro>`y2RXihfK^&gHmDJDK&Eb(7*`eX^
zj2I1h0kbU2WQq8EsIIhk;~b~CXAreW%jRD#7@xxsb9E59WCZ>lT{x$}yP;!H7LL!l
z9oo1aO#dV}hMW?$LVNw1+w0hqy~QU^5t!vLl=JxT?%4j1&o2~SUOW2v+>g$+Gq4#@
zUZ2`_N#(xeGWjNP3VpRj>_I2+SR9AXeN=c|=7q=jnVWVlAxxs43-T%S^rSK=BxO&^
zJkLk`6Kh{^OymBypVU07lp0i1;7xQK%K6M20iP!oW`4D31~dbj0nLDBKr^5j&<tn>
z{>H$a+``xQ*<b9oF#9vN;D3LgU1gM8?7xCvu(?9^XZ!2R+mo}a3$v@a#pbip=(91c
zjBv@l=zoeyG0#IAJQuU86K{t{u8m$SR7zFbvE2MXwdz<`9kV<=L2{((nBG*yE#-$y
z7cXYYYPyA)yy_Qi)3FMkC|Xmd?|AtO=O;MfKw{CwL(8q%m2y5UC6i7Co%DJqlggyi
z`1GAa4CG5kRGetbzvub)eji%aeRv0C;Xc17v|?t5oXysHhe7y$ds@9m4ytxUwd|us
zGoTsJ3}^;41DXNNfM!55pc&8%Xa+O`nt}hDfj!+6R9X`Pb@rqv%?RtURq#Da%vfg8
za_L0Lw99mw>(7EReAkeql}=O;!#fh14(~+B;d>Bzz}F?dIc<rCs}Opaq&WlgQ5{Tj
z$u&vKM!+9OWbvVGxU>lC<h)*cBB*fk{l@{u_(MPkOpLn}=At9xw894!9#yzS;roo?
z82(Ry>#u;kj1&Wv@r@kF>bsB+7j)O3J%C$2a4@{ikC0q)*;mv&e^N}MvJZ-dxOX#i
KMl!5!gy;|3yA@3U

literal 0
HcmV?d00001

diff --git a/GeoSpecialShapes/build/CMakeFiles/CMakeDirectoryInformation.cmake b/GeoSpecialShapes/build/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100644
index 0000000..e769147
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -0,0 +1,16 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.10
+
+# Relative path conversion top directories.
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build")
+
+# Force unix paths in dependencies.
+set(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/GeoSpecialShapes/build/CMakeFiles/CMakeOutput.log b/GeoSpecialShapes/build/CMakeFiles/CMakeOutput.log
new file mode 100644
index 0000000..1ddbbe2
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/CMakeOutput.log
@@ -0,0 +1,381 @@
+The system is: Darwin - 18.5.0 - x86_64
+Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
+Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ 
+Build flags: 
+Id flags:  
+
+The output was:
+0
+
+
+Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
+
+The CXX compiler identification is AppleClang, found in "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/a.out"
+
+Determining if the CXX compiler works passed with the following output:
+Change Dir: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_79ceb/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_79ceb.dir/build.make CMakeFiles/cmTC_79ceb.dir/build
+Building CXX object CMakeFiles/cmTC_79ceb.dir/testCXXCompiler.cxx.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk   -o CMakeFiles/cmTC_79ceb.dir/testCXXCompiler.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
+Linking CXX executable cmTC_79ceb
+/opt/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_79ceb.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names   CMakeFiles/cmTC_79ceb.dir/testCXXCompiler.cxx.o  -o cmTC_79ceb 
+
+
+Detecting CXX compiler ABI info compiled with the following output:
+Change Dir: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_8505b/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_8505b.dir/build.make CMakeFiles/cmTC_8505b.dir/build
+Building CXX object CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk   -o CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o -c /opt/local/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp
+Linking CXX executable cmTC_8505b
+/opt/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8505b.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names  -v -Wl,-v CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o  -o cmTC_8505b 
+Apple LLVM version 10.0.1 (clang-1001.0.46.4)
+Target: x86_64-apple-darwin18.5.0
+Thread model: posix
+InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
+ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.14.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -o cmTC_8505b -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1/lib/darwin/libclang_rt.osx.a
+@(#)PROGRAM:ld  PROJECT:ld64-450.3
+BUILD 18:45:16 Apr  4 2019
+configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em
+Library search paths:
+	/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib
+Framework search paths:
+	/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/
+
+
+Parsed CXX implicit link information from above output:
+  link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)]
+  ignore line: [Change Dir: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/CMakeTmp]
+  ignore line: []
+  ignore line: [Run Build Command:"/usr/bin/make" "cmTC_8505b/fast"]
+  ignore line: [/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_8505b.dir/build.make CMakeFiles/cmTC_8505b.dir/build]
+  ignore line: [Building CXX object CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o]
+  ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk   -o CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o -c /opt/local/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp]
+  ignore line: [Linking CXX executable cmTC_8505b]
+  ignore line: [/opt/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8505b.dir/link.txt --verbose=1]
+  ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names  -v -Wl,-v CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o  -o cmTC_8505b ]
+  ignore line: [Apple LLVM version 10.0.1 (clang-1001.0.46.4)]
+  ignore line: [Target: x86_64-apple-darwin18.5.0]
+  ignore line: [Thread model: posix]
+  ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin]
+  link line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.14.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -o cmTC_8505b -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1/lib/darwin/libclang_rt.osx.a]
+    arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld] ==> ignore
+    arg [-demangle] ==> ignore
+    arg [-lto_library] ==> ignore, skip following value
+    arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib] ==> skip value of -lto_library
+    arg [-dynamic] ==> ignore
+    arg [-arch] ==> ignore
+    arg [x86_64] ==> ignore
+    arg [-macosx_version_min] ==> ignore
+    arg [10.14.0] ==> ignore
+    arg [-syslibroot] ==> ignore
+    arg [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk] ==> ignore
+    arg [-o] ==> ignore
+    arg [cmTC_8505b] ==> ignore
+    arg [-search_paths_first] ==> ignore
+    arg [-headerpad_max_install_names] ==> ignore
+    arg [-v] ==> ignore
+    arg [CMakeFiles/cmTC_8505b.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
+    arg [-lc++] ==> lib [c++]
+    arg [-lSystem] ==> lib [System]
+    arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1/lib/darwin/libclang_rt.osx.a] ==> lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1/lib/darwin/libclang_rt.osx.a]
+  Library search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib]
+  Framework search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/]
+  remove lib [System]
+  remove lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1/lib/darwin/libclang_rt.osx.a]
+  collapse library dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib]
+  collapse framework dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks]
+  implicit libs: [c++]
+  implicit dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib]
+  implicit fwks: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks]
+
+
+
+
+Detecting CXX [-std=c++1z] compiler features compiled with the following output:
+Change Dir: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_a9954/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_a9954.dir/build.make CMakeFiles/cmTC_a9954.dir/build
+Building CXX object CMakeFiles/cmTC_a9954.dir/feature_tests.cxx.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk   -std=c++1z -o CMakeFiles/cmTC_a9954.dir/feature_tests.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx
+Linking CXX executable cmTC_a9954
+/opt/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a9954.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names   CMakeFiles/cmTC_a9954.dir/feature_tests.cxx.o  -o cmTC_a9954 
+
+
+    Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
+    Feature record: CXX_FEATURE:1cxx_alias_templates
+    Feature record: CXX_FEATURE:1cxx_alignas
+    Feature record: CXX_FEATURE:1cxx_alignof
+    Feature record: CXX_FEATURE:1cxx_attributes
+    Feature record: CXX_FEATURE:1cxx_attribute_deprecated
+    Feature record: CXX_FEATURE:1cxx_auto_type
+    Feature record: CXX_FEATURE:1cxx_binary_literals
+    Feature record: CXX_FEATURE:1cxx_constexpr
+    Feature record: CXX_FEATURE:1cxx_contextual_conversions
+    Feature record: CXX_FEATURE:1cxx_decltype
+    Feature record: CXX_FEATURE:1cxx_decltype_auto
+    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
+    Feature record: CXX_FEATURE:1cxx_default_function_template_args
+    Feature record: CXX_FEATURE:1cxx_defaulted_functions
+    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
+    Feature record: CXX_FEATURE:1cxx_delegating_constructors
+    Feature record: CXX_FEATURE:1cxx_deleted_functions
+    Feature record: CXX_FEATURE:1cxx_digit_separators
+    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
+    Feature record: CXX_FEATURE:1cxx_explicit_conversions
+    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
+    Feature record: CXX_FEATURE:1cxx_extern_templates
+    Feature record: CXX_FEATURE:1cxx_final
+    Feature record: CXX_FEATURE:1cxx_func_identifier
+    Feature record: CXX_FEATURE:1cxx_generalized_initializers
+    Feature record: CXX_FEATURE:1cxx_generic_lambdas
+    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
+    Feature record: CXX_FEATURE:1cxx_inline_namespaces
+    Feature record: CXX_FEATURE:1cxx_lambdas
+    Feature record: CXX_FEATURE:1cxx_lambda_init_captures
+    Feature record: CXX_FEATURE:1cxx_local_type_template_args
+    Feature record: CXX_FEATURE:1cxx_long_long_type
+    Feature record: CXX_FEATURE:1cxx_noexcept
+    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
+    Feature record: CXX_FEATURE:1cxx_nullptr
+    Feature record: CXX_FEATURE:1cxx_override
+    Feature record: CXX_FEATURE:1cxx_range_for
+    Feature record: CXX_FEATURE:1cxx_raw_string_literals
+    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
+    Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
+    Feature record: CXX_FEATURE:1cxx_return_type_deduction
+    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
+    Feature record: CXX_FEATURE:1cxx_rvalue_references
+    Feature record: CXX_FEATURE:1cxx_sizeof_member
+    Feature record: CXX_FEATURE:1cxx_static_assert
+    Feature record: CXX_FEATURE:1cxx_strong_enums
+    Feature record: CXX_FEATURE:1cxx_template_template_parameters
+    Feature record: CXX_FEATURE:1cxx_thread_local
+    Feature record: CXX_FEATURE:1cxx_trailing_return_types
+    Feature record: CXX_FEATURE:1cxx_unicode_literals
+    Feature record: CXX_FEATURE:1cxx_uniform_initialization
+    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
+    Feature record: CXX_FEATURE:1cxx_user_literals
+    Feature record: CXX_FEATURE:1cxx_variable_templates
+    Feature record: CXX_FEATURE:1cxx_variadic_macros
+    Feature record: CXX_FEATURE:1cxx_variadic_templates
+
+
+Detecting CXX [-std=c++14] compiler features compiled with the following output:
+Change Dir: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_8713b/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_8713b.dir/build.make CMakeFiles/cmTC_8713b.dir/build
+Building CXX object CMakeFiles/cmTC_8713b.dir/feature_tests.cxx.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk   -std=c++14 -o CMakeFiles/cmTC_8713b.dir/feature_tests.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx
+Linking CXX executable cmTC_8713b
+/opt/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8713b.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names   CMakeFiles/cmTC_8713b.dir/feature_tests.cxx.o  -o cmTC_8713b 
+
+
+    Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
+    Feature record: CXX_FEATURE:1cxx_alias_templates
+    Feature record: CXX_FEATURE:1cxx_alignas
+    Feature record: CXX_FEATURE:1cxx_alignof
+    Feature record: CXX_FEATURE:1cxx_attributes
+    Feature record: CXX_FEATURE:1cxx_attribute_deprecated
+    Feature record: CXX_FEATURE:1cxx_auto_type
+    Feature record: CXX_FEATURE:1cxx_binary_literals
+    Feature record: CXX_FEATURE:1cxx_constexpr
+    Feature record: CXX_FEATURE:1cxx_contextual_conversions
+    Feature record: CXX_FEATURE:1cxx_decltype
+    Feature record: CXX_FEATURE:1cxx_decltype_auto
+    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
+    Feature record: CXX_FEATURE:1cxx_default_function_template_args
+    Feature record: CXX_FEATURE:1cxx_defaulted_functions
+    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
+    Feature record: CXX_FEATURE:1cxx_delegating_constructors
+    Feature record: CXX_FEATURE:1cxx_deleted_functions
+    Feature record: CXX_FEATURE:1cxx_digit_separators
+    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
+    Feature record: CXX_FEATURE:1cxx_explicit_conversions
+    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
+    Feature record: CXX_FEATURE:1cxx_extern_templates
+    Feature record: CXX_FEATURE:1cxx_final
+    Feature record: CXX_FEATURE:1cxx_func_identifier
+    Feature record: CXX_FEATURE:1cxx_generalized_initializers
+    Feature record: CXX_FEATURE:1cxx_generic_lambdas
+    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
+    Feature record: CXX_FEATURE:1cxx_inline_namespaces
+    Feature record: CXX_FEATURE:1cxx_lambdas
+    Feature record: CXX_FEATURE:1cxx_lambda_init_captures
+    Feature record: CXX_FEATURE:1cxx_local_type_template_args
+    Feature record: CXX_FEATURE:1cxx_long_long_type
+    Feature record: CXX_FEATURE:1cxx_noexcept
+    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
+    Feature record: CXX_FEATURE:1cxx_nullptr
+    Feature record: CXX_FEATURE:1cxx_override
+    Feature record: CXX_FEATURE:1cxx_range_for
+    Feature record: CXX_FEATURE:1cxx_raw_string_literals
+    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
+    Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
+    Feature record: CXX_FEATURE:1cxx_return_type_deduction
+    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
+    Feature record: CXX_FEATURE:1cxx_rvalue_references
+    Feature record: CXX_FEATURE:1cxx_sizeof_member
+    Feature record: CXX_FEATURE:1cxx_static_assert
+    Feature record: CXX_FEATURE:1cxx_strong_enums
+    Feature record: CXX_FEATURE:1cxx_template_template_parameters
+    Feature record: CXX_FEATURE:1cxx_thread_local
+    Feature record: CXX_FEATURE:1cxx_trailing_return_types
+    Feature record: CXX_FEATURE:1cxx_unicode_literals
+    Feature record: CXX_FEATURE:1cxx_uniform_initialization
+    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
+    Feature record: CXX_FEATURE:1cxx_user_literals
+    Feature record: CXX_FEATURE:1cxx_variable_templates
+    Feature record: CXX_FEATURE:1cxx_variadic_macros
+    Feature record: CXX_FEATURE:1cxx_variadic_templates
+
+
+Detecting CXX [-std=c++11] compiler features compiled with the following output:
+Change Dir: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_2c9df/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_2c9df.dir/build.make CMakeFiles/cmTC_2c9df.dir/build
+Building CXX object CMakeFiles/cmTC_2c9df.dir/feature_tests.cxx.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk   -std=c++11 -o CMakeFiles/cmTC_2c9df.dir/feature_tests.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx
+Linking CXX executable cmTC_2c9df
+/opt/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2c9df.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names   CMakeFiles/cmTC_2c9df.dir/feature_tests.cxx.o  -o cmTC_2c9df 
+
+
+    Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
+    Feature record: CXX_FEATURE:1cxx_alias_templates
+    Feature record: CXX_FEATURE:1cxx_alignas
+    Feature record: CXX_FEATURE:1cxx_alignof
+    Feature record: CXX_FEATURE:1cxx_attributes
+    Feature record: CXX_FEATURE:0cxx_attribute_deprecated
+    Feature record: CXX_FEATURE:1cxx_auto_type
+    Feature record: CXX_FEATURE:0cxx_binary_literals
+    Feature record: CXX_FEATURE:1cxx_constexpr
+    Feature record: CXX_FEATURE:0cxx_contextual_conversions
+    Feature record: CXX_FEATURE:1cxx_decltype
+    Feature record: CXX_FEATURE:0cxx_decltype_auto
+    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
+    Feature record: CXX_FEATURE:1cxx_default_function_template_args
+    Feature record: CXX_FEATURE:1cxx_defaulted_functions
+    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
+    Feature record: CXX_FEATURE:1cxx_delegating_constructors
+    Feature record: CXX_FEATURE:1cxx_deleted_functions
+    Feature record: CXX_FEATURE:0cxx_digit_separators
+    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
+    Feature record: CXX_FEATURE:1cxx_explicit_conversions
+    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
+    Feature record: CXX_FEATURE:1cxx_extern_templates
+    Feature record: CXX_FEATURE:1cxx_final
+    Feature record: CXX_FEATURE:1cxx_func_identifier
+    Feature record: CXX_FEATURE:1cxx_generalized_initializers
+    Feature record: CXX_FEATURE:0cxx_generic_lambdas
+    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
+    Feature record: CXX_FEATURE:1cxx_inline_namespaces
+    Feature record: CXX_FEATURE:1cxx_lambdas
+    Feature record: CXX_FEATURE:0cxx_lambda_init_captures
+    Feature record: CXX_FEATURE:1cxx_local_type_template_args
+    Feature record: CXX_FEATURE:1cxx_long_long_type
+    Feature record: CXX_FEATURE:1cxx_noexcept
+    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
+    Feature record: CXX_FEATURE:1cxx_nullptr
+    Feature record: CXX_FEATURE:1cxx_override
+    Feature record: CXX_FEATURE:1cxx_range_for
+    Feature record: CXX_FEATURE:1cxx_raw_string_literals
+    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
+    Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
+    Feature record: CXX_FEATURE:0cxx_return_type_deduction
+    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
+    Feature record: CXX_FEATURE:1cxx_rvalue_references
+    Feature record: CXX_FEATURE:1cxx_sizeof_member
+    Feature record: CXX_FEATURE:1cxx_static_assert
+    Feature record: CXX_FEATURE:1cxx_strong_enums
+    Feature record: CXX_FEATURE:1cxx_template_template_parameters
+    Feature record: CXX_FEATURE:1cxx_thread_local
+    Feature record: CXX_FEATURE:1cxx_trailing_return_types
+    Feature record: CXX_FEATURE:1cxx_unicode_literals
+    Feature record: CXX_FEATURE:1cxx_uniform_initialization
+    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
+    Feature record: CXX_FEATURE:1cxx_user_literals
+    Feature record: CXX_FEATURE:0cxx_variable_templates
+    Feature record: CXX_FEATURE:1cxx_variadic_macros
+    Feature record: CXX_FEATURE:1cxx_variadic_templates
+
+
+Detecting CXX [-std=c++98] compiler features compiled with the following output:
+Change Dir: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_efc4f/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_efc4f.dir/build.make CMakeFiles/cmTC_efc4f.dir/build
+Building CXX object CMakeFiles/cmTC_efc4f.dir/feature_tests.cxx.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk   -std=c++98 -o CMakeFiles/cmTC_efc4f.dir/feature_tests.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx
+Linking CXX executable cmTC_efc4f
+/opt/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_efc4f.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names   CMakeFiles/cmTC_efc4f.dir/feature_tests.cxx.o  -o cmTC_efc4f 
+
+
+    Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
+    Feature record: CXX_FEATURE:0cxx_alias_templates
+    Feature record: CXX_FEATURE:0cxx_alignas
+    Feature record: CXX_FEATURE:0cxx_alignof
+    Feature record: CXX_FEATURE:0cxx_attributes
+    Feature record: CXX_FEATURE:0cxx_attribute_deprecated
+    Feature record: CXX_FEATURE:0cxx_auto_type
+    Feature record: CXX_FEATURE:0cxx_binary_literals
+    Feature record: CXX_FEATURE:0cxx_constexpr
+    Feature record: CXX_FEATURE:0cxx_contextual_conversions
+    Feature record: CXX_FEATURE:0cxx_decltype
+    Feature record: CXX_FEATURE:0cxx_decltype_auto
+    Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types
+    Feature record: CXX_FEATURE:0cxx_default_function_template_args
+    Feature record: CXX_FEATURE:0cxx_defaulted_functions
+    Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers
+    Feature record: CXX_FEATURE:0cxx_delegating_constructors
+    Feature record: CXX_FEATURE:0cxx_deleted_functions
+    Feature record: CXX_FEATURE:0cxx_digit_separators
+    Feature record: CXX_FEATURE:0cxx_enum_forward_declarations
+    Feature record: CXX_FEATURE:0cxx_explicit_conversions
+    Feature record: CXX_FEATURE:0cxx_extended_friend_declarations
+    Feature record: CXX_FEATURE:0cxx_extern_templates
+    Feature record: CXX_FEATURE:0cxx_final
+    Feature record: CXX_FEATURE:0cxx_func_identifier
+    Feature record: CXX_FEATURE:0cxx_generalized_initializers
+    Feature record: CXX_FEATURE:0cxx_generic_lambdas
+    Feature record: CXX_FEATURE:0cxx_inheriting_constructors
+    Feature record: CXX_FEATURE:0cxx_inline_namespaces
+    Feature record: CXX_FEATURE:0cxx_lambdas
+    Feature record: CXX_FEATURE:0cxx_lambda_init_captures
+    Feature record: CXX_FEATURE:0cxx_local_type_template_args
+    Feature record: CXX_FEATURE:0cxx_long_long_type
+    Feature record: CXX_FEATURE:0cxx_noexcept
+    Feature record: CXX_FEATURE:0cxx_nonstatic_member_init
+    Feature record: CXX_FEATURE:0cxx_nullptr
+    Feature record: CXX_FEATURE:0cxx_override
+    Feature record: CXX_FEATURE:0cxx_range_for
+    Feature record: CXX_FEATURE:0cxx_raw_string_literals
+    Feature record: CXX_FEATURE:0cxx_reference_qualified_functions
+    Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
+    Feature record: CXX_FEATURE:0cxx_return_type_deduction
+    Feature record: CXX_FEATURE:0cxx_right_angle_brackets
+    Feature record: CXX_FEATURE:0cxx_rvalue_references
+    Feature record: CXX_FEATURE:0cxx_sizeof_member
+    Feature record: CXX_FEATURE:0cxx_static_assert
+    Feature record: CXX_FEATURE:0cxx_strong_enums
+    Feature record: CXX_FEATURE:1cxx_template_template_parameters
+    Feature record: CXX_FEATURE:0cxx_thread_local
+    Feature record: CXX_FEATURE:0cxx_trailing_return_types
+    Feature record: CXX_FEATURE:0cxx_unicode_literals
+    Feature record: CXX_FEATURE:0cxx_uniform_initialization
+    Feature record: CXX_FEATURE:0cxx_unrestricted_unions
+    Feature record: CXX_FEATURE:0cxx_user_literals
+    Feature record: CXX_FEATURE:0cxx_variable_templates
+    Feature record: CXX_FEATURE:0cxx_variadic_macros
+    Feature record: CXX_FEATURE:0cxx_variadic_templates
diff --git a/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/DependInfo.cmake b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/DependInfo.cmake
new file mode 100644
index 0000000..11d7742
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/DependInfo.cmake
@@ -0,0 +1,31 @@
+# The set of languages for which implicit dependencies are needed:
+set(CMAKE_DEPENDS_LANGUAGES
+  "CXX"
+  )
+# The set of files for implicit dependencies of each language:
+set(CMAKE_DEPENDS_CHECK_CXX
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArCustomShape.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o"
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o"
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o"
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o"
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o"
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o"
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o"
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o"
+  "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx" "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o"
+  )
+set(CMAKE_CXX_COMPILER_ID "AppleClang")
+
+# The include file search paths:
+set(CMAKE_CXX_TARGET_INCLUDE_PATH
+  "../"
+  "/usr/local/include/eigen3"
+  "/Users/mariba/Atlas/standaloneGeo2G4/install/include"
+  )
+
+# Targets to which this target links.
+set(CMAKE_TARGET_LINKED_INFO_FILES
+  )
+
+# Fortran module output directory.
+set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/build.make b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/build.make
new file mode 100644
index 0000000..b4a25f9
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/build.make
@@ -0,0 +1,331 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.10
+
+# Delete rule output on recipe failure.
+.DELETE_ON_ERROR:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /opt/local/bin/cmake
+
+# The command to remove a file.
+RM = /opt/local/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build
+
+# Include any dependencies generated for this target.
+include CMakeFiles/GeoSpecialShapes.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/GeoSpecialShapes.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/GeoSpecialShapes.dir/flags.make
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o: ../src/LArCustomShape.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArCustomShape.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArCustomShape.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArCustomShape.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o
+
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o: ../src/LArWheelCalculator.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o
+
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o: ../src/LArWheelCalculatorGeometry.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o
+
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o: ../src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o
+
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o: ../src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o
+
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o: ../src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o
+
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o: ../src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o
+
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o: ../src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o
+
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o: CMakeFiles/GeoSpecialShapes.dir/flags.make
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o: ../src/LArWheelCalculator_Impl/sincos_poly.cxx
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building CXX object CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o -c /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.i"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx > CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.i
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.s"
+	/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx -o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.s
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o.requires:
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o.requires
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o.provides: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o.requires
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o.provides.build
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o.provides
+
+CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o.provides.build: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o
+
+
+# Object files for target GeoSpecialShapes
+GeoSpecialShapes_OBJECTS = \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o" \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o" \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o" \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o" \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o" \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o" \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o" \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o" \
+"CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o"
+
+# External object files for target GeoSpecialShapes
+GeoSpecialShapes_EXTERNAL_OBJECTS =
+
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/build.make
+libGeoSpecialShapes.dylib: /Users/mariba/Atlas/standaloneGeo2G4/install/lib/libGeoModelKernel.2.0.0.dylib
+libGeoSpecialShapes.dylib: /Users/mariba/Atlas/standaloneGeo2G4/install/lib/libGeoGenericFunctions.2.0.0.dylib
+libGeoSpecialShapes.dylib: CMakeFiles/GeoSpecialShapes.dir/link.txt
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Linking CXX shared library libGeoSpecialShapes.dylib"
+	$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/GeoSpecialShapes.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/GeoSpecialShapes.dir/build: libGeoSpecialShapes.dylib
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/build
+
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o.requires
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o.requires
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o.requires
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o.requires
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o.requires
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o.requires
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o.requires
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o.requires
+CMakeFiles/GeoSpecialShapes.dir/requires: CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o.requires
+
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/requires
+
+CMakeFiles/GeoSpecialShapes.dir/clean:
+	$(CMAKE_COMMAND) -P CMakeFiles/GeoSpecialShapes.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/clean
+
+CMakeFiles/GeoSpecialShapes.dir/depend:
+	cd /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/depend
+
diff --git a/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/cmake_clean.cmake b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/cmake_clean.cmake
new file mode 100644
index 0000000..1060cc8
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/cmake_clean.cmake
@@ -0,0 +1,18 @@
+file(REMOVE_RECURSE
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o"
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o"
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o"
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o"
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o"
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o"
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o"
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o"
+  "CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o"
+  "libGeoSpecialShapes.pdb"
+  "libGeoSpecialShapes.dylib"
+)
+
+# Per-language clean rules from dependency scanning.
+foreach(lang CXX)
+  include(CMakeFiles/GeoSpecialShapes.dir/cmake_clean_${lang}.cmake OPTIONAL)
+endforeach()
diff --git a/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/depend.make b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/depend.make
new file mode 100644
index 0000000..5e83449
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/depend.make
@@ -0,0 +1,2 @@
+# Empty dependencies file for GeoSpecialShapes.
+# This may be replaced when dependencies are built.
diff --git a/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/flags.make b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/flags.make
new file mode 100644
index 0000000..b55e032
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/flags.make
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.10
+
+# compile CXX with /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
+CXX_FLAGS =  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -fPIC   -std=c++1z
+
+CXX_DEFINES = -DGeoSpecialShapes_EXPORTS
+
+CXX_INCLUDES = -I/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes -isystem /usr/local/include/eigen3 -isystem /Users/mariba/Atlas/standaloneGeo2G4/install/include 
+
diff --git a/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/link.txt b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/link.txt
new file mode 100644
index 0000000..d8a5983
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/link.txt
@@ -0,0 +1 @@
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -dynamiclib -Wl,-headerpad_max_install_names  -o libGeoSpecialShapes.dylib -install_name @rpath/libGeoSpecialShapes.dylib CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o -Wl,-rpath,/Users/mariba/Atlas/standaloneGeo2G4/install/lib -lGeoMaterial2G4 -lGeoModel2G4 /Users/mariba/Atlas/standaloneGeo2G4/install/lib/libGeoModelKernel.2.0.0.dylib /Users/mariba/Atlas/standaloneGeo2G4/install/lib/libGeoGenericFunctions.2.0.0.dylib 
diff --git a/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/progress.make b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/progress.make
new file mode 100644
index 0000000..6c587e2
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir/progress.make
@@ -0,0 +1,11 @@
+CMAKE_PROGRESS_1 = 1
+CMAKE_PROGRESS_2 = 2
+CMAKE_PROGRESS_3 = 3
+CMAKE_PROGRESS_4 = 4
+CMAKE_PROGRESS_5 = 5
+CMAKE_PROGRESS_6 = 6
+CMAKE_PROGRESS_7 = 7
+CMAKE_PROGRESS_8 = 8
+CMAKE_PROGRESS_9 = 9
+CMAKE_PROGRESS_10 = 10
+
diff --git a/GeoSpecialShapes/build/CMakeFiles/Makefile.cmake b/GeoSpecialShapes/build/CMakeFiles/Makefile.cmake
new file mode 100644
index 0000000..1be4a62
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/Makefile.cmake
@@ -0,0 +1,108 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.10
+
+# The generator used is:
+set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
+
+# The top level Makefile was generated from the following files:
+set(CMAKE_MAKEFILE_DEPENDS
+  "CMakeCache.txt"
+  "../CMakeLists.txt"
+  "CMakeFiles/3.10.3/CMakeCXXCompiler.cmake"
+  "CMakeFiles/3.10.3/CMakeSystem.cmake"
+  "CMakeFiles/feature_tests.cxx"
+  "/Users/mariba/Atlas/standaloneGeo2G4/install/lib/cmake/GeoModelCore/GeoModelCoreConfig.cmake"
+  "/Users/mariba/Atlas/standaloneGeo2G4/install/lib/cmake/GeoModelCore/GeoModelCoreConfigVersion.cmake"
+  "/Users/mariba/Atlas/standaloneGeo2G4/install/lib/cmake/GeoModelCore/GeoModelCoreTargets-noconfig.cmake"
+  "/Users/mariba/Atlas/standaloneGeo2G4/install/lib/cmake/GeoModelCore/GeoModelCoreTargets.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeCXXCompiler.cmake.in"
+  "/opt/local/share/cmake-3.10/Modules/CMakeCXXCompilerABI.cpp"
+  "/opt/local/share/cmake-3.10/Modules/CMakeCXXInformation.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeCommonLanguageInclude.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeCompilerIdDetection.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeDetermineCXXCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeDetermineCompileFeatures.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeDetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeDetermineCompilerABI.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeDetermineCompilerId.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeFindBinUtils.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeGenericSystem.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeLanguageInformation.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeParseImplicitLinkInfo.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeSystem.cmake.in"
+  "/opt/local/share/cmake-3.10/Modules/CMakeSystemSpecificInformation.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeSystemSpecificInitialize.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeTestCXXCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeTestCompilerCommon.cmake"
+  "/opt/local/share/cmake-3.10/Modules/CMakeUnixFindMake.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/ADSP-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/AppleClang-CXX.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Borland-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Clang-CXX-TestableFeatures.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Clang-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Clang.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Cray-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/GHS-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/GNU.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/IAR-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Intel-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/MIPSpro-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/MSVC-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/PGI-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/PathScale-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/SCO-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/TI-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/Watcom-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
+  "/opt/local/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake"
+  "/opt/local/share/cmake-3.10/Modules/FindPackageMessage.cmake"
+  "/opt/local/share/cmake-3.10/Modules/GNUInstallDirs.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Internal/FeatureTesting.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Platform/Darwin-AppleClang-CXX.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Platform/Darwin-Clang-CXX.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Platform/Darwin-Clang.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Platform/Darwin-Determine-CXX.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Platform/Darwin-Initialize.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Platform/Darwin.cmake"
+  "/opt/local/share/cmake-3.10/Modules/Platform/UnixPaths.cmake"
+  "/usr/local/share/eigen3/cmake/Eigen3Config.cmake"
+  "/usr/local/share/eigen3/cmake/Eigen3ConfigVersion.cmake"
+  "/usr/local/share/eigen3/cmake/Eigen3Targets.cmake"
+  )
+
+# The corresponding makefile is:
+set(CMAKE_MAKEFILE_OUTPUTS
+  "Makefile"
+  "CMakeFiles/cmake.check_cache"
+  )
+
+# Byproducts of CMake generate step:
+set(CMAKE_MAKEFILE_PRODUCTS
+  "CMakeFiles/3.10.3/CMakeSystem.cmake"
+  "CMakeFiles/3.10.3/CMakeCXXCompiler.cmake"
+  "CMakeFiles/3.10.3/CMakeCXXCompiler.cmake"
+  "CMakeFiles/CMakeDirectoryInformation.cmake"
+  )
+
+# Dependency information for all targets:
+set(CMAKE_DEPEND_INFO_FILES
+  "CMakeFiles/GeoSpecialShapes.dir/DependInfo.cmake"
+  )
diff --git a/GeoSpecialShapes/build/CMakeFiles/Makefile2 b/GeoSpecialShapes/build/CMakeFiles/Makefile2
new file mode 100644
index 0000000..7545e33
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/Makefile2
@@ -0,0 +1,108 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.10
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# The main recursive all target
+all:
+
+.PHONY : all
+
+# The main recursive preinstall target
+preinstall:
+
+.PHONY : preinstall
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /opt/local/bin/cmake
+
+# The command to remove a file.
+RM = /opt/local/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build
+
+#=============================================================================
+# Target rules for target CMakeFiles/GeoSpecialShapes.dir
+
+# All Build rule for target.
+CMakeFiles/GeoSpecialShapes.dir/all:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/depend
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/build
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10 "Built target GeoSpecialShapes"
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/all
+
+# Include target in all.
+all: CMakeFiles/GeoSpecialShapes.dir/all
+
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/GeoSpecialShapes.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles 10
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/GeoSpecialShapes.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles 0
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/rule
+
+# Convenience name for target.
+GeoSpecialShapes: CMakeFiles/GeoSpecialShapes.dir/rule
+
+.PHONY : GeoSpecialShapes
+
+# clean rule for target.
+CMakeFiles/GeoSpecialShapes.dir/clean:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/clean
+.PHONY : CMakeFiles/GeoSpecialShapes.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/GeoSpecialShapes.dir/clean
+
+.PHONY : clean
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/GeoSpecialShapes/build/CMakeFiles/TargetDirectories.txt b/GeoSpecialShapes/build/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..4486858
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,7 @@
+/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/install/local.dir
+/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/install/strip.dir
+/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/install.dir
+/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/list_install_components.dir
+/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/rebuild_cache.dir
+/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/edit_cache.dir
+/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/GeoSpecialShapes.dir
diff --git a/GeoSpecialShapes/build/CMakeFiles/cmake.check_cache b/GeoSpecialShapes/build/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/GeoSpecialShapes/build/CMakeFiles/feature_tests.bin b/GeoSpecialShapes/build/CMakeFiles/feature_tests.bin
new file mode 100644
index 0000000000000000000000000000000000000000..155117b495a14d926b67f91b77ddeeb952d06b18
GIT binary patch
literal 8376
zcmeHM&x;&I6t3B9P-EB)2=PY*M<p5!?ry}x>d93{HyAX;U04EA)KtIeDeSHutE+cs
z6(JW7dl2$Rc=V8y<m5pQ9=(WX4+>rck0FToz3!gO%uda0{(vrcQ}wD|z4!Wiuc~0)
zFZcic?-3zdr-Zn*B!pN6^}&2C+87D(G-w+n<@K!(IyXBvKIYl!)|zI69P8PHpp-kE
zy`5>1a({bzt~M{=n>Y=EOJ$SN)6mxpy5supJc*CN{EM{+^UGs#W^PTgQtHg+V}-}{
z{a)+)jU7Q_eo9|8{oq&1!X6kKNn?8%W{>N;`&{K8W6F(r#(iEJ<A3eyM;~_HyE?+I
zUFi|$>Yd=Z-L1M3w-VQye*y8`sK*Ptwh%1GK0O861kc|)ME^GW$3fRY+*m&o%W`}s
z?SXx$wgRa(=qzZx$lZEky6e$l5`pJ-0mOb}&$Pc^`u5G8@3#K>a`(c^7hlI*8&uj{
zIU@v!$7P<J`myyY#v^Dj6qoS*tcUYqvawzMUS8wxSbpp_)U?LFz#o12^4gU(IAyw}
zpPLi%t^0ofo@x0{4s%cG+B@|YNDJ{2i2d1U3-KuWS8AT|ZCZmsgFu5ogFu5ogFu5o
zgFu5ogFu5ogFu5ogFu5ogFu5ogFu4-Be1)D^ykl=e|dQH)xGVb;-76@+}r-<^b?p_
z{b70I)1PinwlnYU?aB8$TRXcqI&W?0;ZUkLb`&d5GNPU;5|6*CjW;SWUy#cK@`+J7
z{&i0W2{wfVVyosYWW9h&@15xuVQr%|xHoX5VKWM7D10XU;eckBy2dJZC==t!sU+Z5
z`G-FZ2X1yRmbko7sD#S``@qAXIxs62kxs(aM=Mgn!}%M5xz2znAq<Xu;cWReK~q(b
zdWF><-aLqeR4$$`Pmvt$SSXZc`*cDAM3iv87#ml$5?5%Sg))T&5v_%WO>Df(X`q}6
zD<NB?vX{97<szhjPFOM=1;j8h8u}K-3h^Wxv0KhyaH3A6%^2hWc0J@*G8<V&TbhWh
zH$6jv+=|I^LgJKhacI$rD<zGViAuXs=wKP!CkG8DM#R{}Sdvzyln;~+o!+@ds)f>3
zsnq~E8r+^~92PzcCnaW*!QJvFd~$3?Lrnue3$5h}9g;xHl+rG_(x-q}kt72jKprXX
z96~d@#VH#TXIp6LK<2on*y*`fiK8AlvYO=QxHCBL3$x!*qJ|Jza05+T2FTP1M-90j
z@Xo}2FX4Scvg?%ojC>$f-M&f+zF=xE10p%{G3(X9&f2MQS9wk@5E%f(QROo`t@{eU
zG^00TJm6!W;*JR29=`8LMaU2&)T|@kDT7>&Pq-}$YjhUTf{;N1@lMA_u)JMn4Hg#p
zj`(Z7(Xc7_4itc8fvtVzjOrppBP6ClDxc$0CgR*y+GUFb#!B$ibFK4P5Vy&mYnWW)
zd;>kxuXVkX$6Omdi=F4n-C$TvOQOEMB-6g6A!)qHvX3y36VIp0SaGo`?%r81#i6?%
zyas*+Yoq!&i><b*iYxnezT_)kM!uqFv9h&M8K1QY5MYzbzc_nESK=*aSERgoZL>$J
Jyo0L!{{wWeTcrR1

literal 0
HcmV?d00001

diff --git a/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx b/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx
new file mode 100644
index 0000000..34d2e8c
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx
@@ -0,0 +1,405 @@
+
+  const char features[] = {"\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_aggregate_nsdmi)
+"1"
+#else
+"0"
+#endif
+"cxx_aggregate_default_initializers\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alias_templates)
+"1"
+#else
+"0"
+#endif
+"cxx_alias_templates\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alignas)
+"1"
+#else
+"0"
+#endif
+"cxx_alignas\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alignas)
+"1"
+#else
+"0"
+#endif
+"cxx_alignof\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_attributes)
+"1"
+#else
+"0"
+#endif
+"cxx_attributes\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_attribute_deprecated\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_auto_type)
+"1"
+#else
+"0"
+#endif
+"cxx_auto_type\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_binary_literals)
+"1"
+#else
+"0"
+#endif
+"cxx_binary_literals\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_constexpr)
+"1"
+#else
+"0"
+#endif
+"cxx_constexpr\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_contextual_conversions)
+"1"
+#else
+"0"
+#endif
+"cxx_contextual_conversions\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_decltype)
+"1"
+#else
+"0"
+#endif
+"cxx_decltype\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_decltype_auto\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_decltype_incomplete_return_types)
+"1"
+#else
+"0"
+#endif
+"cxx_decltype_incomplete_return_types\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_default_function_template_args)
+"1"
+#else
+"0"
+#endif
+"cxx_default_function_template_args\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_defaulted_functions)
+"1"
+#else
+"0"
+#endif
+"cxx_defaulted_functions\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_defaulted_functions)
+"1"
+#else
+"0"
+#endif
+"cxx_defaulted_move_initializers\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_delegating_constructors)
+"1"
+#else
+"0"
+#endif
+"cxx_delegating_constructors\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_deleted_functions)
+"1"
+#else
+"0"
+#endif
+"cxx_deleted_functions\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_digit_separators\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_enum_forward_declarations\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_explicit_conversions)
+"1"
+#else
+"0"
+#endif
+"cxx_explicit_conversions\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_extended_friend_declarations\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_extern_templates\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_override_control)
+"1"
+#else
+"0"
+#endif
+"cxx_final\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_func_identifier\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_generalized_initializers)
+"1"
+#else
+"0"
+#endif
+"cxx_generalized_initializers\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_generic_lambdas\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_inheriting_constructors)
+"1"
+#else
+"0"
+#endif
+"cxx_inheriting_constructors\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_inline_namespaces\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_lambdas)
+"1"
+#else
+"0"
+#endif
+"cxx_lambdas\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_init_captures)
+"1"
+#else
+"0"
+#endif
+"cxx_lambda_init_captures\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_local_type_template_args)
+"1"
+#else
+"0"
+#endif
+"cxx_local_type_template_args\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_long_long_type\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_noexcept)
+"1"
+#else
+"0"
+#endif
+"cxx_noexcept\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_nonstatic_member_init)
+"1"
+#else
+"0"
+#endif
+"cxx_nonstatic_member_init\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_nullptr)
+"1"
+#else
+"0"
+#endif
+"cxx_nullptr\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_override_control)
+"1"
+#else
+"0"
+#endif
+"cxx_override\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_range_for)
+"1"
+#else
+"0"
+#endif
+"cxx_range_for\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_raw_string_literals)
+"1"
+#else
+"0"
+#endif
+"cxx_raw_string_literals\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_reference_qualified_functions)
+"1"
+#else
+"0"
+#endif
+"cxx_reference_qualified_functions\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_relaxed_constexpr)
+"1"
+#else
+"0"
+#endif
+"cxx_relaxed_constexpr\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_return_type_deduction)
+"1"
+#else
+"0"
+#endif
+"cxx_return_type_deduction\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_right_angle_brackets\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_rvalue_references)
+"1"
+#else
+"0"
+#endif
+"cxx_rvalue_references\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_sizeof_member\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_static_assert)
+"1"
+#else
+"0"
+#endif
+"cxx_static_assert\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_strong_enums)
+"1"
+#else
+"0"
+#endif
+"cxx_strong_enums\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 199711L
+"1"
+#else
+"0"
+#endif
+"cxx_template_template_parameters\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_thread_local)
+"1"
+#else
+"0"
+#endif
+"cxx_thread_local\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_trailing_return)
+"1"
+#else
+"0"
+#endif
+"cxx_trailing_return_types\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_unicode_literals)
+"1"
+#else
+"0"
+#endif
+"cxx_unicode_literals\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_generalized_initializers)
+"1"
+#else
+"0"
+#endif
+"cxx_uniform_initialization\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_unrestricted_unions)
+"1"
+#else
+"0"
+#endif
+"cxx_unrestricted_unions\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_user_literals)
+"1"
+#else
+"0"
+#endif
+"cxx_user_literals\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_variable_templates)
+"1"
+#else
+"0"
+#endif
+"cxx_variable_templates\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_variadic_macros\n"
+"CXX_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_variadic_templates)
+"1"
+#else
+"0"
+#endif
+"cxx_variadic_templates\n"
+
+};
+
+int main(int argc, char** argv) { (void)argv; return features[argc]; }
diff --git a/GeoSpecialShapes/build/CMakeFiles/progress.marks b/GeoSpecialShapes/build/CMakeFiles/progress.marks
new file mode 100644
index 0000000..f599e28
--- /dev/null
+++ b/GeoSpecialShapes/build/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+10
diff --git a/GeoSpecialShapes/build/Makefile b/GeoSpecialShapes/build/Makefile
new file mode 100644
index 0000000..92eb08f
--- /dev/null
+++ b/GeoSpecialShapes/build/Makefile
@@ -0,0 +1,468 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.10
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /opt/local/bin/cmake
+
+# The command to remove a file.
+RM = /opt/local/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target install/local
+install/local: preinstall
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+	/opt/local/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local
+
+# Special rule for the target install/local
+install/local/fast: preinstall/fast
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+	/opt/local/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local/fast
+
+# Special rule for the target install/strip
+install/strip: preinstall
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
+	/opt/local/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
+.PHONY : install/strip
+
+# Special rule for the target install/strip
+install/strip/fast: preinstall/fast
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
+	/opt/local/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
+.PHONY : install/strip/fast
+
+# Special rule for the target install
+install: preinstall
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+	/opt/local/bin/cmake -P cmake_install.cmake
+.PHONY : install
+
+# Special rule for the target install
+install/fast: preinstall/fast
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+	/opt/local/bin/cmake -P cmake_install.cmake
+.PHONY : install/fast
+
+# Special rule for the target list_install_components
+list_install_components:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
+.PHONY : list_install_components
+
+# Special rule for the target list_install_components
+list_install_components/fast: list_install_components
+
+.PHONY : list_install_components/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+	/opt/local/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target edit_cache
+edit_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
+	/opt/local/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+
+.PHONY : edit_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles/progress.marks
+	$(MAKE) -f CMakeFiles/Makefile2 all
+	$(CMAKE_COMMAND) -E cmake_progress_start /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+	$(MAKE) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+	$(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+	$(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named GeoSpecialShapes
+
+# Build rule for target.
+GeoSpecialShapes: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 GeoSpecialShapes
+.PHONY : GeoSpecialShapes
+
+# fast build rule for target.
+GeoSpecialShapes/fast:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/build
+.PHONY : GeoSpecialShapes/fast
+
+src/LArCustomShape.o: src/LArCustomShape.cxx.o
+
+.PHONY : src/LArCustomShape.o
+
+# target to build an object file
+src/LArCustomShape.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.o
+.PHONY : src/LArCustomShape.cxx.o
+
+src/LArCustomShape.i: src/LArCustomShape.cxx.i
+
+.PHONY : src/LArCustomShape.i
+
+# target to preprocess a source file
+src/LArCustomShape.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.i
+.PHONY : src/LArCustomShape.cxx.i
+
+src/LArCustomShape.s: src/LArCustomShape.cxx.s
+
+.PHONY : src/LArCustomShape.s
+
+# target to generate assembly for a file
+src/LArCustomShape.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArCustomShape.cxx.s
+.PHONY : src/LArCustomShape.cxx.s
+
+src/LArWheelCalculator.o: src/LArWheelCalculator.cxx.o
+
+.PHONY : src/LArWheelCalculator.o
+
+# target to build an object file
+src/LArWheelCalculator.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.o
+.PHONY : src/LArWheelCalculator.cxx.o
+
+src/LArWheelCalculator.i: src/LArWheelCalculator.cxx.i
+
+.PHONY : src/LArWheelCalculator.i
+
+# target to preprocess a source file
+src/LArWheelCalculator.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.i
+.PHONY : src/LArWheelCalculator.cxx.i
+
+src/LArWheelCalculator.s: src/LArWheelCalculator.cxx.s
+
+.PHONY : src/LArWheelCalculator.s
+
+# target to generate assembly for a file
+src/LArWheelCalculator.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator.cxx.s
+.PHONY : src/LArWheelCalculator.cxx.s
+
+src/LArWheelCalculatorGeometry.o: src/LArWheelCalculatorGeometry.cxx.o
+
+.PHONY : src/LArWheelCalculatorGeometry.o
+
+# target to build an object file
+src/LArWheelCalculatorGeometry.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.o
+.PHONY : src/LArWheelCalculatorGeometry.cxx.o
+
+src/LArWheelCalculatorGeometry.i: src/LArWheelCalculatorGeometry.cxx.i
+
+.PHONY : src/LArWheelCalculatorGeometry.i
+
+# target to preprocess a source file
+src/LArWheelCalculatorGeometry.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.i
+.PHONY : src/LArWheelCalculatorGeometry.cxx.i
+
+src/LArWheelCalculatorGeometry.s: src/LArWheelCalculatorGeometry.cxx.s
+
+.PHONY : src/LArWheelCalculatorGeometry.s
+
+# target to generate assembly for a file
+src/LArWheelCalculatorGeometry.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculatorGeometry.cxx.s
+.PHONY : src/LArWheelCalculatorGeometry.cxx.s
+
+src/LArWheelCalculator_Impl/DistanceCalculatorFactory.o: src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorFactory.o
+
+# target to build an object file
+src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.o
+
+src/LArWheelCalculator_Impl/DistanceCalculatorFactory.i: src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.i
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorFactory.i
+
+# target to preprocess a source file
+src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.i
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.i
+
+src/LArWheelCalculator_Impl/DistanceCalculatorFactory.s: src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.s
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorFactory.s
+
+# target to generate assembly for a file
+src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.s
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx.s
+
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.o: src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.o
+
+# target to build an object file
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.o
+
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.i: src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.i
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.i
+
+# target to preprocess a source file
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.i
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.i
+
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.s: src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.s
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.s
+
+# target to generate assembly for a file
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.s
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx.s
+
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.o: src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.o
+
+# target to build an object file
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.o
+
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.i: src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.i
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.i
+
+# target to preprocess a source file
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.i
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.i
+
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.s: src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.s
+
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.s
+
+# target to generate assembly for a file
+src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.s
+.PHONY : src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx.s
+
+src/LArWheelCalculator_Impl/FanCalculatorFactory.o: src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o
+
+.PHONY : src/LArWheelCalculator_Impl/FanCalculatorFactory.o
+
+# target to build an object file
+src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o
+.PHONY : src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.o
+
+src/LArWheelCalculator_Impl/FanCalculatorFactory.i: src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.i
+
+.PHONY : src/LArWheelCalculator_Impl/FanCalculatorFactory.i
+
+# target to preprocess a source file
+src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.i
+.PHONY : src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.i
+
+src/LArWheelCalculator_Impl/FanCalculatorFactory.s: src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.s
+
+.PHONY : src/LArWheelCalculator_Impl/FanCalculatorFactory.s
+
+# target to generate assembly for a file
+src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.s
+.PHONY : src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx.s
+
+src/LArWheelCalculator_Impl/ModuleFanCalculator.o: src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o
+
+.PHONY : src/LArWheelCalculator_Impl/ModuleFanCalculator.o
+
+# target to build an object file
+src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o
+.PHONY : src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.o
+
+src/LArWheelCalculator_Impl/ModuleFanCalculator.i: src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.i
+
+.PHONY : src/LArWheelCalculator_Impl/ModuleFanCalculator.i
+
+# target to preprocess a source file
+src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.i
+.PHONY : src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.i
+
+src/LArWheelCalculator_Impl/ModuleFanCalculator.s: src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.s
+
+.PHONY : src/LArWheelCalculator_Impl/ModuleFanCalculator.s
+
+# target to generate assembly for a file
+src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.s
+.PHONY : src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx.s
+
+src/LArWheelCalculator_Impl/sincos_poly.o: src/LArWheelCalculator_Impl/sincos_poly.cxx.o
+
+.PHONY : src/LArWheelCalculator_Impl/sincos_poly.o
+
+# target to build an object file
+src/LArWheelCalculator_Impl/sincos_poly.cxx.o:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.o
+.PHONY : src/LArWheelCalculator_Impl/sincos_poly.cxx.o
+
+src/LArWheelCalculator_Impl/sincos_poly.i: src/LArWheelCalculator_Impl/sincos_poly.cxx.i
+
+.PHONY : src/LArWheelCalculator_Impl/sincos_poly.i
+
+# target to preprocess a source file
+src/LArWheelCalculator_Impl/sincos_poly.cxx.i:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.i
+.PHONY : src/LArWheelCalculator_Impl/sincos_poly.cxx.i
+
+src/LArWheelCalculator_Impl/sincos_poly.s: src/LArWheelCalculator_Impl/sincos_poly.cxx.s
+
+.PHONY : src/LArWheelCalculator_Impl/sincos_poly.s
+
+# target to generate assembly for a file
+src/LArWheelCalculator_Impl/sincos_poly.cxx.s:
+	$(MAKE) -f CMakeFiles/GeoSpecialShapes.dir/build.make CMakeFiles/GeoSpecialShapes.dir/src/LArWheelCalculator_Impl/sincos_poly.cxx.s
+.PHONY : src/LArWheelCalculator_Impl/sincos_poly.cxx.s
+
+# Help Target
+help:
+	@echo "The following are some of the valid targets for this Makefile:"
+	@echo "... all (the default if no target is provided)"
+	@echo "... clean"
+	@echo "... depend"
+	@echo "... install/local"
+	@echo "... install/strip"
+	@echo "... install"
+	@echo "... list_install_components"
+	@echo "... rebuild_cache"
+	@echo "... edit_cache"
+	@echo "... GeoSpecialShapes"
+	@echo "... src/LArCustomShape.o"
+	@echo "... src/LArCustomShape.i"
+	@echo "... src/LArCustomShape.s"
+	@echo "... src/LArWheelCalculator.o"
+	@echo "... src/LArWheelCalculator.i"
+	@echo "... src/LArWheelCalculator.s"
+	@echo "... src/LArWheelCalculatorGeometry.o"
+	@echo "... src/LArWheelCalculatorGeometry.i"
+	@echo "... src/LArWheelCalculatorGeometry.s"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorFactory.o"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorFactory.i"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorFactory.s"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.o"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.i"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.s"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.o"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.i"
+	@echo "... src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.s"
+	@echo "... src/LArWheelCalculator_Impl/FanCalculatorFactory.o"
+	@echo "... src/LArWheelCalculator_Impl/FanCalculatorFactory.i"
+	@echo "... src/LArWheelCalculator_Impl/FanCalculatorFactory.s"
+	@echo "... src/LArWheelCalculator_Impl/ModuleFanCalculator.o"
+	@echo "... src/LArWheelCalculator_Impl/ModuleFanCalculator.i"
+	@echo "... src/LArWheelCalculator_Impl/ModuleFanCalculator.s"
+	@echo "... src/LArWheelCalculator_Impl/sincos_poly.o"
+	@echo "... src/LArWheelCalculator_Impl/sincos_poly.i"
+	@echo "... src/LArWheelCalculator_Impl/sincos_poly.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/GeoSpecialShapes/build/cmake_install.cmake b/GeoSpecialShapes/build/cmake_install.cmake
new file mode 100644
index 0000000..45c25cc
--- /dev/null
+++ b/GeoSpecialShapes/build/cmake_install.cmake
@@ -0,0 +1,75 @@
+# Install script for directory: /Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+  set(CMAKE_INSTALL_PREFIX "/Users/mariba/Atlas/standaloneGeo2G4/install")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+  if(BUILD_TYPE)
+    string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+           CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+  else()
+    set(CMAKE_INSTALL_CONFIG_NAME "")
+  endif()
+  message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+  if(COMPONENT)
+    message(STATUS "Install component: \"${COMPONENT}\"")
+    set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+  else()
+    set(CMAKE_INSTALL_COMPONENT)
+  endif()
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+  set(CMAKE_CROSSCOMPILING "FALSE")
+endif()
+
+if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT)
+  file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE SHARED_LIBRARY FILES "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/libGeoSpecialShapes.dylib")
+  if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libGeoSpecialShapes.dylib" AND
+     NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libGeoSpecialShapes.dylib")
+    execute_process(COMMAND /usr/bin/install_name_tool
+      -delete_rpath "/Users/mariba/Atlas/standaloneGeo2G4/install/lib"
+      "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libGeoSpecialShapes.dylib")
+    if(CMAKE_INSTALL_DO_STRIP)
+      execute_process(COMMAND "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libGeoSpecialShapes.dylib")
+    endif()
+  endif()
+endif()
+
+if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT)
+  file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/GeoSpecialShapes" TYPE FILE FILES
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/GeoSpecialShapes/LArGeoCheckerDict.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculatorEnums.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/GeoSpecialShapes/sincos.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h"
+    "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h"
+    )
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+  set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+  set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+       "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/mariba/Atlas/standaloneGeo2G4/GeoModelG4/GeoSpecialShapes/build/${CMAKE_INSTALL_MANIFEST}"
+     "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/GeoSpecialShapes/doc/packagedoc.h b/GeoSpecialShapes/doc/packagedoc.h
new file mode 100644
index 0000000..57a3c33
--- /dev/null
+++ b/GeoSpecialShapes/doc/packagedoc.h
@@ -0,0 +1,17 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+/**
+
+
+@page GeoSpecialShapes_page 
+
+This package contains definitions of LAr EMEC custom shape
+
+--------------------------------
+  REQUIREMENTS 
+--------------------------------
+
+
+*/
diff --git a/GeoSpecialShapes/src/LArCustomShape.cxx b/GeoSpecialShapes/src/LArCustomShape.cxx
new file mode 100644
index 0000000..bf29bf8
--- /dev/null
+++ b/GeoSpecialShapes/src/LArCustomShape.cxx
@@ -0,0 +1,191 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "GeoSpecialShapes/LArCustomShape.h"
+#include "GeoModelKernel/GeoShapeAction.h"
+
+#include <string>
+#include <iostream>
+#include <stdexcept>
+
+const std::string LArCustomShape::s_classType = "CustomShape";
+const ShapeType LArCustomShape::s_classTypeID = 500;
+
+const LArCustomShape::ShapeCalc_typemap LArCustomShape::s_calculatorTypes = {
+  { "LAr::EMEC::InnerWheel::Absorber",           {LArG4::InnerAbsorberWheel, 1} },
+  { "LAr::EMEC::InnerWheel::Electrode",          {LArG4::InnerElectrodWheel, 1} },
+  { "LAr::EMEC::InnerWheel::Glue",               {LArG4::InnerGlueWheel, 1} },
+  { "LAr::EMEC::InnerWheel::Lead",               {LArG4::InnerLeadWheel, 1} },
+
+  { "LAr::EMEC::OuterWheel::Absorber",           {LArG4::OuterAbsorberWheel, 1} },
+  { "LAr::EMEC::OuterWheel::Electrode",          {LArG4::OuterElectrodWheel, 1} },
+  { "LAr::EMEC::OuterWheel::Glue",               {LArG4::OuterGlueWheel, 1} },
+  { "LAr::EMEC::OuterWheel::Lead",               {LArG4::OuterLeadWheel, 1} },
+
+  { "LAr::EMEC::Pos::InnerWheel::Absorber",      {LArG4::InnerAbsorberWheel, 1} },
+  { "LAr::EMEC::Pos::InnerWheel::Electrode",     {LArG4::InnerElectrodWheel, 1} },
+  { "LAr::EMEC::Pos::InnerWheel::Glue",          {LArG4::InnerGlueWheel, 1} },
+  { "LAr::EMEC::Pos::InnerWheel::Lead",          {LArG4::InnerLeadWheel, 1} },
+  { "LAr::EMEC::Pos::OuterWheel::Absorber",      {LArG4::OuterAbsorberWheel, 1} },
+  { "LAr::EMEC::Pos::OuterWheel::Electrode",     {LArG4::OuterElectrodWheel, 1} },
+  { "LAr::EMEC::Pos::OuterWheel::Glue",          {LArG4::OuterGlueWheel, 1} },
+  { "LAr::EMEC::Pos::OuterWheel::Lead",          {LArG4::OuterLeadWheel, 1} },
+
+  { "LAr::EMEC::Neg::InnerWheel::Absorber",      {LArG4::InnerAbsorberWheel, -1} },
+  { "LAr::EMEC::Neg::InnerWheel::Electrode",     {LArG4::InnerElectrodWheel, -1} },
+  { "LAr::EMEC::Neg::InnerWheel::Glue",          {LArG4::InnerGlueWheel, -1} },
+  { "LAr::EMEC::Neg::InnerWheel::Lead",          {LArG4::InnerLeadWheel, -1} },
+  { "LAr::EMEC::Neg::OuterWheel::Absorber",      {LArG4::OuterAbsorberWheel, -1} },
+  { "LAr::EMEC::Neg::OuterWheel::Electrode",     {LArG4::OuterElectrodWheel, -1} },
+  { "LAr::EMEC::Neg::OuterWheel::Glue",          {LArG4::OuterGlueWheel, -1} },
+  { "LAr::EMEC::Neg::OuterWheel::Lead",          {LArG4::OuterLeadWheel, -1} },
+
+  { "LAr::EMEC::InnerModule::Absorber",          {LArG4::InnerAbsorberModule, 1} },
+  { "LAr::EMEC::InnerModule::Electrode",         {LArG4::InnerElectrodModule, 1} },
+  { "LAr::EMEC::OuterModule::Absorber",          {LArG4::OuterAbsorberModule, 1} },
+  { "LAr::EMEC::OuterModule::Electrode",         {LArG4::OuterElectrodModule, 1} },
+
+  { "LAr::EMEC::Pos::InnerCone::Absorber",       {LArG4::InnerAbsorberWheel, 1} },
+  { "LAr::EMEC::Pos::InnerCone::Electrode",      {LArG4::InnerElectrodWheel, 1} },
+  { "LAr::EMEC::Pos::InnerCone::Glue",           {LArG4::InnerGlueWheel, 1} },
+  { "LAr::EMEC::Pos::InnerCone::Lead",           {LArG4::InnerLeadWheel, 1} },
+  { "LAr::EMEC::Neg::InnerCone::Absorber",       {LArG4::InnerAbsorberWheel, -1} },
+  { "LAr::EMEC::Neg::InnerCone::Electrode",      {LArG4::InnerElectrodWheel, -1} },
+  { "LAr::EMEC::Neg::InnerCone::Glue",           {LArG4::InnerGlueWheel, -1} },
+  { "LAr::EMEC::Neg::InnerCone::Lead",           {LArG4::InnerLeadWheel, -1} },
+
+  { "LAr::EMEC::Pos::OuterFrontCone::Absorber",  {LArG4::OuterAbsorberWheel, 1} },
+  { "LAr::EMEC::Pos::OuterFrontCone::Electrode", {LArG4::OuterElectrodWheel, 1} },
+  { "LAr::EMEC::Pos::OuterFrontCone::Glue",      {LArG4::OuterGlueWheel, 1} },
+  { "LAr::EMEC::Pos::OuterFrontCone::Lead",      {LArG4::OuterLeadWheel, 1} },
+  { "LAr::EMEC::Neg::OuterFrontCone::Absorber",  {LArG4::OuterAbsorberWheel, -1} },
+  { "LAr::EMEC::Neg::OuterFrontCone::Electrode", {LArG4::OuterElectrodWheel, -1} },
+  { "LAr::EMEC::Neg::OuterFrontCone::Glue",      {LArG4::OuterGlueWheel, -1} },
+  { "LAr::EMEC::Neg::OuterFrontCone::Lead",      {LArG4::OuterLeadWheel, -1} },
+
+  { "LAr::EMEC::Pos::OuterBackCone::Absorber",   {LArG4::OuterAbsorberWheel, 1} },
+  { "LAr::EMEC::Pos::OuterBackCone::Electrode",  {LArG4::OuterElectrodWheel, 1} },
+  { "LAr::EMEC::Pos::OuterBackCone::Glue",       {LArG4::OuterGlueWheel, 1} },
+  { "LAr::EMEC::Pos::OuterBackCone::Lead",       {LArG4::OuterLeadWheel, 1} },
+  { "LAr::EMEC::Neg::OuterBackCone::Absorber",   {LArG4::OuterAbsorberWheel, -1} },
+  { "LAr::EMEC::Neg::OuterBackCone::Electrode",  {LArG4::OuterElectrodWheel, -1} },
+  { "LAr::EMEC::Neg::OuterBackCone::Glue",       {LArG4::OuterGlueWheel, -1} },
+  { "LAr::EMEC::Neg::OuterBackCone::Lead",       {LArG4::OuterLeadWheel, -1} },
+
+  { "LAr::EMEC::Pos::InnerSlice00::Absorber",    {LArG4::InnerAbsorberWheel, 1} },
+  { "LAr::EMEC::Pos::InnerSlice00::Electrode",   {LArG4::InnerElectrodWheel, 1} },
+  { "LAr::EMEC::Pos::InnerSlice00::Glue",        {LArG4::InnerGlueWheel, 1} },
+  { "LAr::EMEC::Pos::InnerSlice00::Lead",        {LArG4::InnerLeadWheel, 1} },
+  { "LAr::EMEC::Neg::InnerSlice00::Absorber",    {LArG4::InnerAbsorberWheel, -1} },
+  { "LAr::EMEC::Neg::InnerSlice00::Electrode",   {LArG4::InnerElectrodWheel, -1} },
+  { "LAr::EMEC::Neg::InnerSlice00::Glue",        {LArG4::InnerGlueWheel, -1} },
+  { "LAr::EMEC::Neg::InnerSlice00::Lead",        {LArG4::InnerLeadWheel, -1} },
+
+  { "LAr::EMEC::Pos::OuterSlice00::Absorber",    {LArG4::OuterAbsorberWheel, 1} },
+  { "LAr::EMEC::Pos::OuterSlice00::Electrode",   {LArG4::OuterElectrodWheel, 1} },
+  { "LAr::EMEC::Pos::OuterSlice00::Glue",        {LArG4::OuterGlueWheel, 1} },
+  { "LAr::EMEC::Pos::OuterSlice00::Lead",        {LArG4::OuterLeadWheel, 1} },
+  { "LAr::EMEC::Neg::OuterSlice00::Absorber",    {LArG4::OuterAbsorberWheel, -1} },
+  { "LAr::EMEC::Neg::OuterSlice00::Electrode",   {LArG4::OuterElectrodWheel, -1} },
+  { "LAr::EMEC::Neg::OuterSlice00::Glue",        {LArG4::OuterGlueWheel, -1} },
+  { "LAr::EMEC::Neg::OuterSlice00::Lead",        {LArG4::OuterLeadWheel, -1} },
+};
+
+LArCustomShape::LArCustomShape(const std::string& a_shapeName)
+  : m_shapeName(a_shapeName),
+    m_calculator(0)
+    //#ifndef XAOD_STANDALONE
+    //    ,m_detStore( "StoreGateSvc/DetectorStore", a_shapeName )
+    //#endif // XAOD_STANDALONE
+{
+//#ifdef XAOD_STANDALONE
+    if ( createCalculator( s_calculatorTypes.at(a_shapeName) ) == 1 ) { // map.at throws std::out_of_range exception on unknown shape name
+            std::string error = std::string("Can't create LArWheelCalculator for name ") + a_shapeName + " in LArCustomShape constructor";
+            throw std::runtime_error(error);
+        }
+//#else // XAOD_STANDALONE
+//    std::string name = a_shapeName;
+//    size_t index = name.find("Slice");
+//    if(index != std::string::npos) name.replace(index + 5, 2, "00");
+//    if(s_calculatorTypes.find(name) == s_calculatorTypes.end()){
+//        std::string error =
+//            std::string("LArCustomShape: unknown shape name ") +
+//                a_shapeName;
+//        throw std::runtime_error(error);
+//    } else {
+//        if(createCalculator(s_calculatorTypes.at(name)).isFailure()){ // map.at throws std::out_of_range exception on unknown shape name
+//            std::string error =
+//                std::string("Can't create LArWheelCalculator for name ") +
+//                a_shapeName + " in LArCustomShape constructor";
+//            throw std::runtime_error(error);
+//        }
+//    }
+//#endif // Athena
+}
+
+LArCustomShape::~LArCustomShape()
+{
+  //delete m_calculator;
+}
+
+//#if defined XAOD_STANDALONE
+int LArCustomShape::createCalculator(const CalcDef_t & cdef) { // LArG4::LArWheelCalculator_t wheelType, int zside
+	LArG4::LArWheelCalculator_t wheelType = cdef.first;
+	int zside = cdef.second;
+
+	m_calculator = new LArWheelCalculator(wheelType, zside);
+	std::string calcDSname = std::string("LAr::EMEC::")+ (zside>0?"Pos::":"Neg::")+LArWheelCalculator::LArWheelCalculatorTypeString(wheelType);
+
+	// ownership is passed to detStore
+    if (m_calculator==NULL)
+        return 1;
+    else
+        return 0;
+}
+//#else // XAOD_STANDALONE
+//StatusCode LArCustomShape::createCalculator(const CalcDef_t & cdef) { // LArG4::LArWheelCalculator_t wheelType, int zside
+//    LArG4::LArWheelCalculator_t wheelType = cdef.first;
+//    int zside = cdef.second;
+//
+//    std::string calcDSname = std::string("LAr::EMEC::")+ (zside>0?"Pos::":"Neg::")+LArWheelCalculator::LArWheelCalculatorTypeString(wheelType);
+//    if(detStore()->contains<LArWheelCalculator>(calcDSname)){
+//        return detStore()->retrieve(m_calculator, calcDSname);
+//    }
+//
+//    m_calculator = new LArWheelCalculator(wheelType, zside);
+//
+//    // ownership is passed to detStore
+//    return detStore()->record(m_calculator,  calcDSname);
+//}
+//#endif // Athena
+
+const LArWheelCalculator *LArCustomShape::calculator() const
+{
+  return m_calculator;
+}
+
+double LArCustomShape::volume() const
+{
+  return 0;
+}
+
+const std::string& LArCustomShape::type() const
+{
+  return s_classType;
+}
+
+ShapeType LArCustomShape::typeID() const
+{
+  return s_classTypeID;
+}
+
+const std::string& LArCustomShape::name() const
+{
+  return m_shapeName;
+}
+
+void LArCustomShape::exec(GeoShapeAction* action) const
+{
+  action->handleLArCustom(this);
+}
diff --git a/GeoSpecialShapes/src/LArWheelCalculator.cxx b/GeoSpecialShapes/src/LArWheelCalculator.cxx
new file mode 100644
index 0000000..baaae58
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator.cxx
@@ -0,0 +1,589 @@
+/*
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+*/
+
+// LArWheelCalculator 19-Apr-2001 Bill Seligman
+// 26-May-2009 AMS: remove all previous comments from here as obsoleted
+
+#include <cmath>
+#include <climits>
+#include <cassert>
+
+//#ifndef BUILDVP1LIGHT
+//    #include "GaudiKernel/ISvcLocator.h"
+//    #include "GaudiKernel/Bootstrap.h"
+//    #include "GaudiKernel/MsgStream.h"
+//    #include "GaudiKernel/PhysicalConstants.h"
+//    #include "GeoModelInterfaces/IGeoModelSvc.h"
+//    #include "RDBAccessSvc/IRDBRecord.h"
+//    #include "RDBAccessSvc/IRDBRecordset.h"
+//    #include "RDBAccessSvc/IRDBAccessSvc.h"
+//    #include "./LArWheelCalculator_Impl/RDBParamReader.h"
+//    #include "./LArWheelCalculator_Impl/RDBParamRecords.h"
+//#endif
+
+//#include "GeoModelUtilities/DecodeVersionKey.h"
+
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+
+#include "./LArWheelCalculator_Impl/DistanceCalculatorFactory.h"
+#include "./LArWheelCalculator_Impl/FanCalculatorFactory.h"
+
+//#include "AthenaKernel/Units.h"
+
+
+//using namespace Athena::Units;
+//using Gaudi::Units::twopi;
+
+
+// The radial boundaries of the inner and outer wheels are defined
+// by values of eta, the distance from z=0 to the front face of the
+// wheel, and the thickness of the wheel.
+
+// these numbers are taken from DB in constructor,
+// hardcoded values here are just for reference
+/*
+  double LArWheelCalculator::zWheelRefPoint       = 3689.5*mm;  //=endg_z0
+  double LArWheelCalculator::dMechFocaltoWRP      = 3691. *mm;  //=endg_z1
+  double LArWheelCalculator::dElecFocaltoWRP      = 3689. *mm;  //=endg_dcf
+  double LArWheelCalculator::rOuterCutoff                 = 2034. *mm;  //=endg_rlimit
+  double LArWheelCalculator::HalfGapBetweenWheels = 0.15*cm;  // In DB EMECGEOMETRY.DCRACK
+  float LArWheelCalculator::m_zShift = 4. *cm; // endg_zshift
+  double LArWheelCalculator::eta_hi  = 3.2; // from EmecWheelParameters
+  double LArWheelCalculator::eta_mid = 2.5;
+  double LArWheelCalculator::eta_low = 1.375;
+*/
+
+// these values are taken from "EMECParams" DB
+/*
+  bool LArWheelCalculator::SaggingOn = false;
+  bool LArWheelCalculator::phiRotation = false;
+*/
+
+// these were internal constants, now everything in DB
+//const double LArWheelCalculator::s_dWRPtoFrontFace = 11.*mm;
+//const double LArWheelCalculator::s_WheelThickness = 514.*mm;
+// 2x2mm are to be substracted from value of wheel thickness
+// - for straight 2-mm domains at start and finish of absorber
+//const double LArWheelCalculator::s_StraightStartSection = 2.*mm;
+//const double LArWheelCalculator::s_HalfWheelThickness = s_WheelThickness * 0.5;
+//const double LArWheelCalculator::s_WheelThickness_wo_2sss = s_WheelThickness - 2.*s_StraightStartSection;
+
+static const double default_slant_parametrization[2][5] = {
+  { -50.069, 0.50073, -0.10127E-02, 0.10390E-05, -0.42176E-09 }, // inner
+  { -34.254, 0.15528, -0.11670E-03, 0.45018E-07, -0.68473E-11 }  //outer
+};
+
+const char *LArWheelCalculator::LArWheelCalculatorTypeString(LArG4::LArWheelCalculator_t type)
+{
+  switch(type){
+     case LArG4::InnerAbsorberWheel:           return("InnerAbsorberWheel");
+     case LArG4::OuterAbsorberWheel:           return("OuterAbsorberWheel");
+     case LArG4::InnerElectrodWheel:           return("InnerElectrodWheel");
+     case LArG4::OuterElectrodWheel:           return("OuterElectrodWheel");
+     case LArG4::InnerAbsorberModule:          return("InnerAbsorberModule");
+     case LArG4::OuterAbsorberModule:          return("OuterAbsorberModule");
+     case LArG4::InnerElectrodModule:          return("InnerElectrodModule");
+     case LArG4::OuterElectrodModule:          return("OuterElectrodModule");
+     case LArG4::BackOuterBarretteWheel:       return("BackOuterBarretteWheel");
+     case LArG4::BackInnerBarretteWheel:       return("BackInnerBarretteWheel");
+     case LArG4::BackOuterBarretteModule:      return("BackOuterBarretteModule");
+     case LArG4::BackInnerBarretteModule:      return("BackInnerBarretteModule");
+     case LArG4::BackOuterBarretteWheelCalib:  return("BackOuterBarretteWheelCalib");
+     case LArG4::BackInnerBarretteWheelCalib:  return("BackInnerBarretteWheelCalib");
+     case LArG4::BackOuterBarretteModuleCalib: return("BackOuterBarretteModuleCalib");
+     case LArG4::BackInnerBarretteModuleCalib: return("BackInnerBarretteModuleCalib");
+     case LArG4::InnerGlueWheel:               return("InnerGlueWheel");
+     case LArG4::InnerLeadWheel:               return("InnerLeadWheel");
+     case LArG4::OuterGlueWheel:               return("OuterGlueWheel");
+     case LArG4::OuterLeadWheel:               return("OuterLeadWheel");
+  }
+  return("unknown");
+}
+
+LArWheelCalculator::~LArWheelCalculator() {
+  delete m_distanceCalcImpl;
+  m_distanceCalcImpl = 0;
+  delete m_fanCalcImpl;
+  m_fanCalcImpl = 0;
+}
+
+LArWheelCalculator::LArWheelCalculator(LArG4::LArWheelCalculator_t a_wheelType, int zside) :
+  m_type(a_wheelType),
+  m_AtlasZside(zside),
+  m_distanceCalcImpl(0),
+  m_fanCalcImpl(0)
+{
+  // Get pointer to the message service
+  //ISvcLocator* svcLocator = Gaudi::svcLocator();
+  //IMessageSvc* msgSvc;
+  //StatusCode status = svcLocator->service("MessageSvc", msgSvc);
+  //if(status.isFailure()){
+  //  throw std::runtime_error("LArWheelCalculator constructor: cannot initialze message service");
+  //}
+  //MsgStream msg(msgSvc, "LArWheelCalculator");
+  //msg << MSG::VERBOSE << "LArWheelCalculator constructor at " << this
+  //    << " (type " << LArWheelCalculatorTypeString(m_type)
+  //    << "):" << endmsg;
+
+//#ifdef LARWC_DTNF_NEW
+//  msg << MSG::VERBOSE << "compiled with new DTNF" << endmsg;
+//#endif
+
+  // Access source of detector parameters.
+ // msg << MSG::VERBOSE
+ //     << "initializing data members from DB..." << endmsg;
+
+    
+//#ifndef BUILDVP1LIGHT
+//  IGeoModelSvc *geoModel;
+//  IRDBAccessSvc* rdbAccess;
+//
+//  if(svcLocator->service("GeoModelSvc", geoModel) == StatusCode::FAILURE)
+//    throw std::runtime_error("Error cannot access GeoModelSvc");
+//  if(svcLocator->service ("RDBAccessSvc",rdbAccess) == StatusCode::FAILURE)
+//    throw std::runtime_error("Error cannot access RDBAccessSvc");
+//
+//  DecodeVersionKey larVersionKey(geoModel, "LAr");
+//
+//  RDBParamReader rdbr(rdbAccess);
+//  rdbr.
+//    data( "EmecGeometry", larVersionKey.tag(), larVersionKey.node() ).
+//    fallback_to( "EmecGeometry", "EmecGeometry-00" ).
+//    //     store to,                  name,   units
+//    param(m_zWheelRefPoint,            "Z0",  cm). //368.95
+//    param(m_dMechFocaltoWRP,           "Z1",  cm). //369.1
+//    param(m_dElecFocaltoWRP,          "DCF",  cm). //368.9
+//    param(m_HalfGapBetweenWheels,  "DCRACK",  cm). //.15
+//    param(m_rOuterCutoff,          "RLIMIT",  cm). //203.4
+//    param(m_zShift,                "ZSHIFT",  cm)  //4.5
+//    ;
+//
+//  RDBParamRecords EmecWheelParameters_recs = rdbr.
+//    data( "EmecWheelParameters", larVersionKey.tag(), larVersionKey.node() ).
+//    fallback_to( "EmecWheelParameters", "EmecWheelParameters-00" );
+//  //        store to,     name,   units,   index(default=0)
+//  EmecWheelParameters_recs.
+//    param(m_eta_hi,    "ETAINT",  1.0).  //3.2 ----> (1 is 2.5)
+//    param(m_eta_mid,   "ETAEXT",  1.0).  //2.5 ----> (1 is 1.375)
+//    param(m_eta_low,   "ETAEXT",  1.0, 1)//2.5 ----> (1 is 1.375)
+//    ;
+//
+//  rdbr.
+//    data( "EmecMagicNumbers", larVersionKey.tag(), larVersionKey.node() ).
+//    fallback_to( "EmecMagicNumbers","EMECMagicNumbers-00" ).
+//    //          store to,                         name,     units
+//    param(m_ActiveLength,                   "ACTIVELENGTH",  mm). //510
+//    param(m_StraightStartSection,   "STRAIGHTSTARTSECTION",  mm). //2
+//    param(m_dWRPtoFrontFace,                 "REFTOACTIVE",  mm)  //11
+//    ;
+//
+//  m_WheelThickness = m_ActiveLength + 2.*m_StraightStartSection;
+//  m_HalfWheelThickness = m_WheelThickness * 0.5;
+//
+    std::string pr_opt_value = "off";
+    std::string sagging_opt_value = "off";
+//
+//  RDBParamRecords EMECParams_recs = rdbr.
+//    data( "EMECParams", larVersionKey.tag(), larVersionKey.node() ).
+//    fallback_to( "EMECParams", "EMECParams-00" );
+//
+//  //          store to,                                             name
+//  EMECParams_recs.
+//    param(pr_opt_value,       "PHIROTATION"). //off
+//    param(sagging_opt_value,      "SAGGING")  //off
+//    ;
+//
+    m_phiRotation =  pr_opt_value == "g3"? true: false;
+//
+//  m_zWheelFrontFace = m_dMechFocaltoWRP + m_dWRPtoFrontFace;
+//  m_zWheelBackFace = m_zWheelFrontFace + m_WheelThickness;
+//
+//  msg << MSG::DEBUG << "... got these values:" << std::endl
+//      << "m_zWheelRefPoint       : " << m_zWheelRefPoint / cm << " [cm]" << std::endl
+//      << "m_dMechFocaltoWRP      : " << m_dMechFocaltoWRP / cm << " [cm]" << std::endl
+//      << "m_dElecFocaltoWRP      : " << m_dElecFocaltoWRP / cm << " [cm]" << std::endl
+//      << "m_HalfGapBetweenWheels : " << m_HalfGapBetweenWheels / cm << " [cm]" << std::endl
+//      << "m_rOuterCutoff         : " << m_rOuterCutoff / cm << " [cm]" << std::endl
+//      << "m_zWheelFrontFace      : " << m_zWheelFrontFace / cm << " [cm]" << std::endl
+//      << "m_zWheelBackFace       : " << m_zWheelBackFace / cm << " [cm]" << std::endl
+//      << "m_zShift               : " << m_zShift / cm << " [cm]" << std::endl
+//      << "Phi rotation           : " << (m_phiRotation? "true": "false") << std::endl
+//      << "eta wheels limits      : " << m_eta_low << ", " << m_eta_mid << ", " << m_eta_hi
+//      << endmsg;
+//  msg << MSG::VERBOSE << "hardcoded constants: " << std::endl
+//      << "m_WheelThickness       : " << m_WheelThickness / cm << " [cm]" << std::endl
+//      << "m_dWRPtoFrontFace      : " << m_dWRPtoFrontFace / cm << " [cm]"
+//      << endmsg;
+
+    //#endif
+//#ifdef BUILDVP1LIGHT //FIXME: check all this!!!
+    //TO DO: put real values
+   //m_zWheelRefPoint = 999;// / cm
+   //m_dMechFocaltoWRP = 999;// / cm << " [cm]" << std::endl
+   //m_dElecFocaltoWRP = 999;//      : " << m_dElecFocaltoWRP / cm << " [cm]" << std::endl
+   //m_HalfGapBetweenWheels = 999;// : " << m_HalfGapBetweenWheels / cm << " [cm]" << std::endl
+   //m_rOuterCutoff = 999;//         : " << m_rOuterCutoff / cm << " [cm]" << std::endl
+   //m_zWheelFrontFace = 999;//      : " << m_zWheelFrontFace / cm << " [cm]" << std::endl
+   //m_zWheelBackFace = 999;//       : " << m_zWheelBackFace / cm << " [cm]" << std::endl
+   //m_zShift = 999;//               : " << m_zShift / cm << " [cm]" << std::endl
+   m_phiRotation = true;//? "true": "false") << std::endl
+   //m_eta_low = 999;//
+   //m_eta_mid = 999;//
+   //m_eta_hi = 999;//
+
+   //m_WheelThickness = 999;//       : " << m_WheelThickness / cm << " [cm]" << std::endl
+   //m_dWRPtoFrontFace = 999;//      : " << m_dWRPtoFrontFace / cm << " [cm]"
+//#endif
+
+
+  // Constructor initializes the geometry.
+
+  m_isBarrette      = false;
+  m_isBarretteCalib = false;
+  m_isModule        = false;
+  m_isElectrode     = false;
+  m_isInner         = false;
+  m_FirstFan        = 0;
+  m_LastFan         = 0;
+
+  switch(m_type){
+    case LArG4::BackInnerBarretteWheelCalib:
+      m_isBarretteCalib = true;
+      /* FALLTHROUGH */
+    case LArG4::BackInnerBarretteWheel:
+      m_isBarrette = true;
+      m_type = LArG4::InnerAbsorberWheel;
+      /* FALLTHROUGH */
+    case LArG4::InnerAbsorberWheel:
+    case LArG4::InnerGlueWheel:
+    case LArG4::InnerLeadWheel:
+      inner_wheel_init();
+      m_ZeroFanPhi = m_FanStepOnPhi * 0.5;
+      if(m_phiRotation) m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+      break;
+    case LArG4::BackOuterBarretteWheelCalib:
+      m_isBarretteCalib = true;
+      /* FALLTHROUGH */
+    case LArG4::BackOuterBarretteWheel:
+      m_isBarrette = true;
+      m_type = LArG4::OuterAbsorberWheel;
+      /* FALLTHROUGH */
+    case LArG4::OuterAbsorberWheel:
+    case LArG4::OuterGlueWheel:
+    case LArG4::OuterLeadWheel:
+      outer_wheel_init();
+      m_ZeroFanPhi = m_FanStepOnPhi * 0.5;
+      if(m_phiRotation) m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+      break;
+    case LArG4::InnerElectrodWheel:
+      inner_wheel_init();
+      m_ZeroFanPhi = 0;
+      if(m_phiRotation) m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+      m_isElectrode = true;
+      break;
+    case LArG4::OuterElectrodWheel:
+      outer_wheel_init();
+      m_ZeroFanPhi = 0;
+      if(m_phiRotation) m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+      m_isElectrode = true;
+      break;
+    case LArG4::BackInnerBarretteModuleCalib:
+      m_isBarretteCalib = true;
+      /* FALLTHROUGH */
+    case LArG4::BackInnerBarretteModule:
+      m_isBarrette = true;
+      m_type = LArG4::InnerAbsorberModule;
+      /* FALLTHROUGH */
+    case LArG4::InnerAbsorberModule:
+      inner_wheel_init();
+      module_init();
+      m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+      // later for all? m_ZeroFanPhi_ForDetNeaFan = m_ZeroFanPhi - m_FanStepOnPhi * 0.5;
+      break;
+    case LArG4::BackOuterBarretteModuleCalib:
+      m_isBarretteCalib = true;
+      /* FALLTHROUGH */
+    case LArG4::BackOuterBarretteModule:
+      m_isBarrette = true;
+      m_type = LArG4::OuterAbsorberModule;
+      /* FALLTHROUGH */
+    case LArG4::OuterAbsorberModule:
+      outer_wheel_init();
+      module_init();
+      m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+      // later for all? m_ZeroFanPhi_ForDetNeaFan = m_ZeroFanPhi - m_FanStepOnPhi * 0.5;
+      break;
+    case LArG4::InnerElectrodModule:
+      inner_wheel_init();
+      module_init();
+      m_FirstFan ++;
+      m_isElectrode = true;
+      break;
+    case LArG4::OuterElectrodModule:
+      outer_wheel_init();
+      module_init();
+      m_FirstFan ++;
+      m_isElectrode = true;
+      break;
+    default:
+      throw std::runtime_error("LArWheelCalculator constructor:unknown LArWheelCalculator_t");
+  }
+  m_ZeroFanPhi_ForDetNeaFan = m_ZeroFanPhi - m_FanStepOnPhi * 0.5;
+  m_NumberOfHalfWaves = m_NumberOfWaves * 2;
+  m_HalfWaveLength = m_ActiveLength / m_NumberOfHalfWaves;
+  m_QuarterWaveLength = m_HalfWaveLength * 0.5;
+  //m_HalfNumberOfFans = m_NumberOfFans / 2;
+  m_FanHalfThickness = GetFanHalfThickness(m_type);
+
+  // Init sagging
+  // value read above
+  // std::string sagging_opt_value = (*DB_EMECParams)[0]->getString("SAGGING");
+
+  //msg << MSG::VERBOSE << "SAGGING value = " << sagging_opt_value << endmsg;
+
+  // the same condition is in DistanceCalculatorFactory::Create
+  m_SaggingOn = (sagging_opt_value != "" && sagging_opt_value != "off")? true: false;
+
+  //m_distanceCalcImpl = LArWheelCalculator_Impl::DistanceCalculatorFactory::Create(
+  //    sagging_opt_value, this, rdbAccess, larVersionKey);
+  
+  m_distanceCalcImpl = LArWheelCalculator_Impl::DistanceCalculatorFactory::Create(sagging_opt_value,this);
+  if (m_SaggingOn) {
+    //msg << MSG::VERBOSE << "Creating DistanceCalculatorSaggingOn = "  << this
+    //    << ',' << m_distanceCalcImpl << endmsg;
+  } else {
+    //msg << MSG::VERBOSE << "Creating DistanceCalculatorSaggingOff = " << this
+    //    << ',' << m_distanceCalcImpl << endmsg;
+  }
+
+  //m_fanCalcImpl = LArWheelCalculator_Impl::FanCalculatorFactory::Create(
+  //    m_SaggingOn, m_isModule, this, rdbAccess, larVersionKey);
+  m_fanCalcImpl = LArWheelCalculator_Impl::FanCalculatorFactory::Create(m_SaggingOn, m_isModule, this);
+
+  //--------------------------
+  // At this place there was the loading of sagging parameters
+  // Transfered to DistanceCalculatorSaggingOn
+  //--------------------------
+
+  // Get option: Slant params.
+  //msg << MSG::VERBOSE << "Loading SlantAngle parameters ...";
+  std::string slant_params;
+
+    //TO DO : needed?
+//  if (m_isInner) {
+//    EMECParams_recs.param(slant_params,  "INNERSLANTPARAM");
+//  } else {
+//    EMECParams_recs.param(slant_params,  "OUTERSLANTPARAM");
+//  }
+
+  //msg << (m_isInner?" InnerWheel ":" OuterWheel ") << slant_params << endmsg;
+
+  if(slant_params != "" && slant_params != "default"){
+    double a, b, c, d, e;
+    if(sscanf(slant_params.c_str(), "%80le %80le %80le %80le %80le", &a, &b, &c, &d, &e) != 5){
+      //msg << MSG::ERROR
+      //    << "LArWheelCalculator: ERROR: wrong value(s) "
+      //    << "for EMEC slant angle parameters: "
+      //    << slant_params << ", "
+      //    << "defaults are used" << endmsg;
+    } else {
+      m_slant_parametrization[0] = a;
+      m_slant_parametrization[1] = b;
+      m_slant_parametrization[2] = c;
+      m_slant_parametrization[3] = d;
+      m_slant_parametrization[4] = e;
+      m_slant_use_default = false;
+    }
+  } // else already initialized in inner/outer_wheel_init()
+
+  fill_sincos_parameterization(); // initialize sin&cos parameterization
+
+  //msg << MSG::VERBOSE << "All params initialized. Print some internal variables" << endmsg;
+
+//  msg << MSG::VERBOSE << "Data members:" << std::endl
+//      << "m_AtlasZside              = " << m_AtlasZside << std::endl
+//      << "m_NumberOfFans            = " << m_NumberOfFans << std::endl
+//      << "m_ZeroFanPhi              = " << m_ZeroFanPhi << std::endl
+//      << "m_ZeroFanPhi_ForDetNeaFan = " << m_ZeroFanPhi_ForDetNeaFan << std::endl
+//      << "m_FanStepOnPhi            = " << m_FanStepOnPhi << std::endl
+//      << "m_FanHalfThickness        = " << m_FanHalfThickness << std::endl
+//      //<< "Sagging parameters        : " << m_sagging_parameter[0][0] << " " << m_sagging_parameter[0][1] << std::endl
+//      //<< "Sagging parameters        : " << m_sagging_parameter[1][0] << " " << m_sagging_parameter[1][1] << std::endl
+//      << "slant_params              = " << slant_params << std::endl
+//      << "Sagging option            = " << sagging_opt_value << std::endl
+//      << "SaggingOn                 = " << (m_SaggingOn? "true": "false") << std::endl
+//      << "Slant parameters          : ";
+//  for(int i = 0; i < 5; i ++) msg << " " << m_slant_parametrization[i];
+//  msg << endmsg;
+
+//  if(m_isModule){
+//    msg << MSG::VERBOSE
+//        << "module_init: FirstFan = " << m_FirstFan
+//        << ", LastFan = " << m_LastFan
+//        << ", ZeroFanPhi = " << m_ZeroFanPhi
+//        << endmsg;
+//  }
+
+  //m_fan_number = -1000;
+
+  // Is the following code fragment obsoleted? DM 2015-03-13
+  /* to compare various methods of slant angle computation:
+     if(isInner) return;
+     FILE *O = fopen("slant_stat.table1.txt", "w");
+     if(O == 0) abort();
+     struct timeval t1, t2;
+     struct timezone tz;
+     std::vector<double> alpha;
+     gettimeofday(&t1, &tz);
+     for(double r = 600.; r < 2100.; r += .01){
+     alpha.push_back(parameterized_slant_angle(r));
+     }
+     gettimeofday(&t2, &tz);
+
+     fprintf(O, "%d.%06d %d.%06d\n", t1.tv_sec, t1.tv_usec, t2.tv_sec, t2.tv_usec);
+     int i = 0;
+     for(double r = 600.; r < 2100.; r += .01, i ++){
+     fprintf(O, "%f %f\n", r, alpha[i]);
+     }
+
+     fclose(O);
+     exit(0);
+  */
+}
+
+/* converts module gap number into wheel gap number */
+int LArWheelCalculator::PhiGapNumberForWheel(int i) const
+{
+  return m_fanCalcImpl->PhiGapNumberForWheel(i);
+}
+
+void LArWheelCalculator::inner_wheel_init()
+{
+  for(int i = 0; i < 5; ++ i) {
+    m_slant_parametrization[i] = default_slant_parametrization[0][i];
+  }
+  m_slant_use_default = true;
+  m_NumberOfFans = 256;
+  m_NumberOfWaves = 6;
+//  EmecWheelParameters_recs.
+//    param(m_NumberOfFans,  "NABS", 0).
+//    param(m_NumberOfWaves, "NACC", 0);
+
+  m_FanFoldRadius = 3.25 * SYSTEM_OF_UNITS::mm;
+  m_ZeroGapNumber = 64; // internal constant, should not be taken from DB
+  m_FanStepOnPhi = SYSTEM_OF_UNITS::twopi / m_NumberOfFans;
+  m_isInner = true;
+}
+
+void LArWheelCalculator::outer_wheel_init()
+{
+  for(int i = 0; i < 5; ++ i) {
+    m_slant_parametrization[i] = default_slant_parametrization[1][i];
+  }
+  m_slant_use_default = true;
+  m_NumberOfFans = 768;
+  m_NumberOfWaves = 9;
+//  EmecWheelParameters_recs.
+//    param(m_NumberOfFans,  "NABS", 1).
+//    param(m_NumberOfWaves, "NACC", 1);
+
+  m_FanFoldRadius = 3.0 * SYSTEM_OF_UNITS::mm;
+  m_ZeroGapNumber = 192; // internal constant, should not be taken from DB
+  m_FanStepOnPhi = SYSTEM_OF_UNITS::twopi / m_NumberOfFans;
+  m_isInner = false;
+}
+
+double LArWheelCalculator::GetFanHalfThickness(LArG4::LArWheelCalculator_t t)
+{
+  switch(t){
+    case LArG4::BackInnerBarretteWheelCalib:
+    case LArG4::BackInnerBarretteModuleCalib:
+    case LArG4::BackInnerBarretteWheel:
+    case LArG4::BackInnerBarretteModule:
+    case LArG4::InnerAbsorberWheel:
+    case LArG4::InnerAbsorberModule:
+          //return (2.2 / 2 + 0.2 + 0.15) * SYSTEM_OF_UNITS::mm;
+      return (2.2 / 2 + 0.2 + 0.1)*0.997 * SYSTEM_OF_UNITS::mm; // new values, 02.11.06 J.T. with contraction in cold
+      // lead / 2 + steel + glue
+    case LArG4::InnerGlueWheel:
+      return (2.2 / 2 + 0.1)*0.997 * SYSTEM_OF_UNITS::mm;
+    case LArG4::InnerLeadWheel:
+      return 2.2 / 2 * 0.997 * SYSTEM_OF_UNITS::mm;
+
+    case LArG4::BackOuterBarretteWheelCalib:
+    case LArG4::BackOuterBarretteModuleCalib:
+    case LArG4::BackOuterBarretteWheel:
+    case LArG4::BackOuterBarretteModule:
+    case LArG4::OuterAbsorberWheel:
+    case LArG4::OuterAbsorberModule:
+      //return (1.7 / 2 + 0.2 + 0.15) * mm;
+      return (1.69 / 2 + 0.2 + 0.1)*0.997 * SYSTEM_OF_UNITS::mm;  // new values, 02.11.06 J.T.
+    case LArG4::OuterGlueWheel:
+      return (1.69 / 2 + 0.1)*0.997 * SYSTEM_OF_UNITS::mm;
+    case LArG4::OuterLeadWheel:
+      return 1.69 / 2 * 0.997 * SYSTEM_OF_UNITS::mm;
+
+    case LArG4::InnerElectrodWheel:
+    case LArG4::OuterElectrodWheel:
+    case LArG4::InnerElectrodModule:
+    case LArG4::OuterElectrodModule:
+      return 0.275/1.0036256 * SYSTEM_OF_UNITS::mm * 0.5;  //new values, 02.11.06 J.T
+  }
+  throw std::runtime_error("LArWheelCalculator::GetFanHalfThickness: wrong wheel type");
+}
+
+void LArWheelCalculator::module_init()
+{
+  m_isModule = true;
+  m_LastFan = m_NumberOfFans / 8;
+  m_FirstFan = 0;
+  m_ZeroFanPhi = - m_LastFan / 2 * m_FanStepOnPhi;
+}
+
+/*
+  array of r is filled with:
+  for inner wheel - 2 elements { r_front, r_back }
+  for outer wheel - 3 elements { r_front, r_middle, r_back }
+  return value - delta_z of middle point in case of outer wheel
+*/
+double LArWheelCalculator::GetWheelInnerRadius(double *r) const
+{
+  double zMid = 0.;
+  if(m_isInner){
+    double tanThetaInner = 2. * exp(-m_eta_hi ) / (1. - exp(-2.*m_eta_hi ));
+    r[0] = m_zWheelFrontFace * tanThetaInner;
+    r[1] = m_zWheelBackFace  * tanThetaInner;
+  } else {
+    double tanThetaMid   = 2. * exp(-m_eta_mid) / (1. - exp(-2.*m_eta_mid));
+    double inv_tanThetaOuter = (1. - exp(-2.*m_eta_low)) / (2. * exp(-m_eta_low));
+    // Note that there is a 3mm gap between the outer surface of the
+    // inner wheel and the inner surface of the outer wheel.
+    r[0] = m_zWheelFrontFace * tanThetaMid + m_HalfGapBetweenWheels;
+    r[1] = m_rOuterCutoff * inv_tanThetaOuter * tanThetaMid + m_HalfGapBetweenWheels;
+    r[2] = m_zWheelBackFace  * tanThetaMid + m_HalfGapBetweenWheels;
+    zMid = m_rOuterCutoff * inv_tanThetaOuter - m_zWheelFrontFace;
+  }
+  return zMid;
+}
+
+/*
+  array of r is filled with:
+  for inner wheel - 2 elements { r_front, r_back }
+  for outer wheel - 3 elements { r_front, r_middle, r_back }
+*/
+void LArWheelCalculator::GetWheelOuterRadius(double *r) const
+{
+  if(m_isInner){
+    double tanThetaMid   = 2. * exp(-m_eta_mid) / (1. - exp(-2.*m_eta_mid));
+    // Note that there is a 3mm gap between the outer surface of the
+    // inner wheel and the inner surface of the outer wheel.
+    r[0] = m_zWheelFrontFace * tanThetaMid - m_HalfGapBetweenWheels;
+    r[1] = m_zWheelBackFace  * tanThetaMid - m_HalfGapBetweenWheels;
+  } else {
+    double tanThetaOuter = 2. * exp(-m_eta_low) / (1. - exp(-2.*m_eta_low));
+    r[0] = m_zWheelFrontFace * tanThetaOuter;
+    r[1] = m_rOuterCutoff;
+    r[2] = m_rOuterCutoff;
+  }
+}
diff --git a/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx b/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx
new file mode 100644
index 0000000..0ff84d5
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx
@@ -0,0 +1,138 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+//#include "CxxUtils/sincos.h"
+//#include <cmath>
+#include <climits>
+#include <cassert>
+#include <iostream>
+
+//#include "GaudiKernel/PhysicalConstants.h"
+// Physical constants
+#include "GeoModelKernel/Units.h"
+#define SYSTEM_OF_UNITS GeoModelKernelUnits
+
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+#include "./LArWheelCalculator_Impl/IDistanceCalculator.h"
+#include "./LArWheelCalculator_Impl/IFanCalculator.h"
+
+#ifdef HARDDEBUG
+#include<stdio.h>
+#endif
+
+//using namespace Gaudi::Units;
+
+void LArWheelCalculator::parameterized_sin(const double r, double &sin_a, double &cos_a) const
+{
+  const double r2 = r*r;
+  const double r3 = r2*r;
+  const double r4 = r2*r2;
+#if LARWC_SINCOS_POLY > 4
+  const double r5 = r4*r;
+#endif
+  sin_a = m_sin_parametrization[0]
+        + m_sin_parametrization[1]*r
+        + m_sin_parametrization[2]*r2
+        + m_sin_parametrization[3]*r3
+        + m_sin_parametrization[4]*r4
+#if LARWC_SINCOS_POLY > 4
+        + m_sin_parametrization[5]*r5
+#endif
+  ;
+  cos_a = sqrt(1. - sin_a*sin_a);
+}
+
+void LArWheelCalculator::parameterized_sincos(const double r, double &sin_a, double &cos_a) const
+{
+  const double r2 = r*r;
+  const double r3 = r2*r;
+  const double r4 = r2*r2;
+#if LARWC_SINCOS_POLY > 4
+  const double r5 = r4*r;
+#endif
+  sin_a = m_sin_parametrization[0]
+        + m_sin_parametrization[1]*r
+        + m_sin_parametrization[2]*r2
+        + m_sin_parametrization[3]*r3
+        + m_sin_parametrization[4]*r4
+#if LARWC_SINCOS_POLY > 4
+        + m_sin_parametrization[5]*r5
+#endif
+  ;
+  cos_a = m_cos_parametrization[0]
+        + m_cos_parametrization[1]*r
+        + m_cos_parametrization[2]*r2
+        + m_cos_parametrization[3]*r3
+        + m_cos_parametrization[4]*r4
+#if LARWC_SINCOS_POLY > 4
+        + m_cos_parametrization[5]*r5
+#endif
+  ;
+}
+
+// calculates wave slant angle using parametrization for current wheel
+// for given distance from calorimeter axis
+double LArWheelCalculator::parameterized_slant_angle(double r) const
+{
+  const double r2 = r*r;
+  const double r3 = r2*r;
+  const double r4 = r2*r2;
+  const double result = m_slant_parametrization[0] +
+                        r*m_slant_parametrization[1] +
+                        r2*m_slant_parametrization[2] +
+                        r3*m_slant_parametrization[3] +
+                        r4*m_slant_parametrization[4];
+  return result*SYSTEM_OF_UNITS::deg;
+}
+
+// Determines the nearest to the input point fan.
+// Relays on the fact that each two fans have a fan of a different type between
+// them.
+// Returns distance to the nearest fan. Vector p is set to nearest fan coord.
+// system.
+// m_fan_number is set to nearest fan number
+double LArWheelCalculator::DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const
+{
+  return m_fanCalcImpl->DistanceToTheNearestFan(p, out_fan_number);
+}
+
+// Relays on the fact that each two fans have a fan of a different type between
+// them.
+// Affects m_fan_number.
+std::pair<int, int> LArWheelCalculator::GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const
+{
+  return m_fanCalcImpl->GetPhiGapAndSide(p);
+}
+
+// Represents aproximate, probably underestimate, distance to the
+// neutral fibre of the vertical fan. Sign of return value means
+// side of the fan; negative - lower phi.
+//
+// Uses m_fan_number to compute sagging.
+double LArWheelCalculator::DistanceToTheNeutralFibre(const CLHEP::Hep3Vector& P, int fan_number) const
+{
+  return m_distanceCalcImpl->DistanceToTheNeutralFibre(P, fan_number);
+}
+
+CLHEP::Hep3Vector LArWheelCalculator::NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &P, int fan_number) const
+{
+  return m_distanceCalcImpl->NearestPointOnNeutralFibre(P, fan_number);
+}
+
+std::vector<double> LArWheelCalculator::NearestPointOnNeutralFibre_asVector(const CLHEP::Hep3Vector &p, int fan_number) const
+{
+  CLHEP::Hep3Vector np = NearestPointOnNeutralFibre(p, fan_number);
+  return std::vector<double> { np.x(), np.y(), np.z() };
+}
+
+/*
+input is in local fan's coordinate system
+side: < 0 - lower phi
+      > 0 - greater phi
+      = 0 - neutral fibre
+*/
+double LArWheelCalculator::AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int fan_number) const
+{
+  return m_distanceCalcImpl->AmplitudeOfSurface(P, side, fan_number);
+}
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx
new file mode 100644
index 0000000..055baef
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx
@@ -0,0 +1,29 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+
+#include "DistanceCalculatorFactory.h"
+
+#include "DistanceCalculatorSaggingOff.h"
+#include "DistanceCalculatorSaggingOn.h"
+
+namespace LArWheelCalculator_Impl
+{
+
+  IDistanceCalculator* DistanceCalculatorFactory::Create(const std::string & sagging_opt,
+                                                         LArWheelCalculator* lwc/*,
+                                                         IRDBAccessSvc* rdbAccess,
+                                                         const DecodeVersionKey & larVersionKey*/)
+  {
+    // the same condition is in LArWheelCalculator constructor
+    bool SaggingOn = (sagging_opt != "" && sagging_opt != "off")? true: false;
+
+    if (SaggingOn) {
+      return new DistanceCalculatorSaggingOn(sagging_opt, lwc/*, rdbAccess, larVersionKey*/);
+    } else {
+      return new DistanceCalculatorSaggingOff(lwc/*, rdbAccess, larVersionKey*/    );
+    }
+  }
+
+}
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h
new file mode 100644
index 0000000..f1dbc8d
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h
@@ -0,0 +1,34 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef __LArWheelCalculator_Impl_DistanceCalculatorFactory_H__
+#define __LArWheelCalculator_Impl_DistanceCalculatorFactory_H__
+
+// DistanceCalculator factory
+// calculator creation depends on sagging mode
+
+#include <string>
+#include "IDistanceCalculator.h"
+//#ifndef BUILDVP1LIGHT
+//    #include "RDBAccessSvc/IRDBAccessSvc.h"
+//#endif
+//#include "GeoModelUtilities/DecodeVersionKey.h"
+
+class LArWheelCalculator;
+
+namespace LArWheelCalculator_Impl
+{
+  /// @todo Why is this a class???
+  class DistanceCalculatorFactory
+  {
+    public:
+      static IDistanceCalculator* Create(const std::string & sagging_opt,
+                                         LArWheelCalculator* lwc
+                                         /*,IRDBAccessSvc* rdbAccess,
+                                         const DecodeVersionKey & larVersionKey*/);
+  };
+
+}
+
+#endif // __LArWheelCalculator_Impl_DistanceCalculatorFactory_H__
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
new file mode 100644
index 0000000..8d0da45
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
@@ -0,0 +1,526 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "DistanceCalculatorSaggingOff.h"
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+
+//#include "GaudiKernel/PhysicalConstants.h"
+#include<cassert>
+
+//#define LWC_PARAM_ANGLE
+
+#ifdef LWC_PARAM_ANGLE
+#include <CxxUtils/sincos.h>
+#endif
+
+#include<signal.h>
+
+//using namespace Gaudi::Units;
+
+// Physical constants
+#include "GeoModelKernel/Units.h"
+#define SYSTEM_OF_UNITS GeoModelKernelUnits
+
+namespace LArWheelCalculator_Impl
+{
+
+  //DistanceCalculatorSaggingOff::DistanceCalculatorSaggingOff(LArWheelCalculator* c,
+  //                                                           IRDBAccessSvc* /*rdbAccess*/,
+  //                                                           const DecodeVersionKey & /*larVersionKey*/)
+  DistanceCalculatorSaggingOff::DistanceCalculatorSaggingOff(LArWheelCalculator* c)
+    : m_lwc(c)
+  {
+    m_EndQuarterWave = lwc()->m_ActiveLength - lwc()->m_QuarterWaveLength;
+  }
+
+#ifndef LARWC_DTNF_NEW
+  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre(const CLHEP::Hep3Vector& P, int /*fan_number*/) const
+#else
+  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre_ref(const CLHEP::Hep3Vector& P, int /*fan_number*/) const
+#endif
+  {
+    assert(P.y() > 0.);
+    double distance = 0.;
+    double z = P.z() - lwc()->m_StraightStartSection;
+    double x = P.x();
+
+#ifdef LWC_PARAM_ANGLE //old variant
+    const double alpha = lwc()->parameterized_slant_angle(P.y());
+    //double cos_a, sin_a;
+    //::sincos(alpha, &sin_a, &cos_a);
+    CxxUtils::sincos scalpha(alpha);
+    const double cos_a = scalpha.cs, sin_a = scalpha.sn;
+#else // parameterized sine
+    double cos_a, sin_a;
+    lwc()->parameterized_sincos(P.y(), sin_a, cos_a);
+#endif
+    // determination of the nearest quarter-wave number
+    int nqwave = (z < 0.) ? 0 : int(z / lwc()->m_QuarterWaveLength);
+    //if(z < 0.) nqwave = 0;
+    //else nqwave = int(z / lwc()->m_QuarterWaveLength);
+
+    bool begin_qw = false;
+    if((nqwave % 2) != 0){
+      nqwave ++;
+      begin_qw = true;
+    }
+
+    nqwave /= 2;
+
+    // now nqwave is not the number of quarter-wave but the number of half-wave
+    // half-waves with last and zero numbers are not really half-waves but start
+    // and finish quarter-waves
+    // It means that half-wave number 1 begins after starting quarter-wave
+    if(nqwave != 0 && nqwave != lwc()->m_NumberOfHalfWaves){ // regular half-waves
+      z -= nqwave * lwc()->m_HalfWaveLength;
+      // there are some symmetries, so use them
+      if((nqwave % 2) == 0) x = -x;
+      if(begin_qw){
+        z = -z;
+        x = -x;
+      }
+      // certain situation: rising slope of wave, z is positive
+      // rotate to prime-coordinate system (see description)
+      const double z_prime = z * cos_a + x * sin_a;
+      const double x_prime = x * cos_a - z * sin_a;
+      const double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
+      if(z_prime > straight_part){// fold region
+        const double dz = straight_part - z_prime;
+        const double dx = x_prime + lwc()->m_FanFoldRadius;
+        distance = sqrt(dz*dz + dx*dx) - lwc()->m_FanFoldRadius;
+      } else if(z_prime > -straight_part){
+        distance = x_prime; // straight part of the quarter-wave
+      } else {// fold region
+        const double dz = straight_part + z_prime;
+        const double dx = x_prime - lwc()->m_FanFoldRadius;
+        distance = lwc()->m_FanFoldRadius - sqrt(dz*dz + dx*dx);
+      }
+      // set correct sign for result
+      if(!begin_qw) distance = -distance;
+      if((nqwave % 2) == 0) distance = -distance;
+
+    } else { // start and finish quarter-waves
+      if(nqwave == 0)	{ // start quarter-wave
+        x = - x;
+      } else { // finish quarter-wave
+        z = lwc()->m_ActiveLength - z;
+      }
+
+      const double tan_beta = sin_a/(1.0 + cos_a); //tan(alpha * 0.5);
+      const double local_straight_section = lwc()->m_FanFoldRadius * tan_beta;
+      if( z < - local_straight_section &&
+          ( x < lwc()->m_FanFoldRadius ||
+            x < - lwc()->m_StraightStartSection * z / local_straight_section / tan_beta ) )
+      {
+        distance = - x;
+      }
+      else {
+        const double z_prime = z * cos_a + x * sin_a;
+        const double x_prime = x * cos_a - z * sin_a;
+        if (z_prime < local_straight_section) { // start fold region
+          const double dz = local_straight_section - z_prime;
+          const double dx = x_prime - lwc()->m_FanFoldRadius;
+          distance = sqrt(dz*dz + dx*dx) - lwc()->m_FanFoldRadius;
+        } else {
+          const double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
+          if (z_prime <= straight_part) { // straight part of quarter-wave
+            distance = - x_prime;
+          } else { // regular fold region of the quarter-wave
+            const double dz = straight_part - z_prime;
+            const double dx = x_prime + lwc()->m_FanFoldRadius;
+            distance = lwc()->m_FanFoldRadius - sqrt(dz*dz + dx*dx);
+          }
+        }
+      }
+      // set correct sign
+      if (nqwave == 0) distance = -distance;
+    }
+#ifdef HARDDEBUG
+    double dd = DistanceToTheNeutralFibre_ref(P);
+    if(fabs(dd - distance) > 0.000001){
+      //static int cnt = 0;
+      std::cout << "DTNF MISMATCH " << this << " " << P << " "
+                << dd << " vs " << distance << std::endl;
+      //cnt ++;
+      //if(cnt > 100) exit(0);
+    }
+#endif
+    return distance;
+  }
+
+  // IMPROVED PERFORMANCE
+#ifdef LARWC_DTNF_NEW
+  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre(const CLHEP::Hep3Vector& P, int /*fan_number*/) const
+#else
+  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre_ref(const CLHEP::Hep3Vector& P, int /*fan_number*/) const
+#endif
+  {
+    double z = P.z() - lwc()->m_StraightStartSection;
+    double x = P.x();
+
+#ifdef LWC_PARAM_ANGLE //old variant
+    const double alpha = lwc()->parameterized_slant_angle(P.y());
+    CxxUtils::sincos scalpha(alpha);
+    double cos_a = scalpha.cs, sin_a = scalpha.sn;
+#else // parameterized sine
+    double cos_a, sin_a;
+    lwc()->parameterized_sincos(P.y(), sin_a, cos_a);
+#endif
+
+    bool sqw = false;
+    if(z > lwc()->m_QuarterWaveLength){
+      if(z < m_EndQuarterWave){ // regular half-waves
+        unsigned int nhwave = (unsigned int)(z / lwc()->m_HalfWaveLength + 0.5);
+        z -= lwc()->m_HalfWaveLength * nhwave;
+        const double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
+        nhwave &= 1U;
+        if(nhwave == 0) sin_a = - sin_a;
+        double z_prime = z * cos_a + x * sin_a;
+        const double x_prime = z * sin_a - x * cos_a;
+        if(z_prime > straight_part){ // up fold region
+          const double dz = z_prime - straight_part;
+          if(nhwave == 0){
+            const double dx = x_prime + lwc()->m_FanFoldRadius;
+            return sqrt(dz*dz + dx*dx) - lwc()->m_FanFoldRadius;
+          } else {
+            const double dx = x_prime - lwc()->m_FanFoldRadius;
+            return lwc()->m_FanFoldRadius - sqrt(dz*dz + dx*dx);
+          }
+        }
+        z_prime += straight_part;
+        if(z_prime > 0){
+          return x_prime; // straight part of the quarter-wave
+        } else { // low fold region
+          const double &dz = z_prime;
+          if(nhwave == 0){
+            const double dx = x_prime - lwc()->m_FanFoldRadius;
+            return lwc()->m_FanFoldRadius - sqrt(dz*dz + dx*dx);
+          } else {
+            const double dx = x_prime + lwc()->m_FanFoldRadius;
+            return sqrt(dz*dz + dx*dx) - lwc()->m_FanFoldRadius;
+          }
+        }
+      } else { // ending quarter-wave
+        z = lwc()->m_ActiveLength - z;
+      }
+    } else { // starting quarter-wave
+      x = - x;
+      sqw = true;
+    }
+
+    // start and finish quarter-waves
+    const double tan_beta = sin_a/(1.0 + cos_a); //tan(alpha * 0.5);
+    const double local_straight_section = lwc()->m_FanFoldRadius * tan_beta;
+    if(z < - local_straight_section &&
+       ( x < lwc()->m_FanFoldRadius ||
+         x < - lwc()->m_StraightStartSection * z / local_straight_section / tan_beta ))
+    {
+      return sqw? x: (-x);
+    }
+    else {
+      const double z_prime = z * cos_a + x * sin_a;
+      const double x_prime = x * cos_a - z * sin_a;
+      if (z_prime < local_straight_section) { // start fold region
+        const double dz = local_straight_section - z_prime;
+        const double dx = x_prime - lwc()->m_FanFoldRadius;
+        if(sqw) return lwc()->m_FanFoldRadius - sqrt(dz*dz + dx*dx);
+        else    return sqrt(dz*dz + dx*dx) - lwc()->m_FanFoldRadius;
+      } else {
+        const double straight_part =
+          (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
+        if (z_prime <= straight_part) { // straight part of quarter-wave
+          return sqw? x_prime: (-x_prime);
+        } else { // regular fold region of the quarter-wave
+          const double dz = straight_part - z_prime;
+          const double dx = x_prime + lwc()->m_FanFoldRadius;
+          if(sqw) return sqrt(dz*dz + dx*dx) - lwc()->m_FanFoldRadius;
+          else    return lwc()->m_FanFoldRadius - sqrt(dz*dz + dx*dx);
+        }
+      }
+    }
+    // ???
+    std::abort();
+  }
+
+  CLHEP::Hep3Vector DistanceCalculatorSaggingOff::NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &P, int /*fan_number*/) const
+  {
+    CLHEP::Hep3Vector result;
+    double z = P.z() - lwc()->m_StraightStartSection;
+    double x = P.x();
+    double y = P.y();
+
+#ifdef LWC_PARAM_ANGLE //old variant
+    const double alpha = lwc()->parameterized_slant_angle(P.y());
+    CxxUtils::sincos scalpha(alpha);
+    const double cos_a = scalpha.cs, sin_a = scalpha.sn;
+#else // parameterized sine
+    double cos_a, sin_a;
+    lwc()->parameterized_sincos(P.y(), sin_a, cos_a);
+#endif
+
+    int nqwave;
+    if(z < 0.) nqwave = 0;
+    else nqwave = int(z / lwc()->m_QuarterWaveLength);
+    bool begin_qw = false;
+    if((nqwave % 2) != 0){
+      nqwave ++;
+      begin_qw = true;
+    }
+    nqwave /= 2;
+    if(nqwave != 0 && nqwave != lwc()->m_NumberOfHalfWaves){
+      z -= nqwave * lwc()->m_HalfWaveLength;
+      if((nqwave % 2) == 0) x = -x;
+      if(begin_qw){
+        z = -z;
+        x = -x;
+      }
+      const double z_prime = z * cos_a + x * sin_a;
+      const double x_prime = x * cos_a - z * sin_a;
+      const double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
+      const double dz = straight_part - z_prime;
+      if (dz > 0) result.set(0., y, z_prime);
+      else {
+        double a = atan(fabs(dz / (x_prime + lwc()->m_FanFoldRadius)));
+        result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+      }
+      result.rotateY(asin(sin_a));
+      if(begin_qw){
+        result.setX(-result.x());
+        result.setZ(-result.z());
+      }
+      if((nqwave % 2) == 0) result.setX(-result.x());
+      result.setZ(result.z() + nqwave * lwc()->m_HalfWaveLength);
+    } else {
+      if(nqwave == 0) x = -x;
+      else z = lwc()->m_ActiveLength - z;
+      const double tan_beta = sin_a/(1.0+cos_a); //tan(alpha * 0.5);
+      const double local_straight_section = lwc()->m_FanFoldRadius * tan_beta;
+      if(z < - local_straight_section &&
+         ( x < lwc()->m_FanFoldRadius ||
+           x < - lwc()->m_StraightStartSection * z / local_straight_section / tan_beta))
+      {
+        result.set(0., y, z);
+      }
+      else {
+        const double z_prime = z * cos_a + x * sin_a;
+        const double x_prime = x * cos_a - z * sin_a;
+        if(z_prime < local_straight_section) {
+          double a = fabs(atan((local_straight_section - z_prime) / (x_prime - lwc()->m_FanFoldRadius)));
+
+          result.set(lwc()->m_FanFoldRadius * (1 - cos(a)), y, local_straight_section - lwc()->m_FanFoldRadius * sin(a));
+        } else {
+          double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
+          if(z_prime <= straight_part) {
+            result.set(0., y, z_prime);
+          } else {
+            double a = fabs(atan((straight_part - z_prime) /  (x_prime + lwc()->m_FanFoldRadius)) );
+            result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+          }
+        }
+        result.rotateY(asin(sin_a));
+      }
+      if(nqwave != 0){
+        result.setZ(lwc()->m_ActiveLength - result.z());
+      } else {
+        result.setX(-result.x());
+      }
+    }
+    result.setZ(result.z() + lwc()->m_StraightStartSection);
+    return result;
+  }
+
+  // IMPROVED VERSION
+  CLHEP::Hep3Vector DistanceCalculatorSaggingOff::NearestPointOnNeutralFibre_ref(const CLHEP::Hep3Vector &P, int /*fan_number*/) const
+  {
+    CLHEP::Hep3Vector result;
+    double z = P.z() - lwc()->m_StraightStartSection;
+    double x = P.x();
+    double y = P.y();
+
+#ifdef LWC_PARAM_ANGLE //old variant
+    const double alpha = lwc()->parameterized_slant_angle(P.y());
+    CxxUtils::sincos scalpha(alpha);
+    double cos_a = scalpha.cs, sin_a = scalpha.sn;
+#else // parameterized sine
+    double cos_a, sin_a;
+    lwc()->parameterized_sincos(P.y(), sin_a, cos_a);
+#endif
+
+    bool sqw = false;
+    if(z > lwc()->m_QuarterWaveLength){
+      if(z < m_EndQuarterWave){ // regular half-waves
+        unsigned int nhwave = (unsigned int)(z / lwc()->m_HalfWaveLength + 0.5);
+        const double zshift = lwc()->m_HalfWaveLength * nhwave;
+        z -= zshift;
+        const double straight_part =
+          (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
+        nhwave &= 1U;
+        if(nhwave == 0) sin_a = - sin_a;
+        const double z_prime = z * cos_a + x * sin_a;
+        if(z_prime > straight_part){ // up fold
+          const double x_prime = x * cos_a - z * sin_a;
+          const double dz = straight_part - z_prime;
+          double a1 = atan(fabs(dz / (x_prime + lwc()->m_FanFoldRadius)));
+          const double x1 = lwc()->m_FanFoldRadius * (cos(a1) - 1.);
+          const double z1 = straight_part + lwc()->m_FanFoldRadius * sin(a1);
+          result.set(x1*cos_a - z1*sin_a, y, z1*cos_a + z1*sin_a);
+          return result;
+        } else if(z_prime > -straight_part){ // straight part
+          result.set(-z_prime * sin_a, y, z_prime*cos_a + zshift);
+          return result;
+        } else { // low fold
+          const double x_prime = x * cos_a - z * sin_a;
+          const double dz = straight_part + z_prime;
+          double a1 = atan(fabs(dz / (x_prime + lwc()->m_FanFoldRadius)));
+          const double x1 = lwc()->m_FanFoldRadius * (cos(a1) - 1.);
+          const double z1 = straight_part + lwc()->m_FanFoldRadius * sin(a1);
+          result.set(x1*cos_a - z1*sin_a, y, z1*cos_a + z1*sin_a);
+          return result;
+        }
+      } else { // ending quarter-wave
+        z = lwc()->m_ActiveLength - z;
+      }
+    } else { // starting quarter-wave
+      x = - x;
+      sqw = true;
+    }
+
+    // start and finish quarter-waves
+    const double tan_beta = sin_a / (1.0 + cos_a);
+    const double local_straight_section = lwc()->m_FanFoldRadius * tan_beta;
+    if(z < - local_straight_section &&
+       (x < lwc()->m_FanFoldRadius ||
+        x < - lwc()->m_StraightStartSection * z / local_straight_section / tan_beta))
+    {
+      result.set(0., y, z);
+    }
+    else {
+      const double z_prime = z * cos_a + x * sin_a;
+      const double x_prime = x * cos_a - z * sin_a;
+      if(z_prime < local_straight_section) {
+        double a = fabs(atan((local_straight_section - z_prime) / (x_prime - lwc()->m_FanFoldRadius)));
+        result.set(lwc()->m_FanFoldRadius * (1 - cos(a)), y, local_straight_section - lwc()->m_FanFoldRadius * sin(a));
+      } else {
+        double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
+        if(z_prime <= straight_part) {
+          result.set(0., y, z_prime);
+        } else {
+          double a = fabs(atan((straight_part - z_prime) /  (x_prime + lwc()->m_FanFoldRadius)) );
+          result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+        }
+      }
+      result.rotateY(asin(sin_a));
+    }
+    if(sqw) result.setX(-result.x());
+    else result.setZ(lwc()->m_ActiveLength - result.z());
+    result.setZ(result.z() + lwc()->m_StraightStartSection);
+    return result;
+  }
+
+  /*
+  input is in local fan's coordinate system
+  side: < 0 - lower phi
+        > 0 - greater phi
+        = 0 - neutral fibre
+  */
+  double DistanceCalculatorSaggingOff::AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int /*fan_number*/) const
+  {
+    double result = 0.;
+    double rho = lwc()->m_FanFoldRadius;
+    double z = P.z() - lwc()->m_StraightStartSection;
+
+#ifdef LWC_PARAM_ANGLE //old variant
+    const double alpha = lwc()->parameterized_slant_angle(P.y());
+    //double cos_a, sin_a;
+    //::sincos(alpha, &sin_a, &cos_a);
+    CxxUtils::sincos scalpha(alpha);
+    const double cos_a = scalpha.cs, sin_a = scalpha.sn;
+    // parameterized sine
+#else
+    double cos_a, sin_a;
+    lwc()->parameterized_sincos(P.y(), sin_a, cos_a);
+#endif
+
+    // determination of the nearest quarter-wave number
+    int nqwave;
+    if(z < 0.) nqwave = 0;
+    else nqwave = int(z / lwc()->m_QuarterWaveLength);
+    bool begin_qw = false;
+    if((nqwave % 2) != 0){
+      nqwave ++;
+      begin_qw = true;
+    }
+    nqwave /= 2;
+    // now nqwave is not the number of quarter-wave but the number of half-wave
+    // half-waves with last and zero numbers are not really half-waves but start
+    // and finish quarter-waves
+    // It means that half-wave number 1 begins after starting quarter-wave
+    if(nqwave != 0 && nqwave != lwc()->m_NumberOfHalfWaves){ // regular half-waves
+      z -= nqwave * lwc()->m_HalfWaveLength;
+      if(begin_qw) z = -z;
+      double dz = lwc()->m_QuarterWaveLength - z;
+
+      int local_side = 1;
+      if((nqwave % 2) == 0){
+        if(begin_qw) local_side = -1;
+      } else {
+        if(!begin_qw) local_side = -1;
+      }
+
+      rho += lwc()->m_FanHalfThickness * local_side * side;
+
+      if(dz >= rho * sin_a){
+        result = z * sin_a / cos_a; // straight part of the quarter-wave
+      } else { // fold region
+        result = (lwc()->m_QuarterWaveLength * sin_a - rho) / cos_a
+          + sqrt(rho * rho - dz * dz);
+      }
+      result *= -local_side;
+      if(side < 0) result += lwc()->m_FanHalfThickness / cos_a;
+      else if(side > 0) result -= lwc()->m_FanHalfThickness / cos_a;
+
+    } else { // start and finish quarter-waves
+      int local_side = 1;
+      if(nqwave == 0) { // start quarter-wave
+        local_side = -1;
+      } else { // finish quarter-wave
+        z = lwc()->m_ActiveLength - z;
+      }
+
+      const double rho1i = lwc()->m_FanFoldRadius;
+      const double tan_beta = sin_a/(1.0+cos_a); //tan(alpha * 0.5);
+      const double min_local_fold_region = rho1i * tan_beta;
+
+      if(z <= - min_local_fold_region){
+        result = - side * lwc()->m_FanHalfThickness;
+      } else {
+        const double rho1 = rho1i + lwc()->m_FanHalfThickness * side * local_side;
+
+        const double max_local_fold_region = rho1 * sin_a - min_local_fold_region;
+        //const double max_local_fold_region = rho1 * tan_beta * (1. + cos_a) - min_local_fold_region;
+        if(z < max_local_fold_region){ // start fold region
+          z += min_local_fold_region;
+          result = rho1 - sqrt(rho1 * rho1 - z * z);
+          if(nqwave == 0) result = -result;
+          if(side < 0) result += lwc()->m_FanHalfThickness;
+          else if(side > 0) result -= lwc()->m_FanHalfThickness;
+        } else {
+          rho -= lwc()->m_FanHalfThickness * local_side * side;
+          const double dz = lwc()->m_QuarterWaveLength - z;
+          if(dz >= rho * sin_a){
+            result = z * sin_a / cos_a; // straight part of the quarter-wave
+          } else { // regular fold region
+            result = (lwc()->m_QuarterWaveLength * sin_a - rho) / cos_a
+                     + sqrt(rho * rho - dz * dz);
+          }
+          if(nqwave == 0) result = -result;
+          if(side < 0) result += lwc()->m_FanHalfThickness / cos_a;
+          else if(side > 0) result -= lwc()->m_FanHalfThickness / cos_a;
+        }
+      }
+    }
+    return result;
+  }
+
+}
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
new file mode 100644
index 0000000..a09257e
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
@@ -0,0 +1,53 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef __LArWheelCalculator_Impl_DistanceCalculatorSaggingOff_H__
+#define __LArWheelCalculator_Impl_DistanceCalculatorSaggingOff_H__
+
+
+#include "IDistanceCalculator.h"
+//#include "RDBAccessSvc/IRDBAccessSvc.h"
+//#include "GeoModelUtilities/DecodeVersionKey.h"
+
+class LArWheelCalculator;
+
+namespace LArWheelCalculator_Impl
+{
+
+  /// @class DistanceCalculatorSaggingOff
+  /// @brief Implements details of distance calculation to parts of the
+  /// LAr endcap without sagging corrections.
+  ///
+  class DistanceCalculatorSaggingOff : public IDistanceCalculator
+  {
+
+    public:
+
+      /// Constructor
+      DistanceCalculatorSaggingOff(LArWheelCalculator* lwc/*,
+                                   IRDBAccessSvc* rdbAccess,
+                                   const DecodeVersionKey& larVersionKey*/);
+
+      /// @name Geometry methods
+      /// @{
+      virtual double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
+      virtual double DistanceToTheNeutralFibre_ref(const CLHEP::Hep3Vector &p, int fan_number) const;
+      virtual CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
+      virtual CLHEP::Hep3Vector NearestPointOnNeutralFibre_ref(const CLHEP::Hep3Vector &p, int fan_number) const;
+      virtual double AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int fan_number) const;
+      /// @}
+
+      /// Return the calculator:
+      inline const LArWheelCalculator *lwc() const { return m_lwc; };
+
+    private:
+
+      LArWheelCalculator* m_lwc;
+      double m_EndQuarterWave;
+
+  };
+
+}
+
+#endif // __LArWheelCalculator_Impl_IDistanceCalculatorOff_H__
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
new file mode 100644
index 0000000..03c6692
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
@@ -0,0 +1,180 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+//#include "GaudiKernel/ISvcLocator.h"
+//#include "GaudiKernel/Bootstrap.h"
+//#include "GaudiKernel/MsgStream.h"
+
+#include "DistanceCalculatorSaggingOn.h"
+#include "CLHEP/Vector/ThreeVector.h"
+
+#include <vector>
+#include <stdexcept>
+
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+
+//#include "AthenaKernel/Units.h"
+//using Athena::Units::mm;
+
+// Physical constants
+#include "GeoModelKernel/Units.h"
+#define SYSTEM_OF_UNITS GeoModelKernelUnits
+
+
+namespace LArWheelCalculator_Impl
+{
+  DistanceCalculatorSaggingOn::DistanceCalculatorSaggingOn(const std::string& saggingOptions,
+                                                           LArWheelCalculator* lwc/*,
+                                                           IRDBAccessSvc* rdbAccess,
+                                                           const DecodeVersionKey& larVersionKey*/)
+    //: parent(lwc, rdbAccess, larVersionKey),
+    : parent(lwc),
+     m_saggingOptions(saggingOptions)
+  {
+    // load sagging parameters
+    /*RDBParamReader rdbr(rdbAccess);
+      rdbr.
+      data( "EmecMagicNumbers", larVersionKey.tag(), larVersionKey.node() ).
+      fallback_to( "EmecMagicNumbers","EMECMagigNumbers-00" ).
+      param(lwc()->m_ActiveLength, "ACTIVELENGTH", mm).
+      param(lwc()->m_dWRPtoFrontFace, "REFTOACTIVE", mm).
+      param(lwc()->m_StraightStartSection, "STRAIGHTSTARTSECTION", mm)
+      ;*/
+    init_sagging_parameters();
+  }
+	
+  void DistanceCalculatorSaggingOn::init_sagging_parameters()
+  {
+    // Get pointer to the message service
+    //ISvcLocator* svcLocator = Gaudi::svcLocator();
+    //IMessageSvc* msgSvc;
+    //StatusCode status = svcLocator->service("MessageSvc", msgSvc);
+    //if(status.isFailure()){
+    //  throw std::runtime_error("LArWheelCalculator constructor: \
+    //      cannot initialze message service");
+    //}
+    //MsgStream msg(msgSvc, "LArWheelCalculator_Impl::DistanceCalculatorSaggingOn");
+
+    std::string sagging_opt_value = m_saggingOptions;
+    m_sagging_parameter.resize (lwc()->m_NumberOfFans, std::vector<double> (5, 0.));
+    //	if(m_SaggingOn) {
+    if(sagging_opt_value.substr(0, 4) == "file"){
+      std::string sag_file = sagging_opt_value.substr(5);
+      //msg << MSG::DEBUG
+      //  << "geting sagging parameters from file "
+      //  << sag_file << " ..." << endmsg;
+      FILE *F = fopen(sag_file.c_str(), "r");
+      if(F == 0){
+       // msg << MSG::FATAL
+       //   << "cannot open EMEC sagging parameters file "
+       //   << sag_file
+       //   << endmsg;
+        throw std::runtime_error("LArWheelCalculator: read sagging parameters from file");
+      }
+      int s, w, t, n;
+      double p0, p1, p2, p3, p4;
+      while(!feof(F) &&
+            fscanf(F, "%80d %80d %80d %80d %80le %80le %80le %80le %80le",
+                   &s, &w, &t, &n, &p0, &p1, &p2, &p3, &p4) == 9)
+      {
+        if(s == lwc()->m_AtlasZside &&
+           ((w == 0 && lwc()->m_isInner) || (w == 1 && !lwc()->m_isInner)) &&
+           ((t == 0 && !lwc()->m_isElectrode) || (t == 1 && lwc()->m_isElectrode)) &&
+           (n >= 0 && n < lwc()->m_NumberOfFans))
+        {
+          m_sagging_parameter[n][0] = p0;
+          m_sagging_parameter[n][1] = p1;
+          m_sagging_parameter[n][2] = p2;
+          m_sagging_parameter[n][3] = p3;
+          m_sagging_parameter[n][4] = p4;
+          //msg << MSG::VERBOSE
+          //    << "sagging for " << s << " " << w << " " << t
+          //    << " " << n << ": " << p0 << " " << p1 << " "
+          //    << p2 << " " << p3 << endmsg;
+        }
+      }
+      fclose(F);
+    } else {
+      double a, b, c, d;
+      if(sscanf(sagging_opt_value.c_str(), "%80le %80le %80le %80le", &a, &b, &c, &d) != 4){
+        //msg << MSG::ERROR
+        //    << "wrong value(s) "
+        //    << " for EMEC sagging parameters: "
+        //    << sagging_opt_value << ", defaults are used" << endmsg;
+      } else {
+        for(int j = 0; j < lwc()->m_NumberOfFans; j ++){
+          if(lwc()->m_isInner){
+            m_sagging_parameter[j][1] = a;
+              m_sagging_parameter[j][0] = b * SYSTEM_OF_UNITS::mm;
+          } else {
+            m_sagging_parameter[j][1] = c;
+            m_sagging_parameter[j][0] = d * SYSTEM_OF_UNITS::mm;
+          }
+        }
+      }
+    }
+    //	}
+    //msg << MSG::INFO  << "Sagging parameters        : " << m_sagging_parameter[0][0] << " " << m_sagging_parameter[0][1] << std::endl
+    //    << "Sagging parameters        : " << m_sagging_parameter[1][0] << " " << m_sagging_parameter[1][1] << endmsg;
+  }
+
+  // Represents aproximate, probably underestimate, distance to the
+  // neutral fibre of the vertical fan. Sign of return value means
+  // side of the fan; negative - lower phi.
+  //
+  // Uses m_fan_number to compute sagging.
+  double DistanceCalculatorSaggingOn::DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const {
+    CLHEP::Hep3Vector sagging_corrected( p.x()+get_sagging(p, fan_number), p.y(), p.z() );
+    return parent::DistanceToTheNeutralFibre(sagging_corrected, fan_number);
+  }
+
+  CLHEP::Hep3Vector DistanceCalculatorSaggingOn::NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const {
+    CLHEP::Hep3Vector sagging_corrected( p.x()+get_sagging(p, fan_number), p.y(), p.z() );
+    return parent::NearestPointOnNeutralFibre(sagging_corrected, fan_number);
+  }
+
+  double DistanceCalculatorSaggingOn::AmplitudeOfSurface(const CLHEP::Hep3Vector& p, int side, int fan_number) const {
+    return parent::AmplitudeOfSurface(p, side, fan_number) - get_sagging(p, fan_number);
+  }
+
+
+  // the function uses m_fan_number for phi-dependent sagging computation
+  double DistanceCalculatorSaggingOn::get_sagging(const CLHEP::Hep3Vector &P, int fan_number) const {
+#ifdef HARDDEBUG
+    std::cout << "get_sagging: MFN = " << fan_number << std::endl;
+#endif
+    double dx = P.z() / lwc()->m_HalfWheelThickness - 1.;
+    dx *= dx;
+    dx = 1. - dx;
+    //dx *= SaggingAmplitude * sin(FanStepOnPhi * m_fan_number + ZeroFanPhi);
+    //int n = m_fan_number;
+    //if(n < 0) n += m_NumberOfFans;
+    //n += m_ZeroGapNumber;
+    //if(n >= m_NumberOfFans) n -= m_NumberOfFans;
+    //const std::vector<double>& sp = m_sagging_parameter[n];
+    const std::vector<double>& sp = m_sagging_parameter[fan_number];
+    double R = P.r() / SYSTEM_OF_UNITS::mm;
+    double r = R;
+    double result = sp[0];
+    result += R * sp[1];
+    R *= r;
+    result += R * sp[2];
+    R *= r;
+    result += R * sp[3];
+    R *= r;
+    result += R * sp[4];
+
+#ifdef HARDDEBUG
+    /*printf("get_sagging: (%6.3f, %6.3f, %6.3f) %6.3f; MFN %4d;"
+      "n %3d; sp %6.4f %6.4f; dx %6.3f; %.6f\n", P.x()/mm, P.y()/mm, P.z()/mm,
+      r, m_fan_number, n, sp[0], sp[1], dx, result*dx);*/
+    printf("get_sagging: (%6.3f, %6.3f, %6.3f) %6.3f;"
+           " sp %6.4f %6.4f; dx %6.3f; %.6f\n", P.x()/ SYSTEM_OF_UNITS::mm, P.y()/ SYSTEM_OF_UNITS::mm, P.z()/ SYSTEM_OF_UNITS::mm,
+           r, sp[0], sp[1], dx, result*dx);
+#endif //HARDDEBUG
+
+    return result * dx;
+  }
+
+}
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
new file mode 100644
index 0000000..e10c79d
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
@@ -0,0 +1,52 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef __LArWheelCalculator_Impl_DistanceCalculatorSaggingOn_H__
+#define __LArWheelCalculator_Impl_DistanceCalculatorSaggingOn_H__
+
+#include "DistanceCalculatorSaggingOff.h"
+#include <vector>
+
+class LArWheelCalculator;
+
+namespace LArWheelCalculator_Impl
+{
+
+  /// @class DistanceCalculatorSaggingOn
+  /// @brief Implements details of distance calculation to parts of the
+  /// LAr endcap with sagging taken into account.
+  ///
+  class DistanceCalculatorSaggingOn : public DistanceCalculatorSaggingOff
+  {
+
+    public:
+
+      typedef DistanceCalculatorSaggingOff parent;
+
+      /// Constructor
+      DistanceCalculatorSaggingOn(const std::string& saggingOptions,
+                                  LArWheelCalculator* lwc/*,
+                                  IRDBAccessSvc* rdbAccess,
+                                  const DecodeVersionKey & larVersionKey*/);
+
+      /// @name Geometry methods
+      /// @{
+      virtual double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
+      virtual CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
+      virtual double AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int fan_number) const;
+      /// @}
+
+    private:
+
+      double get_sagging(const CLHEP::Hep3Vector &P, int fan_number) const;
+      void init_sagging_parameters();
+
+      std::vector<std::vector<double> > m_sagging_parameter;
+      std::string m_saggingOptions;
+
+  };
+
+}
+
+#endif // __LArWheelCalculator_Impl_IDistanceCalculatorOn_H__
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx
new file mode 100644
index 0000000..0fb27ac
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx
@@ -0,0 +1,28 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+
+#include "FanCalculatorFactory.h"
+#include "ModuleFanCalculator.h"
+#include "WheelFanCalculator.h"
+
+namespace LArWheelCalculator_Impl
+{
+
+  IFanCalculator* FanCalculatorFactory::Create(bool isSaggingOn, bool isModule,
+                                               LArWheelCalculator* lwc/*,
+                                               IRDBAccessSvc* rdbAccess,
+                                               const DecodeVersionKey& larVersionKey*/)
+  {
+    if (isModule) {
+      return new ModuleFanCalculator(lwc/*, rdbAccess, larVersionKey*/);
+    }
+    if (isSaggingOn) {
+      return new WheelFanCalculator<SaggingOn_t>(lwc/*, rdbAccess, larVersionKey*/);
+    } else {
+      return new WheelFanCalculator<SaggingOff_t>(lwc/*, rdbAccess, larVersionKey*/);
+    }
+  }
+
+}
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h
new file mode 100644
index 0000000..79b207f
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h
@@ -0,0 +1,34 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef __LArWheelCalculator_Impl_FanCalculatorFactory_H__
+#define __LArWheelCalculator_Impl_FanCalculatorFactory_H__
+
+
+#include "IFanCalculator.h"
+//#include "RDBAccessSvc/IRDBAccessSvc.h"
+//#include "GeoModelUtilities/DecodeVersionKey.h"
+
+class LArWheelCalculator;
+
+namespace LArWheelCalculator_Impl
+{
+
+  /// @class FanCalculatorFactory
+  /// @brief A factory for FanCalculators
+  ///
+  /// Calculator creation depends on sagging mode and wheel/module calo.
+  ///
+  class FanCalculatorFactory
+  {
+    public:
+      static IFanCalculator* Create(bool isSaggingOn, bool isModule,
+                                    LArWheelCalculator* lwc/*,
+                                    IRDBAccessSvc* rdbAccess,
+                                    const DecodeVersionKey & larVersionKey*/);
+  };
+
+}
+
+#endif // __LArWheelCalculator_Impl_FanCalculatorFactory_H__
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
new file mode 100644
index 0000000..d45f474
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
@@ -0,0 +1,44 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef __LArWheelCalculator_Impl_IDistanceCalculator_H__
+#define __LArWheelCalculator_Impl_IDistanceCalculator_H__
+
+
+#include "CLHEP/Vector/ThreeVector.h"
+
+namespace LArWheelCalculator_Impl
+{
+
+  /// @class IDistanceCalculator
+  /// Abstract interface for calculator classes that handle distance
+  /// calculation to parts of the LAr endcap.
+  ///
+  class IDistanceCalculator
+  {
+
+    public:
+
+      /// Virtual destructor
+      virtual ~IDistanceCalculator() {};
+
+      /// @name Geometry methods
+      /// @{
+
+      virtual double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p,
+                                               int fan_number) const = 0;
+
+      virtual CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p,
+                                                           int fan_number) const = 0;
+
+      virtual double AmplitudeOfSurface(const CLHEP::Hep3Vector& p, int side,
+                                        int fan_number) const = 0;
+
+      /// @}
+
+  };
+
+}
+
+#endif // __LArWheelCalculator_Impl_IDistanceCalculator_H__
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
new file mode 100644
index 0000000..4cd70f9
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
@@ -0,0 +1,42 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef __LArWheelCalculator_Impl_IFanCalculator_H__
+#define __LArWheelCalculator_Impl_IFanCalculator_H__
+
+
+#include "CLHEP/Vector/ThreeVector.h"
+
+namespace LArWheelCalculator_Impl
+{
+
+  /// @class IFanCalculator
+  /// Abstract interface for fan calculator classes that handle distance
+  /// calculation to parts of the LAr endcap.
+  ///
+  class IFanCalculator
+  {
+
+    public:
+
+      /// Virtual destructor
+      virtual ~IFanCalculator() {};
+
+      /// @name Geometry methods
+      /// @{
+
+      virtual double DistanceToTheNearestFan(CLHEP::Hep3Vector &p,
+                                             int & out_fan_number) const = 0;
+
+      virtual int PhiGapNumberForWheel(int i) const = 0;
+
+      virtual std::pair<int, int> GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const = 0;
+
+      /// @}
+
+  };
+
+}
+
+#endif // __LArWheelCalculator_Impl_IFanCalculator_H__
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
new file mode 100644
index 0000000..04f19f6
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
@@ -0,0 +1,112 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "ModuleFanCalculator.h"
+
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+
+//#include "GaudiKernel/PhysicalConstants.h"
+//using namespace Gaudi::Units;
+// Physical constants
+#include "GeoModelKernel/Units.h"
+#define SYSTEM_OF_UNITS GeoModelKernelUnits
+
+#ifdef HARDDEBUG
+#undef HARDDEBUG
+#endif
+
+namespace LArWheelCalculator_Impl
+{
+
+  //ModuleFanCalculator::ModuleFanCalculator(LArWheelCalculator* lwc,
+  //                                         IRDBAccessSvc* /*rdbAccess*/,
+  //                                         const DecodeVersionKey & /*larVersionKey*/)
+  ModuleFanCalculator::ModuleFanCalculator(LArWheelCalculator* lwc)
+    : m_lwc(lwc)
+  {
+  }
+
+  double ModuleFanCalculator::DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const
+  {
+    int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi_ForDetNeaFan) / lwc()->m_FanStepOnPhi);
+    double angle = lwc()->m_FanStepOnPhi * fan_number + lwc()->m_ZeroFanPhi_ForDetNeaFan;
+#ifdef HARDDEBUG
+    printf("DistanceToTheNearestFan: initial FN %4d\n", fan_number);
+#endif
+    p.rotateZ(-angle);
+    // determine search direction
+    double d0 = lwc()->DistanceToTheNeutralFibre(p, lwc()->adjust_fan_number(fan_number));
+    double d1 = d0;
+    int delta = 1;
+    if(d0 < 0.) delta = -1; // search direction has been determined
+    angle = - lwc()->m_FanStepOnPhi * delta;
+    do { // search:
+      p.rotateZ(angle);
+      fan_number += delta;
+      d1 = lwc()->DistanceToTheNeutralFibre(p, lwc()->adjust_fan_number(fan_number));
+    } while(d0 * d1 > 0.);
+    // if signs of d1 and d0 are different, the point is between current pair
+    if(delta > 0) fan_number --;
+
+    int adj_fan_number = fan_number;
+    if(adj_fan_number < lwc()->m_FirstFan) {
+      p.rotateZ((adj_fan_number - lwc()->m_FirstFan) * lwc()->m_FanStepOnPhi);
+      adj_fan_number = lwc()->m_FirstFan;
+    } else if(adj_fan_number >= lwc()->m_LastFan) {
+      p.rotateZ((adj_fan_number - lwc()->m_LastFan + 1) * lwc()->m_FanStepOnPhi);
+      adj_fan_number = lwc()->m_LastFan - 1;
+    }
+
+    p.rotateZ(-0.5 * angle);
+    out_fan_number = adj_fan_number;
+    return lwc()->DistanceToTheNeutralFibre(p, adj_fan_number);
+  }
+
+  int ModuleFanCalculator::PhiGapNumberForWheel(int i) const {
+    i += lwc()->m_ZeroGapNumber;
+    i -= lwc()->m_LastFan / 2;
+    if(i < 0) i += lwc()->m_NumberOfFans;
+    if(i >= lwc()->m_NumberOfFans) i -= lwc()->m_NumberOfFans;
+    return i;
+  }
+
+  std::pair<int, int> ModuleFanCalculator::GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const
+  {
+    // Note: this object was changed from static to local for thread-safety.
+    // If this is found to be too costly we can re-evaluate.
+    CLHEP::Hep3Vector p1 = p;
+
+    int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi) / lwc()->m_FanStepOnPhi);
+
+    double angle = lwc()->m_FanStepOnPhi * fan_number + lwc()->m_ZeroFanPhi;
+    p1.rotateZ(-angle);
+
+    double d0 = lwc()->DistanceToTheNeutralFibre(p1, lwc()->adjust_fan_number(fan_number));
+    double d1 = d0;
+
+    int delta = 1;
+    if(d0 < 0.) delta = -1;
+    angle = - lwc()->m_FanStepOnPhi * delta;
+    do {
+      p1.rotateZ(angle);
+      fan_number += delta;
+      d1 = lwc()->DistanceToTheNeutralFibre(p1, lwc()->adjust_fan_number(fan_number));
+    } while(d0 * d1 > 0.);
+    if(delta > 0) fan_number --;
+    if(!lwc()->m_isElectrode) fan_number ++;
+
+    int adj_fan_number = fan_number;
+    if(adj_fan_number < lwc()->m_FirstFan) adj_fan_number = lwc()->m_FirstFan - 1;
+    else if(adj_fan_number > lwc()->m_LastFan) adj_fan_number = lwc()->m_LastFan;
+
+    p1.rotateZ(-0.5 * angle);
+    double dd = lwc()->DistanceToTheNeutralFibre(p1, adj_fan_number);
+    int side = dd < 0.? -1: 1;
+#ifdef HARDDEBUG
+    printf("GetPhiGapAndSide: MFN %4d\n", adj_fan_number);
+#endif
+    return std::pair<int, int>(adj_fan_number, side);
+  }
+
+}
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
new file mode 100644
index 0000000..327c70c
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
@@ -0,0 +1,39 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef __LArWheelCalculator_Impl_ModuleFanCalculator_H__
+#define __LArWheelCalculator_Impl_ModuleFanCalculator_H__
+
+#include "IFanCalculator.h"
+//#include "RDBAccessSvc/IRDBAccessSvc.h"
+//#include "GeoModelUtilities/DecodeVersionKey.h"
+
+class LArWheelCalculator;
+
+namespace LArWheelCalculator_Impl
+{
+
+  /// This is an interface of distance calculation to parts of the LAr endcap.
+  class ModuleFanCalculator : public IFanCalculator
+  {
+    public:
+      ModuleFanCalculator(LArWheelCalculator* lwc/*,
+                          IRDBAccessSvc* rdbAccess,
+                          const DecodeVersionKey & larVersionKey*/);
+
+      // geometry methods:
+      virtual double DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const;
+      virtual int PhiGapNumberForWheel(int i) const;
+      virtual std::pair<int, int> GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const;
+
+      inline const LArWheelCalculator *lwc() const { return m_lwc; };
+
+    private:
+      LArWheelCalculator* m_lwc;
+
+  };
+
+}
+
+#endif // __LArWheelCalculator_Impl_ModuleFanCalculator_H__
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
new file mode 100644
index 0000000..98632d2
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
@@ -0,0 +1,273 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef LARWHEELCALCULATOR_IMPL_WHEELFANCALCULATOR_H
+#define LARWHEELCALCULATOR_IMPL_WHEELFANCALCULATOR_H
+
+#include "IFanCalculator.h"
+//#include "RDBAccessSvc/IRDBAccessSvc.h"
+//#include "GeoModelUtilities/DecodeVersionKey.h"
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+
+//#include "GaudiKernel/PhysicalConstants.h"
+// Physical constants
+#include "GeoModelKernel/Units.h"
+#define SYSTEM_OF_UNITS GeoModelKernelUnits
+
+#ifdef HARDDEBUG
+#undef HARDDEBUG
+#endif
+
+namespace LArWheelCalculator_Impl
+{
+
+  // mode marker classes
+  class SaggingOn_t {};
+  class SaggingOff_t {};
+
+  template <typename SaggingType>
+  class DistanceToTheNeutralFibre_OfFan {};
+
+  template<>
+  class DistanceToTheNeutralFibre_OfFan<SaggingOn_t>
+  {
+    public:
+      static inline double calculate(const LArWheelCalculator* lwc, int fan_number,     CLHEP::Hep3Vector &p) {
+        //lwc->set_m_fan_number(fan_number);
+        return lwc->DistanceToTheNeutralFibre(p, lwc->adjust_fan_number(fan_number));
+      }
+  };
+
+  template<> class DistanceToTheNeutralFibre_OfFan<SaggingOff_t>
+  {
+    public:
+      static inline double calculate(const LArWheelCalculator* lwc, int /*fan_number*/, CLHEP::Hep3Vector &p) {
+        // saggingOff distance calculations does not use fan_number, use arbitrary recognisible magic number
+        return lwc->DistanceToTheNeutralFibre(p, -531135);
+      }
+  };
+
+  enum FanSearchDirection_t {
+    FORWARD = 1,    // delta =  1
+    BACKWARD = -1   // delta = -1
+  };
+
+
+  template <typename SaggingType, FanSearchDirection_t dir >
+  class StepFan {};
+
+
+  template <FanSearchDirection_t dir >
+  class StepFan<SaggingOff_t, dir>
+  {
+    public:
+      static inline void next(int &/*fan_number*/) {}
+      static inline void adjust(int &/*fan_number*/) {}
+  };
+
+
+  template <>
+  class StepFan<SaggingOn_t, FORWARD>
+  {
+    public:
+      static inline void next(int &fan_number) {
+        fan_number++;
+      }
+      static inline void adjust(int &fan_number) {
+        fan_number--;
+      }
+  };
+
+  template <>
+  class StepFan<SaggingOn_t, BACKWARD>
+  {
+    public:
+      static inline void next(int &fan_number) {
+        fan_number--;
+      }
+      static inline void adjust(int &/*fan_number*/) {}
+  };
+
+  template <FanSearchDirection_t dir>
+  class DoSearch {};
+
+  template <>
+  class DoSearch<FORWARD>
+  {
+    public:
+      template <typename T >
+        static inline bool pred(T val) {
+          return (val > 0.);
+        }
+  };
+
+  template <>
+  class DoSearch<BACKWARD>
+  {
+    public:
+      template <typename T >
+        static inline bool pred(T val) {
+          return (val < 0.);
+        }
+  };
+
+  /// @todo Needs documentation
+  template <typename SaggingType, FanSearchDirection_t dir, class NFDistance >
+  inline void rotate_to_nearest_fan(const LArWheelCalculator* lwc, int &fan_number,
+                                    const double angle, CLHEP::Hep3Vector &p)
+  {
+    p.rotateZ(angle);
+    StepFan<SaggingType, dir>::next(fan_number);
+    //fan_number += delta;
+    double d1 = NFDistance::calculate(lwc, fan_number, p);
+
+    //while(d0 * d1 > 0.) -> dir*d1 > 0 -> FORWARD: d1 > 0., BACKWARD: d1 < 0.
+
+    while ( DoSearch<dir>::pred(d1) ) { // search:
+      p.rotateZ(angle);
+      StepFan<SaggingType, dir>::next(fan_number);
+      //fan_number += delta;
+
+      d1 = NFDistance::calculate(lwc, fan_number, p);
+      //lwc()->set_m_fan_number(fan_number);
+      //d1 = lwc()->DistanceToTheNeutralFibre(p);
+
+    }
+    // if signs of d1 and d0 are different, the point is between current pair
+    StepFan<SaggingType, dir>::adjust(fan_number);
+    //if(delta > 0) fan_number --;
+  }
+
+
+  /// LAr wheel fan calculator, templated for sagging settings.
+  ///
+  template <typename SaggingType>
+  class WheelFanCalculator : public IFanCalculator
+  {
+    public:
+      //WheelFanCalculator(LArWheelCalculator* lwc, IRDBAccessSvc* /*rdbAccess*/,
+      //                   const DecodeVersionKey & /*larVersionKey*/)
+      WheelFanCalculator(LArWheelCalculator* lwc)
+        : m_lwc(lwc)
+      {
+      }
+
+      /// @name Geometry methods
+      /// @{
+
+      virtual double DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const
+      {
+        //using Gaudi::Units::halfpi;
+          int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi_ForDetNeaFan) / lwc()->m_FanStepOnPhi);
+        const double angle = lwc()->m_FanStepOnPhi * fan_number + lwc()->m_ZeroFanPhi_ForDetNeaFan;
+#ifdef HARDDEBUG
+        printf("DistanceToTheNearestFan: initial FN %4d\n", fan_number);
+#endif
+        p.rotateZ(-angle);
+        // determine search direction
+        typedef DistanceToTheNeutralFibre_OfFan<SaggingType> NFDistance;
+
+        const double d0 = NFDistance::calculate(lwc(), fan_number, p);
+        //lwc()->set_m_fan_number(fan_number);
+        //double d0 = lwc()->DistanceToTheNeutralFibre(p);
+
+        const int delta = (d0 < 0.) ? -1 : 1;
+        //int delta = 1;          // delta = signof(d0)
+        //if(d0 < 0.) delta = -1; // search direction has been determined
+
+        const double step_angle = - lwc()->m_FanStepOnPhi * delta;
+
+        if (delta > 0) { // forward search
+          rotate_to_nearest_fan< SaggingType, FORWARD, NFDistance >( lwc(), fan_number, step_angle, p);
+        } else { // backward search
+          rotate_to_nearest_fan< SaggingType, BACKWARD, NFDistance >( lwc(), fan_number, step_angle, p);
+        }
+
+        /*
+        double d1 = d0;
+        do { // search:
+          p.rotateZ(angle);
+          fan_number += delta;
+
+          d1 = NFDistance::calculate(lwc(), fan_number, p);
+          //lwc()->set_m_fan_number(fan_number);
+          //d1 = lwc()->DistanceToTheNeutralFibre(p);
+
+#ifdef HARDDEBUG
+          printf("DistanceToTheNearestFan: step FN %4d %4d\n", fan_number, lwc()->m_fan_number);
+#endif
+        } while(d0 * d1 > 0.);
+        // if signs of d1 and d0 are different, the point is between current pair
+        if(delta > 0) fan_number --;
+        */
+
+        p.rotateZ(-0.5 * step_angle);
+#ifdef HARDDEBUG
+        printf("DistanceToTheNearestFan: final FN %4d\n", fan_number);
+#endif
+
+        out_fan_number = lwc()->adjust_fan_number(fan_number);
+        return lwc()->DistanceToTheNeutralFibre(p, out_fan_number);
+      }
+
+      virtual int PhiGapNumberForWheel(int i) const
+      {
+        return i;
+      }
+
+      virtual std::pair<int, int> GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const
+      {
+        //using Gaudi::Units::halfpi;
+        CLHEP::Hep3Vector p1 = p;
+
+        int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi) / lwc()->m_FanStepOnPhi);
+        const double angle = lwc()->m_FanStepOnPhi * fan_number + lwc()->m_ZeroFanPhi;
+        p1.rotateZ(-angle);
+
+        typedef DistanceToTheNeutralFibre_OfFan<SaggingType> NFDistance;
+
+        const double d0 = NFDistance::calculate(lwc(), fan_number, p1);
+        //lwc()->set_m_fan_number(fan_number);
+        //double d0 = lwc()->DistanceToTheNeutralFibre(p1);
+
+        double d1 = d0;
+
+        const int delta = (d0 < 0.) ? -1 : 1;
+        //int delta = 1;
+        //if(d0 < 0.) delta = -1;
+        const double step_angle = - lwc()->m_FanStepOnPhi * delta;
+        do {
+          p1.rotateZ(step_angle);
+          fan_number += delta;
+          d1 = NFDistance::calculate(lwc(), fan_number, p1);
+          //lwc()->set_m_fan_number(fan_number);
+          //d1 = lwc()->DistanceToTheNeutralFibre(p1);
+        } while(d0 * d1 > 0.);
+
+        if(delta > 0) fan_number --;
+        if(!lwc()->m_isElectrode) fan_number ++;
+
+        p1.rotateZ(-0.5 * step_angle);
+
+        const int a_fan_number = lwc()->adjust_fan_number(fan_number);
+        double dd = lwc()->DistanceToTheNeutralFibre(p1, a_fan_number);
+        int side = dd < 0.? -1: 1;
+#ifdef HARDDEBUG
+        printf("GetPhiGapAndSide: MFN %4d\n", a_fan_number);
+#endif
+        return std::pair<int, int>(a_fan_number, side);
+      }
+
+      /// @}
+
+      inline const LArWheelCalculator *lwc() const { return m_lwc; };
+
+    private:
+      LArWheelCalculator* m_lwc;
+
+  };
+
+}
+
+#endif // LARWHEELCALCULATOR_IMPL_WHEELFANCALCULATOR_H
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
new file mode 100644
index 0000000..7a97993
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
@@ -0,0 +1,247 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "GeoSpecialShapes/LArWheelCalculator.h"
+#include "GeoSpecialShapes/sincos.h"
+//#include "CLHEP/Units/SystemOfUnits.h"
+
+/// TO DO        : Dependencies from fROOT - gone
+/// TO BE TESTED : RowVectorXd equivalent of TVectorD
+///                MatrixXd    equivalent of TMatrixD
+
+//#include "TMath.h"
+//#include "TMatrixD.h"
+//#include "TVectorD.h"
+//#include "TMatrixDLazy.h"
+//#include "TDecompLU.h"
+//#include "TDecompSVD.h"
+
+#include <Eigen/Dense>
+#include <vector>
+#include <sys/time.h>
+#include <iostream>
+#include <iomanip>
+#include <math.h>
+#include <mutex>
+
+// Physical constants
+#include "GeoModelKernel/Units.h"
+#define SYSTEM_OF_UNITS GeoModelKernelUnits
+#define DEBUGPRINT 0
+
+using namespace Eigen;
+
+//template<typename T>
+//std::ostream & operator << (std::ostream & ostr, const TVectorT<T> & v)
+//{
+//  std::ios_base::fmtflags save_flags(ostr.flags());
+//  ostr << '[';
+//  ostr << std::scientific;
+//  for(int idx=v.GetLwb();idx<v.GetUpb();idx++) {
+//    ostr << v[idx] << ", ";
+//  }
+//  ostr << v[v.GetUpb()];
+//  ostr << ']';
+//  ostr.flags(save_flags);
+//  return ostr;
+//}
+
+
+// find best approximation of y values using linear combination of basis functions in bf
+
+//static std::vector<double>
+static RowVectorXd
+findLinearApproximation(
+    const int dataLen, const int nBasisFuntions,
+    const RowVectorXd &y, const MatrixXd & bf)
+{
+  //TMatrixDSym A(nBasisFuntions);
+  MatrixXd A (nBasisFuntions, nBasisFuntions);
+  //TVectorD vY(nBasisFuntions);
+  RowVectorXd vY(nBasisFuntions);
+  
+  for(int j = 0; j < nBasisFuntions; ++ j){
+    for(int k = 0; k < nBasisFuntions; ++ k){
+      double Ajk = 0.0;
+      for(int i = 0; i < dataLen; ++ i){
+        Ajk += bf(j, i) * bf(k, i);
+      }
+      A(j, k) = Ajk;
+    }
+  }
+
+  for(int k = 0; k < nBasisFuntions; ++ k){
+    double vYk = 0.0;
+    for(int i = 0; i < dataLen; ++ i){
+      vYk += y[i]*bf(k,i);
+    }
+    vY[k] = vYk;
+  }
+    
+  //TMatrixDSym Ainv(A);
+  MatrixXd Ainv(A);
+  //Ainv.Invert();
+  Ainv.inverse();
+  return Ainv*vY;
+}
+
+void LArWheelCalculator::fill_sincos_parameterization()
+{
+  const int nrPolyDegree = LARWC_SINCOS_POLY;
+#if LARWC_SINCOS_POLY > 4 && DEBUGPRINT
+  std::cout << "LARWC_SINCOS_POLY: " << LARWC_SINCOS_POLY << std::endl;
+#endif
+  const int nBasisFunctions = nrPolyDegree + 1;
+
+  // We compute the polynomial approximations once per side, and store them in
+  // the static variables below for reuse in successive calculator instances.
+  // For multi-threading, then, this code needs to be mutex locked.
+  // FIXME: this could done in a cleaner way.
+  static std::mutex fillParamMutex;
+  std::lock_guard<std::mutex> lock(fillParamMutex);
+
+  static bool filled[2] = { false, false };
+  static double sin_parametrization[2][nBasisFunctions];
+  static double cos_parametrization[2][nBasisFunctions];
+
+  // Reuse the computation if already performed
+  size_t S = m_isInner? 0: 1;
+  if(filled[S]){
+    for(int i = 0; i < nBasisFunctions; ++ i){
+      m_sin_parametrization[i] = sin_parametrization[S][i];
+      m_cos_parametrization[i] = cos_parametrization[S][i];
+    }
+    return;
+  }
+
+  //const Double_t Rmin = m_isInner? 290.*mm: 600.*mm;
+  //const Double_t Rmax = m_isInner? 710.*mm: 2050.*mm;
+  const double Rmin = m_isInner? 250.*SYSTEM_OF_UNITS::mm: 560.*SYSTEM_OF_UNITS::mm;
+  const double Rmax = m_isInner? 750.*SYSTEM_OF_UNITS::mm: 2090.*SYSTEM_OF_UNITS::mm;
+  //const Double_t Rmin = m_isInner? 220.*mm: 530.*mm;
+  //const Double_t Rmax = m_isInner? 780.*mm: 2120.*mm;
+  const double Rstep = 1.*SYSTEM_OF_UNITS::mm;
+  const int nrPoints = (Rmax - Rmin) * (1./Rstep);
+  const int dataLen = nrPoints + 1;
+  
+//  TVectorD x(dataLen);  // angle points
+//  TVectorD ysin(dataLen);  // to be approximated function values at angle points - sin
+//  TVectorD ycos(dataLen);  // to be approximated function values at angle points - cos
+  RowVectorXd x(dataLen);    // angle points
+  RowVectorXd ysin(dataLen); // to be approximated function values at angle points - sin
+  RowVectorXd ycos(dataLen); // to be approximated function values at angle points - cos
+    
+  //TMatrixD bf(nBasisFunctions, dataLen); // Matrix of values of basis functions at angle points
+  MatrixXd bf (nBasisFunctions, dataLen);
+
+  for(int i = 0; i < dataLen; ++ i){
+    const double a = Rmin + i * Rstep;
+    x[i] = a;
+    sincos scalpha(parameterized_slant_angle(a));
+    ysin[i] = scalpha.sn;
+    ycos[i] = scalpha.cs;
+    for(int n = 0; n < nBasisFunctions; ++ n) {
+      bf(n, i) = pow(a, n);
+    }
+  }
+
+  //std::vector<double>
+    RowVectorXd
+ params_sin =
+    findLinearApproximation(dataLen, nBasisFunctions, ysin, bf);
+  //std::vector<double>
+    RowVectorXd
+ params_cos =
+    findLinearApproximation(dataLen, nBasisFunctions, ycos, bf);
+
+  for(int i = 0; i < nBasisFunctions; ++ i){
+    m_sin_parametrization[i] = params_sin[i];
+    m_cos_parametrization[i] = params_cos[i];
+    sin_parametrization[S][i] = params_sin[i];
+    cos_parametrization[S][i] = params_cos[i];
+  }
+
+  filled[S] = true;
+
+  // FIXME: nothing below is needed unless debug printing
+
+#if DEBUGPRINT
+  std::cout << "sin params:" << params_sin << std::endl;
+  std::cout << "cos params:" << params_cos << std::endl;
+
+  double dsinr = 0., dcosr = 0.;
+  double dtrigr = 0;
+#endif
+
+  double dsin = 0., dcos = 0.;
+  double dtrig = 0.;
+  for(double r = Rmin + 40.; r < Rmax - 40.; r += Rstep / 10.){
+    sincos scalpha(parameterized_slant_angle(r));
+    double sin_a, cos_a;
+    parameterized_sincos(r, sin_a, cos_a);
+    double ds = fabs(scalpha.sn - sin_a);
+    if(ds > dsin){
+      dsin = ds;
+#if DEBUGPRINT
+      dsinr = r;
+#endif
+    }
+    double dc = fabs(scalpha.cs - cos_a);
+    if(dc > dcos){
+      dcos = dc;
+#if DEBUGPRINT
+      dcosr = r;
+#endif
+    }
+    double dt = fabs(sin_a*sin_a + cos_a*cos_a - 1.);
+    if(dt > dtrig){
+      dtrig = dt;
+#if DEBUGPRINT
+      dtrigr = r;
+#endif
+    }
+  }
+
+#if DEBUGPRINT
+  std::cout << "Max. difference: " << std::endl
+            << "\tsin: " << dsin << " at " << dsinr << std::endl
+            << "\tcos: " << dcos << " at " << dcosr << std::endl
+            << "\tsin^2+cos^2: " << dtrig << " at " << dtrigr << std::endl;
+#endif
+
+#ifdef HARDDEBUG
+  std::vector<double> y_test(dataLen);
+  const int nIter=10000;
+  std::cout << "Perfomance test started, " << nIter << " iterations" << std::endl;
+
+  double y_testsin[dataLen];
+  double y_testcos[dataLen];
+  struct timeval tvsincos_start, tvsincos_stop;
+  gettimeofday(&tvsincos_start, 0);
+  for(int iIter=0;iIter<nIter;iIter++) {
+    for(int i=0;i<dataLen;i++) {
+      sincos(parameterized_slant_angle(x[i]), &y_testsin[i], &y_testcos[i]);
+    }
+  }
+  gettimeofday(&tvsincos_stop, 0);
+  double timeSinCos=(tvsincos_stop.tv_sec-tvsincos_start.tv_sec + 1E-6*(tvsincos_stop.tv_usec-tvsincos_start.tv_usec))/nIter;
+
+  std::cout.unsetf ( std::ios::fixed | std::ios::scientific );
+  std::cout << "Time to fill 2x" << dataLen << " elements using sincos function: " << timeSinCos << std::endl;
+
+  struct timeval tvpoly_start, tvpoly_stop;
+  gettimeofday(&tvpoly_start, 0);
+  for(int iIter=0;iIter<nIter;iIter++) {
+    for(int i=0;i<dataLen;i++) {
+      parameterized_sincos(x[i], y_testsin[i], y_testcos[i]);
+    }
+  }
+  gettimeofday(&tvpoly_stop, 0);
+  double timePoly=(tvpoly_stop.tv_sec - tvpoly_start.tv_sec + 1E-6*(tvpoly_stop.tv_usec - tvpoly_start.tv_usec))/nIter;
+  std::cout << "Time to fill 2x" << dataLen << " elements using approximation sin&cos: " << timePoly << std::endl;
+  std::cout.unsetf ( std::ios::fixed | std::ios::scientific );
+  std::cout << "Approximation is " << timeSinCos/timePoly << " faster " << std::endl;
+#endif
+
+}
diff --git a/cmake/GeoModelIOPackaging.cmake b/cmake/GeoModelIOPackaging.cmake
index 34a49ff..54f80a3 100644
--- a/cmake/GeoModelIOPackaging.cmake
+++ b/cmake/GeoModelIOPackaging.cmake
@@ -6,7 +6,7 @@ set( CPACK_PACKAGE_DESCRIPTION_SUMMARY
 set( CPACK_PACKAGE_DESCRIPTION
    "Geometry model I/O libraries" )
 set( CPACK_PACKAGE_VERSION "${PROJECT_VERSION}" )
-set( CPACK_PACKAGE_CONTACT "atlas-sw-core@cern.ch" )
+set( CPACK_PACKAGE_CONTACT "geomodel-developers@cern.ch" )
 
 # Set up the readme and license for the package.
 set( CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE )
-- 
GitLab


From 5f777ecce9dec9c95cc27f773dd0dc7332dd66b9 Mon Sep 17 00:00:00 2001
From: Riccardo Maria Bianchi <riccardo.maria.bianchi@cern.ch>
Date: Thu, 6 Feb 2020 18:06:53 +0100
Subject: [PATCH 2/7] CI: add CLHEP dependency (temporary, for SpecialShapes)

---
 .gitlab-ci.yml | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f3b1587..835ed92 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,6 @@
 stages:
   - dependencies
+  - dependencies-CLHEP
   - build
 
 before_script:
@@ -20,14 +21,31 @@ geomodelcore-build:
     - cmake -DCMAKE_INSTALL_PREFIX=../install ../GeoModelCore
     - make -j$(nproc)
     - make install
-  artifacts: 
+  artifacts:
     paths:
       - install
-    
-    
+
+# TODO: this is only needed by SpecialShapes
+# Remove it when SpecialShapes will be migrated to another package
+CLHEP-build:
+  stage: dependencies-CLHEP
+  script:
+    - pwd; ls
+    - git clone https://gitlab.cern.ch/CLHEP/CLHEP.git
+    - cd CLHEP
+    - git checkout CLHEP_2_4_1_0
+    - cd ../ ; mkdir build_CLHEP
+    - cd build_CLHEP
+    - cmake -DCMAKE_INSTALL_PREFIX=../install ../CLHEP
+    - make -j$(nproc)
+    - make install
+  artifacts:
+    paths:
+      - install
+
 .build_template: &build_template
   stage: build
-  tags: 
+  tags:
     - cvmfs
   script:
     - echo "PWD; LS"
-- 
GitLab


From b74b0bc4ed739ad1157da37baaf5c90a11030535 Mon Sep 17 00:00:00 2001
From: Riccardo Maria Bianchi <riccardo.maria.bianchi@cern.ch>
Date: Thu, 6 Feb 2020 18:07:41 +0100
Subject: [PATCH 3/7] SpecialShapes: fix crash from ROOT->Eigen conversion,
 plus add Read

---
 GeoModelRead/src/ReadGeoModel.cpp                |  1 +
 GeoSpecialShapes/CMakeLists.txt                  |  4 ++--
 GeoSpecialShapes/src/LArCustomShape.cxx          |  9 ++++++++-
 .../src/LArWheelCalculator_Impl/sincos_poly.cxx  | 16 +++++++++++-----
 4 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/GeoModelRead/src/ReadGeoModel.cpp b/GeoModelRead/src/ReadGeoModel.cpp
index ed97e24..e54753d 100644
--- a/GeoModelRead/src/ReadGeoModel.cpp
+++ b/GeoModelRead/src/ReadGeoModel.cpp
@@ -1383,6 +1383,7 @@ GeoShape* ReadGeoModel::buildShape(QString shapeId)
 			QString varValue = vars[1];
 			if (varName == "name") name = varValue.toStdString();
 		}
+    
     return new LArCustomShape(name);
   }
 	else {
diff --git a/GeoSpecialShapes/CMakeLists.txt b/GeoSpecialShapes/CMakeLists.txt
index 6b72d31..258e2f7 100644
--- a/GeoSpecialShapes/CMakeLists.txt
+++ b/GeoSpecialShapes/CMakeLists.txt
@@ -16,8 +16,8 @@ file( GLOB HEADERS GeoSpecialShapes/*.h src/LArWheelCalculator_Impl/*.h)
 
 # Set the library.
 add_library( GeoSpecialShapes SHARED ${HEADERS} ${SOURCES} )
-target_link_libraries( GeoSpecialShapes PUBLIC ${CLHEP_LIBRARIES}
-PRIVATE GeoModelCore::GeoModelKernel )
+target_link_libraries( GeoSpecialShapes PUBLIC
+PRIVATE GeoModelCore::GeoModelKernel ${CLHEP_LIBRARIES} )
 target_include_directories( GeoSpecialShapes PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
    $<INSTALL_INTERFACE:include> )
diff --git a/GeoSpecialShapes/src/LArCustomShape.cxx b/GeoSpecialShapes/src/LArCustomShape.cxx
index bf29bf8..86af121 100644
--- a/GeoSpecialShapes/src/LArCustomShape.cxx
+++ b/GeoSpecialShapes/src/LArCustomShape.cxx
@@ -100,6 +100,8 @@ LArCustomShape::LArCustomShape(const std::string& a_shapeName)
     //#endif // XAOD_STANDALONE
 {
 //#ifdef XAOD_STANDALONE
+    std::cout << "LArCustomShape::LArCustomShape()" << std::endl;
+    std::cout << "Constructor -- Creating the calculator..." << std::endl;
     if ( createCalculator( s_calculatorTypes.at(a_shapeName) ) == 1 ) { // map.at throws std::out_of_range exception on unknown shape name
             std::string error = std::string("Can't create LArWheelCalculator for name ") + a_shapeName + " in LArCustomShape constructor";
             throw std::runtime_error(error);
@@ -131,7 +133,10 @@ LArCustomShape::~LArCustomShape()
 
 //#if defined XAOD_STANDALONE
 int LArCustomShape::createCalculator(const CalcDef_t & cdef) { // LArG4::LArWheelCalculator_t wheelType, int zside
-	LArG4::LArWheelCalculator_t wheelType = cdef.first;
+
+  std::cout << "LArCustomShape::createCalculator()" << std::endl;
+
+  LArG4::LArWheelCalculator_t wheelType = cdef.first;
 	int zside = cdef.second;
 
 	m_calculator = new LArWheelCalculator(wheelType, zside);
@@ -142,6 +147,8 @@ int LArCustomShape::createCalculator(const CalcDef_t & cdef) { // LArG4::LArWhee
         return 1;
     else
         return 0;
+  std::cout << "createCalculator() - done." << std::endl;
+
 }
 //#else // XAOD_STANDALONE
 //StatusCode LArCustomShape::createCalculator(const CalcDef_t & cdef) { // LArG4::LArWheelCalculator_t wheelType, int zside
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
index 7a97993..8708c0f 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
@@ -59,8 +59,8 @@ findLinearApproximation(
   //TMatrixDSym A(nBasisFuntions);
   MatrixXd A (nBasisFuntions, nBasisFuntions);
   //TVectorD vY(nBasisFuntions);
-  RowVectorXd vY(nBasisFuntions);
-  
+  VectorXd vY(nBasisFuntions);
+
   for(int j = 0; j < nBasisFuntions; ++ j){
     for(int k = 0; k < nBasisFuntions; ++ k){
       double Ajk = 0.0;
@@ -78,11 +78,17 @@ findLinearApproximation(
     }
     vY[k] = vYk;
   }
-    
+
   //TMatrixDSym Ainv(A);
   MatrixXd Ainv(A);
   //Ainv.Invert();
   Ainv.inverse();
+
+  // std::cout << "Ainv: " << std::endl;
+  // std::cout << Ainv << std::endl;
+  // std::cout << "vY: " << std::endl;
+  // std::cout << vY << std::endl;
+
   return Ainv*vY;
 }
 
@@ -124,14 +130,14 @@ void LArWheelCalculator::fill_sincos_parameterization()
   const double Rstep = 1.*SYSTEM_OF_UNITS::mm;
   const int nrPoints = (Rmax - Rmin) * (1./Rstep);
   const int dataLen = nrPoints + 1;
-  
+
 //  TVectorD x(dataLen);  // angle points
 //  TVectorD ysin(dataLen);  // to be approximated function values at angle points - sin
 //  TVectorD ycos(dataLen);  // to be approximated function values at angle points - cos
   RowVectorXd x(dataLen);    // angle points
   RowVectorXd ysin(dataLen); // to be approximated function values at angle points - sin
   RowVectorXd ycos(dataLen); // to be approximated function values at angle points - cos
-    
+
   //TMatrixD bf(nBasisFunctions, dataLen); // Matrix of values of basis functions at angle points
   MatrixXd bf (nBasisFunctions, dataLen);
 
-- 
GitLab


From d7f1b6851ae1381dc7cca19e5992f57f8b128732 Mon Sep 17 00:00:00 2001
From: Marilena Bandieramonte <marilena.bandieramonte@cern.ch>
Date: Thu, 6 Feb 2020 19:04:15 +0100
Subject: [PATCH 4/7] Fix values of constant parameters in LArWheelCalculator

---
 GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
index c89c87e..3a85bd8 100644
--- a/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
@@ -151,10 +151,10 @@ class LArWheelCalculator
     const double m_dMechFocaltoWRP      = 369.1 * SYSTEM_OF_UNITS::cm;   //cm
     const double m_dElecFocaltoWRP      = 368.9 * SYSTEM_OF_UNITS::cm;   //cm
     const double m_rOuterCutoff         = 203.4 * SYSTEM_OF_UNITS::cm;   //cm
-    const double m_eta_hi               = 3.2   * SYSTEM_OF_UNITS::cm;   //cm 3.2 ----> (1 is 2.5)
-    const double m_eta_mid              = 2.5   * SYSTEM_OF_UNITS::cm;   //cm 2.5 ----> (1 is 1.375)
-    const double m_eta_low              = 1.375   * SYSTEM_OF_UNITS::cm;   //cm 2.5 ----> (1 is 1.375)
-    const double m_zShift               = 4.5   * SYSTEM_OF_UNITS::cm;   //cm
+    const double m_eta_hi               = 3.2 ;  
+    const double m_eta_mid              = 2.5 ; 
+    const double m_eta_low              = 1.375;
+    const double m_zShift               = 4     * SYSTEM_OF_UNITS::cm;   //cm
     
     const double m_WheelThickness = m_ActiveLength + 2.*m_StraightStartSection;
     const double m_HalfWheelThickness = m_WheelThickness * 0.5;
-- 
GitLab


From 18c309d1afa30d263a7f7b374f8eab3612d204f0 Mon Sep 17 00:00:00 2001
From: Marilena Bandieramonte <marilena.bandieramonte@cern.ch>
Date: Thu, 6 Feb 2020 19:49:52 +0100
Subject: [PATCH 5/7] Re-introduce CxxUtils namespace to fix the failure of the
 CI pipeline related to slc6 and cc7 builds

---
 GeoSpecialShapes/GeoSpecialShapes/sincos.h                   | 4 ++--
 GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/GeoSpecialShapes/GeoSpecialShapes/sincos.h b/GeoSpecialShapes/GeoSpecialShapes/sincos.h
index 4f51983..068400c 100644
--- a/GeoSpecialShapes/GeoSpecialShapes/sincos.h
+++ b/GeoSpecialShapes/GeoSpecialShapes/sincos.h
@@ -21,7 +21,7 @@
 #include <cmath>
 
 
-//namespace CxxUtils {
+namespace CxxUtils {
 
 
 /**
@@ -103,7 +103,7 @@ struct sincos
 };
 
 
-//} // namespace CxxUtils
+} // namespace CxxUtils
 
 
 #endif //not SINCOS_H
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
index 8708c0f..8d47d28 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
@@ -144,7 +144,7 @@ void LArWheelCalculator::fill_sincos_parameterization()
   for(int i = 0; i < dataLen; ++ i){
     const double a = Rmin + i * Rstep;
     x[i] = a;
-    sincos scalpha(parameterized_slant_angle(a));
+    CxxUtils::sincos scalpha(parameterized_slant_angle(a));
     ysin[i] = scalpha.sn;
     ycos[i] = scalpha.cs;
     for(int n = 0; n < nBasisFunctions; ++ n) {
@@ -183,7 +183,7 @@ void LArWheelCalculator::fill_sincos_parameterization()
   double dsin = 0., dcos = 0.;
   double dtrig = 0.;
   for(double r = Rmin + 40.; r < Rmax - 40.; r += Rstep / 10.){
-    sincos scalpha(parameterized_slant_angle(r));
+    CxxUtils::sincos scalpha(parameterized_slant_angle(r));
     double sin_a, cos_a;
     parameterized_sincos(r, sin_a, cos_a);
     double ds = fabs(scalpha.sn - sin_a);
-- 
GitLab


From 36b8314a3a677e43e45de400327dd955366fd74b Mon Sep 17 00:00:00 2001
From: Marilena Bandieramonte <marilena.bandieramonte@cern.ch>
Date: Fri, 7 Feb 2020 01:30:00 +0100
Subject: [PATCH 6/7] Remove CLHEP dependency

---
 GeoSpecialShapes/CMakeLists.txt               |   2 +-
 .../GeoSpecialShapes/LArWheelCalculator.h     |  17 +--
 .../src/LArWheelCalculatorGeometry.cxx        |  16 ++-
 .../DistanceCalculatorSaggingOff.cxx          | 131 +++++++++++++-----
 .../DistanceCalculatorSaggingOff.h            |  11 +-
 .../DistanceCalculatorSaggingOn.cxx           |  19 +--
 .../DistanceCalculatorSaggingOn.h             |   9 +-
 .../IDistanceCalculator.h                     |   9 +-
 .../LArWheelCalculator_Impl/IFanCalculator.h  |   7 +-
 .../ModuleFanCalculator.cxx                   |  44 ++++--
 .../ModuleFanCalculator.h                     |   5 +-
 .../WheelFanCalculator.h                      |  43 +++---
 12 files changed, 205 insertions(+), 108 deletions(-)

diff --git a/GeoSpecialShapes/CMakeLists.txt b/GeoSpecialShapes/CMakeLists.txt
index 258e2f7..5811a69 100644
--- a/GeoSpecialShapes/CMakeLists.txt
+++ b/GeoSpecialShapes/CMakeLists.txt
@@ -5,7 +5,7 @@
 # Package: GeoSpecialShapes
 ################################################################################
 
-find_package(CLHEP)
+#find_package(CLHEP)
 
 # Use the GNU install directory names.
 include( GNUInstallDirs )  # it defines CMAKE_INSTALL_LIBDIR
diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
index 3a85bd8..bcbebd1 100644
--- a/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
@@ -7,7 +7,8 @@
 
 #include <vector>
 
-#include "CLHEP/Vector/ThreeVector.h"
+//#include "CLHEP/Vector/ThreeVector.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 //#ifndef XAOD_STANDALONE
 //    #include "AthenaKernel/CLASS_DEF.h"
 //#endif // XAOD_STANDALONE
@@ -108,21 +109,21 @@ class LArWheelCalculator
     /// Determines the nearest to the input point fan.
     /// Rotates point p to the localFan coordinates and returns the
     /// fan number to out_fan_number parameter.
-    double DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const;
+    double DistanceToTheNearestFan(GeoTrf::Vector3D &p, int & out_fan_number) const;
 
     /// Calculates aproximate, probably underestimate, distance to the
     /// neutral fibre of the vertical fan. Sign of return value means
     /// side of the fan; negative - lower phi.
-    double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
+    double DistanceToTheNeutralFibre(const GeoTrf::Vector3D &p, int fan_number) const;
 
-    CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p,
+    GeoTrf::Vector3D NearestPointOnNeutralFibre(const GeoTrf::Vector3D &p,
                                                  int fan_number) const;
-    std::vector<double> NearestPointOnNeutralFibre_asVector(const CLHEP::Hep3Vector &p,
+    std::vector<double> NearestPointOnNeutralFibre_asVector(const GeoTrf::Vector3D &p,
                                                             int fan_number) const;
-    int GetPhiGap(const CLHEP::Hep3Vector &p) const { return GetPhiGapAndSide(p).first; }
+    int GetPhiGap(const GeoTrf::Vector3D &p) const { return GetPhiGapAndSide(p).first; }
     int PhiGapNumberForWheel(int) const;
-    std::pair<int, int> GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const;
-    double AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int fan_number) const;
+    std::pair<int, int> GetPhiGapAndSide(const GeoTrf::Vector3D &p) const;
+    double AmplitudeOfSurface(const GeoTrf::Vector3D& P, int side, int fan_number) const;
 
     /// @}
 
diff --git a/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx b/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx
index 0ff84d5..d5767f7 100644
--- a/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx
@@ -17,6 +17,8 @@
 #include "./LArWheelCalculator_Impl/IDistanceCalculator.h"
 #include "./LArWheelCalculator_Impl/IFanCalculator.h"
 
+#include "GeoModelKernel/GeoDefinitions.h"
+
 #ifdef HARDDEBUG
 #include<stdio.h>
 #endif
@@ -92,7 +94,7 @@ double LArWheelCalculator::parameterized_slant_angle(double r) const
 // Returns distance to the nearest fan. Vector p is set to nearest fan coord.
 // system.
 // m_fan_number is set to nearest fan number
-double LArWheelCalculator::DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const
+double LArWheelCalculator::DistanceToTheNearestFan(GeoTrf::Vector3D &p, int & out_fan_number) const
 {
   return m_fanCalcImpl->DistanceToTheNearestFan(p, out_fan_number);
 }
@@ -100,7 +102,7 @@ double LArWheelCalculator::DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & o
 // Relays on the fact that each two fans have a fan of a different type between
 // them.
 // Affects m_fan_number.
-std::pair<int, int> LArWheelCalculator::GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const
+std::pair<int, int> LArWheelCalculator::GetPhiGapAndSide(const GeoTrf::Vector3D &p) const
 {
   return m_fanCalcImpl->GetPhiGapAndSide(p);
 }
@@ -110,19 +112,19 @@ std::pair<int, int> LArWheelCalculator::GetPhiGapAndSide(const CLHEP::Hep3Vector
 // side of the fan; negative - lower phi.
 //
 // Uses m_fan_number to compute sagging.
-double LArWheelCalculator::DistanceToTheNeutralFibre(const CLHEP::Hep3Vector& P, int fan_number) const
+double LArWheelCalculator::DistanceToTheNeutralFibre(const GeoTrf::Vector3D& P, int fan_number) const
 {
   return m_distanceCalcImpl->DistanceToTheNeutralFibre(P, fan_number);
 }
 
-CLHEP::Hep3Vector LArWheelCalculator::NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &P, int fan_number) const
+GeoTrf::Vector3D LArWheelCalculator::NearestPointOnNeutralFibre(const GeoTrf::Vector3D &P, int fan_number) const
 {
   return m_distanceCalcImpl->NearestPointOnNeutralFibre(P, fan_number);
 }
 
-std::vector<double> LArWheelCalculator::NearestPointOnNeutralFibre_asVector(const CLHEP::Hep3Vector &p, int fan_number) const
+std::vector<double> LArWheelCalculator::NearestPointOnNeutralFibre_asVector(const GeoTrf::Vector3D &p, int fan_number) const
 {
-  CLHEP::Hep3Vector np = NearestPointOnNeutralFibre(p, fan_number);
+  GeoTrf::Vector3D np = NearestPointOnNeutralFibre(p, fan_number);
   return std::vector<double> { np.x(), np.y(), np.z() };
 }
 
@@ -132,7 +134,7 @@ side: < 0 - lower phi
       > 0 - greater phi
       = 0 - neutral fibre
 */
-double LArWheelCalculator::AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int fan_number) const
+double LArWheelCalculator::AmplitudeOfSurface(const GeoTrf::Vector3D& P, int side, int fan_number) const
 {
   return m_distanceCalcImpl->AmplitudeOfSurface(P, side, fan_number);
 }
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
index 8d0da45..47289c4 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
@@ -4,6 +4,7 @@
 
 #include "DistanceCalculatorSaggingOff.h"
 #include "GeoSpecialShapes/LArWheelCalculator.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 
 //#include "GaudiKernel/PhysicalConstants.h"
 #include<cassert>
@@ -35,9 +36,9 @@ namespace LArWheelCalculator_Impl
   }
 
 #ifndef LARWC_DTNF_NEW
-  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre(const CLHEP::Hep3Vector& P, int /*fan_number*/) const
+  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre(const GeoTrf::Vector3D& P, int /*fan_number*/) const
 #else
-  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre_ref(const CLHEP::Hep3Vector& P, int /*fan_number*/) const
+  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre_ref(const GeoTrf::Vector3D& P, int /*fan_number*/) const
 #endif
   {
     assert(P.y() > 0.);
@@ -151,9 +152,9 @@ namespace LArWheelCalculator_Impl
 
   // IMPROVED PERFORMANCE
 #ifdef LARWC_DTNF_NEW
-  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre(const CLHEP::Hep3Vector& P, int /*fan_number*/) const
+  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre(const GeoTrf::Vector3D& P, int /*fan_number*/) const
 #else
-  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre_ref(const CLHEP::Hep3Vector& P, int /*fan_number*/) const
+  double DistanceCalculatorSaggingOff::DistanceToTheNeutralFibre_ref(const GeoTrf::Vector3D& P, int /*fan_number*/) const
 #endif
   {
     double z = P.z() - lwc()->m_StraightStartSection;
@@ -243,9 +244,9 @@ namespace LArWheelCalculator_Impl
     std::abort();
   }
 
-  CLHEP::Hep3Vector DistanceCalculatorSaggingOff::NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &P, int /*fan_number*/) const
+  GeoTrf::Vector3D DistanceCalculatorSaggingOff::NearestPointOnNeutralFibre(const GeoTrf::Vector3D &P, int /*fan_number*/) const
   {
-    CLHEP::Hep3Vector result;
+    GeoTrf::Vector3D result;
     double z = P.z() - lwc()->m_StraightStartSection;
     double x = P.x();
     double y = P.y();
@@ -279,18 +280,33 @@ namespace LArWheelCalculator_Impl
       const double x_prime = x * cos_a - z * sin_a;
       const double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
       const double dz = straight_part - z_prime;
-      if (dz > 0) result.set(0., y, z_prime);
+        if (dz > 0) {
+            //result.set(0., y, z_prime);
+            result(0)=0.;
+            result(1)=y;
+            result(2)=z_prime;
+        }
+        
       else {
         double a = atan(fabs(dz / (x_prime + lwc()->m_FanFoldRadius)));
-        result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+        //result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+        result(0) = lwc()->m_FanFoldRadius * (cos(a) - 1);
+        result(1) = y;
+        result(2) = straight_part + lwc()->m_FanFoldRadius * sin(a);
       }
-      result.rotateY(asin(sin_a));
+      //result.rotateY(asin(sin_a));
+      result = GeoTrf::RotateY3D (asin(sin_a))* result;
       if(begin_qw){
-        result.setX(-result.x());
-        result.setZ(-result.z());
+        //result.setX(-result.x());
+        //result.setZ(-result.z());
+        result(0) = - result(0) ;
+        result(2) = - result(2) ;
       }
-      if((nqwave % 2) == 0) result.setX(-result.x());
-      result.setZ(result.z() + nqwave * lwc()->m_HalfWaveLength);
+      if((nqwave % 2) == 0)
+          //result.setX(-result.x());
+          result(0) = - result(0) ;
+          //result.setZ(result.z() + nqwave * lwc()->m_HalfWaveLength);
+          result(2) = result(2) + nqwave * lwc()->m_HalfWaveLength ;
     } else {
       if(nqwave == 0) x = -x;
       else z = lwc()->m_ActiveLength - z;
@@ -300,7 +316,10 @@ namespace LArWheelCalculator_Impl
          ( x < lwc()->m_FanFoldRadius ||
            x < - lwc()->m_StraightStartSection * z / local_straight_section / tan_beta))
       {
-        result.set(0., y, z);
+        //result.set(0., y, z);
+        result(0) = 0.;
+        result(1) = y;
+        result(2) = z;
       }
       else {
         const double z_prime = z * cos_a + x * sin_a;
@@ -308,32 +327,47 @@ namespace LArWheelCalculator_Impl
         if(z_prime < local_straight_section) {
           double a = fabs(atan((local_straight_section - z_prime) / (x_prime - lwc()->m_FanFoldRadius)));
 
-          result.set(lwc()->m_FanFoldRadius * (1 - cos(a)), y, local_straight_section - lwc()->m_FanFoldRadius * sin(a));
+          //result.set(lwc()->m_FanFoldRadius * (1 - cos(a)), y, local_straight_section - lwc()->m_FanFoldRadius * sin(a));
+          result(0) = lwc()->m_FanFoldRadius * (1 - cos(a));
+          result(1) = y;
+          result(2) = local_straight_section - lwc()->m_FanFoldRadius * sin(a);
+            
         } else {
           double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
           if(z_prime <= straight_part) {
-            result.set(0., y, z_prime);
+            //result.set(0., y, z_prime);
+            result(0) = 0.;
+            result(1) = y;
+            result(2) = z_prime;
+            
           } else {
             double a = fabs(atan((straight_part - z_prime) /  (x_prime + lwc()->m_FanFoldRadius)) );
-            result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+            //result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+            result(0) = lwc()->m_FanFoldRadius * (cos(a) - 1);
+            result(1) = y;
+            result(2) = straight_part + lwc()->m_FanFoldRadius * sin(a);
           }
         }
-        result.rotateY(asin(sin_a));
+        //result.rotateY(asin(sin_a));
+        result = GeoTrf::RotateY3D (asin(sin_a))* result;
       }
       if(nqwave != 0){
-        result.setZ(lwc()->m_ActiveLength - result.z());
+        //result.setZ(lwc()->m_ActiveLength - result.z());
+        result(2) = lwc()->m_ActiveLength - result(2);
       } else {
-        result.setX(-result.x());
+        //result.setX(-result.x());
+        result(0) = - result(0);
       }
     }
-    result.setZ(result.z() + lwc()->m_StraightStartSection);
+    //result.setZ(result.z() + lwc()->m_StraightStartSection);
+    result(2) = result(2)+ lwc()->m_StraightStartSection;
     return result;
   }
 
   // IMPROVED VERSION
-  CLHEP::Hep3Vector DistanceCalculatorSaggingOff::NearestPointOnNeutralFibre_ref(const CLHEP::Hep3Vector &P, int /*fan_number*/) const
+  GeoTrf::Vector3D DistanceCalculatorSaggingOff::NearestPointOnNeutralFibre_ref(const GeoTrf::Vector3D &P, int /*fan_number*/) const
   {
-    CLHEP::Hep3Vector result;
+    GeoTrf::Vector3D result;
     double z = P.z() - lwc()->m_StraightStartSection;
     double x = P.x();
     double y = P.y();
@@ -364,10 +398,16 @@ namespace LArWheelCalculator_Impl
           double a1 = atan(fabs(dz / (x_prime + lwc()->m_FanFoldRadius)));
           const double x1 = lwc()->m_FanFoldRadius * (cos(a1) - 1.);
           const double z1 = straight_part + lwc()->m_FanFoldRadius * sin(a1);
-          result.set(x1*cos_a - z1*sin_a, y, z1*cos_a + z1*sin_a);
+          //result.set(x1*cos_a - z1*sin_a, y, z1*cos_a + z1*sin_a);
+          result(0) = x1*cos_a - z1*sin_a;
+          result(1) = y;
+          result(2) = z1*cos_a + z1*sin_a;
           return result;
         } else if(z_prime > -straight_part){ // straight part
-          result.set(-z_prime * sin_a, y, z_prime*cos_a + zshift);
+          //result.set(-z_prime * sin_a, y, z_prime*cos_a + zshift);
+          result(0) = -z_prime * sin_a;
+          result(1) = y;
+          result(2) = z_prime*cos_a + zshift;
           return result;
         } else { // low fold
           const double x_prime = x * cos_a - z * sin_a;
@@ -375,7 +415,10 @@ namespace LArWheelCalculator_Impl
           double a1 = atan(fabs(dz / (x_prime + lwc()->m_FanFoldRadius)));
           const double x1 = lwc()->m_FanFoldRadius * (cos(a1) - 1.);
           const double z1 = straight_part + lwc()->m_FanFoldRadius * sin(a1);
-          result.set(x1*cos_a - z1*sin_a, y, z1*cos_a + z1*sin_a);
+          //result.set(x1*cos_a - z1*sin_a, y, z1*cos_a + z1*sin_a);
+          result(0) = x1*cos_a - z1*sin_a;
+          result(1) = y;
+          result(2) = z1*cos_a + z1*sin_a;
           return result;
         }
       } else { // ending quarter-wave
@@ -393,28 +436,46 @@ namespace LArWheelCalculator_Impl
        (x < lwc()->m_FanFoldRadius ||
         x < - lwc()->m_StraightStartSection * z / local_straight_section / tan_beta))
     {
-      result.set(0., y, z);
+      //result.set(0., y, z);
+      result(0) = 0.;
+      result(1) = y ;
+      result(2) = z ;
     }
     else {
       const double z_prime = z * cos_a + x * sin_a;
       const double x_prime = x * cos_a - z * sin_a;
       if(z_prime < local_straight_section) {
         double a = fabs(atan((local_straight_section - z_prime) / (x_prime - lwc()->m_FanFoldRadius)));
-        result.set(lwc()->m_FanFoldRadius * (1 - cos(a)), y, local_straight_section - lwc()->m_FanFoldRadius * sin(a));
+        //result.set(lwc()->m_FanFoldRadius * (1 - cos(a)), y, local_straight_section - lwc()->m_FanFoldRadius * sin(a));
+        result(0) = lwc()->m_FanFoldRadius * (1 - cos(a));
+        result(1) = y ;
+        result(2) = local_straight_section - lwc()->m_FanFoldRadius * sin(a) ;
       } else {
         double straight_part = (lwc()->m_QuarterWaveLength - lwc()->m_FanFoldRadius * sin_a) / cos_a;
         if(z_prime <= straight_part) {
-          result.set(0., y, z_prime);
+          //result.set(0., y, z_prime);
+          result(0) = 0.;
+          result(1) = y ;
+          result(2) = z_prime;
         } else {
           double a = fabs(atan((straight_part - z_prime) /  (x_prime + lwc()->m_FanFoldRadius)) );
-          result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+          //result.set(lwc()->m_FanFoldRadius * (cos(a) - 1), y, straight_part + lwc()->m_FanFoldRadius * sin(a));
+            result(0) = lwc()->m_FanFoldRadius * (cos(a) - 1);
+            result(1) = y ;
+            result(2) = straight_part + lwc()->m_FanFoldRadius * sin(a) ;
         }
       }
-      result.rotateY(asin(sin_a));
+      //result.rotateY(asin(sin_a));
+      result = GeoTrf::RotateY3D (asin(sin_a)) * result;
     }
-    if(sqw) result.setX(-result.x());
-    else result.setZ(lwc()->m_ActiveLength - result.z());
-    result.setZ(result.z() + lwc()->m_StraightStartSection);
+    if(sqw)
+        //result.setX(-result.x());
+        result(0) = - result(0);
+    else
+        //result.setZ(lwc()->m_ActiveLength - result.z());
+        result(2) = lwc()->m_ActiveLength - result(2);
+    //result.setZ(result.z() + lwc()->m_StraightStartSection);
+    result(2) = result(2) + lwc()->m_StraightStartSection ;
     return result;
   }
 
@@ -424,7 +485,7 @@ namespace LArWheelCalculator_Impl
         > 0 - greater phi
         = 0 - neutral fibre
   */
-  double DistanceCalculatorSaggingOff::AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int /*fan_number*/) const
+  double DistanceCalculatorSaggingOff::AmplitudeOfSurface(const GeoTrf::Vector3D& P, int side, int /*fan_number*/) const
   {
     double result = 0.;
     double rho = lwc()->m_FanFoldRadius;
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
index a09257e..6812002 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
@@ -7,6 +7,7 @@
 
 
 #include "IDistanceCalculator.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 //#include "RDBAccessSvc/IRDBAccessSvc.h"
 //#include "GeoModelUtilities/DecodeVersionKey.h"
 
@@ -31,11 +32,11 @@ namespace LArWheelCalculator_Impl
 
       /// @name Geometry methods
       /// @{
-      virtual double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
-      virtual double DistanceToTheNeutralFibre_ref(const CLHEP::Hep3Vector &p, int fan_number) const;
-      virtual CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
-      virtual CLHEP::Hep3Vector NearestPointOnNeutralFibre_ref(const CLHEP::Hep3Vector &p, int fan_number) const;
-      virtual double AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int fan_number) const;
+      virtual double DistanceToTheNeutralFibre(const GeoTrf::Vector3D &p, int fan_number) const;
+      virtual double DistanceToTheNeutralFibre_ref(const GeoTrf::Vector3D &p, int fan_number) const;
+      virtual GeoTrf::Vector3D NearestPointOnNeutralFibre(const GeoTrf::Vector3D &p, int fan_number) const;
+      virtual GeoTrf::Vector3D NearestPointOnNeutralFibre_ref(const GeoTrf::Vector3D &p, int fan_number) const;
+      virtual double AmplitudeOfSurface(const GeoTrf::Vector3D& P, int side, int fan_number) const;
       /// @}
 
       /// Return the calculator:
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
index 03c6692..c7cf211 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
@@ -7,7 +7,8 @@
 //#include "GaudiKernel/MsgStream.h"
 
 #include "DistanceCalculatorSaggingOn.h"
-#include "CLHEP/Vector/ThreeVector.h"
+//#include "CLHEP/Vector/ThreeVector.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 
 #include <vector>
 #include <stdexcept>
@@ -124,23 +125,23 @@ namespace LArWheelCalculator_Impl
   // side of the fan; negative - lower phi.
   //
   // Uses m_fan_number to compute sagging.
-  double DistanceCalculatorSaggingOn::DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const {
-    CLHEP::Hep3Vector sagging_corrected( p.x()+get_sagging(p, fan_number), p.y(), p.z() );
+  double DistanceCalculatorSaggingOn::DistanceToTheNeutralFibre(const GeoTrf::Vector3D &p, int fan_number) const {
+    GeoTrf::Vector3D sagging_corrected( p.x()+get_sagging(p, fan_number), p.y(), p.z() );
     return parent::DistanceToTheNeutralFibre(sagging_corrected, fan_number);
   }
 
-  CLHEP::Hep3Vector DistanceCalculatorSaggingOn::NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const {
-    CLHEP::Hep3Vector sagging_corrected( p.x()+get_sagging(p, fan_number), p.y(), p.z() );
+  GeoTrf::Vector3D DistanceCalculatorSaggingOn::NearestPointOnNeutralFibre(const GeoTrf::Vector3D &p, int fan_number) const {
+    GeoTrf::Vector3D sagging_corrected( p.x()+get_sagging(p, fan_number), p.y(), p.z() );
     return parent::NearestPointOnNeutralFibre(sagging_corrected, fan_number);
   }
 
-  double DistanceCalculatorSaggingOn::AmplitudeOfSurface(const CLHEP::Hep3Vector& p, int side, int fan_number) const {
+  double DistanceCalculatorSaggingOn::AmplitudeOfSurface(const GeoTrf::Vector3D& p, int side, int fan_number) const {
     return parent::AmplitudeOfSurface(p, side, fan_number) - get_sagging(p, fan_number);
   }
 
 
   // the function uses m_fan_number for phi-dependent sagging computation
-  double DistanceCalculatorSaggingOn::get_sagging(const CLHEP::Hep3Vector &P, int fan_number) const {
+  double DistanceCalculatorSaggingOn::get_sagging(const GeoTrf::Vector3D &P, int fan_number) const {
 #ifdef HARDDEBUG
     std::cout << "get_sagging: MFN = " << fan_number << std::endl;
 #endif
@@ -154,7 +155,9 @@ namespace LArWheelCalculator_Impl
     //if(n >= m_NumberOfFans) n -= m_NumberOfFans;
     //const std::vector<double>& sp = m_sagging_parameter[n];
     const std::vector<double>& sp = m_sagging_parameter[fan_number];
-    double R = P.r() / SYSTEM_OF_UNITS::mm;
+      
+    //double R = P.r() / SYSTEM_OF_UNITS::mm;
+    double R =  std::sqrt(P(0)*P(0) + P(1)*P(1) + P(2)*P(2)) / SYSTEM_OF_UNITS::mm;
     double r = R;
     double result = sp[0];
     result += R * sp[1];
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
index e10c79d..7ca0448 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
@@ -6,6 +6,7 @@
 #define __LArWheelCalculator_Impl_DistanceCalculatorSaggingOn_H__
 
 #include "DistanceCalculatorSaggingOff.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 #include <vector>
 
 class LArWheelCalculator;
@@ -32,14 +33,14 @@ namespace LArWheelCalculator_Impl
 
       /// @name Geometry methods
       /// @{
-      virtual double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
-      virtual CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const;
-      virtual double AmplitudeOfSurface(const CLHEP::Hep3Vector& P, int side, int fan_number) const;
+      virtual double DistanceToTheNeutralFibre(const GeoTrf::Vector3D &p, int fan_number) const;
+      virtual GeoTrf::Vector3D NearestPointOnNeutralFibre(const GeoTrf::Vector3D &p, int fan_number) const;
+      virtual double AmplitudeOfSurface(const GeoTrf::Vector3D& P, int side, int fan_number) const;
       /// @}
 
     private:
 
-      double get_sagging(const CLHEP::Hep3Vector &P, int fan_number) const;
+      double get_sagging(const GeoTrf::Vector3D &P, int fan_number) const;
       void init_sagging_parameters();
 
       std::vector<std::vector<double> > m_sagging_parameter;
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
index d45f474..4bc81b2 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
@@ -6,7 +6,8 @@
 #define __LArWheelCalculator_Impl_IDistanceCalculator_H__
 
 
-#include "CLHEP/Vector/ThreeVector.h"
+//#include "CLHEP/Vector/ThreeVector.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 
 namespace LArWheelCalculator_Impl
 {
@@ -26,13 +27,13 @@ namespace LArWheelCalculator_Impl
       /// @name Geometry methods
       /// @{
 
-      virtual double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p,
+      virtual double DistanceToTheNeutralFibre(const GeoTrf::Vector3D &p,
                                                int fan_number) const = 0;
 
-      virtual CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p,
+      virtual GeoTrf::Vector3D NearestPointOnNeutralFibre(const GeoTrf::Vector3D &p,
                                                            int fan_number) const = 0;
 
-      virtual double AmplitudeOfSurface(const CLHEP::Hep3Vector& p, int side,
+      virtual double AmplitudeOfSurface(const GeoTrf::Vector3D& p, int side,
                                         int fan_number) const = 0;
 
       /// @}
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
index 4cd70f9..cd0f7dc 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
@@ -6,7 +6,8 @@
 #define __LArWheelCalculator_Impl_IFanCalculator_H__
 
 
-#include "CLHEP/Vector/ThreeVector.h"
+//#include "CLHEP/Vector/ThreeVector.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 
 namespace LArWheelCalculator_Impl
 {
@@ -26,12 +27,12 @@ namespace LArWheelCalculator_Impl
       /// @name Geometry methods
       /// @{
 
-      virtual double DistanceToTheNearestFan(CLHEP::Hep3Vector &p,
+      virtual double DistanceToTheNearestFan(GeoTrf::Vector3D &p,
                                              int & out_fan_number) const = 0;
 
       virtual int PhiGapNumberForWheel(int i) const = 0;
 
-      virtual std::pair<int, int> GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const = 0;
+      virtual std::pair<int, int> GetPhiGapAndSide(const GeoTrf::Vector3D &p) const = 0;
 
       /// @}
 
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
index 04f19f6..3008f52 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
@@ -5,6 +5,8 @@
 #include "ModuleFanCalculator.h"
 
 #include "GeoSpecialShapes/LArWheelCalculator.h"
+#include "GeoModelKernel/GeoDefinitions.h"
+//#include "CLHEP/Vector/ThreeVector.h"
 
 //#include "GaudiKernel/PhysicalConstants.h"
 //using namespace Gaudi::Units;
@@ -27,14 +29,17 @@ namespace LArWheelCalculator_Impl
   {
   }
 
-  double ModuleFanCalculator::DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const
+  double ModuleFanCalculator::DistanceToTheNearestFan(GeoTrf::Vector3D &p, int & out_fan_number) const
   {
-    int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi_ForDetNeaFan) / lwc()->m_FanStepOnPhi);
+    //int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi_ForDetNeaFan) / lwc()->m_FanStepOnPhi);
+    int fan_number = int((std::atan2(p(1),p(0)) - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi_ForDetNeaFan) / lwc()->m_FanStepOnPhi);
     double angle = lwc()->m_FanStepOnPhi * fan_number + lwc()->m_ZeroFanPhi_ForDetNeaFan;
 #ifdef HARDDEBUG
     printf("DistanceToTheNearestFan: initial FN %4d\n", fan_number);
 #endif
-    p.rotateZ(-angle);
+    //p.rotateZ(-angle);
+    p=GeoTrf::RotateZ3D(-angle)*p;
+    
     // determine search direction
     double d0 = lwc()->DistanceToTheNeutralFibre(p, lwc()->adjust_fan_number(fan_number));
     double d1 = d0;
@@ -42,7 +47,8 @@ namespace LArWheelCalculator_Impl
     if(d0 < 0.) delta = -1; // search direction has been determined
     angle = - lwc()->m_FanStepOnPhi * delta;
     do { // search:
-      p.rotateZ(angle);
+      //p.rotateZ(angle);
+      p = GeoTrf::RotateZ3D(angle)*p;
       fan_number += delta;
       d1 = lwc()->DistanceToTheNeutralFibre(p, lwc()->adjust_fan_number(fan_number));
     } while(d0 * d1 > 0.);
@@ -51,14 +57,19 @@ namespace LArWheelCalculator_Impl
 
     int adj_fan_number = fan_number;
     if(adj_fan_number < lwc()->m_FirstFan) {
-      p.rotateZ((adj_fan_number - lwc()->m_FirstFan) * lwc()->m_FanStepOnPhi);
+      //p.rotateZ((adj_fan_number - lwc()->m_FirstFan) * lwc()->m_FanStepOnPhi);
+      p = GeoTrf::RotateZ3D((adj_fan_number - lwc()->m_FirstFan) * lwc()->m_FanStepOnPhi)*p;
+      //p.RotateZ3D((adj_fan_number - lwc()->m_FirstFan) * lwc()->m_FanStepOnPhi);
+      p = GeoTrf::RotateZ3D((adj_fan_number - lwc()->m_FirstFan) * lwc()->m_FanStepOnPhi)*p;
       adj_fan_number = lwc()->m_FirstFan;
     } else if(adj_fan_number >= lwc()->m_LastFan) {
-      p.rotateZ((adj_fan_number - lwc()->m_LastFan + 1) * lwc()->m_FanStepOnPhi);
+      //p.rotateZ((adj_fan_number - lwc()->m_LastFan + 1) * lwc()->m_FanStepOnPhi);
+      p = GeoTrf::RotateZ3D((adj_fan_number - lwc()->m_LastFan + 1) * lwc()->m_FanStepOnPhi)*p;
       adj_fan_number = lwc()->m_LastFan - 1;
     }
 
-    p.rotateZ(-0.5 * angle);
+    //p.rotateZ(-0.5 * angle);
+    p = GeoTrf::RotateZ3D(-0.5 * angle)*p;
     out_fan_number = adj_fan_number;
     return lwc()->DistanceToTheNeutralFibre(p, adj_fan_number);
   }
@@ -71,17 +82,18 @@ namespace LArWheelCalculator_Impl
     return i;
   }
 
-  std::pair<int, int> ModuleFanCalculator::GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const
+  std::pair<int, int> ModuleFanCalculator::GetPhiGapAndSide(const GeoTrf::Vector3D &p) const
   {
     // Note: this object was changed from static to local for thread-safety.
     // If this is found to be too costly we can re-evaluate.
-    CLHEP::Hep3Vector p1 = p;
-
-    int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi) / lwc()->m_FanStepOnPhi);
+    GeoTrf::Vector3D p1 = p;
+    //int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi) / lwc()->m_FanStepOnPhi);
+    int fan_number = int((std::atan2(p(1),p(0)) - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi) / lwc()->m_FanStepOnPhi);
 
     double angle = lwc()->m_FanStepOnPhi * fan_number + lwc()->m_ZeroFanPhi;
-    p1.rotateZ(-angle);
-
+    //p1.rotateZ(-angle);
+    p1 =GeoTrf::RotateZ3D(-angle) * p1;
+    
     double d0 = lwc()->DistanceToTheNeutralFibre(p1, lwc()->adjust_fan_number(fan_number));
     double d1 = d0;
 
@@ -89,7 +101,8 @@ namespace LArWheelCalculator_Impl
     if(d0 < 0.) delta = -1;
     angle = - lwc()->m_FanStepOnPhi * delta;
     do {
-      p1.rotateZ(angle);
+      //p1.rotateZ(angle);
+      p1 = GeoTrf::RotateZ3D(angle)*p1;
       fan_number += delta;
       d1 = lwc()->DistanceToTheNeutralFibre(p1, lwc()->adjust_fan_number(fan_number));
     } while(d0 * d1 > 0.);
@@ -100,7 +113,8 @@ namespace LArWheelCalculator_Impl
     if(adj_fan_number < lwc()->m_FirstFan) adj_fan_number = lwc()->m_FirstFan - 1;
     else if(adj_fan_number > lwc()->m_LastFan) adj_fan_number = lwc()->m_LastFan;
 
-    p1.rotateZ(-0.5 * angle);
+    //p1.rotateZ(-0.5 * angle);
+    p1 = GeoTrf::RotateZ3D(-0.5 * angle) * p1;
     double dd = lwc()->DistanceToTheNeutralFibre(p1, adj_fan_number);
     int side = dd < 0.? -1: 1;
 #ifdef HARDDEBUG
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
index 327c70c..da2cfbc 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
@@ -8,6 +8,7 @@
 #include "IFanCalculator.h"
 //#include "RDBAccessSvc/IRDBAccessSvc.h"
 //#include "GeoModelUtilities/DecodeVersionKey.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 
 class LArWheelCalculator;
 
@@ -23,9 +24,9 @@ namespace LArWheelCalculator_Impl
                           const DecodeVersionKey & larVersionKey*/);
 
       // geometry methods:
-      virtual double DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const;
+      virtual double DistanceToTheNearestFan(GeoTrf::Vector3D &p, int & out_fan_number) const;
       virtual int PhiGapNumberForWheel(int i) const;
-      virtual std::pair<int, int> GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const;
+      virtual std::pair<int, int> GetPhiGapAndSide(const GeoTrf::Vector3D &p) const;
 
       inline const LArWheelCalculator *lwc() const { return m_lwc; };
 
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
index 98632d2..c372142 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
@@ -9,6 +9,7 @@
 //#include "RDBAccessSvc/IRDBAccessSvc.h"
 //#include "GeoModelUtilities/DecodeVersionKey.h"
 #include "GeoSpecialShapes/LArWheelCalculator.h"
+#include "GeoModelKernel/GeoDefinitions.h"
 
 //#include "GaudiKernel/PhysicalConstants.h"
 // Physical constants
@@ -33,7 +34,7 @@ namespace LArWheelCalculator_Impl
   class DistanceToTheNeutralFibre_OfFan<SaggingOn_t>
   {
     public:
-      static inline double calculate(const LArWheelCalculator* lwc, int fan_number,     CLHEP::Hep3Vector &p) {
+      static inline double calculate(const LArWheelCalculator* lwc, int fan_number,     GeoTrf::Vector3D &p) {
         //lwc->set_m_fan_number(fan_number);
         return lwc->DistanceToTheNeutralFibre(p, lwc->adjust_fan_number(fan_number));
       }
@@ -42,7 +43,7 @@ namespace LArWheelCalculator_Impl
   template<> class DistanceToTheNeutralFibre_OfFan<SaggingOff_t>
   {
     public:
-      static inline double calculate(const LArWheelCalculator* lwc, int /*fan_number*/, CLHEP::Hep3Vector &p) {
+      static inline double calculate(const LArWheelCalculator* lwc, int /*fan_number*/, GeoTrf::Vector3D &p) {
         // saggingOff distance calculations does not use fan_number, use arbitrary recognisible magic number
         return lwc->DistanceToTheNeutralFibre(p, -531135);
       }
@@ -115,9 +116,11 @@ namespace LArWheelCalculator_Impl
   /// @todo Needs documentation
   template <typename SaggingType, FanSearchDirection_t dir, class NFDistance >
   inline void rotate_to_nearest_fan(const LArWheelCalculator* lwc, int &fan_number,
-                                    const double angle, CLHEP::Hep3Vector &p)
+                                    const double angle, GeoTrf::Vector3D &p)
   {
-    p.rotateZ(angle);
+    
+    //p.rotateZ(angle);
+    p=GeoTrf::RotateZ3D(angle)*p;
     StepFan<SaggingType, dir>::next(fan_number);
     //fan_number += delta;
     double d1 = NFDistance::calculate(lwc, fan_number, p);
@@ -125,7 +128,8 @@ namespace LArWheelCalculator_Impl
     //while(d0 * d1 > 0.) -> dir*d1 > 0 -> FORWARD: d1 > 0., BACKWARD: d1 < 0.
 
     while ( DoSearch<dir>::pred(d1) ) { // search:
-      p.rotateZ(angle);
+      //p.rotateZ(angle);
+      p=GeoTrf::RotateZ3D(angle)*p;
       StepFan<SaggingType, dir>::next(fan_number);
       //fan_number += delta;
 
@@ -156,15 +160,17 @@ namespace LArWheelCalculator_Impl
       /// @name Geometry methods
       /// @{
 
-      virtual double DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int & out_fan_number) const
+      virtual double DistanceToTheNearestFan(GeoTrf::Vector3D &p, int & out_fan_number) const
       {
         //using Gaudi::Units::halfpi;
-          int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi_ForDetNeaFan) / lwc()->m_FanStepOnPhi);
+        //int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi_ForDetNeaFan) / lwc()->m_FanStepOnPhi);
+        int fan_number = int((std::atan2(p(1),p(0)) - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi_ForDetNeaFan) / lwc()->m_FanStepOnPhi);
         const double angle = lwc()->m_FanStepOnPhi * fan_number + lwc()->m_ZeroFanPhi_ForDetNeaFan;
 #ifdef HARDDEBUG
         printf("DistanceToTheNearestFan: initial FN %4d\n", fan_number);
 #endif
-        p.rotateZ(-angle);
+        //p.rotateZ(-angle);
+        p=GeoTrf::RotateZ3D(- angle)*p;
         // determine search direction
         typedef DistanceToTheNeutralFibre_OfFan<SaggingType> NFDistance;
 
@@ -202,7 +208,8 @@ namespace LArWheelCalculator_Impl
         if(delta > 0) fan_number --;
         */
 
-        p.rotateZ(-0.5 * step_angle);
+        //p.rotateZ(-0.5 * step_angle);
+        p=GeoTrf::RotateZ3D(-0.5 * step_angle)*p;
 #ifdef HARDDEBUG
         printf("DistanceToTheNearestFan: final FN %4d\n", fan_number);
 #endif
@@ -216,14 +223,16 @@ namespace LArWheelCalculator_Impl
         return i;
       }
 
-      virtual std::pair<int, int> GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const
+      virtual std::pair<int, int> GetPhiGapAndSide(const GeoTrf::Vector3D &p) const
       {
         //using Gaudi::Units::halfpi;
-        CLHEP::Hep3Vector p1 = p;
-
-        int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi) / lwc()->m_FanStepOnPhi);
+        GeoTrf::Vector3D p1 = p;
+        //int fan_number = int((p.phi() - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi) / lwc()->m_FanStepOnPhi);
+        int fan_number = int((std::atan2(p(1),p(0)) - SYSTEM_OF_UNITS::halfpi - lwc()->m_ZeroFanPhi) / lwc()->m_FanStepOnPhi);
         const double angle = lwc()->m_FanStepOnPhi * fan_number + lwc()->m_ZeroFanPhi;
-        p1.rotateZ(-angle);
+        p1=GeoTrf::RotateZ3D(- angle)*p1;
+        //p1.rotateZ(-angle);
+        
 
         typedef DistanceToTheNeutralFibre_OfFan<SaggingType> NFDistance;
 
@@ -238,7 +247,8 @@ namespace LArWheelCalculator_Impl
         //if(d0 < 0.) delta = -1;
         const double step_angle = - lwc()->m_FanStepOnPhi * delta;
         do {
-          p1.rotateZ(step_angle);
+          //p1.rotateZ(step_angle);
+          p1 = GeoTrf::RotateZ3D(step_angle)*p1;
           fan_number += delta;
           d1 = NFDistance::calculate(lwc(), fan_number, p1);
           //lwc()->set_m_fan_number(fan_number);
@@ -248,7 +258,8 @@ namespace LArWheelCalculator_Impl
         if(delta > 0) fan_number --;
         if(!lwc()->m_isElectrode) fan_number ++;
 
-        p1.rotateZ(-0.5 * step_angle);
+        //p1.rotateZ(-0.5 * step_angle);
+        p1 = GeoTrf::RotateZ3D(-0.5 * step_angle)*p1;
 
         const int a_fan_number = lwc()->adjust_fan_number(fan_number);
         double dd = lwc()->DistanceToTheNeutralFibre(p1, a_fan_number);
-- 
GitLab


From 83b788e13c1f7dd621947f320b97634044e65d67 Mon Sep 17 00:00:00 2001
From: Marilena Bandieramonte <marilena.bandieramonte@cern.ch>
Date: Fri, 7 Feb 2020 01:45:24 +0100
Subject: [PATCH 7/7] Cleaning of the code

---
 .../GeoSpecialShapes/LArCustomShape.h         | 35 +--------
 .../GeoSpecialShapes/LArWheelCalculator.h     | 15 ----
 GeoSpecialShapes/src/LArCustomShape.cxx       | 40 +---------
 GeoSpecialShapes/src/LArWheelCalculator.cxx   | 76 -------------------
 .../DistanceCalculatorFactory.cxx             |  8 +-
 .../DistanceCalculatorFactory.h               |  4 -
 .../DistanceCalculatorSaggingOff.cxx          | 10 +--
 .../DistanceCalculatorSaggingOff.h            |  6 +-
 .../DistanceCalculatorSaggingOn.cxx           |  8 --
 .../DistanceCalculatorSaggingOn.h             |  4 +-
 .../FanCalculatorFactory.cxx                  | 10 +--
 .../FanCalculatorFactory.h                    |  6 +-
 .../IDistanceCalculator.h                     |  2 -
 .../LArWheelCalculator_Impl/IFanCalculator.h  |  2 -
 .../ModuleFanCalculator.cxx                   |  7 --
 .../ModuleFanCalculator.h                     |  6 +-
 .../WheelFanCalculator.h                      |  3 -
 .../LArWheelCalculator_Impl/sincos_poly.cxx   | 12 ---
 18 files changed, 15 insertions(+), 239 deletions(-)

diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h b/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h
index 3a24f3c..b7f790f 100644
--- a/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h
@@ -8,12 +8,6 @@
 #include <string>
 #include <map>
 
-//#ifndef XAOD_STANDALONE
-//    #include "GaudiKernel/ServiceHandle.h"
-//    #include "GaudiKernel/StatusCode.h"
-//    #include "StoreGate/StoreGateSvc.h"
-//#endif // XAOD_STANDALONE
-
 #include "GeoModelKernel/GeoShape.h"
 #include "GeoSpecialShapes/LArWheelCalculator.h"
 #include "GeoSpecialShapes/LArWheelCalculatorEnums.h"
@@ -28,9 +22,6 @@ class LArCustomShape : public GeoShape
 {
 
  public:
-  //  #ifndef XAOD_STANDALONE
-  //  typedef ServiceHandle<StoreGateSvc> StoreGateSvc_t;
-  //  #endif // XAOD_STANDALONE
   	typedef std::pair<LArG4::LArWheelCalculator_t, int> CalcDef_t;
   	typedef std::map<std::string,  CalcDef_t> ShapeCalc_typemap;
 
@@ -65,23 +56,13 @@ class LArCustomShape : public GeoShape
   /// Executes a GeoShapeAction
   virtual void exec(GeoShapeAction* action) const;
 
-//#ifndef XAOD_STANDALONE
-//  /** @brief The standard @c StoreGateSvc/DetectorStore
-//    * Returns (kind of) a pointer to the @c StoreGateSvc
-//    */
-//   StoreGateSvc_t& detStore() const;
-//#endif // XAOD_STANDALONE
-
  protected:
 
   virtual ~LArCustomShape();
 
  private:
-  //#if defined XAOD_STANDALONE
-    int createCalculator(const CalcDef_t & cdef);
-  //#else // XAOD_STANDALONE
-  // StatusCode createCalculator(const CalcDef_t & cdef);
-  //#endif
+    
+  int createCalculator(const CalcDef_t & cdef);
 
   // Prohibited operations.
   LArCustomShape(const LArCustomShape &right);
@@ -98,11 +79,6 @@ class LArCustomShape : public GeoShape
   /// The calculator:
   const LArWheelCalculator *m_calculator;
 
-   //#ifndef XAOD_STANDALONE
-       /// Pointer to StoreGate (detector store by default)
-   //    mutable StoreGateSvc_t m_detStore;
-   //#endif // XAOD_STANDALONE
-
 };
 
 inline const std::string& LArCustomShape::getClassType() {
@@ -113,11 +89,4 @@ inline ShapeType LArCustomShape::getClassTypeID() {
   return s_classTypeID;
 }
 
-//#ifndef XAOD_STANDALONE
-//    inline ServiceHandle<StoreGateSvc>& LArCustomShape::detStore() const  {
-//        return m_detStore;
-//    }
-//#endif // XAOD_STANDALONE
-
-
 #endif // LArCustomShape_h
diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
index bcbebd1..df379a6 100644
--- a/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
@@ -7,11 +7,7 @@
 
 #include <vector>
 
-//#include "CLHEP/Vector/ThreeVector.h"
 #include "GeoModelKernel/GeoDefinitions.h"
-//#ifndef XAOD_STANDALONE
-//    #include "AthenaKernel/CLASS_DEF.h"
-//#endif // XAOD_STANDALONE
 
 #include "GeoSpecialShapes/LArWheelCalculatorEnums.h"
 // Physical constants
@@ -22,8 +18,6 @@
 #define LARWC_DTNF_NEW
 
 class IRDBRecordset;
-//class RDBParamRecords;
-
 //#define HARDDEBUG
 
 // Forward declarations
@@ -138,9 +132,6 @@ class LArWheelCalculator
     double m_sin_parametrization[7]; // up to pol6
     double m_cos_parametrization[7];
     std::vector<std::vector<double> > m_sagging_parameter; // !
-    //double m_WheelThickness;
-    // double m_HalfWheelThickness;
-    //double m_zWheelFrontFace, m_zWheelBackFace;
     
     // N.B. all const values copied from the DB@
     // https://atlas-geometry-db.web.cern.ch/atlas-geometry-db/
@@ -224,10 +215,4 @@ class LArWheelCalculator
     void fill_sincos_parameterization();
 };
 
-//#ifndef XAOD_STANDALONE
-    //using the macro below we can assign an identifier (and a version)
-    //This is required and checked at compile time when you try to record/retrieve
-//    CLASS_DEF(LArWheelCalculator , 900345678 , 1)
-//#endif // XAOD_STANDALONE
-
 #endif // GEOSPECIALSHAPES_LARWHEELCALCULATOR_H
diff --git a/GeoSpecialShapes/src/LArCustomShape.cxx b/GeoSpecialShapes/src/LArCustomShape.cxx
index 86af121..c6f2a23 100644
--- a/GeoSpecialShapes/src/LArCustomShape.cxx
+++ b/GeoSpecialShapes/src/LArCustomShape.cxx
@@ -95,35 +95,13 @@ const LArCustomShape::ShapeCalc_typemap LArCustomShape::s_calculatorTypes = {
 LArCustomShape::LArCustomShape(const std::string& a_shapeName)
   : m_shapeName(a_shapeName),
     m_calculator(0)
-    //#ifndef XAOD_STANDALONE
-    //    ,m_detStore( "StoreGateSvc/DetectorStore", a_shapeName )
-    //#endif // XAOD_STANDALONE
 {
-//#ifdef XAOD_STANDALONE
     std::cout << "LArCustomShape::LArCustomShape()" << std::endl;
     std::cout << "Constructor -- Creating the calculator..." << std::endl;
     if ( createCalculator( s_calculatorTypes.at(a_shapeName) ) == 1 ) { // map.at throws std::out_of_range exception on unknown shape name
             std::string error = std::string("Can't create LArWheelCalculator for name ") + a_shapeName + " in LArCustomShape constructor";
             throw std::runtime_error(error);
         }
-//#else // XAOD_STANDALONE
-//    std::string name = a_shapeName;
-//    size_t index = name.find("Slice");
-//    if(index != std::string::npos) name.replace(index + 5, 2, "00");
-//    if(s_calculatorTypes.find(name) == s_calculatorTypes.end()){
-//        std::string error =
-//            std::string("LArCustomShape: unknown shape name ") +
-//                a_shapeName;
-//        throw std::runtime_error(error);
-//    } else {
-//        if(createCalculator(s_calculatorTypes.at(name)).isFailure()){ // map.at throws std::out_of_range exception on unknown shape name
-//            std::string error =
-//                std::string("Can't create LArWheelCalculator for name ") +
-//                a_shapeName + " in LArCustomShape constructor";
-//            throw std::runtime_error(error);
-//        }
-//    }
-//#endif // Athena
 }
 
 LArCustomShape::~LArCustomShape()
@@ -131,7 +109,7 @@ LArCustomShape::~LArCustomShape()
   //delete m_calculator;
 }
 
-//#if defined XAOD_STANDALONE
+
 int LArCustomShape::createCalculator(const CalcDef_t & cdef) { // LArG4::LArWheelCalculator_t wheelType, int zside
 
   std::cout << "LArCustomShape::createCalculator()" << std::endl;
@@ -150,22 +128,6 @@ int LArCustomShape::createCalculator(const CalcDef_t & cdef) { // LArG4::LArWhee
   std::cout << "createCalculator() - done." << std::endl;
 
 }
-//#else // XAOD_STANDALONE
-//StatusCode LArCustomShape::createCalculator(const CalcDef_t & cdef) { // LArG4::LArWheelCalculator_t wheelType, int zside
-//    LArG4::LArWheelCalculator_t wheelType = cdef.first;
-//    int zside = cdef.second;
-//
-//    std::string calcDSname = std::string("LAr::EMEC::")+ (zside>0?"Pos::":"Neg::")+LArWheelCalculator::LArWheelCalculatorTypeString(wheelType);
-//    if(detStore()->contains<LArWheelCalculator>(calcDSname)){
-//        return detStore()->retrieve(m_calculator, calcDSname);
-//    }
-//
-//    m_calculator = new LArWheelCalculator(wheelType, zside);
-//
-//    // ownership is passed to detStore
-//    return detStore()->record(m_calculator,  calcDSname);
-//}
-//#endif // Athena
 
 const LArWheelCalculator *LArCustomShape::calculator() const
 {
diff --git a/GeoSpecialShapes/src/LArWheelCalculator.cxx b/GeoSpecialShapes/src/LArWheelCalculator.cxx
index baaae58..0792b35 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator.cxx
@@ -9,31 +9,11 @@
 #include <climits>
 #include <cassert>
 
-//#ifndef BUILDVP1LIGHT
-//    #include "GaudiKernel/ISvcLocator.h"
-//    #include "GaudiKernel/Bootstrap.h"
-//    #include "GaudiKernel/MsgStream.h"
-//    #include "GaudiKernel/PhysicalConstants.h"
-//    #include "GeoModelInterfaces/IGeoModelSvc.h"
-//    #include "RDBAccessSvc/IRDBRecord.h"
-//    #include "RDBAccessSvc/IRDBRecordset.h"
-//    #include "RDBAccessSvc/IRDBAccessSvc.h"
-//    #include "./LArWheelCalculator_Impl/RDBParamReader.h"
-//    #include "./LArWheelCalculator_Impl/RDBParamRecords.h"
-//#endif
-
-//#include "GeoModelUtilities/DecodeVersionKey.h"
-
 #include "GeoSpecialShapes/LArWheelCalculator.h"
 
 #include "./LArWheelCalculator_Impl/DistanceCalculatorFactory.h"
 #include "./LArWheelCalculator_Impl/FanCalculatorFactory.h"
 
-//#include "AthenaKernel/Units.h"
-
-
-//using namespace Athena::Units;
-//using Gaudi::Units::twopi;
 
 
 // The radial boundaries of the inner and outer wheels are defined
@@ -114,25 +94,6 @@ LArWheelCalculator::LArWheelCalculator(LArG4::LArWheelCalculator_t a_wheelType,
   m_distanceCalcImpl(0),
   m_fanCalcImpl(0)
 {
-  // Get pointer to the message service
-  //ISvcLocator* svcLocator = Gaudi::svcLocator();
-  //IMessageSvc* msgSvc;
-  //StatusCode status = svcLocator->service("MessageSvc", msgSvc);
-  //if(status.isFailure()){
-  //  throw std::runtime_error("LArWheelCalculator constructor: cannot initialze message service");
-  //}
-  //MsgStream msg(msgSvc, "LArWheelCalculator");
-  //msg << MSG::VERBOSE << "LArWheelCalculator constructor at " << this
-  //    << " (type " << LArWheelCalculatorTypeString(m_type)
-  //    << "):" << endmsg;
-
-//#ifdef LARWC_DTNF_NEW
-//  msg << MSG::VERBOSE << "compiled with new DTNF" << endmsg;
-//#endif
-
-  // Access source of detector parameters.
- // msg << MSG::VERBOSE
- //     << "initializing data members from DB..." << endmsg;
 
     
 //#ifndef BUILDVP1LIGHT
@@ -199,43 +160,6 @@ LArWheelCalculator::LArWheelCalculator(LArG4::LArWheelCalculator_t a_wheelType,
 //  m_zWheelFrontFace = m_dMechFocaltoWRP + m_dWRPtoFrontFace;
 //  m_zWheelBackFace = m_zWheelFrontFace + m_WheelThickness;
 //
-//  msg << MSG::DEBUG << "... got these values:" << std::endl
-//      << "m_zWheelRefPoint       : " << m_zWheelRefPoint / cm << " [cm]" << std::endl
-//      << "m_dMechFocaltoWRP      : " << m_dMechFocaltoWRP / cm << " [cm]" << std::endl
-//      << "m_dElecFocaltoWRP      : " << m_dElecFocaltoWRP / cm << " [cm]" << std::endl
-//      << "m_HalfGapBetweenWheels : " << m_HalfGapBetweenWheels / cm << " [cm]" << std::endl
-//      << "m_rOuterCutoff         : " << m_rOuterCutoff / cm << " [cm]" << std::endl
-//      << "m_zWheelFrontFace      : " << m_zWheelFrontFace / cm << " [cm]" << std::endl
-//      << "m_zWheelBackFace       : " << m_zWheelBackFace / cm << " [cm]" << std::endl
-//      << "m_zShift               : " << m_zShift / cm << " [cm]" << std::endl
-//      << "Phi rotation           : " << (m_phiRotation? "true": "false") << std::endl
-//      << "eta wheels limits      : " << m_eta_low << ", " << m_eta_mid << ", " << m_eta_hi
-//      << endmsg;
-//  msg << MSG::VERBOSE << "hardcoded constants: " << std::endl
-//      << "m_WheelThickness       : " << m_WheelThickness / cm << " [cm]" << std::endl
-//      << "m_dWRPtoFrontFace      : " << m_dWRPtoFrontFace / cm << " [cm]"
-//      << endmsg;
-
-    //#endif
-//#ifdef BUILDVP1LIGHT //FIXME: check all this!!!
-    //TO DO: put real values
-   //m_zWheelRefPoint = 999;// / cm
-   //m_dMechFocaltoWRP = 999;// / cm << " [cm]" << std::endl
-   //m_dElecFocaltoWRP = 999;//      : " << m_dElecFocaltoWRP / cm << " [cm]" << std::endl
-   //m_HalfGapBetweenWheels = 999;// : " << m_HalfGapBetweenWheels / cm << " [cm]" << std::endl
-   //m_rOuterCutoff = 999;//         : " << m_rOuterCutoff / cm << " [cm]" << std::endl
-   //m_zWheelFrontFace = 999;//      : " << m_zWheelFrontFace / cm << " [cm]" << std::endl
-   //m_zWheelBackFace = 999;//       : " << m_zWheelBackFace / cm << " [cm]" << std::endl
-   //m_zShift = 999;//               : " << m_zShift / cm << " [cm]" << std::endl
-   m_phiRotation = true;//? "true": "false") << std::endl
-   //m_eta_low = 999;//
-   //m_eta_mid = 999;//
-   //m_eta_hi = 999;//
-
-   //m_WheelThickness = 999;//       : " << m_WheelThickness / cm << " [cm]" << std::endl
-   //m_dWRPtoFrontFace = 999;//      : " << m_dWRPtoFrontFace / cm << " [cm]"
-//#endif
-
 
   // Constructor initializes the geometry.
 
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx
index 055baef..fad07f8 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.cxx
@@ -12,17 +12,15 @@ namespace LArWheelCalculator_Impl
 {
 
   IDistanceCalculator* DistanceCalculatorFactory::Create(const std::string & sagging_opt,
-                                                         LArWheelCalculator* lwc/*,
-                                                         IRDBAccessSvc* rdbAccess,
-                                                         const DecodeVersionKey & larVersionKey*/)
+                                                         LArWheelCalculator* lwc)
   {
     // the same condition is in LArWheelCalculator constructor
     bool SaggingOn = (sagging_opt != "" && sagging_opt != "off")? true: false;
 
     if (SaggingOn) {
-      return new DistanceCalculatorSaggingOn(sagging_opt, lwc/*, rdbAccess, larVersionKey*/);
+      return new DistanceCalculatorSaggingOn(sagging_opt, lwc);
     } else {
-      return new DistanceCalculatorSaggingOff(lwc/*, rdbAccess, larVersionKey*/    );
+      return new DistanceCalculatorSaggingOff(lwc);
     }
   }
 
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h
index f1dbc8d..7fd5a6d 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorFactory.h
@@ -10,10 +10,6 @@
 
 #include <string>
 #include "IDistanceCalculator.h"
-//#ifndef BUILDVP1LIGHT
-//    #include "RDBAccessSvc/IRDBAccessSvc.h"
-//#endif
-//#include "GeoModelUtilities/DecodeVersionKey.h"
 
 class LArWheelCalculator;
 
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
index 47289c4..aea5269 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.cxx
@@ -6,7 +6,6 @@
 #include "GeoSpecialShapes/LArWheelCalculator.h"
 #include "GeoModelKernel/GeoDefinitions.h"
 
-//#include "GaudiKernel/PhysicalConstants.h"
 #include<cassert>
 
 //#define LWC_PARAM_ANGLE
@@ -17,19 +16,12 @@
 
 #include<signal.h>
 
-//using namespace Gaudi::Units;
-
 // Physical constants
 #include "GeoModelKernel/Units.h"
 #define SYSTEM_OF_UNITS GeoModelKernelUnits
 
 namespace LArWheelCalculator_Impl
-{
-
-  //DistanceCalculatorSaggingOff::DistanceCalculatorSaggingOff(LArWheelCalculator* c,
-  //                                                           IRDBAccessSvc* /*rdbAccess*/,
-  //                                                           const DecodeVersionKey & /*larVersionKey*/)
-  DistanceCalculatorSaggingOff::DistanceCalculatorSaggingOff(LArWheelCalculator* c)
+{  DistanceCalculatorSaggingOff::DistanceCalculatorSaggingOff(LArWheelCalculator* c)
     : m_lwc(c)
   {
     m_EndQuarterWave = lwc()->m_ActiveLength - lwc()->m_QuarterWaveLength;
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
index 6812002..fe19799 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOff.h
@@ -8,8 +8,6 @@
 
 #include "IDistanceCalculator.h"
 #include "GeoModelKernel/GeoDefinitions.h"
-//#include "RDBAccessSvc/IRDBAccessSvc.h"
-//#include "GeoModelUtilities/DecodeVersionKey.h"
 
 class LArWheelCalculator;
 
@@ -26,9 +24,7 @@ namespace LArWheelCalculator_Impl
     public:
 
       /// Constructor
-      DistanceCalculatorSaggingOff(LArWheelCalculator* lwc/*,
-                                   IRDBAccessSvc* rdbAccess,
-                                   const DecodeVersionKey& larVersionKey*/);
+      DistanceCalculatorSaggingOff(LArWheelCalculator* lwc);
 
       /// @name Geometry methods
       /// @{
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
index c7cf211..7e7c1c9 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.cxx
@@ -2,12 +2,7 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-//#include "GaudiKernel/ISvcLocator.h"
-//#include "GaudiKernel/Bootstrap.h"
-//#include "GaudiKernel/MsgStream.h"
-
 #include "DistanceCalculatorSaggingOn.h"
-//#include "CLHEP/Vector/ThreeVector.h"
 #include "GeoModelKernel/GeoDefinitions.h"
 
 #include <vector>
@@ -15,9 +10,6 @@
 
 #include "GeoSpecialShapes/LArWheelCalculator.h"
 
-//#include "AthenaKernel/Units.h"
-//using Athena::Units::mm;
-
 // Physical constants
 #include "GeoModelKernel/Units.h"
 #define SYSTEM_OF_UNITS GeoModelKernelUnits
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
index 7ca0448..31ab47d 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/DistanceCalculatorSaggingOn.h
@@ -27,9 +27,7 @@ namespace LArWheelCalculator_Impl
 
       /// Constructor
       DistanceCalculatorSaggingOn(const std::string& saggingOptions,
-                                  LArWheelCalculator* lwc/*,
-                                  IRDBAccessSvc* rdbAccess,
-                                  const DecodeVersionKey & larVersionKey*/);
+                                  LArWheelCalculator* lwc);
 
       /// @name Geometry methods
       /// @{
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx
index 0fb27ac..be80f09 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.cxx
@@ -11,17 +11,15 @@ namespace LArWheelCalculator_Impl
 {
 
   IFanCalculator* FanCalculatorFactory::Create(bool isSaggingOn, bool isModule,
-                                               LArWheelCalculator* lwc/*,
-                                               IRDBAccessSvc* rdbAccess,
-                                               const DecodeVersionKey& larVersionKey*/)
+                                               LArWheelCalculator* lwc)
   {
     if (isModule) {
-      return new ModuleFanCalculator(lwc/*, rdbAccess, larVersionKey*/);
+      return new ModuleFanCalculator(lwc);
     }
     if (isSaggingOn) {
-      return new WheelFanCalculator<SaggingOn_t>(lwc/*, rdbAccess, larVersionKey*/);
+      return new WheelFanCalculator<SaggingOn_t>(lwc);
     } else {
-      return new WheelFanCalculator<SaggingOff_t>(lwc/*, rdbAccess, larVersionKey*/);
+      return new WheelFanCalculator<SaggingOff_t>(lwc);
     }
   }
 
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h
index 79b207f..e4f8f37 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/FanCalculatorFactory.h
@@ -7,8 +7,6 @@
 
 
 #include "IFanCalculator.h"
-//#include "RDBAccessSvc/IRDBAccessSvc.h"
-//#include "GeoModelUtilities/DecodeVersionKey.h"
 
 class LArWheelCalculator;
 
@@ -24,9 +22,7 @@ namespace LArWheelCalculator_Impl
   {
     public:
       static IFanCalculator* Create(bool isSaggingOn, bool isModule,
-                                    LArWheelCalculator* lwc/*,
-                                    IRDBAccessSvc* rdbAccess,
-                                    const DecodeVersionKey & larVersionKey*/);
+                                    LArWheelCalculator* lwc);
   };
 
 }
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
index 4bc81b2..bb553a6 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IDistanceCalculator.h
@@ -5,8 +5,6 @@
 #ifndef __LArWheelCalculator_Impl_IDistanceCalculator_H__
 #define __LArWheelCalculator_Impl_IDistanceCalculator_H__
 
-
-//#include "CLHEP/Vector/ThreeVector.h"
 #include "GeoModelKernel/GeoDefinitions.h"
 
 namespace LArWheelCalculator_Impl
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
index cd0f7dc..56f9e06 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/IFanCalculator.h
@@ -5,8 +5,6 @@
 #ifndef __LArWheelCalculator_Impl_IFanCalculator_H__
 #define __LArWheelCalculator_Impl_IFanCalculator_H__
 
-
-//#include "CLHEP/Vector/ThreeVector.h"
 #include "GeoModelKernel/GeoDefinitions.h"
 
 namespace LArWheelCalculator_Impl
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
index 3008f52..6079e0c 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.cxx
@@ -6,10 +6,7 @@
 
 #include "GeoSpecialShapes/LArWheelCalculator.h"
 #include "GeoModelKernel/GeoDefinitions.h"
-//#include "CLHEP/Vector/ThreeVector.h"
 
-//#include "GaudiKernel/PhysicalConstants.h"
-//using namespace Gaudi::Units;
 // Physical constants
 #include "GeoModelKernel/Units.h"
 #define SYSTEM_OF_UNITS GeoModelKernelUnits
@@ -20,10 +17,6 @@
 
 namespace LArWheelCalculator_Impl
 {
-
-  //ModuleFanCalculator::ModuleFanCalculator(LArWheelCalculator* lwc,
-  //                                         IRDBAccessSvc* /*rdbAccess*/,
-  //                                         const DecodeVersionKey & /*larVersionKey*/)
   ModuleFanCalculator::ModuleFanCalculator(LArWheelCalculator* lwc)
     : m_lwc(lwc)
   {
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
index da2cfbc..a0fe5ce 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/ModuleFanCalculator.h
@@ -6,8 +6,6 @@
 #define __LArWheelCalculator_Impl_ModuleFanCalculator_H__
 
 #include "IFanCalculator.h"
-//#include "RDBAccessSvc/IRDBAccessSvc.h"
-//#include "GeoModelUtilities/DecodeVersionKey.h"
 #include "GeoModelKernel/GeoDefinitions.h"
 
 class LArWheelCalculator;
@@ -19,9 +17,7 @@ namespace LArWheelCalculator_Impl
   class ModuleFanCalculator : public IFanCalculator
   {
     public:
-      ModuleFanCalculator(LArWheelCalculator* lwc/*,
-                          IRDBAccessSvc* rdbAccess,
-                          const DecodeVersionKey & larVersionKey*/);
+      ModuleFanCalculator(LArWheelCalculator* lwc);
 
       // geometry methods:
       virtual double DistanceToTheNearestFan(GeoTrf::Vector3D &p, int & out_fan_number) const;
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h b/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
index c372142..44ad15a 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/WheelFanCalculator.h
@@ -6,12 +6,9 @@
 #define LARWHEELCALCULATOR_IMPL_WHEELFANCALCULATOR_H
 
 #include "IFanCalculator.h"
-//#include "RDBAccessSvc/IRDBAccessSvc.h"
-//#include "GeoModelUtilities/DecodeVersionKey.h"
 #include "GeoSpecialShapes/LArWheelCalculator.h"
 #include "GeoModelKernel/GeoDefinitions.h"
 
-//#include "GaudiKernel/PhysicalConstants.h"
 // Physical constants
 #include "GeoModelKernel/Units.h"
 #define SYSTEM_OF_UNITS GeoModelKernelUnits
diff --git a/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
index 8d47d28..2a7f18b 100644
--- a/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
@@ -4,18 +4,6 @@
 
 #include "GeoSpecialShapes/LArWheelCalculator.h"
 #include "GeoSpecialShapes/sincos.h"
-//#include "CLHEP/Units/SystemOfUnits.h"
-
-/// TO DO        : Dependencies from fROOT - gone
-/// TO BE TESTED : RowVectorXd equivalent of TVectorD
-///                MatrixXd    equivalent of TMatrixD
-
-//#include "TMath.h"
-//#include "TMatrixD.h"
-//#include "TVectorD.h"
-//#include "TMatrixDLazy.h"
-//#include "TDecompLU.h"
-//#include "TDecompSVD.h"
 
 #include <Eigen/Dense>
 #include <vector>
-- 
GitLab