4 #include <Math/Transform3D.h> 5 #include <Math/EulerAngles.h> 14 k_NumberOfCellsForCorners(cttopo->sizeForDenseIndexing()),
15 k_NumberOfShapes(cttopo->lastHFRing()),
16 m_cellVec ( k_NumberOfCellsForCorners )
31 const int iea ( cid.ietaAbs() ) ;
32 const unsigned int ip ( ( cid.iphi() - 1 )/4 ) ;
33 const int izoff ( ( cid.zside() + 1 )/2 ) ;
34 const unsigned int offset ( izoff*3*18) ;
36 return ( offset + ip +
59 const DetId& detId ) {
77 nullptr == cell->
param() ?
nullptr : cell ) ;
92 dVec.emplace_back( iv ) ;
100 if (
nullptr != ptr) {
101 dinsVec.emplace_back(
i );
107 tr = HepGeom::Translate3D(
gp.x(),
gp.y(),
gp.z() ) ;
110 const CLHEP::Hep3Vector
tt ( tr.getTranslation() ) ;
111 tVec.emplace_back(
tt.x() ) ;
112 tVec.emplace_back(
tt.y() ) ;
113 tVec.emplace_back(
tt.z() ) ;
115 const CLHEP::HepRotation
rr ( tr.getRotation() ) ;
116 const ROOT::Math::Transform3D rtr (
rr.xx(),
rr.xy(),
rr.xz(),
tt.x(),
120 rtr.GetRotation( ea ) ;
121 tVec.emplace_back( ea.Phi() ) ;
122 tVec.emplace_back( ea.Theta() ) ;
123 tVec.emplace_back( ea.Psi() ) ;
128 unsigned int ishape ( 9999 ) ;
129 for(
unsigned int ivv ( 0 ) ; ivv !=
parVecVec().size() ; ++ivv ) {
133 ok = ok && ( fabs( par[
k] - pv[
k] ) < 1.e-6 ) ;
140 assert( 9999 != ishape ) ;
143 if( iVec.size() <
nn ) iVec.emplace_back( ishape ) ;
CaloCellGeometry::Tr3D Tr3D
std::vector< CCGFloat > DimVec
CaloTowerGeometry(const CaloTowerTopology *cttopo_)
virtual unsigned int numberOfCellsForCorners() const
std::vector< unsigned int > IVec
unsigned int numberOfShapes() const override
std::vector< CCGFloat > TrVec
HepGeom::Transform3D Tr3D
std::vector< Pt3D > Pt3DVec
unsigned int alignmentTransformIndexLocal(const DetId &id)
const CaloCellGeometry * cellGeomPtr(uint32_t index) const override
CaloCellGeometry::CCGFloat CCGFloat
~CaloTowerGeometry() override
unsigned int numberOfParametersPerShape() const override
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)
void getSummary(CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const override
virtual void getTransform(Tr3D &tr, Pt3DVec *lptr) const
--------— only needed by specific utility; overloaded when needed -—
CaloCellGeometry::Pt3D Pt3D
const CaloTowerTopology * cttopo
CaloSubdetectorGeometry::IVec m_dins
unsigned int alignmentTransformIndexGlobal(const DetId &id)
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
HepGeom::Point3D< CCGFloat > Pt3D
CaloCellGeometry::Tr3D Tr3D
CaloCellGeometry::Pt3D Pt3D
CaloCellGeometry::Pt3DVec Pt3DVec
virtual unsigned int numberOfTransformParms() const
int firstHFQuadPhiRing() const
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
CaloCellGeometry::Pt3DVec Pt3DVec
CaloCellGeometry::CCGFloat CCGFloat