File indexing completed on 2025-01-21 01:39:52
0001 #ifndef Geometry_MTDNumberingBuilder_CmsMTDConstruction_H
0002 #define Geometry_MTDNumberingBuilder_CmsMTDConstruction_H
0003 #include <string>
0004 #include <vector>
0005 #include "Geometry/MTDNumberingBuilder/interface/GeometricTimingDet.h"
0006 #include "Geometry/MTDNumberingBuilder/interface/CmsMTDStringToEnum.h"
0007 #include "Geometry/MTDCommonData/interface/BTLNumberingScheme.h"
0008 #include "Geometry/MTDCommonData/interface/ETLNumberingScheme.h"
0009
0010 #include "DataFormats/Math/interface/deltaPhi.h"
0011
0012 namespace {
0013
0014 template <class valType>
0015 inline constexpr valType makempiToppi(valType angle) {
0016 constexpr valType twoPi = 2. * M_PI;
0017 constexpr valType epsilon = 1.e-13;
0018 auto tmpphi = angle0to2pi::make0To2pi(angle);
0019 return (tmpphi - M_PI > epsilon) ? tmpphi - twoPi : tmpphi;
0020 }
0021 }
0022
0023
0024
0025
0026 template <class FilteredView>
0027 class CmsMTDConstruction {
0028 public:
0029 CmsMTDConstruction();
0030 ~CmsMTDConstruction() = default;
0031
0032 static bool mtdOrderZ(const GeometricTimingDet* a, const GeometricTimingDet* b);
0033 static bool mtdOrderRR(const GeometricTimingDet* a, const GeometricTimingDet* b);
0034 static bool mtdOrderPhi(const GeometricTimingDet* a, const GeometricTimingDet* b);
0035 static bool btlOrderPhi(const GeometricTimingDet* a, const GeometricTimingDet* b);
0036 static bool btlOrderZ(const GeometricTimingDet* a, const GeometricTimingDet* b);
0037
0038 void buildBTLModule(FilteredView&, GeometricTimingDet*);
0039 void buildETLModule(FilteredView&, GeometricTimingDet*);
0040
0041 GeometricTimingDet* buildSubdet(FilteredView&);
0042 GeometricTimingDet* buildLayer(FilteredView&);
0043
0044 void baseNumberFromHistory(const DDGeoHistory& gh);
0045
0046 bool isETLpreV8(FilteredView&);
0047
0048 protected:
0049 CmsMTDStringToEnum theCmsMTDStringToEnum;
0050
0051 BTLNumberingScheme btlScheme_;
0052 ETLNumberingScheme etlScheme_;
0053 MTDBaseNumber baseNumber_;
0054 };
0055
0056 #endif