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