00001 #ifndef DTGeometry_DTChamber_h 00002 #define DTGeometry_DTChamber_h 00003 00018 #include "Geometry/CommonDetUnit/interface/GeomDet.h" 00019 #include "DataFormats/MuonDetId/interface/DTChamberId.h" 00020 #include "DataFormats/MuonDetId/interface/DTSuperLayerId.h" 00021 #include "DataFormats/MuonDetId/interface/DTLayerId.h" 00022 00023 class DTSuperLayer; 00024 class DTLayer; 00025 00026 class DTChamber : public GeomDet { 00027 00028 public: 00030 DTChamber(DTChamberId id, const ReferenceCountingPointer<BoundPlane>& plane); 00031 00033 virtual ~DTChamber(); 00034 00036 DTChamberId id() const; 00037 00038 // Which subdetector 00039 virtual SubDetector subDetector() const {return GeomDetEnumerators::DT;} 00040 00042 bool operator==(const DTChamber& ch) const; 00043 00045 void add(DTSuperLayer* sl); 00046 00048 virtual std::vector< const GeomDet*> components() const; 00049 00051 virtual const GeomDet* component(DetId id) const; 00052 00054 const std::vector< const DTSuperLayer*>& superLayers() const; 00055 00057 const DTSuperLayer* superLayer(DTSuperLayerId id) const; 00058 00061 const DTSuperLayer* superLayer(int isl) const; 00062 00064 const DTLayer* layer(DTLayerId id) const; 00065 00066 private: 00067 00068 DTChamberId theId; 00069 00070 // The chamber owns its SL 00071 std::vector<const DTSuperLayer*> theSLs; 00072 00073 }; 00074 #endif