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 */ 00040 // Return the DetId of this SL 00041 virtual DetId geographicalId() const; 00042 00044 DTSuperLayerId id() const; 00045 00046 // Which subdetector 00047 virtual SubDetector subDetector() const {return GeomDetEnumerators::DT;} 00048 00050 bool operator==(const DTSuperLayer& sl) const ; 00051 00053 virtual std::vector< const GeomDet*> components() const; 00054 00056 virtual const GeomDet* component(DetId id) const; 00057 00059 const std::vector< const DTLayer*>& layers() const; 00060 00062 void add(DTLayer* l); 00063 00066 const DTChamber* chamber() const; 00067 00069 const DTLayer* layer(DTLayerId id) const; 00070 00073 const DTLayer* layer(int ilay) const; 00074 00075 00076 private: 00077 DTSuperLayerId theId; 00078 // The SL owns its Layer 00079 std::vector< const DTLayer*> theLayers; 00080 const DTChamber* theCh; 00081 00082 protected: 00083 00084 }; 00085 #endif // DTSUPERLAYER_H 00086