CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes
FlatTrd Class Reference

A base class to handle the particular shape of HGCal volumes. More...

#include <FlatTrd.h>

Inheritance diagram for FlatTrd:
CaloCellGeometry

Public Types

typedef CaloCellGeometry::CCGFloat CCGFloat
 
typedef CaloCellGeometry::Pt3D Pt3D
 
typedef CaloCellGeometry::Pt3DVec Pt3DVec
 
typedef CaloCellGeometry::Tr3D Tr3D
 
- Public Types inherited from CaloCellGeometry
typedef float CCGFloat
 
typedef EZMgrFL< GlobalPointCornersMgr
 
typedef EZArrayFL< GlobalPointCornersVec
 
typedef EZMgrFL< CCGFloatParMgr
 
typedef EZArrayFL< CCGFloatParVec
 
typedef std::vector< ParVecParVecVec
 
typedef HepGeom::Point3D< CCGFloatPt3D
 
typedef std::vector< Pt3DPt3DVec
 
using RepCorners = std::array< RhoEtaPhi, k_cornerSize >
 
typedef HepGeom::Transform3D Tr3D
 

Public Member Functions

const GlobalVectoraxis () const
 
float dz () const
 
float etaPos () const override
 
float etaSpan () const override
 
 FlatTrd (void)
 
 FlatTrd (const FlatTrd &tr)
 
 FlatTrd (CornersMgr *cMgr, const GlobalPoint &fCtr, const GlobalPoint &bCtr, const GlobalPoint &cor1, const CCGFloat *parV)
 
 FlatTrd (const CornersVec &corn, const CCGFloat *par)
 
 FlatTrd (const FlatTrd &tr, const Pt3D &local)
 
Pt3D getLocal (const GlobalPoint &global) const
 
CCGFloat getPhiAxis () const
 
GlobalPoint const & getPosition () const override
 Returns the position of reference for this cell. More...
 
GlobalPoint getPosition (const Pt3D &local) const override
 
CCGFloat getThetaAxis () const
 
void getTransform (Tr3D &tr, Pt3DVec *lptr) const override
 --------— only needed by specific utility; overloaded when needed -— More...
 
FlatTrdoperator= (const FlatTrd &tr)
 
float phiPos () const override
 
float phiSpan () const override
 
void setPosition (const GlobalPoint &p)
 
void vocalCorners (Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref) const override
 
float zPos () const
 
 ~FlatTrd () override
 
- Public Member Functions inherited from CaloCellGeometry
bool emptyCorners () const
 
GlobalPoint const & getBackPoint () const
 
CornersVec const & getCorners () const
 Returns the corner points of this cell's volume. More...
 
RepCorners const & getCornersREP () const
 
virtual GlobalPoint getPosition (CCGFloat) const
 
bool inside (const GlobalPoint &point) const
 Returns true if the specified point is inside this cell. More...
 
const CCGFloatparam () const
 
RhoEtaPhi const & repPos () const
 
virtual float rhoPos () const
 
void setBackPoint (const GlobalPoint &pos)
 
virtual ~CaloCellGeometry ()
 

Static Public Member Functions

static void createCorners (const std::vector< CCGFloat > &pv, const Tr3D &tr, std::vector< GlobalPoint > &co)
 
