Go to the documentation of this file.00001 #ifndef RecoParticleFlow_PFTracking_PFGeometry_h
00002 #define RecoParticleFlow_PFTracking_PFGeometry_h
00003
00004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00005
00006
00007 #include <vector>
00008
00019 class Cylinder;
00020 class Disk;
00021 class Plane;
00022
00023 class PFGeometry {
00024 public:
00025 typedef enum {
00026 BeamPipe = 0,
00027 PS1 = 1,
00028 PS2 = 2,
00029 ECALBarrel = 3,
00030 ECALEndcap = 4,
00031 HCALBarrel = 5,
00032 HCALEndcap = 6,
00033 HOBarrel = 7,
00034 NPoints = 8
00035 } Layers_t;
00036
00037 typedef enum {
00038 BeamPipeWall = 0,
00039 PS1Wall = 1,
00040 PS2Wall = 2,
00041 ECALInnerWall = 3,
00042 HCALInnerWall = 4,
00043 HCALOuterWall = 5,
00044 HOInnerWall = 6,
00045 HOOuterWall = 7,
00046 NSurfPoints = 8
00047 } Surface_t;
00048
00050 PFGeometry();
00051
00053 virtual ~PFGeometry() { }
00054
00056 static const float innerRadius(PFGeometry::Layers_t layer)
00057 { return innerRadius_[layer]; }
00058
00060 static const float outerRadius(PFGeometry::Layers_t layer)
00061 { return outerRadius_[layer]; }
00062
00064 static const float innerZ(PFGeometry::Layers_t layer)
00065 { return innerZ_[layer]; }
00066
00068 static const float outerZ(PFGeometry::Layers_t layer)
00069 { return outerZ_[layer]; }
00070
00072 static const Cylinder& barrelBound(PFGeometry::Surface_t iSurf)
00073 { return *(cylinder_[unsigned(iSurf)]); }
00074
00076 static const Plane& negativeEndcapDisk(PFGeometry::Surface_t iSurf)
00077 { return *(negativeDisk_[unsigned(iSurf)]); }
00078
00080 static const Plane& positiveEndcapDisk(PFGeometry::Surface_t iSurf)
00081 { return *(positiveDisk_[unsigned(iSurf)]); }
00082
00084 static float tanTh(PFGeometry::Surface_t iSurf)
00085 { return tanTh_[unsigned(iSurf)]; }
00086
00087 private:
00088 static std::vector< float > innerRadius_;
00089 static std::vector< float > outerRadius_;
00090 static std::vector< float > innerZ_;
00091 static std::vector< float > outerZ_;
00092
00093 static std::vector< ReferenceCountingPointer<Cylinder> > cylinder_;
00094 static std::vector< ReferenceCountingPointer<Plane> > negativeDisk_;
00095 static std::vector< ReferenceCountingPointer<Plane> > positiveDisk_;
00096 static std::vector< float > tanTh_;
00097 };
00098
00099 #endif