Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:15:19

0001 #ifndef Geometry_RPCSimAlgo_RPCRoll_H
0002 #define Geometry_RPCSimAlgo_RPCRoll_H
0003 
0004 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
0005 #include "Geometry/CommonDetUnit/interface/GeomDetType.h"
0006 #include "DataFormats/MuonDetId/interface/RPCDetId.h"
0007 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0008 
0009 class StripTopology;
0010 class RPCRollSpecs;
0011 class RPCChamber;
0012 class RPCRoll : public GeomDetUnit {
0013 public:
0014   RPCRoll(RPCDetId id, const BoundPlane::BoundPlanePointer& bp, RPCRollSpecs* rrs);
0015   ~RPCRoll() override;
0016   const RPCRollSpecs* specs() const;
0017   RPCDetId id() const;
0018   const Topology& topology() const override;
0019   const StripTopology& specificTopology() const;
0020   const GeomDetType& type() const override;
0021 
0022   /// Return the chamber this roll belongs to
0023   const RPCChamber* chamber() const;
0024 
0025   int nstrips() const;
0026 
0027   LocalPoint centreOfStrip(int strip) const;
0028   LocalPoint centreOfStrip(float strip) const;
0029   LocalError localError(float strip) const;
0030 
0031   float strip(const LocalPoint& lp) const;
0032   float pitch() const;
0033   float localPitch(const LocalPoint& lp) const;
0034   bool isBarrel() const;
0035   bool isForward() const;
0036   bool isIRPC() const {
0037     return (((this->id()).region() != 0) && (((this->id()).station() == 3) || ((this->id()).station() == 4)) &&
0038             ((this->id()).ring() == 1));
0039   }
0040 
0041 private:
0042   void setChamber(const RPCChamber* ch);
0043 
0044 private:
0045   RPCDetId _id;
0046   RPCRollSpecs* _rrs;
0047   const RPCChamber* theCh;  // NOT owned
0048 };
0049 
0050 #endif