static void localCorners (Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
 
- Static Public Member Functions inherited from CaloCellGeometry
static const CCGFloatcheckParmPtr (const std::vector< CCGFloat > &vd, ParVecVec &pvv)
 
static const CCGFloatgetParmPtr (const std::vector< CCGFloat > &vd, ParMgr *mgr, ParVecVec &pvv)
 

Static Public Attributes

static constexpr uint32_t k_Alp1 = 6
 
static constexpr uint32_t k_Alp2 = 10
 
static constexpr uint32_t k_Cell = 11
 
static constexpr uint32_t k_dX1 = 4
 
static constexpr uint32_t k_dX2 = 5
 
static constexpr uint32_t k_dX3 = 8
 
static constexpr uint32_t k_dX4 = 9
 
static constexpr uint32_t k_dY1 = 3
 
static constexpr uint32_t k_dY2 = 7
 
static constexpr uint32_t k_dZ = 0
 
static constexpr uint32_t k_Phi = 2
 
static constexpr uint32_t k_Theta = 1
 
static constexpr unsigned int ncorner_ = 8
 
static constexpr unsigned int ncornerBy2_ = 4
 
- Static Public Attributes inherited from CaloCellGeometry
static constexpr unsigned int k_cornerSize = 8
 
static const CCGFloat k_ScaleFromDDDtoGeant
 

Private Member Functions

GlobalPoint backCtr (void) const
 
void initCorners (CornersVec &) override
 
GlobalVector makeAxis (void)
 

Private Attributes

GlobalVector m_axis
 
Pt3D m_corOne
 
GlobalPoint m_global
 
Pt3D m_local
 
Tr3D m_tr
 

Additional Inherited Members

- Protected Member Functions inherited from CaloCellGeometry
 CaloCellGeometry (CornersVec::const_reference gp, CornersMgr *mgr, const CCGFloat *par)
 
 CaloCellGeometry (const CornersVec &cv, const CCGFloat *par)
 
 CaloCellGeometry (void)
 
void initSpan ()
 
void setCornerVec (const std::vector< GlobalPoint > &cor)
 
void setRefPoint (const GlobalPoint &pos)
 

Detailed Description

A base class to handle the particular shape of HGCal volumes.

Definition at line 19 of file FlatTrd.h.

Member Typedef Documentation

◆ CCGFloat

Definition at line 21 of file FlatTrd.h.

◆ Pt3D

Definition at line 22 of file FlatTrd.h.

◆ Pt3DVec

Definition at line 23 of file FlatTrd.h.

◆ Tr3D

Definition at line 24 of file FlatTrd.h.

Constructor & Destructor Documentation

◆ FlatTrd() [1/5]

FlatTrd::FlatTrd ( void  )

Definition at line 24 of file FlatTrd.cc.

25  : CaloCellGeometry(), m_axis(0., 0., 0.), m_corOne(0., 0., 0.), m_local(0., 0., 0.), m_global(0., 0., 0.) {}
Pt3D m_local
Definition: FlatTrd.h:107
Pt3D m_corOne
Definition: FlatTrd.h:107
GlobalPoint m_global
Definition: FlatTrd.h:108
GlobalVector m_axis
Definition: FlatTrd.h:106

◆ FlatTrd() [2/5]

FlatTrd::FlatTrd ( const FlatTrd tr)

Definition at line 27 of file FlatTrd.cc.

27 : CaloCellGeometry(tr) { *this = tr; }

◆ FlatTrd() [3/5]

FlatTrd::FlatTrd ( CornersMgr cMgr,
const GlobalPoint fCtr,
const GlobalPoint bCtr,
const GlobalPoint cor1,
const CCGFloat parV 
)

Definition at line 46 of file FlatTrd.cc.

References etaPos(), getTransform(), glb, m_global, m_local, m_tr, and phiPos().

48  : CaloCellGeometry(fCtr, cMgr, parV),
49  m_axis((bCtr - fCtr).unit()),
50  m_corOne(cor1.x(), cor1.y(), cor1.z()),
51  m_local(0., 0., 0.) {
52  getTransform(m_tr, nullptr);
53  Pt3D glb = m_tr * m_local;
54  m_global = GlobalPoint(glb.x(), glb.y(), glb.z());
55 #ifdef EDM_ML_DEBUG
56  edm::LogVerbatim("CaloGeometry") << "FlatTrd: Local " << m_local << " Global " << glb << " eta " << etaPos()
57  << " phi " << phiPos() << " Translation " << m_tr.getTranslation()
58  << " and rotation " << m_tr.getRotation();
59 #endif
60 }
Log< level::Info, true > LogVerbatim
float etaPos() const override
Definition: FlatTrd.h:68
T z() const
Definition: PV3DBase.h:61
double glb
Definition: hdecay.h:105
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Tr3D m_tr
Definition: FlatTrd.h:109
void getTransform(Tr3D &tr, Pt3DVec *lptr) const override
--------— only needed by specific utility; overloaded when needed -—
Definition: FlatTrd.cc:181
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
Pt3D m_local
Definition: FlatTrd.h:107
Pt3D m_corOne
Definition: FlatTrd.h:107
Basic3DVector unit() const
CaloCellGeometry::Pt3D Pt3D
float phiPos() const override
Definition: FlatTrd.h:69
GlobalPoint m_global
Definition: FlatTrd.h:108
GlobalVector m_axis
Definition: FlatTrd.h:106

◆ FlatTrd() [4/5]

FlatTrd::FlatTrd ( const CornersVec corn,
const CCGFloat par 
)

Definition at line 62 of file FlatTrd.cc.

References etaPos(), getTransform(), glb, m_axis, m_global, m_local, m_tr, makeAxis(), and phiPos().

63  : CaloCellGeometry(corn, par), m_corOne(corn[0].x(), corn[0].y(), corn[0].z()), m_local(0., 0., 0.) {
64  getTransform(m_tr, nullptr);
65  m_axis = makeAxis();
66  Pt3D glb = m_tr * m_local;
67  m_global = GlobalPoint(glb.x(), glb.y(), glb.z());
68 #ifdef EDM_ML_DEBUG
69  edm::LogVerbatim("CaloGeometry") << "FlatTrd: Local " << m_local << " Global " << glb << " eta " << etaPos()
70  << " phi " << phiPos() << " Translation " << m_tr.getTranslation()
71  << " and rotation " << m_tr.getRotation();
72 #endif
73 }
Log< level::Info, true > LogVerbatim
float etaPos() const override
Definition: FlatTrd.h:68
double glb
Definition: hdecay.h:105
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Tr3D m_tr
Definition: FlatTrd.h:109
void getTransform(Tr3D &tr, Pt3DVec *lptr) const override
--------— only needed by specific utility; overloaded when needed -—
Definition: FlatTrd.cc:181
Pt3D m_local
Definition: FlatTrd.h:107
Pt3D m_corOne
Definition: FlatTrd.h:107
CaloCellGeometry::Pt3D Pt3D
float phiPos() const override
Definition: FlatTrd.h:69
GlobalVector makeAxis(void)
Definition: FlatTrd.cc:239
GlobalPoint m_global
Definition: FlatTrd.h:108
GlobalVector m_axis
Definition: FlatTrd.h:106

◆ FlatTrd() [5/5]

FlatTrd::FlatTrd ( const FlatTrd tr,
const Pt3D local 
)

Definition at line 75 of file FlatTrd.cc.

References etaPos(), glb, m_global, m_local, m_tr, and phiPos().

76  *this = tr;
77  Pt3D glb = m_tr * m_local;
78  m_global = GlobalPoint(glb.x(), glb.y(), glb.z());
79 #ifdef EDM_ML_DEBUG
80  edm::LogVerbatim("CaloGeometry") << "FlatTrd: Local " << m_local << " Global " << glb << " eta " << etaPos()
81  << " phi " << phiPos() << " Translation " << m_tr.getTranslation()
82  << " and rotation " << m_tr.getRotation();
83 #endif
84 }
Log< level::Info, true > LogVerbatim
float etaPos() const override
Definition: FlatTrd.h:68
double glb
Definition: hdecay.h:105
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Tr3D m_tr
Definition: FlatTrd.h:109
Pt3D m_local
Definition: FlatTrd.h:107
CaloCellGeometry::Pt3D Pt3D
float phiPos() const override
Definition: FlatTrd.h:69
GlobalPoint m_global
Definition: FlatTrd.h:108

