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 Cylinder; 00008 class Disk; 00009 00026 class TrackerBounds { 00027 public: 00028 00029 static const Cylinder& barrelBound() {check(); return *theCylinder;} 00030 static const Disk& negativeEndcapDisk() {check(); return *theNegativeDisk;} 00031 static const Disk& 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<Cylinder> theCylinder; 00042 static ReferenceCountingPointer<Disk> theNegativeDisk; 00043 static ReferenceCountingPointer<Disk> thePositiveDisk; 00044 static bool theInit; 00045 00046 static void check() {if (!theInit) initialize();} 00047 00048 static void initialize(); 00049 }; 00050 00051 #endif 00052 00053