Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }  // namespace
0022 
0023 /**
0024  * Adds GeometricTimingDets representing final modules to the previous level
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  // Geometry_MTDNumberingBuilder_CmsMTDConstruction_H