diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6e29d09c64f7d932bdf17b284d8530971ced7451..bcef30f7ade7cd0bd6e140a37148dde5cae09c4e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,9 @@ project( "GeoModelG4" VERSION 1.0.0 LANGUAGES CXX )
# Add sub-packages.
add_subdirectory(GeoMaterial2G4)
add_subdirectory(GeoModel2G4)
+add_subdirectory(GeoSpecialShapes)
install(EXPORT GeoMaterial2G4-export FILE GeoModelG4-GeoMaterial2G4.cmake DESTINATION lib/GeoModelG4)
install(EXPORT GeoModel2G4-export FILE GeoModelG4-GeoModel2G4.cmake DESTINATION lib/GeoModelG4)
+install(EXPORT GeoSpecialShapes-export FILE GeoSpecialShapes-GeoModel2G4.cmake DESTINATION lib/GeoModelG4)
install(FILES cmake/GeoModelG4Config.cmake DESTINATION lib/GeoModelG4)
diff --git a/GeoSpecialShapes/.DS_Store b/GeoSpecialShapes/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..77871f34331092bd479812c39bc2a1d33d45e5f1
Binary files /dev/null and b/GeoSpecialShapes/.DS_Store differ
diff --git a/GeoSpecialShapes/CMakeLists.txt b/GeoSpecialShapes/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..283cf7a9f92f189b0596eb58539703c9835b3bbd
--- /dev/null
+++ b/GeoSpecialShapes/CMakeLists.txt
@@ -0,0 +1,61 @@
+################################################################################
+# Package: GeoSpecialShapes
+################################################################################
+
+cmake_minimum_required(VERSION 3.10)
+
+# Declare the package name
+project( "GeoSpecialShapes" VERSION 1.0.0 LANGUAGES CXX )
+
+# Declare the package's dependencies:
+#atlas_depends_on_subdirs( PUBLIC
+# Control/AthenaKernel
+# Control/StoreGate
+# PRIVATE
+# Control/CxxUtils
+# Database/RDBAccessSvc
+# DetectorDescription/GeoModel/GeoModelInterfaces
+# DetectorDescription/GeoModel/GeoModelUtilities
+# GaudiKernel )
+
+# External dependencies:
+find_package ( GeoModelCore REQUIRED)
+
+# Project's Settings
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+# 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 target and properties
+add_library( GeoSpecialShapes SHARED ${HEADERS} ${SOURCES} )
+
+target_link_libraries( GeoSpecialShapes PUBLIC
+PRIVATE GeoMaterial2G4 GeoModel2G4
+GeoModelCore::GeoModelKernel )
+
+#target_include_directories( GeoSpecialShapes PUBLIC ${GeoModelCore_INCLUDE_DIRS}
+# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+# $<INSTALL_INTERFACE:include> )
+
+target_include_directories( GeoSpecialShapes SYSTEM PUBLIC PRIVATE ${GeoModelCore_INCLUDE_DIRS} )
+target_include_directories( GeoSpecialShapes PUBLIC ${GeoModelCore_INCLUDE_DIRS}
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:include> )
+
+
+# Set installation of library headers
+set_property( TARGET GeoSpecialShapes PROPERTY PUBLIC_HEADER ${HEADERS} )
+
+# new test GeoSpecialShapes
+install( TARGETS GeoSpecialShapes EXPORT GeoSpecialShapes-export LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/GeoSpecialShapes )
+
+
+
diff --git a/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h b/GeoSpecialShapes/GeoSpecialShapes/LArCustomShape.h
new file mode 100644
index 0000000000000000000000000000000000000000..3a24f3ca8a2275fd25de532299e759743b9a8cc3
--- /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 0000000000000000000000000000000000000000..3d19fcc260cb037b3f0551bd7bd437c752712810
--- /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 0000000000000000000000000000000000000000..ef4ec233aab27fcaa1571e7e02e2c7302860ac97
--- /dev/null
+++ b/GeoSpecialShapes/GeoSpecialShapes/LArWheelCalculator.h
@@ -0,0 +1,220 @@
+/*
+ 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"
+
+#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_ActiveLength;
+ double m_StraightStartSection;
+ double m_dWRPtoFrontFace;
+
+
+ double m_zWheelFrontFace, m_zWheelBackFace;
+ double m_HalfGapBetweenWheels;
+ double m_zWheelRefPoint;
+ double m_dMechFocaltoWRP;
+ double m_dElecFocaltoWRP;
+ double m_rOuterCutoff;
+ double m_eta_hi, m_eta_mid, m_eta_low;
+
+ double m_zShift;
+ 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(const RDBParamRecords &);
+ void inner_wheel_init(const RDBParamRecords &);
+ 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 0000000000000000000000000000000000000000..dcea707a7ec26374f55280cbec8a6dc8fa7d546f
--- /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 0000000000000000000000000000000000000000..d5a4c1f4fcb6f9d025463102e87790cad5bc7e67
--- /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 0000000000000000000000000000000000000000..cd2c4ad8b6b685ca89a99f973eb8e0c20823acdf
--- /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 0000000000000000000000000000000000000000..4f51983ddfa3cdbac3c1e7c2ebe9dfcc7d5c5fa2
--- /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 0000000000000000000000000000000000000000..cc51c8a60549bbe929e9d194421156bbeb0376fb
--- /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 0000000000000000000000000000000000000000..5c100e54a88f7cf58b414fc43b54b8801da0fd5c
--- /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 100755
index 0000000000000000000000000000000000000000..9e1ac450765d6b05920ffa94798f6f963b679dad
Binary files /dev/null and b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CMakeDetermineCompilerABI_CXX.bin differ
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 0000000000000000000000000000000000000000..a2525ab7ef4dd986893ef513a7f35111f5459792
--- /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 0000000000000000000000000000000000000000..2d66298588989dc5d404dae0025b8bf4e952498e
--- /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 100755
index 0000000000000000000000000000000000000000..a5dafb114b35eed175337579b13d3e47ac1aa82c
Binary files /dev/null and b/GeoSpecialShapes/build/CMakeFiles/3.10.3/CompilerIdCXX/a.out differ
diff --git a/GeoSpecialShapes/build/CMakeFiles/CMakeDirectoryInformation.cmake b/GeoSpecialShapes/build/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..e7691471381337bffb350ae459d1c1a6e1dbdad9
--- /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 0000000000000000000000000000000000000000..1ddbbe2ea0760a7ea0017bfe5ac630806ed5d00d
--- /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 0000000000000000000000000000000000000000..11d7742ab08edfe4f286f929fe33d60b18ae914b
--- /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 0000000000000000000000000000000000000000..b4a25f974316a3bf9e027dc907d9f40a2140600e
--- /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 0000000000000000000000000000000000000000..1060cc8f853d36cbe5320172d5b958babee315ba
--- /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 0000000000000000000000000000000000000000..5e834494d0a3a51740ba086680749a2c20b34e97
--- /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 0000000000000000000000000000000000000000..b55e03237f5dc678a1c2507584c8dc8ec85267a3
--- /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 0000000000000000000000000000000000000000..d8a5983f16d649e9c0509be062d11c40969932ab
--- /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 0000000000000000000000000000000000000000..6c587e25fac6710568bb1976c973bcd2e714ad74
--- /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 0000000000000000000000000000000000000000..1be4a6240df44d4559a9a2f75d23b16caa90c8a0
--- /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 0000000000000000000000000000000000000000..7545e33401ad7e60809d1f3e2be9170dff671bab
--- /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 0000000000000000000000000000000000000000..448685825b5bd5429ab5da0062e9db9e54aaf699
--- /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 0000000000000000000000000000000000000000..3dccd731726d7faa8b29d8d7dba3b981a53ca497
--- /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 100755
index 0000000000000000000000000000000000000000..155117b495a14d926b67f91b77ddeeb952d06b18
Binary files /dev/null and b/GeoSpecialShapes/build/CMakeFiles/feature_tests.bin differ
diff --git a/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx b/GeoSpecialShapes/build/CMakeFiles/feature_tests.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..34d2e8c4b30f6c938980556823efe8cd6828aff8
--- /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 0000000000000000000000000000000000000000..f599e28b8ab0d8c9c57a486c89c4a5132dcbd3b2
--- /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 0000000000000000000000000000000000000000..92eb08f9223dfc047a5f0d11c3a9c5ff06aa6559
--- /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 0000000000000000000000000000000000000000..45c25ccc06222147221f2bd22e7a335fe6c9108b
--- /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 0000000000000000000000000000000000000000..57a3c33d4da3311af084e8cdfba3789a4f7f4c69
--- /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/.DS_Store b/GeoSpecialShapes/src/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..e69c80c0b5842ed4074ed03190f03fc8e2c0ac8a
Binary files /dev/null and b/GeoSpecialShapes/src/.DS_Store differ
diff --git a/GeoSpecialShapes/src/LArCustomShape.cxx b/GeoSpecialShapes/src/LArCustomShape.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..bf29bf874158fb12be1535c4d21f7045eb556103
--- /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 0000000000000000000000000000000000000000..9149c763c694ceb127bb7baba0d88288b6117547
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator.cxx
@@ -0,0 +1,592 @@
+/*
+ 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"
+
+// Physical constants
+#include "GeoModelKernel/Units.h"
+#define SYSTEM_OF_UNITS GeoModelKernelUnits
+
+//#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).
+// param(m_dMechFocaltoWRP, "Z1", cm).
+// param(m_dElecFocaltoWRP, "DCF", cm).
+// param(m_HalfGapBetweenWheels, "DCRACK", cm).
+// param(m_rOuterCutoff, "RLIMIT", cm).
+// param(m_zShift, "ZSHIFT", cm)
+// ;
+//
+// 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).
+// param(m_eta_mid, "ETAEXT", 1.0).
+// param(m_eta_low, "ETAEXT", 1.0, 1)
+// ;
+//
+// rdbr.
+// data( "EmecMagicNumbers", larVersionKey.tag(), larVersionKey.node() ).
+// fallback_to( "EmecMagicNumbers","EMECMagicNumbers-00" ).
+// // store to, name, units
+// param(m_ActiveLength, "ACTIVELENGTH", mm).
+// param(m_StraightStartSection, "STRAIGHTSTARTSECTION", mm).
+// param(m_dWRPtoFrontFace, "REFTOACTIVE", mm)
+// ;
+//
+// m_WheelThickness = m_ActiveLength + 2.*m_StraightStartSection;
+// m_HalfWheelThickness = m_WheelThickness * 0.5;
+//
+ //TO DO : Handle properly these strings
+ std::string pr_opt_value;
+ std::string sagging_opt_value;
+//
+// 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").
+// param(sagging_opt_value, "SAGGING")
+// ;
+//
+// 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:
+ //TO DO : inner_wheel_init(EmecWheelParameters_recs);
+ 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:
+ //TO DO : outer_wheel_init(EmecWheelParameters_recs);
+ m_ZeroFanPhi = m_FanStepOnPhi * 0.5;
+ if(m_phiRotation) m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+ break;
+ case LArG4::InnerElectrodWheel:
+ //TO DO : inner_wheel_init(EmecWheelParameters_recs);
+ m_ZeroFanPhi = 0;
+ if(m_phiRotation) m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+ m_isElectrode = true;
+ break;
+ case LArG4::OuterElectrodWheel:
+ //TO DO : outer_wheel_init(EmecWheelParameters_recs);
+ 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:
+ //TO DO : inner_wheel_init(EmecWheelParameters_recs);
+ 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:
+ //TO DO : outer_wheel_init(EmecWheelParameters_recs);
+ module_init();
+ m_ZeroFanPhi += m_FanStepOnPhi * 0.5;
+ // later for all? m_ZeroFanPhi_ForDetNeaFan = m_ZeroFanPhi - m_FanStepOnPhi * 0.5;
+ break;
+ case LArG4::InnerElectrodModule:
+ //TO DO : inner_wheel_init(EmecWheelParameters_recs);
+ module_init();
+ m_FirstFan ++;
+ m_isElectrode = true;
+ break;
+ case LArG4::OuterElectrodModule:
+ //TO DO : outer_wheel_init(EmecWheelParameters_recs);
+ 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(const RDBParamRecords & EmecWheelParameters_recs)
+{
+ for(int i = 0; i < 5; ++ i) {
+ m_slant_parametrization[i] = default_slant_parametrization[0][i];
+ }
+ m_slant_use_default = true;
+ // TO DO : commented out for now
+// 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(const RDBParamRecords & EmecWheelParameters_recs)
+{
+ for(int i = 0; i < 5; ++ i) {
+ m_slant_parametrization[i] = default_slant_parametrization[1][i];
+ }
+ m_slant_use_default = true;
+ // TO DO : commented out for now
+// 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 0000000000000000000000000000000000000000..93e9b8556e1c3ed512e48e84af9e6c05fee05f28
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculatorGeometry.cxx
@@ -0,0 +1,136 @@
+/*
+ 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"
+
+#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*deg; // TO DO
+ return result;
+}
+
+// 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 0000000000000000000000000000000000000000..055baef8d78954775ab082d19e659638aab8cf3e
--- /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 0000000000000000000000000000000000000000..f1dbc8d936d6b39218120c0c2cf28617dc582eb2
--- /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 0000000000000000000000000000000000000000..8d0da45b83dfa6a6addfb9717fde8c10ff625b18
--- /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 0000000000000000000000000000000000000000..a09257e59e1cc46df8237365bc18e2c83764eaca
--- /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 0000000000000000000000000000000000000000..03c66928c55c835930dfb13a45a40ad93f45a296
--- /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 0000000000000000000000000000000000000000..e10c79d26da8db1753316e3f27ead24e9f7cd1e6
--- /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 0000000000000000000000000000000000000000..0fb27acdb8a24f7235958d152d9c65b649380de1
--- /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 0000000000000000000000000000000000000000..79b207f848a765f4ac12326edc306d550276bd8d
--- /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 0000000000000000000000000000000000000000..d45f4743c22d4051719065ca51c55ffb4d88c7a3
--- /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 0000000000000000000000000000000000000000..4cd70f9643594ab4df7054c5d3dab955f43b25a9
--- /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 0000000000000000000000000000000000000000..04f19f603a8f06117b01c4e811593bfe90f24203
--- /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 0000000000000000000000000000000000000000..327c70cb0e84383fcfc00ee077f6cbd63e657697
--- /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 0000000000000000000000000000000000000000..98632d26b85396d5a9a45a9360e58f1526eff729
--- /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 0000000000000000000000000000000000000000..584d0ed66498a7141c729a097bbddb44f1d11866
--- /dev/null
+++ b/GeoSpecialShapes/src/LArWheelCalculator_Impl/sincos_poly.cxx
@@ -0,0 +1,243 @@
+/*
+ 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 :D
+//#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
+
+//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;
+//}
+
+typedef Eigen::Matrix<double, Eigen::Dynamic, 1> Vector1D;
+typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> MatrixXd;
+
+// find best approximation of y values using linear combination of basis functions in bf
+//static std::vector<double>
+static Vector1D findLinearApproximation(
+ const int dataLen, const int nBasisFuntions,
+ const std::vector<double> &y, const MatrixXd & bf)
+{
+ //TMatrixDSym A(nBasisFuntions);
+ MatrixXd A (nBasisFuntions, nBasisFuntions);
+ //TVectorD vY(nBasisFuntions);
+ Vector1D 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
+ std::vector<double> x(dataLen); // angle points
+ std::vector<double> ysin(dataLen); // to be approximated function values at angle points - sin
+ std::vector<double> 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>
+ Vector1D params_sin =
+ findLinearApproximation(dataLen, nBasisFunctions, ysin, bf);
+ //std::vector<double>
+ Vector1D 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/GeoModelG4Config.cmake b/cmake/GeoModelG4Config.cmake
index 25271d39c5ebf84aa9fc30745a2708f12943950b..f6d1d853982e78ff2f65db57b4a5c9246a9084ac 100644
--- a/cmake/GeoModelG4Config.cmake
+++ b/cmake/GeoModelG4Config.cmake
@@ -2,3 +2,4 @@ get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
include(${SELF_DIR}/GeoModelG4-GeoMaterial2G4.cmake)
include(${SELF_DIR}/GeoModelG4-GeoModel2G4.cmake)
+include(${SELF_DIR}/GeoModelG4-GeoSpecialShapes.cmake)