00001 #ifndef MuonRPCDetLayerGeometryBuilder_h 00002 #define MuonRPCDetLayerGeometryBuilder_h 00003 00013 class DetLayer; 00014 class MuRingForwardDoubleLayer; 00015 class MuRodBarrelLayer; 00016 00017 00018 #include <Geometry/RPCGeometry/interface/RPCGeometry.h> 00019 #include "RecoMuon/DetLayers/interface/MuDetRod.h" 00020 #include <vector> 00021 00022 class MuonRPCDetLayerGeometryBuilder { 00023 public: 00025 MuonRPCDetLayerGeometryBuilder(){} 00026 00028 virtual ~MuonRPCDetLayerGeometryBuilder(); 00029 00032 static std::pair<std::vector<DetLayer*>, std::vector<DetLayer*> > buildEndcapLayers(const RPCGeometry& geo); 00033 00035 static std::vector<DetLayer*> buildBarrelLayers(const RPCGeometry& geo); 00036 00037 private: 00038 static void makeBarrelLayers(std::vector<const GeomDet *> & geomDets, 00039 std::vector<MuRodBarrelLayer*> & result); 00040 static void makeBarrelRods(std::vector<const GeomDet *> & geomDets, 00041 std::vector<const DetRod*> & result); 00042 static bool isFront(const RPCDetId & rpcId); 00043 static MuRingForwardDoubleLayer* buildLayer(int endcap,std::vector<int> rings, int station,int layer, std::vector<int>& rolls,const RPCGeometry& geo); 00044 00045 }; 00046 #endif 00047