|
|
Go to the documentation of this file.
22 std::cout <<
"[EcalTBHodoscopeGeometryLoaderFromDDD]:: start the construction of EcalTBHodoscope" << std::endl;
28 std::cout <<
"[EcalTBHodoscopeGeometryLoaderFromDDD]:: Returning EcalTBHodoscopeGeometry" << std::endl;
36 if (ebg->
parMgr() ==
nullptr)
47 if (
answer !=
"EcalTBH4BeamHits")
56 <<
"\n CaloGeometryEcalTBHodoscope::upDate(...): currently only box fiber shapes supported ";
57 edm::LogWarning(
"EcalTBHodoscopeGeometry") <<
"Wrong shape for sensitive volume!" << solid;
67 CLHEP::Hep3Vector hx(
x.X(),
x.Y(),
x.Z());
68 CLHEP::Hep3Vector hy(
y.X(),
y.Y(),
y.Z());
69 CLHEP::Hep3Vector hz(
z.X(),
z.Y(),
z.Z());
70 CLHEP::HepRotation hrot(hx, hy, hz);
73 const HepGeom::Transform3D ht3d(hrot,
76 const HepGeom::Point3D<float>
ctr(ht3d * HepGeom::Point3D<float>(0, 0, 0));
80 std::vector<CCGFloat> vv;
81 vv.reserve(
pv.size() + 1);
82 for (
unsigned int i(0);
i !=
pv.size(); ++
i) {
92 ebg->
newCell(refPoint, refPoint, refPoint, pP, detId);
106 for (
unsigned int i = 1;
i <=
parents.size();
i++) {
std::vector< DDExpandedNode > DDGeoHistory
Geometrical 'path' of the current node up to the root-node.
void makeGeometry(const DDCompactView *cpv, CaloSubdetectorGeometry *ebg)
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
CaloCellGeometry::CCGFloat CCGFloat
void addLevel(const std::string &name, const int ©Number)
virtual void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)=0
EcalHodoscopeNumberingScheme _scheme
void allocatePar(ParVec::size_type n, unsigned int m)
Log< level::Warning, false > LogWarning
std::unique_ptr< CaloSubdetectorGeometry > load(const DDCompactView *cpv)
DDSolidShape shape(void) const
The type of the solid.
bool firstChild()
set the current node to the first child ...
A Filter accepts or rejects a DDExpandedNode based on a user-coded decision rule.
Compact representation of the geometrical detector hierarchy.
bool nextSibling()
set the current node to the next sibling ...
uint32_t getUnitID(const EcalBaseNumber &baseNumber) const override
CaloCellGeometry::CCGFloat CCGFloat
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
CaloCellGeometry::CornersMgr * cornersMgr()
const DDTranslation & translation() const
The absolute translation of the current node.
static const CCGFloat k_ScaleFromDDDtoGeant
static const CCGFloat * getParmPtr(const std::vector< CCGFloat > &vd, ParMgr *mgr, ParVecVec &pvv)
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
A DDSolid represents the shape of a part.
const DDRotationMatrix & rotation() const
The absolute rotation of the current node.
unsigned int getDetIdForDDDNode(const DDFilteredView &fv)
void allocateCorners(CaloCellGeometry::CornersVec::size_type n)
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
std::string getDDDString(std::string s, DDFilteredView *fv)