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 public:
28  enum DEPTH { None, EM, HADR };
29 
33 
34  static constexpr uint32_t k_dEta = 0; //Eta-width
35  static constexpr uint32_t k_dPhi = 1; //Phi-width
36  static constexpr uint32_t k_dZ = 2; //Signed thickness
37  static constexpr uint32_t k_Eta = 3; //Eta of the reference point
38  static constexpr uint32_t k_Z = 4; //Z of the reference point
39 
40  IdealZPrism();
41 
42  IdealZPrism(const IdealZPrism& idzp);
43 
44  IdealZPrism& operator=(const IdealZPrism& idzp);
45 
46  IdealZPrism(const GlobalPoint& faceCenter, CornersMgr* mgr, const CCGFloat* parm, IdealZPrism::DEPTH depth);
47 
48  ~IdealZPrism() override;
49 
50  CCGFloat dEta() const;
51  CCGFloat dPhi() const;
52  CCGFloat dz() const;
53  CCGFloat eta() const;
54  CCGFloat z() const;
55 
56  static void localCorners(Pt3DVec& vec, const CCGFloat* pv, Pt3D& ref);
57 
58  void vocalCorners(Pt3DVec& vec, const CCGFloat* pv, Pt3D& ref) const override;
59 
60  // corrected geom for PF
61  std::shared_ptr<const IdealZPrism> forPF() const {
62  static const auto do_not_delete = [](const void*) {};
63  auto cell = std::shared_ptr<const IdealZPrism>(m_geoForPF.get(), do_not_delete);
64  return cell;
65  }
66 
67 private:
68  void initCorners(CornersVec&) override;
69 
70  static GlobalPoint etaPhiR(float eta, float phi, float rad);
71 
72  static GlobalPoint etaPhiPerp(float eta, float phi, float perp);
73 
74  static GlobalPoint etaPhiZ(float eta, float phi, float z);
75 
76 private:
77  // corrected geom for PF
78  std::unique_ptr<IdealZPrism> m_geoForPF;
79 };
80 
81 std::ostream& operator<<(std::ostream& s, const IdealZPrism& cell);
82 
83 #endif
CaloCellGeometry::Pt3DVec
std::vector< Pt3D > Pt3DVec
Definition: CaloCellGeometry.h:55
IdealZPrism::dPhi
CCGFloat dPhi() const
Definition: IdealZPrism.cc:50
IdealZPrism::z
CCGFloat z() const
Definition: IdealZPrism.cc:56
CaloCellGeometry::CCGFloat
float CCGFloat
Definition: CaloCellGeometry.h:52
IdealZPrism::HADR
Definition: IdealZPrism.h:28
IdealZPrism::etaPhiZ
static GlobalPoint etaPhiZ(float eta, float phi, float z)
Definition: IdealZPrism.cc:68
IdealZPrism::k_dEta
static constexpr uint32_t k_dEta
Definition: IdealZPrism.h:34
IdealZPrism::initCorners
void initCorners(CornersVec &) override
Definition: IdealZPrism.cc:104
IdealZPrism::IdealZPrism
IdealZPrism()
Definition: IdealZPrism.cc:8
IdealZPrism::k_dZ
static constexpr uint32_t k_dZ
Definition: IdealZPrism.h:36
perp
T perp() const
Magnitude of transverse component.
Definition: Basic3DVectorLD.h:133
IdealZPrism::CCGFloat
CaloCellGeometry::CCGFloat CCGFloat
Definition: IdealZPrism.h:30
IdealZPrism::etaPhiR
static GlobalPoint etaPhiR(float eta, float phi, float rad)
Definition: IdealZPrism.cc:60
IdealZPrism::dz
CCGFloat dz() const
Definition: IdealZPrism.cc:52
IdealZPrism::eta
CCGFloat eta() const
Definition: IdealZPrism.cc:54
alignCSCRings.s
s
Definition: alignCSCRings.py:92
IdealZPrism::DEPTH
DEPTH
Definition: IdealZPrism.h:28
IdealZPrism::k_Z
static constexpr uint32_t k_Z
Definition: IdealZPrism.h:38
Point3DBase< float, GlobalTag >
CaloCellGeometry::Pt3D
HepGeom::Point3D< CCGFloat > Pt3D
Definition: CaloCellGeometry.h:54
IdealZPrism::vocalCorners
void vocalCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref) const override
Definition: IdealZPrism.cc:58
IdealZPrism
Definition: IdealZPrism.h:26
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
IdealZPrism::k_dPhi
static constexpr uint32_t k_dPhi
Definition: IdealZPrism.h:35
IdealZPrism::localCorners
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: IdealZPrism.cc:72
CaloCellGeometry
Definition: CaloCellGeometry.h:50
IdealZPrism::k_Eta
static constexpr uint32_t k_Eta
Definition: IdealZPrism.h:37
MetAnalyzer.pv
def pv(vc)
Definition: MetAnalyzer.py:7
IdealZPrism::m_geoForPF
std::unique_ptr< IdealZPrism > m_geoForPF
Definition: IdealZPrism.h:78
IdealZPrism::EM
Definition: IdealZPrism.h:28
operator<<
std::ostream & operator<<(std::ostream &s, const IdealZPrism &cell)
Definition: IdealZPrism.cc:125
IdealZPrism::operator=
IdealZPrism & operator=(const IdealZPrism &idzp)
Definition: IdealZPrism.cc:31
DDAxes::phi
CaloCellGeometry.h
CaloCellGeometry::CornersVec
EZArrayFL< GlobalPoint > CornersVec
Definition: CaloCellGeometry.h:57
IdealZPrism::Pt3D
CaloCellGeometry::Pt3D Pt3D
Definition: IdealZPrism.h:31
IdealZPrism::~IdealZPrism
~IdealZPrism() override
Definition: IdealZPrism.cc:46
IdealZPrism::None
Definition: IdealZPrism.h:28
EZMgrFL
Definition: EZMgrFL.h:8
IdealZPrism::etaPhiPerp
static GlobalPoint etaPhiPerp(float eta, float phi, float perp)
Definition: IdealZPrism.cc:64
IdealZPrism::Pt3DVec
CaloCellGeometry::Pt3DVec Pt3DVec
Definition: IdealZPrism.h:32
IdealZPrism::forPF
std::shared_ptr< const IdealZPrism > forPF() const
Definition: IdealZPrism.h:61
IdealZPrism::dEta
CCGFloat dEta() const
Definition: IdealZPrism.cc:48