Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-05-17 03:00:31

0001 #ifndef ETLDetLayerGeometryBuilder_h
0002 #define ETLDetLayerGeometryBuilder_h
0003 
0004 /** \class ETLDetLayerGeometryBuilder
0005  *
0006  *  Build the ETL DetLayers.
0007  *
0008  *  \author L. Gray - FNAL
0009  */
0010 
0011 #include <Geometry/MTDGeometryBuilder/interface/MTDGeometry.h>
0012 #include <Geometry/MTDNumberingBuilder/interface/MTDTopology.h>
0013 #include <vector>
0014 
0015 class DetLayer;
0016 class MTDRingForwardDoubleLayer;
0017 class MTDDetRing;
0018 class MTDSectorForwardDoubleLayer;
0019 class MTDDetSector;
0020 
0021 class ETLDetLayerGeometryBuilder {
0022 public:
0023   /// return.first=forward (+Z), return.second=backward (-Z)
0024   /// both vectors are sorted inside-out
0025   static std::pair<std::vector<DetLayer*>, std::vector<DetLayer*> > buildLayers(const MTDGeometry& geo,
0026                                                                                 const MTDTopology& topo);
0027 
0028 private:
0029   // Disable constructor - only static access is allowed.
0030   ETLDetLayerGeometryBuilder() {}
0031 
0032   static MTDRingForwardDoubleLayer* buildLayer(int endcap,
0033                                                int layer,
0034                                                std::vector<unsigned>& rings,
0035                                                const MTDGeometry& geo);
0036 
0037   static MTDSectorForwardDoubleLayer* buildLayerNew(
0038       int endcap, int layer, std::vector<unsigned>& sectors, const MTDGeometry& geo, const MTDTopology& topo);
0039 
0040   static MTDDetRing* makeDetRing(std::vector<const GeomDet*>& geomDets);
0041   static bool isFront(int layer, int ring, int module);
0042   static MTDDetSector* makeDetSector(std::vector<const GeomDet*>& geomDets, const MTDTopology& topo);
0043 };
0044 #endif