Go to the documentation of this file.00001 #ifndef RecoParticleFlow_PFProducer_PFGeometry_h
00002 #define RecoParticleFlow_PFProducer_PFGeometry_h
00003
00004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00005
00006
00007 #include <vector>
00008
00019 class BoundCylinder;
00020 class BoundDisk;
00021 class BoundPlane;
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 NPoints = 7
00034 } Layers_t;
00035
00036 typedef enum {
00037 BeamPipeWall = 0,
00038 PS1Wall = 1,
00039 PS2Wall = 2,
00040 ECALInnerWall = 3,
00041 HCALInnerWall = 4,
00042 HCALOuterWall = 5,
00043 NSurfPoints = 6
00044 } Surface_t;
00045
00047 PFGeometry();
00048
00050 virtual ~PFGeometry() { }
00051
00053 static const float innerRadius(PFGeometry::Layers_t layer)
00054 { return innerRadius_[layer]; }
00055
00057 static const float outerRadius(PFGeometry::Layers_t layer)
00058 { return outerRadius_[layer]; }
00059
00061 static const float innerZ(PFGeometry::Layers_t layer)
00062 { return innerZ_[layer]; }
00063
00065 static const float outerZ(PFGeometry::Layers_t layer)
00066 { return outerZ_[layer]; }
00067
00069 static const BoundCylinder& barrelBound(PFGeometry::Surface_t iSurf)
00070 { return *(cylinder_[unsigned(iSurf)]); }
00071
00073 static const BoundPlane& negativeEndcapDisk(PFGeometry::Surface_t iSurf)
00074 { return *(negativeDisk_[unsigned(iSurf)]); }
00075
00077 static const BoundPlane& positiveEndcapDisk(PFGeometry::Surface_t iSurf)
00078 { return *(positiveDisk_[unsigned(iSurf)]); }
00079
00081 static float tanTh(PFGeometry::Surface_t iSurf)
00082 { return tanTh_[unsigned(iSurf)]; }
00083
00084 private:
00085 static std::vector< float > innerRadius_;
00086 static std::vector< float > outerRadius_;
00087 static std::vector< float > innerZ_;
00088 static std::vector< float > outerZ_;
00089
00090 static std::vector< ReferenceCountingPointer<BoundCylinder> > cylinder_;
00091 static std::vector< ReferenceCountingPointer<BoundPlane> > negativeDisk_;
00092 static std::vector< ReferenceCountingPointer<BoundPlane> > positiveDisk_;
00093 static std::vector< float > tanTh_;
00094 };
00095
00096 #endif