17 #include "CLHEP/Units/GlobalSystemOfUnits.h" 41 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"Building the geometry service";
42 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"About to run through the ME0 structure\n" 50 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"doChamber = fv.firstChild() = " << testChambers;
52 while (testChambers) {
54 LogTrace(
"ME0GeometryBuilderFromDDD")
56 LogTrace(
"ME0GeometryBuilderFromDDD")
64 LogTrace(
"ME0GeometryBuilderFromDDD")
65 <<
"back to layer " << fv.
parent();
66 LogTrace(
"ME0GeometryBuilderFromDDD")
67 <<
"back to chamb " << fv.
parent();
69 LogTrace(
"ME0GeometryBuilderFromDDD")
70 <<
"In DoChambers Loop :: ME0DetId " << detId <<
" = " << detId.
rawId() <<
" (which belongs to ME0Chamber " 71 << detIdCh <<
" = " << detIdCh.
rawId() <<
")";
74 std::vector<double> dpar2 = solid2.
parameters();
75 std::stringstream parameters2;
76 for (
unsigned int i = 0;
i < dpar2.size(); ++
i) {
77 parameters2 <<
" dpar[" <<
i <<
"]=" << dpar2[
i] / 10 <<
"cm ";
79 LogTrace(
"ME0GeometryBuilderFromDDD")
80 <<
"Second level parameters: vector with size = " << dpar2.size() <<
" and elements " << parameters2.str();
84 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"doLayer = fv.firstChild() = " << doLayers;
87 LogTrace(
"ME0GeometryBuilderFromDDD")
95 LogTrace(
"ME0GeometryBuilderFromDDD")
96 <<
"back to layer " << fv.
parent();
97 LogTrace(
"ME0GeometryBuilderFromDDD")
98 <<
"In DoLayers Loop :: ME0DetId " << detId <<
" = " << detId.
rawId() <<
" (which belongs to ME0Layer " 99 << detIdLa <<
" = " << detIdLa.
rawId() <<
")";
102 std::vector<double> dpar3 = solid3.
parameters();
103 std::stringstream parameters3;
104 for (
unsigned int i = 0;
i < dpar3.size(); ++
i) {
105 parameters3 <<
" dpar[" <<
i <<
"]=" << dpar3[
i] / 10 <<
"cm ";
107 LogTrace(
"ME0GeometryBuilderFromDDD")
108 <<
"Third level parameters: vector with size = " << dpar3.size() <<
" and elements " << parameters3.str();
111 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"doEtaPart = fv.firstChild() = " << doEtaParts;
113 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"In DoEtaParts Loop :: ME0DetId " << detId <<
" = " << detId.
rawId();
116 std::vector<double> dpar4 = solid4.
parameters();
117 std::stringstream parameters4;
118 for (
unsigned int i = 0;
i < dpar4.size(); ++
i) {
119 parameters4 <<
" dpar[" <<
i <<
"]=" << dpar4[
i] / 10 <<
"cm ";
121 LogTrace(
"ME0GeometryBuilderFromDDD")
122 <<
"Fourth level parameters: vector with size = " << dpar4.size() <<
" and elements " << parameters4.str();
125 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"doEtaPart = fv.nextSibling() = " << doEtaParts;
128 LogTrace(
"ME0GeometryBuilderFromDDD")
129 <<
"went back to parent :: name = " << fv.
logicalPart().
name().
name() <<
" will now ask for nextSibling";
131 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"doLayer = fv.nextSibling() = " << doLayers;
134 LogTrace(
"ME0GeometryBuilderFromDDD")
135 <<
"went back to parent :: name = " << fv.
logicalPart().
name().
name() <<
" will now ask for nextSibling";
137 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"doChamber = fv.nextSibling() = " << testChambers;
160 geometry->
add(me0Chamber);
176 me0Chamber->
add(me0Layer);
177 geometry->
add(me0Layer);
190 me0Layer->
add(etaPart);
191 geometry->
add(etaPart);
211 std::vector<double> dpar = solid.
parameters();
212 double L = dpar[0] / cm;
213 double T = dpar[3] / cm;
214 double b = dpar[4] / cm;
215 double B = dpar[8] / cm;
220 LogTrace(
"ME0GeometryBuilderFromDDD") <<
" dpar is vector with size = " << dpar.size() << std::endl;
221 for (
unsigned int i = 0;
i < dpar.size(); ++
i) {
222 LogTrace(
"ME0GeometryBuilderFromDDD") <<
" dpar [" <<
i <<
"] = " << dpar[
i] / 10 <<
" cm " << std::endl;
224 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"size b: " << b <<
"cm, B: " << B <<
"cm, L: " << L <<
"cm, T: " << T
225 <<
"cm " << std::endl;
239 std::vector<double> dpar = solid.
parameters();
240 double L = dpar[0] / cm;
241 double t = dpar[3] / cm;
242 double b = dpar[4] / cm;
243 double B = dpar[8] / cm;
250 LogTrace(
"ME0GeometryBuilderFromDDD") <<
" dpar is vector with size = " << dpar.size() << std::endl;
251 for (
unsigned int i = 0;
i < dpar.size(); ++
i) {
252 LogTrace(
"ME0GeometryBuilderFromDDD") <<
" dpar [" <<
i <<
"] = " << dpar[
i] / 10 <<
" cm " << std::endl;
254 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"size b: " << b <<
"cm, B: " << B <<
"cm, L: " << L <<
"cm, t: " << t
255 <<
"cm " << std::endl;
269 DDValue numbOfStrips(
"nStrips");
272 std::vector<const DDsvalues_type*>::iterator is =
specs.begin();
273 double nStrips = 0., nPads = 0.;
274 for (; is !=
specs.end(); is++) {
275 if (
DDfetch(*is, numbOfStrips))
276 nStrips = numbOfStrips.
doubles()[0];
278 nPads = numbOfPads.
doubles()[0];
280 LogTrace(
"ME0GeometryBuilderFromDDD") << ((nStrips == 0.) ? (
"No nStrips found!!")
281 : (
"Number of strips: " + std::to_string(nStrips)));
282 LogTrace(
"ME0GeometryBuilderFromDDD") << ((nPads == 0.) ? (
"No nPads found!!")
283 : (
"Number of pads: " + std::to_string(nPads)));
287 double b = dpar[4] / cm;
288 double B = dpar[8] / cm;
289 double L = dpar[0] / cm;
290 double t = dpar[3] / cm;
294 LogTrace(
"ME0GeometryBuilderFromDDD") <<
" dpar is vector with size = " << dpar.size() << std::endl;
295 for (
unsigned int i = 0;
i < dpar.size(); ++
i) {
296 LogTrace(
"ME0GeometryBuilderFromDDD") <<
" dpar [" <<
i <<
"] = " << dpar[
i] / 10 <<
" cm " << std::endl;
298 LogTrace(
"ME0GeometryBuilderFromDDD") <<
"size b: " << b <<
"cm, B: " << B <<
"cm, L: " << L <<
"cm, t: " << t
299 <<
"cm " << std::endl;
302 std::vector<float> pars;
303 pars.emplace_back(b);
304 pars.emplace_back(B);
305 pars.emplace_back(L);
306 pars.emplace_back(nStrips);
307 pars.emplace_back(nPads);
321 bool isOddChamber)
const {
324 const Surface::PositionType posResult(
float(trans.x() / cm),
float(trans.y() / cm),
float(trans.z() / cm));
334 rotation.GetComponents(x, y, z);
ReferenceCountingPointer< BoundPlane > ME0BoundPlane
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
bool parent()
set the current node to the parent node ...
ME0DetId layerId() const
Return the corresponding LayerId (mask eta partition)
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
const std::vector< double > & doubles() const
a reference to the double-valued values stored in the given instance of DDValue
ME0Geometry * build(const DDCompactView *cview, const MuonDDDConstants &muonConstants)
ME0GeometryBuilderFromDDD()
ME0DetId chamberId() const
Return the corresponding ChamberId (mask layers)
bool nextSibling()
set the current node to the next sibling ...
const DDRotationMatrix & rotation() const
The absolute rotation of the current node.
ME0Chamber * buildChamber(DDFilteredView &fv, ME0DetId detId) const
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
constexpr uint32_t rawId() const
get the raw id
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
Compact representation of the geometrical detector hierarchy.
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
void add(ME0Layer *layer)
Add Layer to the chamber which takes ownership.
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
TkRotation & rotateAxes(const Basic3DVector< T > &newX, const Basic3DVector< T > &newY, const Basic3DVector< T > &newZ)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
int baseNumberToUnitNumber(const MuonBaseNumber &) override
ME0BoundPlane boundPlane(const DDFilteredView &fv, Bounds *bounds, bool isOddChamber) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
ME0Geometry * buildGeometry(DDFilteredView &fview, const MuonDDDConstants &muonConstants)
void add(const ME0EtaPartition *roll)
Add EtaPartition to the layer which takes ownership.
static const std::string B
void add(ME0EtaPartition *etaPartition)
Add a ME0 etaPartition to the Geometry.
ESHandle< TrackerGeometry > geometry
~ME0GeometryBuilderFromDDD()
bool firstChild()
set the current node to the first child ...
const DDTranslation & translation() const
The absolute translation of the current node.
std::vector< const DDsvalues_type * > specifics() const
ME0EtaPartition * buildEtaPartition(DDFilteredView &fv, ME0DetId detId) const
MuonBaseNumber geoHistoryToBaseNumber(const DDGeoHistory &history)
const std::string & name() const
Returns the name.
ME0Layer * buildLayer(DDFilteredView &fv, ME0DetId detId) const