4 #include <Math/Transform3D.h>
5 #include <Math/EulerAngles.h>
14 k_NumberOfCellsForCorners(m_cttopo->sizeForDenseIndexing()),
15 k_NumberOfShapes(m_cttopo->lastHFRing()),
16 m_cellVec(k_NumberOfCellsForCorners) {}
25 const int iea(cid.ietaAbs());
26 const unsigned int ip((cid.iphi() - 1) / 4);
27 const int izoff((cid.zside() + 1) / 2);
28 const unsigned int offset(izoff * 3 * 18);
58 return (
m_cellVec.size() < index ||
nullptr == cell->
param() ?
nullptr : cell);
72 dVec.emplace_back(
iv);
81 dinsVec.emplace_back(
i);
83 ptr->getTransform(tr, (
Pt3DVec*)
nullptr);
87 tr = HepGeom::Translate3D(
gp.x(),
gp.y(),
gp.z());
90 const CLHEP::Hep3Vector
tt(tr.getTranslation());
91 tVec.emplace_back(
tt.x());
92 tVec.emplace_back(
tt.y());
93 tVec.emplace_back(
tt.z());
95 const CLHEP::HepRotation
rr(tr.getRotation());
96 const ROOT::Math::Transform3D rtr(
97 rr.xx(),
rr.xy(),
rr.xz(),
tt.x(),
rr.yx(),
rr.yy(),
rr.yz(),
tt.y(),
rr.zx(),
rr.zy(),
rr.zz(),
tt.z());
100 tVec.emplace_back(ea.Phi());
101 tVec.emplace_back(ea.Theta());
102 tVec.emplace_back(ea.Psi());
107 unsigned int ishape(9999);
108 for (
unsigned int ivv(0); ivv !=
parVecVec().size(); ++ivv) {
112 ok = ok && (fabs(par[
k] - pv[
k]) < 1.e-6);
122 if (iVec.size() <
nn)
123 iVec.emplace_back(ishape);
const CaloTowerTopology * m_cttopo
std::vector< CCGFloat > DimVec
unsigned int numberOfShapes() const override
virtual unsigned int numberOfCellsForCorners() const
std::vector< unsigned int > IVec
unsigned int numberOfParametersPerShape() const override
std::vector< CCGFloat > TrVec
HepGeom::Transform3D Tr3D
std::vector< Pt3D > Pt3DVec
unsigned int alignmentTransformIndexLocal(const DetId &id)
CaloCellGeometry::CCGFloat CCGFloat
~CaloTowerGeometry() override
const CaloCellGeometry * getGeometryRawPtr(uint32_t index) const override
virtual std::shared_ptr< const CaloCellGeometry > cellGeomPtr(uint32_t index) const
const CCGFloat * param() const
void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId) override
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
CaloCellGeometry::Pt3D Pt3D
CaloCellGeometry::CCGFloat CCGFloat
void getSummary(CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const override
CaloSubdetectorGeometry::IVec m_dins
unsigned int alignmentTransformIndexGlobal(const DetId &id)
CaloCellGeometry::Pt3D Pt3D
uint32_t denseIndex(const DetId &id) const
static void localCorners(Pt3DVec &lc, const CCGFloat *pv, unsigned int i, Pt3D &ref)
AlgebraicVector EulerAngles
void addValidID(const DetId &id)
CaloCellGeometry::CornersMgr * cornersMgr()
int firstHEDoublePhiRing() const
CaloCellGeometry::Pt3DVec Pt3DVec
HepGeom::Point3D< CCGFloat > Pt3D
CaloTowerGeometry(const CaloTowerTopology *cttopo)
CaloCellGeometry::Tr3D Tr3D
CaloCellGeometry::Pt3DVec Pt3DVec
virtual unsigned int numberOfTransformParms() const
int firstHFQuadPhiRing() const