◆ ~FlatTrd()

FlatTrd::~FlatTrd ( )
override

Definition at line 86 of file FlatTrd.cc.

86 {}

Member Function Documentation

◆ axis()

const GlobalVector & FlatTrd::axis ( ) const

Definition at line 129 of file FlatTrd.cc.

References m_axis.

Referenced by getTransform().

129 { return m_axis; }
GlobalVector m_axis
Definition: FlatTrd.h:106

◆ backCtr()

GlobalPoint FlatTrd::backCtr ( void  ) const
private

Definition at line 241 of file FlatTrd.cc.

References dz(), CaloCellGeometry::getCorners(), k_dZ, m_local, m_tr, ncornerBy2_, and CaloCellGeometry::param().

Referenced by makeAxis().

241  {
242  float dz = (getCorners()[ncornerBy2_].z() > getCorners()[0].z()) ? param()[FlatTrd::k_dZ] : -param()[FlatTrd::k_dZ];
243  Pt3D local_b(m_local.x(), m_local.y(), m_local.z() + dz);
244  Pt3D global_b = m_tr * local_b;
245  GlobalPoint global(global_b.x(), global_b.y(), global_b.z());
246  return global;
247 }
static constexpr unsigned int ncornerBy2_
Definition: FlatTrd.h:98
Tr3D m_tr
Definition: FlatTrd.h:109
Pt3D m_local
Definition: FlatTrd.h:107
float dz() const
Definition: FlatTrd.h:73
CaloCellGeometry::Pt3D Pt3D
static constexpr uint32_t k_dZ
Definition: FlatTrd.h:26
CornersVec const & getCorners() const
Returns the corner points of this cell&#39;s volume.
const CCGFloat * param() const

◆ createCorners()

void FlatTrd::createCorners ( const std::vector< CCGFloat > &  pv,
const Tr3D tr,
std::vector< GlobalPoint > &  co 
)
static

Definition at line 133 of file FlatTrd.cc.

References cms::cuda::assert(), cms::cuda::co, mps_fire::i, localCorners(), ncorner_, AlCaHLTBitMon_ParallelJobs::p, and createJobs::tmp.

Referenced by HGCalGeometryLoader::buildGeom().

