|
|
Go to the documentation of this file.
47 return this->buildGeometry(fview, muonConstants);
58 fview.mergedSpecifics(refs);
59 return this->buildGeometry(fview, muonConstants);
65 LogTrace(
"ME0GeometryBuilder") <<
"Building the geometry service";
66 LogTrace(
"ME0GeometryBuilder") <<
"About to run through the ME0 structure\n"
74 LogTrace(
"ME0GeometryBuilder") <<
"doChamber = fv.firstChild() = " << testChambers;
76 while (testChambers) {
89 LogTrace(
"ME0GeometryBuilder") <<
"In DoChambers Loop :: ME0DetId " << detId <<
" = " << detId.
rawId()
90 <<
" (which belongs to ME0Chamber " << detIdCh <<
" = " << detIdCh.
rawId() <<
")";
93 std::vector<double> dpar2 = solid2.
parameters();
94 std::stringstream parameters2;
95 for (
unsigned int i = 0;
i < dpar2.size(); ++
i) {
96 parameters2 <<
" dpar[" <<
i <<
"]=" <<
convertMmToCm(dpar2[
i]) <<
"cm ";
98 LogTrace(
"ME0GeometryBuilder") <<
"Second level parameters: vector with size = " << dpar2.size() <<
" and elements "
103 LogTrace(
"ME0GeometryBuilder") <<
"doLayer = fv.firstChild() = " << doLayers;
113 LogTrace(
"ME0GeometryBuilder") <<
"back to layer " << fv.
parent();
114 LogTrace(
"ME0GeometryBuilder") <<
"In DoLayers Loop :: ME0DetId " << detId <<
" = " << detId.
rawId()
115 <<
" (which belongs to ME0Layer " << detIdLa <<
" = " << detIdLa.
rawId() <<
")";
118 std::vector<double> dpar3 = solid3.
parameters();
119 std::stringstream parameters3;
120 for (
unsigned int i = 0;
i < dpar3.size(); ++
i) {
121 parameters3 <<
" dpar[" <<
i <<
"]=" <<
convertMmToCm(dpar3[
i]) <<
"cm ";
123 LogTrace(
"ME0GeometryBuilder") <<
"Third level parameters: vector with size = " << dpar3.size()
124 <<
" and elements " << parameters3.str();
127 LogTrace(
"ME0GeometryBuilder") <<
"doEtaPart = fv.firstChild() = " << doEtaParts;
129 LogTrace(
"ME0GeometryBuilder") <<
"In DoEtaParts Loop :: ME0DetId " << detId <<
" = " << detId.
rawId();
132 std::vector<double> dpar4 = solid4.
parameters();
133 std::stringstream parameters4;
134 for (
unsigned int i = 0;
i < dpar4.size(); ++
i) {
135 parameters4 <<
" dpar[" <<
i <<
"]=" <<
convertMmToCm(dpar4[
i]) <<
"cm ";
137 LogTrace(
"ME0GeometryBuilder") <<
"Fourth level parameters: vector with size = " << dpar4.size()
138 <<
" and elements " << parameters4.str();
141 LogTrace(
"ME0GeometryBuilder") <<
"doEtaPart = fv.nextSibling() = " << doEtaParts;
145 <<
" will now ask for nextSibling";
147 LogTrace(
"ME0GeometryBuilder") <<
"doLayer = fv.nextSibling() = " << doLayers;
151 <<
" will now ask for nextSibling";
153 LogTrace(
"ME0GeometryBuilder") <<
"doChamber = fv.nextSibling() = " << testChambers;
178 ME0Chamber* me0Chamber = buildChamber(fv, detIdCh);
194 ME0Layer* me0Layer = buildLayer(fv, detIdLa);
195 me0Chamber->
add(me0Layer);
210 me0Layer->
add(etaPart);
230 std::vector<double> dpar = solid.
parameters();
239 LogTrace(
"ME0GeometryBuilder") <<
" dpar is vector with size = " << dpar.size() << std::endl;
240 for (
unsigned int i = 0;
i < dpar.size(); ++
i) {
243 LogTrace(
"ME0GeometryBuilder") <<
"size b: " <<
b <<
"cm, B: " <<
B <<
"cm, L: " <<
L <<
"cm, T: " <<
T <<
"cm "
258 std::vector<double> dpar = solid.
parameters();
266 LogTrace(
"ME0GeometryBuilder") <<
" dpar is vector with size = " << dpar.size() << std::endl;
267 for (
unsigned int i = 0;
i < dpar.size(); ++
i) {
270 LogTrace(
"ME0GeometryBuilder") <<
"size b: " <<
b <<
"cm, B: " <<
B <<
"cm, L: " <<
L <<
"cm, t: " <<
t <<
"cm "
284 DDValue numbOfStrips(
"nStrips");
287 double nStrips = 0., nPads = 0.;
288 for (
const auto& is :
specs) {
292 nPads = numbOfPads.
doubles()[0];
295 LogTrace(
"ME0GeometryBuilder") << ((
nStrips == 0.) ? (
"No nStrips found!!")
296 : (
"Number of strips: " + std::to_string(
nStrips)));
297 LogTrace(
"ME0GeometryBuilder") << ((nPads == 0.) ? (
"No nPads found!!")
298 : (
"Number of pads: " + std::to_string(nPads)));
309 LogTrace(
"ME0GeometryBuilder") <<
" dpar is vector with size = " << dpar.size() << std::endl;
310 for (
unsigned int i = 0;
i < dpar.size(); ++
i) {
313 LogTrace(
"ME0GeometryBuilder") <<
"size b: " <<
b <<
"cm, B: " <<
B <<
"cm, L: " <<
L <<
"cm, t: " <<
t <<
"cm "
317 std::vector<float> pars;
318 pars.emplace_back(
b);
319 pars.emplace_back(
B);
320 pars.emplace_back(
L);
322 pars.emplace_back(nPads);
335 bool isOddChamber)
const {
381 ME0Chamber* me0Chamber = buildChamber(fv, detIdCh);
394 ME0Layer* me0Layer = buildLayer(fv, detIdLa);
395 me0Chamber->
add(me0Layer);
406 me0Layer->
add(etaPart);
409 bool doEtaParts = fv.
sibling();
419 me0Layer->
add(etaPart);
491 bool isOddChamber)
const {
493 const Double_t* trans = fv.
trans();
void add(const ME0EtaPartition *roll)
Add EtaPartition to the layer which takes ownership.
const Double_t * rot() const
The absolute rotation of the current node.
const MuonBaseNumber geoHistoryToBaseNumber(const cms::ExpandedNodes &) const
ESHandle< TrackerGeometry > geometry
const std::vector< double > parameters() const
extract shape parameters
bool sibling()
set the current node to the next sub sibling
MuonBaseNumber geoHistoryToBaseNumber(const DDGeoHistory &history) const
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
bool parent()
set the current node to the parent node ...
void add(ME0Layer *layer)
Add Layer to the chamber which takes ownership.
bool parent()
set the current node to the parent node ...
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
ME0DetId layerId() const
Return the corresponding LayerId (mask eta partition)
bool nextSibling()
set the current node to the next sibling
std::string_view name() const
const Double_t * trans() const
The absolute translation of the current node.
bool firstChild()
set the current node to the first child ...
const MuonConstants & values() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Compact representation of the geometrical detector hierarchy.
bool firstChild()
set the current node to the first child
bool nextSibling()
set the current node to the next sibling ...
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
void down()
set current node to the child node in the filtered tree
std::vector< const DDSpecPar * > DDSpecParRefs
ME0Chamber * buildChamber(DDFilteredView &fv, ME0DetId detId) const
const ExpandedNodes & history()
The numbering history of the current node.
const std::string & name() const
Returns the name.
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
ME0Geometry * build(const DDCompactView *cview, const MuonGeometryConstants &muonConstants)
DDSpecParRegistry const & specpars() const
std::vector< const DDsvalues_type * > specifics() const
nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
ME0DetId chamberId() const
Return the corresponding ChamberId (mask layers)
static const std::string B
constexpr uint32_t rawId() const
get the raw id
TkRotation & rotateAxes(const Basic3DVector< T > &newX, const Basic3DVector< T > &newY, const Basic3DVector< T > &newZ)
const DDTranslation & translation() const
The absolute translation of the current node.
void filter(DDSpecParRefs &, const std::string &, const std::string &="") const
ME0EtaPartition * buildEtaPartition(DDFilteredView &fv, ME0DetId detId) const
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
const DDRotationMatrix & rotation() const
The absolute rotation of the current node.
const std::vector< double > & doubles() const
a reference to the double-valued values stored in the given instance of DDValue
constexpr NumType convertMmToCm(NumType millimeters)
int baseNumberToUnitNumber(const MuonBaseNumber &) override
ME0Layer * buildLayer(DDFilteredView &fv, ME0DetId detId) const
ME0Geometry * buildGeometry(DDFilteredView &fview, const MuonGeometryConstants &muonConstants)
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
void baseNumberToUnitNumber(const MuonBaseNumber &)
ME0BoundPlane boundPlane(const DDFilteredView &fv, Bounds *bounds, bool isOddChamber) const
Volume worldVolume() const
Handle to the world volume containing everything.
const cms::DDDetector * detector() const