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
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;
0048 };
0049
0050 #endif