133  {
134  assert(11 <= pv.size());
135  assert(ncorner_ == co.size());
136 
137  Pt3DVec ko(ncorner_, Pt3D(0, 0, 0));
138 
139  Pt3D tmp;
140  Pt3DVec to(ncorner_, Pt3D(0, 0, 0));
141  localCorners(to, &pv.front(), tmp);
142 
143  for (unsigned int i(0); i != ncorner_; ++i) {
144  ko[i] = tr * to[i]; // apply transformation
145  const Pt3D& p(ko[i]);
146  co[i] = GlobalPoint(p.x(), p.y(), p.z());
147 #ifdef EDM_ML_DEBUG
148  edm::LogVerbatim("CaloGeometry") << "Corner[" << i << "] = " << co[i];
149 #endif
150  }
151 }
Log< level::Info, true > LogVerbatim
CaloCellGeometry::Pt3D Pt3D
Definition: FlatTrd.h:22
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
assert(be >=bs)
__host__ __device__ VT * co
Definition: prefixScan.h:47
static constexpr unsigned int ncorner_
Definition: FlatTrd.h:97
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: FlatTrd.cc:153
CaloCellGeometry::Pt3D Pt3D
CaloCellGeometry::Pt3DVec Pt3DVec
tmp
align.sh
Definition: createJobs.py:716

◆ dz()

float FlatTrd::dz ( ) const
inline

Definition at line 73 of file FlatTrd.h.

References k_dZ, and CaloCellGeometry::param().

Referenced by backCtr(), Electron.Electron::cutBasedId(), ntupleDataFormat.Track::dzPull(), and localCorners().

73 { return param()[k_dZ]; }
static constexpr uint32_t k_dZ
Definition: FlatTrd.h:26
const CCGFloat * param() const

◆ etaPos()

float FlatTrd::etaPos ( ) const
inlineoverridevirtual

Reimplemented from CaloCellGeometry.

Definition at line 68 of file FlatTrd.h.

References PV3DBase< T, PVType, FrameType >::eta(), and m_global.

Referenced by FlatTrd(), operator<<(), and operator=().

68 { return m_global.eta(); }
T eta() const
Definition: PV3DBase.h:73
GlobalPoint m_global
Definition: FlatTrd.h:108

◆ etaSpan()

float FlatTrd::etaSpan ( ) const
overridevirtual

Reimplemented from CaloCellGeometry.

Definition at line 100 of file FlatTrd.cc.

References funct::abs(), cms::cuda::assert(), HLT_2023v12_cff::dEta, HLT_2023v12_cff::eta1, HLT_2023v12_cff::eta2, k_dY1, dqm-mbProfile::log, m_global, SiStripPI::max, CaloCellGeometry::param(), PV3DBase< T, PVType, FrameType >::perp(), funct::tan(), tolmin, and PV3DBase< T, PVType, FrameType >::z().

100  {
101  assert(param() != nullptr);
102  float eta1 = -std::log(
103  std::tan(0.5 * std::atan((m_global.perp() + param()[k_dY1]) / std::max(tolmin, std::abs(m_global.z())))));
104  float eta2 = -std::log(
105  std::tan(0.5 * std::atan((m_global.perp() - param()[k_dY1]) / std::max(tolmin, std::abs(m_global.z())))));
106  float dEta = std::abs(eta1 - eta2);
107  return dEta;
108 }
T perp() const
Definition: PV3DBase.h:69
T z() const
Definition: PV3DBase.h:61
static constexpr uint32_t k_dY1
Definition: FlatTrd.h:31
assert(be >=bs)
static const float tolmin
Definition: FlatTrd.cc:21
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
GlobalPoint m_global
Definition: FlatTrd.h:108
const CCGFloat * param() const

◆ getLocal()

Pt3D FlatTrd::getLocal ( const GlobalPoint global) const

Definition at line 116 of file FlatTrd.cc.

References DTRecHitClients_cfi::local, m_tr, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

116  {
117  Pt3D local = m_tr.inverse() * Pt3D(global.x(), global.y(), global.z());
118 #ifdef EDM_ML_DEBUG
119  edm::LogVerbatim("CaloGeometry") << "FlatTrd::Global " << global.x() << ":" << global.y() << ":" << global.z()
120  << " Local " << local.x() << ":" << local.y() << ":" << local.z();
121 #endif
122  return local;
123 }
Log< level::Info, true > LogVerbatim
CaloCellGeometry::Pt3D Pt3D
Definition: FlatTrd.h:22
T z() const
Definition: PV3DBase.h:61
Tr3D m_tr
Definition: FlatTrd.h:109
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
CaloCellGeometry::Pt3D Pt3D

◆ getPhiAxis()

