00001 #ifndef DTSUPERLAYER_H 00002 #define DTSUPERLAYER_H 00003 00016 /* Base Class Headers */ 00017 #include "Geometry/CommonDetUnit/interface/GeomDet.h" 00018 00019 /* Collaborating Class Declarations */ 00020 #include "DataFormats/MuonDetId/interface/DTSuperLayerId.h" 00021 #include "DataFormats/MuonDetId/interface/DTLayerId.h" 00022 00023 class DTLayer; 00024 class DTChamber; 00025 00026 00027 class DTSuperLayer : public GeomDet { 00028 00029 public: 00030 00031 /* Constructor */ 00032 DTSuperLayer(DTSuperLayerId id, 00033 ReferenceCountingPointer<BoundPlane>& plane, 00034 const DTChamber* ch=0); 00035 00036 /* Destructor */ 00037 virtual ~DTSuperLayer() ; 00038 00039 /* Operations */ 00041 DTSuperLayerId id() const; 00042 00043 // Which subdetector 00044 virtual SubDetector subDetector() const {return GeomDetEnumerators::DT;} 00045 00047 bool operator==(const DTSuperLayer& sl) const ; 00048 00050 virtual std::vector< const GeomDet*> components() const; 00051 00053 virtual const GeomDet* component(DetId id) const; 00054 00056 const std::vector< const DTLayer*>& layers() const; 00057 00059 void add(DTLayer* l); 00060 00063 const DTChamber* chamber() const; 00064 00066 const DTLayer* layer(DTLayerId id) const; 00067 00070 const DTLayer* layer(int ilay) const; 00071 00072 00073 private: 00074 DTSuperLayerId theId; 00075 // The SL owns its Layer 00076 std::vector< const DTLayer*> theLayers; 00077 const DTChamber* theCh; 00078 00079 protected: 00080 00081 }; 00082 #endif // DTSUPERLAYER_H 00083