File indexing completed on 2024-04-06 12:27:36
0001 #ifndef RecoParticleFlow_PFTracking_PFGeometry_h
0002 #define RecoParticleFlow_PFTracking_PFGeometry_h
0003
0004 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
0005
0006
0007 #include <vector>
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 class Cylinder;
0020 class Disk;
0021 class Plane;
0022
0023 class PFGeometry {
0024 public:
0025 typedef enum {
0026 BeamPipe = 0,
0027 PS1 = 1,
0028 PS2 = 2,
0029 ECALBarrel = 3,
0030 ECALEndcap = 4,
0031 HCALBarrel = 5,
0032 HCALEndcap = 6,
0033 HOBarrel = 7,
0034 NPoints = 8
0035 } Layers_t;
0036
0037 typedef enum {
0038 BeamPipeWall = 0,
0039 PS1Wall = 1,
0040 PS2Wall = 2,
0041 ECALInnerWall = 3,
0042 HCALInnerWall = 4,
0043 HCALOuterWall = 5,
0044 HOInnerWall = 6,
0045 HOOuterWall = 7,
0046 NSurfPoints = 8
0047 } Surface_t;
0048
0049
0050 PFGeometry();
0051
0052
0053 virtual ~PFGeometry() {}
0054
0055
0056 float innerRadius(PFGeometry::Layers_t layer) const { return innerRadius_[layer]; }
0057
0058
0059 float outerRadius(PFGeometry::Layers_t layer) const { return outerRadius_[layer]; }
0060
0061
0062 float innerZ(PFGeometry::Layers_t layer) const { return innerZ_[layer]; }
0063
0064
0065 float outerZ(PFGeometry::Layers_t layer) const { return outerZ_[layer]; }
0066
0067
0068 float tanTh(PFGeometry::Surface_t iSurf) const { return tanTh_[unsigned(iSurf)]; }
0069
0070 private:
0071 std::vector<float> innerRadius_;
0072 std::vector<float> outerRadius_;
0073 std::vector<float> innerZ_;
0074 std::vector<float> outerZ_;
0075 std::vector<float> tanTh_;
0076 };
0077
0078 #endif