CCGFloat FlatTrd::getPhiAxis ( ) const

Definition at line 127 of file FlatTrd.cc.

References m_axis, and PV3DBase< T, PVType, FrameType >::phi().

Referenced by operator<<().

127 { return m_axis.phi(); }
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
GlobalVector m_axis
Definition: FlatTrd.h:106

◆ getPosition() [1/2]

GlobalPoint const& FlatTrd::getPosition ( ) const
inlineoverridevirtual

Returns the position of reference for this cell.

Reimplemented from CaloCellGeometry.

Definition at line 66 of file FlatTrd.h.

References m_global.

Referenced by makeAxis(), and operator<<().

66 { return m_global; }
GlobalPoint m_global
Definition: FlatTrd.h:108

◆ getPosition() [2/2]

GlobalPoint FlatTrd::getPosition ( const Pt3D local) const
overridevirtual

Reimplemented from CaloCellGeometry.

Definition at line 88 of file FlatTrd.cc.

References glb, DTRecHitClients_cfi::local, and m_tr.

88  {
89  Pt3D glb = m_tr * local;
90 #ifdef EDM_ML_DEBUG
91  edm::LogVerbatim("CaloGeometry") << "FlatTrd::Local " << local.x() << ":" << local.y() << ":" << local.z()
92  << " Global " << glb.x() << ":" << glb.y() << ":" << glb.z() << " TR " << m_tr.xx()
93  << ":" << m_tr.xy() << ":" << m_tr.xz() << ":" << m_tr.yx() << ":" << m_tr.yy()
94  << ":" << m_tr.yz() << ":" << m_tr.zx() << ":" << m_tr.zy() << ":" << m_tr.zz()
95  << ":" << m_tr.dx() << ":" << m_tr.dy() << ":" << m_tr.dz();
96 #endif
97  return GlobalPoint(glb.x(), glb.y(), glb.z());
98 }
Log< level::Info, true > LogVerbatim
double glb
Definition: hdecay.h:105
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Tr3D m_tr
Definition: FlatTrd.h:109
CaloCellGeometry::Pt3D Pt3D

◆ getThetaAxis()

CCGFloat FlatTrd::getThetaAxis ( ) const

Definition at line 125 of file FlatTrd.cc.

References m_axis, and PV3DBase< T, PVType, FrameType >::theta().

Referenced by operator<<().

125 { return m_axis.theta(); }
Geom::Theta< T > theta() const
Definition: PV3DBase.h:72
GlobalVector m_axis
Definition: FlatTrd.h:106

◆ getTransform()

void FlatTrd::getTransform ( Tr3D tr,
Pt3DVec lptr 
) const
overridevirtual

--------— only needed by specific utility; overloaded when needed -—

Reimplemented from CaloCellGeometry.

Definition at line 181 of file FlatTrd.cc.

References angle(), cms::cuda::assert(), axis(), MillePedeFileConverter_cfg::e, CaloCellGeometry::getPosition(), localCorners(), m_corOne, mag(), ncorner_, AlCaHLTBitMon_ParallelJobs::p, CaloCellGeometry::param(), unit(), x, y, and z.

Referenced by FlatTrd(), and initCorners().

181  {
183  const Pt3D gFront(p.x(), p.y(), p.z());
184  const DPt3D dgFront(p.x(), p.y(), p.z());
185 
186  Pt3D lFront;
187  assert(nullptr != param());
188  std::vector<Pt3D> lc(ncorner_, Pt3D(0, 0, 0));
189  localCorners(lc, param(), lFront);
190 
191  // figure out if reflction volume or not
192 
193  Pt3D lBack(0.25 * (lc[4] + lc[5] + lc[6] + lc[7]));
194 
195  const DPt3D dlFront(lFront.x(), lFront.y(), lFront.z());
196  const DPt3D dlBack(lBack.x(), lBack.y(), lBack.z());
197  const DPt3D dlOne(lc[0].x(), lc[0].y(), lc[0].z());
198 
199  const FVec3D dgAxis(axis().x(), axis().y(), axis().z());
200 
201  const DPt3D dmOne(m_corOne.x(), m_corOne.y(), m_corOne.z());
202 
203  const DPt3D dgBack(dgFront + (dlBack - dlFront).mag() * dgAxis);
204  DPt3D dgOne(dgFront + (dlOne - dlFront).mag() * (dmOne - dgFront).unit());
205 
206  const double dlangle((dlBack - dlFront).angle(dlOne - dlFront));
207  const double dgangle((dgBack - dgFront).angle(dgOne - dgFront));
208  const double dangle(dlangle - dgangle);
209 
210  if (1.e-6 < fabs(dangle)) { //guard against precision problems
211  const DPlane3D dgPl(dgFront, dgOne, dgBack);
212  const DPt3D dp2(dgFront + dgPl.normal().unit());
213 
214  DPt3D dgOld(dgOne);
215 
216  dgOne = (dgFront + HepGeom::Rotate3D(-dangle, dgFront, dp2) * DVec3D(dgOld - dgFront));
217  }
218 
219  tr = Tr3D(dlFront, dlBack, dlOne, dgFront, dgBack, dgOne);
220 
221  if (nullptr != lptr)
222  (*lptr) = lc;
223 }
const GlobalVector & axis() const
Definition: FlatTrd.cc:129
CaloCellGeometry::Pt3D Pt3D
Definition: FlatTrd.h:22
HepGeom::Point3D< double > DPt3D
assert(be >=bs)
static constexpr unsigned int ncorner_
Definition: FlatTrd.h:97
HepGeom::Vector3D< double > DVec3D
Definition: FlatTrd.cc:17
Pt3D m_corOne
Definition: FlatTrd.h:107
Basic3DVector unit() const
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: FlatTrd.cc:153
CaloCellGeometry::Pt3D Pt3D
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
HepGeom::Plane3D< double > DPlane3D
virtual const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
CaloCellGeometry::Tr3D Tr3D
Definition: FlatTrd.h:24
HepGeom::Vector3D< CCGFloat > FVec3D
const CCGFloat * param() const
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11

