CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/TrackingTools/GeomPropagators/interface/TrackerBounds.h

Go to the documentation of this file.
00001 #ifndef GeomPropagators_TrackerBounds_H
00002 #define GeomPropagators_TrackerBounds_H
00003 
00004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00005 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00006 
00007 class BoundCylinder;
00008 class BoundDisk;
00009 
00026 class TrackerBounds {
00027 public:
00028 
00029   static const BoundCylinder& barrelBound()    {check(); return *theCylinder;}
00030   static const BoundDisk& negativeEndcapDisk() {check(); return *theNegativeDisk;}
00031   static const BoundDisk& positiveEndcapDisk() {check(); return *thePositiveDisk;}
00032 
00035   static float radius()     {return 112.f;}
00036   static float halfLength() {return 273.5f;}
00037   static bool isInside(const GlobalPoint &);
00038 
00039 private:
00040 
00041   static ReferenceCountingPointer<BoundCylinder>  theCylinder;
00042   static ReferenceCountingPointer<BoundDisk>      theNegativeDisk;
00043   static ReferenceCountingPointer<BoundDisk>      thePositiveDisk;
00044   static bool theInit;
00045 
00046   static void check() {if (!theInit) initialize();}
00047 
00048   static void initialize();
00049 };
00050 
00051 #endif
00052 
00053