00001 #ifndef Geometry_RPCSimAlgo_RPCRoll_H 00002 #define Geometry_RPCSimAlgo_RPCRoll_H 00003 00004 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" 00005 #include "Geometry/CommonDetUnit/interface/GeomDetType.h" 00006 #include "DataFormats/MuonDetId/interface/RPCDetId.h" 00007 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00008 00009 class StripTopology; 00010 class RPCRollSpecs; 00011 class RPCChamber; 00012 class RPCRoll : public GeomDetUnit{ 00013 00014 public: 00015 00016 RPCRoll(RPCDetId id, BoundPlane::BoundPlanePointer bp, RPCRollSpecs* rrs); 00017 ~RPCRoll(); 00018 const RPCRollSpecs* specs() const; 00019 RPCDetId id() const; 00020 const Topology& topology() const; 00021 const StripTopology& specificTopology() const; 00022 const GeomDetType& type() const; 00023 00025 const RPCChamber* chamber() const; 00026 00027 int nstrips() const; 00028 00029 LocalPoint centreOfStrip(int strip) const; 00030 LocalPoint centreOfStrip(float strip) const; 00031 LocalError localError(float strip) const; 00032 00033 float strip(const LocalPoint& lp) const; 00034 float pitch() const; 00035 float localPitch(const LocalPoint& lp) const; 00036 bool isBarrel() const; 00037 bool isForward() const; 00038 00039 private: 00040 void setChamber(const RPCChamber* ch); 00041 00042 private: 00043 RPCDetId _id; 00044 RPCRollSpecs* _rrs; 00045 const RPCChamber* theCh; // NOT owned 00046 }; 00047 00048 #endif