◆ initCorners()

void FlatTrd::initCorners ( CaloCellGeometry::CornersVec co)
overrideprivatevirtual

Implements CaloCellGeometry.

Definition at line 225 of file FlatTrd.cc.

References cms::cuda::co, getTransform(), mps_fire::i, and ncorner_.

225  {
226  if (co.uninitialized()) {
227  CornersVec& corners(co);
228  Pt3DVec lc;
229  Tr3D tr;
230  getTransform(tr, &lc);
231 
232  for (unsigned int i(0); i != ncorner_; ++i) {
233  const Pt3D corn(tr * lc[i]);
234  corners[i] = GlobalPoint(corn.x(), corn.y(), corn.z());
235  }
236  }
237 }
EZArrayFL< GlobalPoint > CornersVec
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
__host__ __device__ VT * co
Definition: prefixScan.h:47
void getTransform(Tr3D &tr, Pt3DVec *lptr) const override
--------— only needed by specific utility; overloaded when needed -—
Definition: FlatTrd.cc:181
static constexpr unsigned int ncorner_
Definition: FlatTrd.h:97
CaloCellGeometry::Pt3D Pt3D
CaloCellGeometry::Pt3DVec Pt3DVec
CaloCellGeometry::Tr3D Tr3D

◆ localCorners()

void FlatTrd::localCorners ( Pt3DVec vec,
const CCGFloat pv,
Pt3D ref 
)
static

Definition at line 153 of file FlatTrd.cc.

References cms::cuda::assert(), dz(), h, k_Alp1, k_dX1, k_dX2, k_dY1, k_dZ, ncorner_, and funct::tan().

Referenced by createCorners(), getTransform(), HGCalGeometry::localCorners(), and vocalCorners().

153  {
154  assert(nullptr != pv);
155  assert(ncorner_ == lc.size());
156 
157  const CCGFloat dz(pv[FlatTrd::k_dZ]);
158  const CCGFloat h(pv[FlatTrd::k_dY1]);
159  const CCGFloat bl(pv[FlatTrd::k_dX1]);
160  const CCGFloat tl(pv[FlatTrd::k_dX2]);
161  const CCGFloat a1(pv[FlatTrd::k_Alp1]);
162 
163  const CCGFloat ta1(tan(a1));
164 
165  lc[0] = Pt3D(-h * ta1 - bl, -h, -dz); // (-,-,-)
166  lc[1] = Pt3D(+h * ta1 - tl, +h, -dz); // (-,+,-)
167  lc[2] = Pt3D(+h * ta1 + tl, +h, -dz); // (+,+,-)
168  lc[3] = Pt3D(-h * ta1 + bl, -h, -dz); // (+,-,-)
169  lc[4] = Pt3D(-h * ta1 - bl, -h, dz); // (-,-,+)
170  lc[5] = Pt3D(+h * ta1 - tl, +h, dz); // (-,+,+)
171  lc[6] = Pt3D(+h * ta1 + tl, +h, dz); // (+,+,+)
172  lc[7] = Pt3D(-h * ta1 + bl, -h, dz); // (+,-,+)
173 
174  ref = 0.25 * (lc[0] + lc[1] + lc[2] + lc[3]);
175 #ifdef EDM_ML_DEBUG
176  edm::LogVerbatim("CaloGeometry") << "Ref " << ref << " Local Corners " << lc[0] << "|" << lc[1] << "|" << lc[2] << "|"
177  << lc[3] << "|" << lc[4] << "|" << lc[5] << "|" << lc[6] << "|" << lc[7];
178 #endif
179 }
Log< level::Info, true > LogVerbatim
CaloCellGeometry::Pt3D Pt3D
Definition: FlatTrd.h:22
static constexpr uint32_t k_dY1
Definition: FlatTrd.h:31
assert(be >=bs)
static constexpr unsigned int ncorner_
Definition: FlatTrd.h:97
static constexpr uint32_t k_dX1
Definition: FlatTrd.h:32
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
CaloCellGeometry::CCGFloat CCGFloat
float dz() const
Definition: FlatTrd.h:73
static constexpr uint32_t k_dZ
Definition: FlatTrd.h:26
static constexpr uint32_t k_Alp1
Definition: FlatTrd.h:36
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
static constexpr uint32_t k_dX2
Definition: FlatTrd.h:34

