CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
< CCGFloat
Pt3D
 
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

Definition at line 21 of file FlatTrd.h.

Definition at line 22 of file FlatTrd.h.

Definition at line 23 of file FlatTrd.h.

Definition at line 24 of file FlatTrd.h.

Constructor & Destructor Documentation

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::FlatTrd ( const FlatTrd tr)

Definition at line 27 of file FlatTrd.cc.

27 : CaloCellGeometry(tr) { *this = tr; }
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
double glb
Definition: hdecay.h:103
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
T y() const
Definition: PV3DBase.h:60
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
T z() const
Definition: PV3DBase.h:61
Pt3D m_corOne
Definition: FlatTrd.h:107
CaloCellGeometry::Pt3D Pt3D
float phiPos() const override
Definition: FlatTrd.h:69
GlobalPoint m_global
Definition: FlatTrd.h:108
T x() const
Definition: PV3DBase.h:59
Basic3DVector unit() const
GlobalVector m_axis
Definition: FlatTrd.h:106
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:103
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::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().

75  : CaloCellGeometry(tr), m_local(local) {
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:103
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 ( )
override

Definition at line 86 of file FlatTrd.cc.

86 {}

Member Function Documentation

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
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
const CCGFloat * param() const
Pt3D m_local
Definition: FlatTrd.h:107
CaloCellGeometry::Pt3D Pt3D
float dz() const
Definition: FlatTrd.h:73
CornersVec const & getCorners() const
Returns the corner points of this cell&#39;s volume.
static constexpr uint32_t k_dZ
Definition: FlatTrd.h:26
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(), mps_fire::i, localCorners(), ncorner_, AlCaHLTBitMon_ParallelJobs::p, and createJobs::tmp.

Referenced by FastTimeGeometryLoader::buildGeom(), and 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
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]; }
const CCGFloat * param() const
static constexpr uint32_t k_dZ
Definition: FlatTrd.h:26
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
float FlatTrd::etaSpan ( ) const
overridevirtual

Reimplemented from CaloCellGeometry.

Definition at line 100 of file FlatTrd.cc.

References funct::abs(), cms::cuda::assert(), HLT_FULL_cff::eta1, HLT_FULL_cff::eta2, k_dY1, 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 }
static std::vector< std::string > checklist log
T perp() const
Definition: PV3DBase.h:69
static constexpr uint32_t k_dY1
Definition: FlatTrd.h:31
assert(be >=bs)
const CCGFloat * param() const
static const float tolmin
Definition: FlatHexagon.cc:21
T z() const
Definition: PV3DBase.h:61
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
Pt3D FlatTrd::getLocal ( const GlobalPoint global) const

Definition at line 116 of file FlatTrd.cc.

References 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 y() const
Definition: PV3DBase.h:60
Tr3D m_tr
Definition: FlatTrd.h:109
T z() const
Definition: PV3DBase.h:61
CaloCellGeometry::Pt3D Pt3D
T x() const
Definition: PV3DBase.h:59
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
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
GlobalPoint FlatTrd::getPosition ( const Pt3D local) const
overridevirtual

Reimplemented from CaloCellGeometry.

Definition at line 88 of file FlatTrd.cc.

References glb, 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:103
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Tr3D m_tr
Definition: FlatTrd.h:109
CaloCellGeometry::Pt3D Pt3D
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
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(), alignCSCRings::e, CaloCellGeometry::getPosition(), localCorners(), m_corOne, mag(), ncorner_, AlCaHLTBitMon_ParallelJobs::p, CaloCellGeometry::param(), unit(), x, PV3DBase< T, PVType, FrameType >::x(), y, PV3DBase< T, PVType, FrameType >::y(), z, and PV3DBase< T, PVType, FrameType >::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
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
virtual const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
assert(be >=bs)
static constexpr unsigned int ncorner_
Definition: FlatTrd.h:97
const CCGFloat * param() const
HepGeom::Vector3D< double > DVec3D
Pt3D m_corOne
Definition: FlatTrd.h:107
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: FlatTrd.cc:153
CaloCellGeometry::Pt3D Pt3D
HepGeom::Plane3D< double > DPlane3D
CaloCellGeometry::Tr3D Tr3D
Definition: FlatTrd.h:24
HepGeom::Vector3D< CCGFloat > FVec3D
Basic3DVector unit() const
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11
void FlatTrd::initCorners ( CaloCellGeometry::CornersVec co)
overrideprivatevirtual

Implements CaloCellGeometry.

Definition at line 225 of file FlatTrd.cc.

References getTransform(), mps_fire::i, ncorner_, and EZArrayFL< T >::uninitialized().

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
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
bool uninitialized() const
Definition: EZArrayFL.h:63
void FlatTrd::localCorners ( Pt3DVec vec,
const CCGFloat pv,
Pt3D ref 
)
static

Definition at line 153 of file FlatTrd.cc.

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

Referenced by createCorners(), getTransform(), FastTimeGeometry::localCorners(), 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
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
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
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
float FlatTrd::phiSpan ( ) const
overridevirtual

Reimplemented from CaloCellGeometry.

Definition at line 110 of file FlatTrd.cc.

References cms::cuda::assert(), 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)
const CCGFloat * param() const
static constexpr uint32_t k_dX1
Definition: FlatTrd.h:32
static const float tolmin
Definition: FlatHexagon.cc:21
GlobalPoint m_global
Definition: FlatTrd.h:108
static constexpr uint32_t k_dX2
Definition: FlatTrd.h:34
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
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
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

constexpr uint32_t FlatTrd::k_Alp1 = 6
static

Definition at line 36 of file FlatTrd.h.

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

constexpr uint32_t FlatTrd::k_Alp2 = 10
static

Definition at line 43 of file FlatTrd.h.

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

constexpr uint32_t FlatTrd::k_Cell = 11
static
constexpr uint32_t FlatTrd::k_dX1 = 4
static
constexpr uint32_t FlatTrd::k_dX2 = 5
static
constexpr uint32_t FlatTrd::k_dX3 = 8
static

Definition at line 39 of file FlatTrd.h.

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

constexpr uint32_t FlatTrd::k_dX4 = 9
static

Definition at line 41 of file FlatTrd.h.

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

constexpr uint32_t FlatTrd::k_dY1 = 3
static
constexpr uint32_t FlatTrd::k_dY2 = 7
static

Definition at line 38 of file FlatTrd.h.

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

constexpr uint32_t FlatTrd::k_dZ = 0
static
constexpr uint32_t FlatTrd::k_Phi = 2
static

Definition at line 29 of file FlatTrd.h.

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

constexpr uint32_t FlatTrd::k_Theta = 1
static

Definition at line 27 of file FlatTrd.h.

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

GlobalVector FlatTrd::m_axis
private

Definition at line 106 of file FlatTrd.h.

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

Pt3D FlatTrd::m_corOne
private

Definition at line 107 of file FlatTrd.h.

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

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().

Pt3D FlatTrd::m_local
private

Definition at line 107 of file FlatTrd.h.

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

Tr3D FlatTrd::m_tr
private

Definition at line 109 of file FlatTrd.h.

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

constexpr unsigned int FlatTrd::ncorner_ = 8
static
constexpr unsigned int FlatTrd::ncornerBy2_ = 4
static

Definition at line 98 of file FlatTrd.h.

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