Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:53

0001 #ifndef MuonRPCDetLayerGeometryBuilder_h
0002 #define MuonRPCDetLayerGeometryBuilder_h
0003 
0004 /** \class MuonRPCDetLayerGeometryBuilder
0005  *
0006  *  Build the RPC DetLayers.
0007  *
0008  *  \author N. Amapane - CERN
0009  */
0010 
0011 class DetLayer;
0012 class MuRingForwardDoubleLayer;
0013 class MuRodBarrelLayer;
0014 
0015 #include <Geometry/RPCGeometry/interface/RPCGeometry.h>
0016 #include "RecoMuon/DetLayers/interface/MuDetRod.h"
0017 #include <vector>
0018 
0019 class MuonRPCDetLayerGeometryBuilder {
0020 public:
0021   /// Constructor (disabled, only static access is allowed)
0022   MuonRPCDetLayerGeometryBuilder() {}
0023 
0024   /// Destructor
0025   virtual ~MuonRPCDetLayerGeometryBuilder();
0026 
0027   /// Builds the forward (+Z, return.first) and backward (-Z, return.second) layers.
0028   /// Both vectors are sorted inside-out
0029   static std::pair<std::vector<DetLayer*>, std::vector<DetLayer*> > buildEndcapLayers(const RPCGeometry& geo);
0030 
0031   /// Builds the barrel layers. Result vector is sorted inside-out
0032   static std::vector<DetLayer*> buildBarrelLayers(const RPCGeometry& geo);
0033 
0034 private:
0035   static void makeBarrelLayers(std::vector<const GeomDet*>& geomDets, std::vector<MuRodBarrelLayer*>& result);
0036   static void makeBarrelRods(std::vector<const GeomDet*>& geomDets, std::vector<const DetRod*>& result);
0037   static bool isFront(const RPCDetId& rpcId);
0038   static MuRingForwardDoubleLayer* buildLayer(int endcap,
0039                                               const std::vector<int>& rings,
0040                                               int station,
0041                                               int layer,
0042                                               std::vector<int>& rolls,
0043                                               const RPCGeometry& geo);
0044 };
0045 #endif