Go to the documentation of this file.00001 #include "Geometry/RPCGeometry/interface/RPCRollSpecs.h"
00002 #include "Geometry/CommonTopologies/interface/RectangularStripTopology.h"
00003 #include "Geometry/CommonTopologies/interface/TrapezoidalStripTopology.h"
00004
00005
00006 using namespace GeomDetEnumerators;
00007
00008
00009 RPCRollSpecs::RPCRollSpecs( SubDetector rss, const std::string& name, const RPCSpecs& pars)
00010 : GeomDetType(name,rss),_p(pars),_n(name)
00011 {
00012 if (rss == RPCBarrel ){
00013 int nstrip =static_cast<int>( _p[2]);
00014 float pitch = _p[0]*2/_p[2];
00015 float striplength = _p[1]*2;
00016 _top = new RectangularStripTopology(nstrip,pitch,striplength);
00017 }else if (rss == RPCEndcap ){
00018 float b = _p[0];
00019 float B = _p[1];
00020 float h = _p[2];
00021 float r0 = h*(B+b)/(B-b);
00022 float striplength = h*2;
00023 float strips = _p[3];
00024 float pitch = (b+B)/strips;
00025 int nstrip =static_cast<int>(strips);
00026
00027 _top = new TrapezoidalStripTopology(nstrip,pitch,striplength,r0);
00028 } else {
00029 _top = 0;
00030 }
00031 }
00032
00033
00034 RPCRollSpecs::~RPCRollSpecs()
00035 {
00036 if (_top)
00037 delete _top;
00038 _top=0;
00039 }
00040
00041
00042 const Topology&
00043 RPCRollSpecs::topology() const
00044 {
00045 return *(_top);
00046 }
00047
00048 const StripTopology&
00049 RPCRollSpecs::specificTopology() const
00050 {
00051 return *(_top);
00052 }
00053
00054
00055 const std::string&
00056 RPCRollSpecs::detName() const
00057 {
00058 return _n;
00059 }