Back to home page

Project CMSSW displayed by LXR

 
 

    


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 // system include files
0007 #include <vector>
0008 
0009 /**\class PFGeometry 
0010 \brief General CMS geometry parameters used during Particle Flow 
0011 reconstruction or drawing.
0012 All methods and members are static
0013 
0014 \author Renaud Bruneliere
0015 \date   August 2006
0016 \todo   Move this class out of here, or modify it so that it does not use the Geometry/Surface package anymore.
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   /// constructor
0050   PFGeometry();
0051 
0052   /// destructor
0053   virtual ~PFGeometry() {}
0054 
0055   /// return inner radius of a given layer
0056   float innerRadius(PFGeometry::Layers_t layer) const { return innerRadius_[layer]; }
0057 
0058   /// return outer radius of a given layer
0059   float outerRadius(PFGeometry::Layers_t layer) const { return outerRadius_[layer]; }
0060 
0061   /// return inner position along z axis of a given layer
0062   float innerZ(PFGeometry::Layers_t layer) const { return innerZ_[layer]; }
0063 
0064   /// return outer position along z axis of a given layer
0065   float outerZ(PFGeometry::Layers_t layer) const { return outerZ_[layer]; }
0066 
0067   /// return tan(theta) of the cylinder corner
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