38 if (ebg->
parMgr() ==
nullptr)
46 for (doSubDets = fv.firstChild(); doSubDets; doSubDets = fv.nextSibling()) {
49 if (answer !=
"EcalTBH4BeamHits")
53 const DDSolid& solid = fv.logicalPart().solid();
58 <<
"\n CaloGeometryEcalTBHodoscope::upDate(...): currently only box fiber shapes supported ";
59 edm::LogWarning(
"EcalTBHodoscopeGeometry") <<
"Wrong shape for sensitive volume!" << solid;
68 fv.rotation().GetComponents(
x,
y,
z);
69 CLHEP::Hep3Vector hx(
x.X(),
x.Y(),
x.Z());
70 CLHEP::Hep3Vector hy(
y.X(),
y.Y(),
y.Z());
71 CLHEP::Hep3Vector hz(
z.X(),
z.Y(),
z.Z());
72 CLHEP::HepRotation hrot(hx, hy, hz);
73 CLHEP::Hep3Vector htran(fv.translation().X(), fv.translation().Y(), fv.translation().Z());
75 const HepGeom::Transform3D ht3d(hrot,
78 const HepGeom::Point3D<float>
ctr(ht3d * HepGeom::Point3D<float>(0, 0, 0));
82 std::vector<CCGFloat> vv;
83 vv.reserve(
pv.size() + 1);
84 for (
unsigned int i(0);
i !=
pv.size(); ++
i) {
virtual void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)=0
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
void allocatePar(ParVec::size_type n, unsigned int m)
A DDSolid represents the shape of a part.
std::string getDDDString(std::string s, DDFilteredView *fv)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
static constexpr int kSizeForDenseIndexing
CaloCellGeometry::CCGFloat CCGFloat
static const CCGFloat * getParmPtr(const std::vector< CCGFloat > &vd, ParMgr *mgr, ParVecVec &pvv)
static const CCGFloat k_ScaleFromDDDtoGeant
DDSolidShape shape(void) const
The type of the solid.
CaloCellGeometry::CornersMgr * cornersMgr()
unsigned int getDetIdForDDDNode(const DDFilteredView &fv)
void allocateCorners(CaloCellGeometry::CornersVec::size_type n)
Log< level::Warning, false > LogWarning