Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:14:26

0001 #ifndef DTSUPERLAYER_H
0002 #define DTSUPERLAYER_H
0003 
0004 /** \class DTSuperLayer
0005  *
0006  *  Model of a superlayer in Muon Drift Tube chambers.
0007  *  
0008  *  A superlayer is composed by 4 staggered DTLayer s.
0009  *
0010  *  \author Stefano Lacaprara - INFN Padova <stefano.lacaprara@pd.infn.it>
0011  *
0012  */
0013 
0014 /* Base Class Headers */
0015 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
0016 
0017 /* Collaborating Class Declarations */
0018 #include "DataFormats/MuonDetId/interface/DTSuperLayerId.h"
0019 #include "DataFormats/MuonDetId/interface/DTLayerId.h"
0020 
0021 class DTLayer;
0022 class DTChamber;
0023 
0024 class DTSuperLayer : public GeomDet {
0025 public:
0026   /* Constructor */
0027   DTSuperLayer(const DTSuperLayerId& id, ReferenceCountingPointer<BoundPlane>& plane, const DTChamber* ch = nullptr);
0028 
0029   /* Destructor */
0030   ~DTSuperLayer() override;
0031 
0032   /* Operations */
0033   /// Return the DetId of this SL
0034   DTSuperLayerId id() const;
0035 
0036   // Which subdetector
0037   SubDetector subDetector() const override { return GeomDetEnumerators::DT; }
0038 
0039   /// True if id are the same
0040   bool operator==(const DTSuperLayer& sl) const;
0041 
0042   /// Return the layers in the SL
0043   std::vector<const GeomDet*> components() const override;
0044 
0045   /// Return the layer with a given id in this SL
0046   const GeomDet* component(DetId id) const override;
0047 
0048   /// Return the layers in the SL
0049   const std::vector<const DTLayer*>& layers() const;
0050 
0051   /// Add layer to the SL which owns it
0052   void add(DTLayer* l);
0053 
0054   /// Return the chamber this SL belongs to (0 if any, eg if a SL is
0055   /// built on his own)
0056   const DTChamber* chamber() const;
0057 
0058   /// Return the layer corresponding to the given id
0059   const DTLayer* layer(const DTLayerId& id) const;
0060 
0061   /// Return the given layer.
0062   /// Layers are numbered 1-4.
0063   const DTLayer* layer(int ilay) const;
0064 
0065 private:
0066   DTSuperLayerId theId;
0067   // The SL owns its Layer
0068   std::vector<const DTLayer*> theLayers;
0069   const DTChamber* theCh;
0070 
0071 protected:
0072 };
0073 #endif  // DTSUPERLAYER_H