◆ makeAxis()

GlobalVector FlatTrd::makeAxis ( void  )
private

Definition at line 239 of file FlatTrd.cc.

References backCtr(), getPosition(), and Vector3DBase< T, FrameTag >::unit().

Referenced by FlatTrd().

239 { return GlobalVector(backCtr() - getPosition()).unit(); }
GlobalPoint const & getPosition() const override
Returns the position of reference for this cell.
Definition: FlatTrd.h:66
GlobalPoint backCtr(void) const
Definition: FlatTrd.cc:241
Vector3DBase unit() const
Definition: Vector3DBase.h:54
Global3DVector GlobalVector
Definition: GlobalVector.h:10

◆ operator=()

FlatTrd & FlatTrd::operator= ( const FlatTrd tr)

Definition at line 29 of file FlatTrd.cc.

References etaPos(), m_axis, m_corOne, m_global, m_local, m_tr, and phiPos().

29  {
30  CaloCellGeometry::operator=(tr);
31  if (this != &tr) {
32  m_axis = tr.m_axis;
33  m_corOne = tr.m_corOne;
34  m_local = tr.m_local;
35  m_global = tr.m_global;
36  m_tr = tr.m_tr;
37  }
38 #ifdef EDM_ML_DEBUG
39  edm::LogVerbatim("CaloGeometry") << "FlatTrd(Copy): Local " << m_local << " Global " << m_global << " eta "
40  << etaPos() << " phi " << phiPos() << " Translation " << m_tr.getTranslation()
41  << " and rotation " << m_tr.getRotation();
42 #endif
43  return *this;
44 }
Log< level::Info, true > LogVerbatim
float etaPos() const override
Definition: FlatTrd.h:68
Tr3D m_tr
Definition: FlatTrd.h:109
Pt3D m_local
Definition: FlatTrd.h:107
Pt3D m_corOne
Definition: FlatTrd.h:107
float phiPos() const override
Definition: FlatTrd.h:69
GlobalPoint m_global
Definition: FlatTrd.h:108
GlobalVector m_axis
Definition: FlatTrd.h:106

◆ phiPos()

float FlatTrd::phiPos ( ) const
inlineoverridevirtual

Reimplemented from CaloCellGeometry.

Definition at line 69 of file FlatTrd.h.

References m_global, and PV3DBase< T, PVType, FrameType >::phi().

Referenced by FlatTrd(), operator<<(), and operator=().

69 { return m_global.phi(); }
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
GlobalPoint m_global
Definition: FlatTrd.h:108

◆ phiSpan()

float FlatTrd::phiSpan ( ) const
overridevirtual

Reimplemented from CaloCellGeometry.

Definition at line 110 of file FlatTrd.cc.

References cms::cuda::assert(), HLT_2023v12_cff::dPhi, k_dX1, k_dX2, m_global, SiStripPI::max, CaloCellGeometry::param(), PV3DBase< T, PVType, FrameType >::perp(), and tolmin.

110  {
111  assert(param() != nullptr);
112  float dPhi = 2.0 * std::atan(0.5 * (param()[k_dX1] + param()[k_dX2]) / std::max(tolmin, m_global.perp()));
113  return dPhi;
114 }
T perp() const
Definition: PV3DBase.h:69
assert(be >=bs)
static const float tolmin
Definition: FlatTrd.cc:21
static constexpr uint32_t k_dX1
Definition: FlatTrd.h:32
GlobalPoint m_global
Definition: FlatTrd.h:108
const CCGFloat * param() const
static constexpr uint32_t k_dX2
Definition: FlatTrd.h:34

