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 virtual DetId geographicalId() const; 00037 00039 DTChamberId id() const; 00040 00041 // Which subdetector 00042 virtual SubDetector subDetector() const {return GeomDetEnumerators::DT;} 00043 00045 bool operator==(const DTChamber& ch) const; 00046 00048 void add(DTSuperLayer* sl); 00049 00051 virtual std::vector< const GeomDet*> components() const; 00052 00054 virtual const GeomDet* component(DetId id) const; 00055 00057 const std::vector< const DTSuperLayer*>& superLayers() const; 00058 00060 const DTSuperLayer* superLayer(DTSuperLayerId id) const; 00061 00064 const DTSuperLayer* superLayer(int isl) const; 00065 00067 const DTLayer* layer(DTLayerId id) const; 00068 00069 private: 00070 00071 DTChamberId theId; 00072 00073 // The chamber owns its SL 00074 std::vector<const DTSuperLayer*> theSLs; 00075 00076 }; 00077 #endif