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 DetId geographicalId() const; 00020 RPCDetId id() const; 00021 const Topology& topology() const; 00022 const StripTopology& specificTopology() const; 00023 const GeomDetType& type() const; 00024 00026 const RPCChamber* chamber() const; 00027 00028 int nstrips() const; 00029 00030 LocalPoint centreOfStrip(int strip) const; 00031 LocalPoint centreOfStrip(float strip) const; 00032 LocalError localError(float strip) const; 00033 00034 float strip(const LocalPoint& lp) const; 00035 float pitch() const; 00036 float localPitch(const LocalPoint& lp) const; 00037 bool isBarrel() const; 00038 bool isForward() const; 00039 00040 private: 00041 void setChamber(const RPCChamber* ch); 00042 00043 private: 00044 RPCDetId _id; 00045 RPCRollSpecs* _rrs; 00046 const RPCChamber* theCh; // NOT owned 00047 }; 00048 00049 #endif