14 constexpr
float EMDepthCorrection = 22.;
15 constexpr
float HADDepthCorrection = 25.;
20 float zcorr = depth ==
IdealZPrism::EM ? EMDepthCorrection : HADDepthCorrection;
34 CaloCellGeometry::operator=(idzp);
43 m_geoForPF(depth ==
None ? nullptr : new
IdealZPrism(correct(faceCenter, depth), mgr, parm,
None)) {
62 return GlobalPoint(rad * cosf(phi) / coshf(eta), rad * sinf(phi) / coshf(eta), rad * tanhf(eta));
66 return GlobalPoint(perp * cosf(phi), perp * sinf(phi), perp * sinhf(eta));
70 return GlobalPoint(z * cosf(phi) / sinhf(eta), z * sinf(phi) / sinhf(eta), z);
83 std::vector<GlobalPoint> gc(8,
GlobalPoint(0, 0, 0));
87 const float z_near(z);
88 const float z_far(z * (1 - 2 * dz / p.
mag()));
89 gc[0] =
etaPhiZ(eta + dEta, +dPhi, z_near);
90 gc[1] =
etaPhiZ(eta + dEta, -dPhi, z_near);
91 gc[2] =
etaPhiZ(eta - dEta, -dPhi, z_near);
92 gc[3] =
etaPhiZ(eta - dEta, +dPhi, z_near);
98 for (
unsigned int i(0);
i != 8; ++
i) {
102 ref = 0.25 * (lc[0] + lc[1] + lc[2] + lc[3]);
111 const CCGFloat z_far(z_near + 2 *
dz() * p.
z() / fabs(p.
z()));
119 corners[4] =
GlobalPoint(corners[0].
x(), corners[0].
y(), z_far);
120 corners[5] =
GlobalPoint(corners[1].
x(), corners[1].
y(), z_far);
121 corners[6] =
GlobalPoint(corners[2].
x(), corners[2].
y(), z_far);
122 corners[7] =
GlobalPoint(corners[3].
x(), corners[3].
y(), z_far);
127 s <<
"Center: " << cell.
getPosition() << std::endl;
128 s <<
"dEta = " << cell.
dEta() <<
", dPhi = " << cell.
dPhi() <<
", dz = " << cell.
dz() << std::endl;
static constexpr uint32_t k_dEta
CaloCellGeometry::CCGFloat CCGFloat
virtual const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
static GlobalPoint etaPhiZ(float eta, float phi, float z)
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
void initCorners(CornersVec &) override
static constexpr uint32_t k_dZ
std::shared_ptr< const IdealZPrism > forPF() const
static GlobalPoint etaPhiR(float eta, float phi, float rad)
std::vector< Pt3D > Pt3DVec
std::ostream & operator<<(std::ostream &out, const ALILine &li)
__host__ __device__ VT * co
const CCGFloat * param() const
std::unique_ptr< IdealZPrism > m_geoForPF
static constexpr uint32_t k_Z
CaloCellGeometry::CCGFloat CCGFloat
static constexpr uint32_t k_Eta
IdealZPrism & operator=(const IdealZPrism &idzp)
CaloCellGeometry::Pt3D Pt3D
void vocalCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref) const override
static constexpr uint32_t k_dPhi
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
CaloCellGeometry::Pt3DVec Pt3DVec
HepGeom::Point3D< CCGFloat > Pt3D
CaloCellGeometry::Pt3D Pt3D
CaloCellGeometry::Pt3DVec Pt3DVec
T perp() const
Magnitude of transverse component.
static GlobalPoint etaPhiPerp(float eta, float phi, float perp)
bool uninitialized() const
Global3DVector GlobalVector