Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef Geometry_GEMGeometry_GEMRing_h
0002 #define Geometry_GEMGeometry_GEMRing_h
0003 
0004 /** \class GEMRing
0005  *
0006  *  Model of a GEM Ring
0007  *   
0008  *  A ring is composed of 36 super chambers
0009  *
0010  *  \author S. Dildick
0011  */
0012 
0013 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
0014 #include "DataFormats/MuonDetId/interface/GEMDetId.h"
0015 
0016 class GEMSuperChamber;
0017 
0018 class GEMRing {
0019 public:
0020   /// constructor
0021   GEMRing(int region, int station, int ring);
0022 
0023   /// destructor
0024   ~GEMRing();
0025 
0026   /// Return the vector of GEMDetIds in this ring
0027   std::vector<GEMDetId> ids() const;
0028 
0029   /// equal if the id is the same
0030   bool operator==(const GEMRing& sch) const;
0031 
0032   /// Add super chamber to the ring which takes ownership
0033   void add(GEMSuperChamber* ch);
0034 
0035   /// Return the super chambers in the ring
0036   std::vector<const GeomDet*> components() const;
0037 
0038   /// Return the sub-component (super chamber) with a given id in this ring
0039   const GeomDet* component(DetId id) const;
0040 
0041   /// Return the chamber corresponding to the given id
0042   const GEMSuperChamber* superChamber(GEMDetId id) const;
0043 
0044   // Return a super chamber
0045   const GEMSuperChamber* superChamber(int sch) const;
0046 
0047   /// Return the chambers in the ring
0048   const std::vector<const GEMSuperChamber*>& superChambers() const;
0049 
0050   /// Return numbers of chambers
0051   int nSuperChambers() const;
0052 
0053   /// Return the region number
0054   int region() const;
0055 
0056   /// Return the station number
0057   int station() const;
0058 
0059   /// Return the ring number
0060   int ring() const;
0061 
0062 private:
0063   int region_;
0064   int station_;
0065   int ring_;
0066 
0067   std::vector<GEMDetId> detIds_;
0068 
0069   // vector of chambers for a super chamber
0070   std::vector<const GEMSuperChamber*> superChambers_;
0071 };
0072 #endif