◆ setPosition()

void FlatTrd::setPosition ( const GlobalPoint p)
inline

Definition at line 92 of file FlatTrd.h.

References m_global, AlCaHLTBitMon_ParallelJobs::p, and CaloCellGeometry::setRefPoint().

92  {
93  m_global = p;
94  setRefPoint(p);
95  }
void setRefPoint(const GlobalPoint &pos)
GlobalPoint m_global
Definition: FlatTrd.h:108

◆ vocalCorners()

void FlatTrd::vocalCorners ( Pt3DVec vec,
const CCGFloat pv,
Pt3D ref 
) const
overridevirtual

Implements CaloCellGeometry.

Definition at line 131 of file FlatTrd.cc.

References localCorners().

131 { localCorners(vec, pv, ref); }
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: FlatTrd.cc:153

◆ zPos()

float FlatTrd::zPos ( ) const
inline

Definition at line 72 of file FlatTrd.h.

References m_global, and PV3DBase< T, PVType, FrameType >::z().

72 { return m_global.z(); }
T z() const
Definition: PV3DBase.h:61
GlobalPoint m_global
Definition: FlatTrd.h:108

Member Data Documentation

◆ k_Alp1

constexpr uint32_t FlatTrd::k_Alp1 = 6
static

Definition at line 36 of file FlatTrd.h.

Referenced by HGCalGeometryLoader::build(), HGCalGeometry::getSummary(), and localCorners().

◆ k_Alp2

constexpr uint32_t FlatTrd::k_Alp2 = 10
static

Definition at line 43 of file FlatTrd.h.

Referenced by HGCalGeometryLoader::build(), and HGCalGeometry::getSummary().

◆ k_Cell

constexpr uint32_t FlatTrd::k_Cell = 11
static

◆ k_dX1

constexpr uint32_t FlatTrd::k_dX1 = 4
static

◆ k_dX2

constexpr uint32_t FlatTrd::k_dX2 = 5
static

◆ k_dX3

constexpr uint32_t FlatTrd::k_dX3 = 8
static

Definition at line 39 of file FlatTrd.h.

Referenced by HGCalGeometryLoader::build(), and HGCalGeometry::getSummary().

◆ k_dX4

constexpr uint32_t FlatTrd::k_dX4 = 9
static

Definition at line 41 of file FlatTrd.h.

Referenced by HGCalGeometryLoader::build(), and HGCalGeometry::getSummary().

◆ k_dY1

constexpr uint32_t FlatTrd::k_dY1 = 3
static

◆ k_dY2

constexpr uint32_t FlatTrd::k_dY2 = 7
static

Definition at line 38 of file FlatTrd.h.

Referenced by HGCalGeometryLoader::build(), and HGCalGeometry::getSummary().

◆ k_dZ

constexpr uint32_t FlatTrd::k_dZ = 0
static

◆ k_Phi

constexpr uint32_t FlatTrd::k_Phi = 2
static

Definition at line 29 of file FlatTrd.h.

Referenced by HGCalGeometryLoader::build(), and HGCalGeometry::getSummary().

◆ k_Theta

constexpr uint32_t FlatTrd::k_Theta = 1
static

Definition at line 27 of file FlatTrd.h.

Referenced by HGCalGeometryLoader::build(), and HGCalGeometry::getSummary().

◆ m_axis

GlobalVector FlatTrd::m_axis
private

Definition at line 106 of file FlatTrd.h.

Referenced by axis(), FlatTrd(), getPhiAxis(), getThetaAxis(), and operator=().

◆ m_corOne

Pt3D FlatTrd::m_corOne
private

Definition at line 107 of file FlatTrd.h.

Referenced by getTransform(), and operator=().

◆ m_global

GlobalPoint FlatTrd::m_global
private

Definition at line 108 of file FlatTrd.h.

Referenced by etaPos(), etaSpan(), FlatTrd(), getPosition(), operator=(), phiPos(), phiSpan(), setPosition(), and zPos().

◆ m_local

Pt3D FlatTrd::m_local
private

Definition at line 107 of file FlatTrd.h.

Referenced by backCtr(), FlatTrd(), and operator=().

◆ m_tr

Tr3D FlatTrd::m_tr
private

Definition at line 109 of file FlatTrd.h.

Referenced by backCtr(), FlatTrd(), getLocal(), getPosition(), and operator=().

◆ ncorner_

constexpr unsigned int FlatTrd::ncorner_ = 8
static

◆ ncornerBy2_

constexpr unsigned int FlatTrd::ncornerBy2_ = 4
static

Definition at line 98 of file FlatTrd.h.

Referenced by backCtr(), and HGCalGeometryLoader::buildGeom().