CMS 3D CMS Logo

IdealZPrism.h
Go to the documentation of this file.
1 #ifndef GEOMETRY_CALOGEOMETRY_IDEALZPRISM_H
2 #define GEOMETRY_CALOGEOMETRY_IDEALZPRISM_H 1
3 
5 #include <memory>
6 
26 class IdealZPrism final : public CaloCellGeometry
27 {
28  public:
29 
30  enum DEPTH {None, EM, HADR};
31 
35 
36  static constexpr uint32_t k_dEta = 0;//Eta-width
37  static constexpr uint32_t k_dPhi = 1;//Phi-width
38  static constexpr uint32_t k_dZ = 2;//Signed thickness
39  static constexpr uint32_t k_Eta = 3;//Eta of the reference point
40  static constexpr uint32_t k_Z = 4;//Z of the reference point
41 
42  IdealZPrism() ;
43 
44  IdealZPrism( const IdealZPrism& idzp ) ;
45 
46  IdealZPrism& operator=( const IdealZPrism& idzp ) ;
47 
48  IdealZPrism( const GlobalPoint& faceCenter ,
49  CornersMgr* mgr ,
50  const CCGFloat* parm ,
52 
53  ~IdealZPrism() override ;
54 
55  CCGFloat dEta() const ;
56  CCGFloat dPhi() const ;
57  CCGFloat dz() const ;
58  CCGFloat eta() const ;
59  CCGFloat z() const ;
60 
61  static void localCorners( Pt3DVec& vec ,
62  const CCGFloat* pv ,
63  Pt3D& ref ) ;
64 
65  void vocalCorners( Pt3DVec& vec ,
66  const CCGFloat* pv ,
67  Pt3D& ref ) const override;
68 
69 
70 
71 
72  // corrected geom for PF
73  std::shared_ptr<const IdealZPrism> forPF() const {
74  static const auto do_not_delete = [](const void*){};
75  auto cell = std::shared_ptr<const IdealZPrism>(m_geoForPF.get(),do_not_delete);
76  return cell;
77  }
78 
79  private:
80 
81  void initCorners(CornersVec& ) override;
82 
83  static GlobalPoint etaPhiR( float eta ,
84  float phi ,
85  float rad ) ;
86 
87  static GlobalPoint etaPhiPerp( float eta ,
88  float phi ,
89  float perp ) ;
90 
91  static GlobalPoint etaPhiZ( float eta ,
92  float phi ,
93  float z ) ;
94 
95 
96 private:
97  // corrected geom for PF
98  std::unique_ptr<IdealZPrism> m_geoForPF;
99 
100 };
101 
102 std::ostream& operator<<( std::ostream& s , const IdealZPrism& cell ) ;
103 
104 #endif
static constexpr uint32_t k_dEta
Definition: IdealZPrism.h:36
CaloCellGeometry::CCGFloat CCGFloat
Definition: IdealZPrism.h:32
CCGFloat eta() const
Definition: IdealZPrism.cc:72
static GlobalPoint etaPhiZ(float eta, float phi, float z)
Definition: IdealZPrism.cc:112
void initCorners(CornersVec &) override
Definition: IdealZPrism.cc:159
static constexpr uint32_t k_dZ
Definition: IdealZPrism.h:38
void vocalCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref) const override
Definition: IdealZPrism.cc:84
std::shared_ptr< const IdealZPrism > forPF() const
Definition: IdealZPrism.h:73
static GlobalPoint etaPhiR(float eta, float phi, float rad)
Definition: IdealZPrism.cc:92
std::vector< Pt3D > Pt3DVec
CCGFloat dz() const
Definition: IdealZPrism.cc:66
#define constexpr
std::unique_ptr< IdealZPrism > m_geoForPF
Definition: IdealZPrism.h:98
static constexpr uint32_t k_Z
Definition: IdealZPrism.h:40
def pv(vc)
Definition: MetAnalyzer.py:7
std::ostream & operator<<(std::ostream &s, const IdealZPrism &cell)
Definition: IdealZPrism.cc:182
static constexpr uint32_t k_Eta
Definition: IdealZPrism.h:39
IdealZPrism & operator=(const IdealZPrism &idzp)
Definition: IdealZPrism.cc:33
~IdealZPrism() override
Definition: IdealZPrism.cc:50
static constexpr uint32_t k_dPhi
Definition: IdealZPrism.h:37
CCGFloat dEta() const
Definition: IdealZPrism.cc:54
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: IdealZPrism.cc:122
HepGeom::Point3D< CCGFloat > Pt3D
CaloCellGeometry::Pt3D Pt3D
Definition: IdealZPrism.h:33
Definition: EZMgrFL.h:8
CaloCellGeometry::Pt3DVec Pt3DVec
Definition: IdealZPrism.h:34
CCGFloat dPhi() const
Definition: IdealZPrism.cc:60
T perp() const
Magnitude of transverse component.
static GlobalPoint etaPhiPerp(float eta, float phi, float perp)
Definition: IdealZPrism.cc:102
CCGFloat z() const
Definition: IdealZPrism.cc:78