CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
RPCGeometryBuilderFromDDD Class Reference

#include <RPCGeometryBuilderFromDDD.h>

Public Member Functions

RPCGeometrybuild (const cms::DDCompactView *cview, const cms::MuonNumbering &muonConstants)
 
RPCGeometrybuild (const DDCompactView *cview, const MuonGeometryConstants &muonConstants)
 
 RPCGeometryBuilderFromDDD (bool comp11)
 
 ~RPCGeometryBuilderFromDDD ()
 

Private Member Functions

RPCGeometrybuildGeometry (cms::DDFilteredView &fview, const cms::MuonNumbering &muonConstants)
 
RPCGeometrybuildGeometry (DDFilteredView &fview, const MuonGeometryConstants &muonConstants)
 

Private Attributes

std::map< RPCDetId, std::list< RPCRoll * > > chids
 
std::unique_ptr< cms::RPCNumberingSchemerpcnum_ = nullptr
 
bool theComp11Flag
 

Detailed Description

Definition at line 35 of file RPCGeometryBuilderFromDDD.h.

Constructor & Destructor Documentation

◆ RPCGeometryBuilderFromDDD()

RPCGeometryBuilderFromDDD::RPCGeometryBuilderFromDDD ( bool  comp11)

Definition at line 41 of file RPCGeometryBuilderFromDDD.cc.

41 : theComp11Flag(comp11) {}

◆ ~RPCGeometryBuilderFromDDD()

RPCGeometryBuilderFromDDD::~RPCGeometryBuilderFromDDD ( )

Definition at line 43 of file RPCGeometryBuilderFromDDD.cc.

43 {}

Member Function Documentation

◆ build() [1/2]

RPCGeometry * RPCGeometryBuilderFromDDD::build ( const cms::DDCompactView cview,
const cms::MuonNumbering muonConstants 
)

Definition at line 54 of file RPCGeometryBuilderFromDDD.cc.

55  {
56  const std::string attribute = "ReadOutName";
57  const std::string value = "MuonRPCHits";
58  cms::DDFilteredView fview(cview->detector(), cview->detector()->worldVolume());
59  cms::DDSpecParRefs refs;
60  const cms::DDSpecParRegistry& mypar = cview->specpars();
61  mypar.filter(refs, attribute, value);
62  fview.mergedSpecifics(refs);
63  return this->buildGeometry(fview, muonConstants);
64 }

References buildGeometry(), cms::DDCompactView::detector(), cms::DDSpecParRegistry::filter(), cms::DDCompactView::specpars(), AlCaHLTBitMon_QueryRunRegistry::string, and cms::DDDetector::worldVolume().

◆ build() [2/2]

RPCGeometry * RPCGeometryBuilderFromDDD::build ( const DDCompactView cview,
const MuonGeometryConstants muonConstants 
)

Definition at line 46 of file RPCGeometryBuilderFromDDD.cc.

46  {
47  const std::string attribute = "ReadOutName";
48  const std::string value = "MuonRPCHits";
50  DDFilteredView fview(*cview, filter);
51  return this->buildGeometry(fview, muonConstants);
52 }

References buildGeometry(), ALCARECOTkAlBeamHalo_cff::filter, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by RPCGeometryESModule::produce().

◆ buildGeometry() [1/2]

RPCGeometry * RPCGeometryBuilderFromDDD::buildGeometry ( cms::DDFilteredView fview,
const cms::MuonNumbering muonConstants 
)
private

Definition at line 254 of file RPCGeometryBuilderFromDDD.cc.

255  {
257 
258  while (fview.firstChild()) {
259  MuonBaseNumber mbn = muonConstants.geoHistoryToBaseNumber(fview.history());
260 
261  cms::RPCNumberingScheme rpcnum(muonConstants.values());
262 
263  rpcnum.baseNumberToUnitNumber(mbn);
264  int detid = rpcnum.getDetId();
265 
266  RPCDetId rpcid(detid);
267  RPCDetId chid(rpcid.region(), rpcid.ring(), rpcid.station(), rpcid.sector(), rpcid.layer(), rpcid.subsector(), 0);
268 
269  auto nStrips = fview.get<double>("nStrips");
270 
271  std::vector<double> dpar = fview.parameters();
272 
273  std::string_view name = fview.name();
274 
275  const Double_t* tran = fview.trans();
276  DDRotationMatrix rota;
277  fview.rot(rota);
278 
279  Surface::PositionType pos(tran[0], tran[1], tran[2]);
280 
281  DD3Vector x, y, z;
282  rota.GetComponents(x, y, z);
283  Surface::RotationType rot(float(x.X()),
284  float(x.Y()),
285  float(x.Z()),
286  float(y.X()),
287  float(y.Y()),
288  float(y.Z()),
289  float(z.X()),
290  float(z.Y()),
291  float(z.Z()));
292 
293  RPCRollSpecs* rollspecs = nullptr;
294  Bounds* bounds = nullptr;
295 
296  if (fview.isABox() == 1) {
297  const float width = dpar[0];
298  const float length = dpar[1];
299  const float thickness = dpar[2];
300 
301  bounds = new RectangularPlaneBounds(width, length, thickness);
302 
303  const std::vector<float> pars = {width, length, float(nStrips)};
304 
305  if (!theComp11Flag) {
306  if (tran[2] > -1500.) {
307  Basic3DVector<float> newX(-1., 0., 0.);
308  Basic3DVector<float> newY(0., -1., 0.);
309  Basic3DVector<float> newZ(0., 0., 1.);
310  rot.rotateAxes(newX, newY, newZ);
311  }
312  }
313 
315 
316  } else {
317  const float be = dpar[0];
318  const float te = dpar[1];
319  const float ap = dpar[3];
320  const float ti = 0.4;
321 
322  bounds = new TrapezoidalPlaneBounds(be, te, ap, ti);
323  const std::vector<float> pars = {float(dpar[0]), float(dpar[1]), float(dpar[3]), float(nStrips)};
324 
326 
327  Basic3DVector<float> newX(1., 0., 0.);
328  Basic3DVector<float> newY(0., 0., 1.);
329  newY *= -1;
330  Basic3DVector<float> newZ(0., 1., 0.);
331  rot.rotateAxes(newX, newY, newZ);
332  }
333 
334  BoundPlane* bp = new BoundPlane(pos, rot, bounds);
336  RPCRoll* r = new RPCRoll(rpcid, surf, rollspecs);
337  geometry->add(r);
338 
339  auto rls = chids.find(chid);
340  if (rls == chids.end())
341  rls = chids.insert(std::make_pair(chid, std::list<RPCRoll*>())).first;
342  rls->second.emplace_back(r);
343  }
344 
345  for (auto& ich : chids) {
346  const RPCDetId& chid = ich.first;
347  const auto& rls = ich.second;
348 
349  BoundPlane* bp = nullptr;
350  if (!rls.empty()) {
351  const auto& refSurf = (*rls.begin())->surface();
352  if (chid.region() == 0) {
353  float corners[6] = {0, 0, 0, 0, 0, 0};
354  for (auto rl : rls) {
355  const double h2 = rl->surface().bounds().length() / 2;
356  const double w2 = rl->surface().bounds().width() / 2;
357  const auto x1y1AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(-w2, -h2, 0)));
358  const auto x2y2AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(+w2, +h2, 0)));
359  corners[0] = std::min(corners[0], x1y1AtRef.x());
360  corners[1] = std::min(corners[1], x1y1AtRef.y());
361  corners[2] = std::max(corners[2], x2y2AtRef.x());
362  corners[3] = std::max(corners[3], x2y2AtRef.y());
363 
364  corners[4] = std::min(corners[4], x1y1AtRef.z());
365  corners[5] = std::max(corners[5], x1y1AtRef.z());
366  }
367  const LocalPoint lpOfCentre((corners[0] + corners[2]) / 2, (corners[1] + corners[3]) / 2, 0);
368  const auto gpOfCentre = refSurf.toGlobal(lpOfCentre);
369  auto bounds = new RectangularPlaneBounds(
370  (corners[2] - corners[0]) / 2, (corners[3] - corners[1]) / 2, (corners[5] - corners[4]) + 0.5);
371  bp = new BoundPlane(gpOfCentre, refSurf.rotation(), bounds);
372 
373  } else {
374  float cornersLo[3] = {0, 0, 0}, cornersHi[3] = {0, 0, 0};
375  float cornersZ[2] = {0, 0};
376  for (auto rl : rls) {
377  const double h2 = rl->surface().bounds().length() / 2;
378  const double w2 = rl->surface().bounds().width() / 2;
379  const auto& topo = dynamic_cast<const TrapezoidalStripTopology&>(rl->specificTopology());
380  const double r = topo.radius();
381  const double wAtLo = w2 / r * (r - h2);
382  const double wAtHi = w2 / r * (r + h2);
383  const auto x1y1AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(-wAtLo, -h2, 0)));
384  const auto x2y1AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(+wAtLo, -h2, 0)));
385  const auto x1y2AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(-wAtHi, +h2, 0)));
386  const auto x2y2AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(+wAtHi, +h2, 0)));
387 
388  cornersLo[0] = std::min(cornersLo[0], x1y1AtRef.x());
389  cornersLo[1] = std::max(cornersLo[1], x2y1AtRef.x());
390  cornersLo[2] = std::min(cornersLo[2], x1y1AtRef.y());
391 
392  cornersHi[0] = std::min(cornersHi[0], x1y2AtRef.x());
393  cornersHi[1] = std::max(cornersHi[1], x2y2AtRef.x());
394  cornersHi[2] = std::max(cornersHi[2], x1y2AtRef.y());
395 
396  cornersZ[0] = std::min(cornersZ[0], x1y1AtRef.z());
397  cornersZ[1] = std::max(cornersZ[1], x1y1AtRef.z());
398  }
399  const LocalPoint lpOfCentre((cornersHi[0] + cornersHi[1]) / 2, (cornersLo[2] + cornersHi[2]) / 2, 0);
400  const auto gpOfCentre = refSurf.toGlobal(lpOfCentre);
401  auto bounds = new TrapezoidalPlaneBounds((cornersLo[1] - cornersLo[0]) / 2,
402  (cornersHi[1] - cornersHi[0]) / 2,
403  (cornersHi[2] - cornersLo[2]) / 2,
404  (cornersZ[1] - cornersZ[0]) + 0.5);
405  bp = new BoundPlane(gpOfCentre, refSurf.rotation(), bounds);
406  }
407  }
408 
410 
411  RPCChamber* ch = new RPCChamber(chid, surf);
412 
413  for (auto rl : rls)
414  ch->add(rl);
415 
416  geometry->add(ch);
417  }
418  return geometry;
419 }

References RPCChamber::add(), cms::RPCNumberingScheme::baseNumberToUnitNumber(), cms::cuda::be, Surface::bounds(), chids, cms::DDFilteredView::firstChild(), dqmMemoryStats::float, cms::MuonNumbering::geoHistoryToBaseNumber(), geometry, cms::DDFilteredView::get(), cms::DDFilteredView::history(), cms::DDFilteredView::isABox(), RPCDetId::layer(), Bounds::length(), SiStripPI::max, min(), Skims_PA_cff::name, cms::DDFilteredView::name(), me0TriggerPseudoDigis_cff::nStrips, cms::DDFilteredView::parameters(), alignCSCRings::r, RPCDetId::region(), RPCDetId::ring(), cms::DDFilteredView::rot(), makeMuonMisalignmentScenario::rot, GeomDetEnumerators::RPCBarrel, GeomDetEnumerators::RPCEndcap, RPCDetId::sector(), RPCDetId::station(), AlCaHLTBitMon_QueryRunRegistry::string, RPCDetId::subsector(), theComp11Flag, Calorimetry_cff::thickness, cms::DDFilteredView::trans(), cms::MuonNumbering::values(), w2, ApeEstimator_cff::width, x, y, and z.

◆ buildGeometry() [2/2]

RPCGeometry * RPCGeometryBuilderFromDDD::buildGeometry ( DDFilteredView fview,
const MuonGeometryConstants muonConstants 
)
private

Definition at line 66 of file RPCGeometryBuilderFromDDD.cc.

67  {
68  LogDebug("RPCGeometryBuilderFromDDD") << "Building the geometry service";
70  LogDebug("RPCGeometryBuilderFromDDD") << "About to run through the RPC structure\n"
71  << " First logical part " << fview.logicalPart().name().name();
72  bool doSubDets = fview.firstChild();
73  LogDebug("RPCGeometryBuilderFromDDD") << "doSubDets = " << doSubDets;
74  while (doSubDets) {
75  LogDebug("RPCGeometryBuilderFromDDD") << "start the loop";
76  MuonDDDNumbering mdddnum(muonConstants);
77  LogDebug("RPCGeometryBuilderFromDDD") << "Getting the Muon base Number";
78  MuonBaseNumber mbn = mdddnum.geoHistoryToBaseNumber(fview.geoHistory());
79  LogDebug("RPCGeometryBuilderFromDDD") << "Start the Rpc Numbering Schema";
80  RPCNumberingScheme rpcnum(muonConstants);
81  LogDebug("RPCGeometryBuilderFromDDD") << "Getting the Unit Number";
82  const int detid = rpcnum.baseNumberToUnitNumber(mbn);
83  LogDebug("RPCGeometryBuilderFromDDD") << "Getting the RPC det Id " << detid;
84  RPCDetId rpcid(detid);
85  RPCDetId chid(rpcid.region(), rpcid.ring(), rpcid.station(), rpcid.sector(), rpcid.layer(), rpcid.subsector(), 0);
86  LogDebug("RPCGeometryBuilderFromDDD") << "The RPCDetid is " << rpcid;
87 
88  DDValue numbOfStrips("nStrips");
89 
90  std::vector<const DDsvalues_type*> specs(fview.specifics());
91  int nStrips = 0;
92  for (auto& spec : specs) {
93  if (DDfetch(spec, numbOfStrips)) {
94  nStrips = int(numbOfStrips.doubles()[0]);
95  }
96  }
97 
98  LogDebug("RPCGeometryBuilderFromDDD") << ((nStrips == 0) ? ("No strip found!!") : (""));
99 
100  std::vector<double> dpar = fview.logicalPart().solid().parameters();
101  std::string name = fview.logicalPart().name().name();
102  DDTranslation tran = fview.translation();
103  DDRotationMatrix rota = fview.rotation();
107 
108  DD3Vector x, y, z;
109  rota.GetComponents(x, y, z);
110  Surface::RotationType rot(float(x.X()),
111  float(x.Y()),
112  float(x.Z()),
113  float(y.X()),
114  float(y.Y()),
115  float(y.Z()),
116  float(z.X()),
117  float(z.Y()),
118  float(z.Z()));
119 
120  RPCRollSpecs* rollspecs = nullptr;
121  Bounds* bounds = nullptr;
122 
123  if (dpar.size() == 3) {
124  const float width = geant_units::operators::convertMmToCm(dpar[0]);
125  const float length = geant_units::operators::convertMmToCm(dpar[1]);
126  const float thickness = geant_units::operators::convertMmToCm(dpar[2]);
127  bounds = new RectangularPlaneBounds(width, length, thickness);
128  const std::vector<float> pars = {width, length, float(numbOfStrips.doubles()[0])};
129 
130  if (!theComp11Flag) {
131  if (tran.z() > -1500.) {
132  Basic3DVector<float> newX(-1., 0., 0.);
133  Basic3DVector<float> newY(0., -1., 0.);
134  Basic3DVector<float> newZ(0., 0., 1.);
135  rot.rotateAxes(newX, newY, newZ);
136  }
137  }
138 
139  rollspecs = new RPCRollSpecs(GeomDetEnumerators::RPCBarrel, name, pars);
140  LogDebug("RPCGeometryBuilderFromDDD")
141  << "Barrel " << name << " par " << width << " " << length << " " << thickness;
142 
143  } else {
144  const float be = geant_units::operators::convertMmToCm(dpar[4]);
145  const float te = geant_units::operators::convertMmToCm(dpar[8]);
146  const float ap = geant_units::operators::convertMmToCm(dpar[0]);
147  const float ti = 0.4;
148 
149  bounds = new TrapezoidalPlaneBounds(be, te, ap, ti);
150 
151  const std::vector<float> pars = {float(geant_units::operators::convertMmToCm(dpar[4])),
154  float(numbOfStrips.doubles()[0])};
155  LogDebug("RPCGeometryBuilderFromDDD")
156  << "Forward " << name << " par " << dpar[4] << " " << dpar[8] << " " << dpar[3] << " " << dpar[0];
157 
158  rollspecs = new RPCRollSpecs(GeomDetEnumerators::RPCEndcap, name, pars);
159 
160  Basic3DVector<float> newX(1., 0., 0.);
161  Basic3DVector<float> newY(0., 0., 1.);
162  newY *= -1;
163  Basic3DVector<float> newZ(0., 1., 0.);
164  rot.rotateAxes(newX, newY, newZ);
165  }
166  LogDebug("RPCGeometryBuilderFromDDD") << " Number of strips " << nStrips;
167 
168  BoundPlane* bp = new BoundPlane(pos, rot, bounds);
170  RPCRoll* r = new RPCRoll(rpcid, surf, rollspecs);
171  geometry->add(r);
172 
173  auto rls = chids.find(chid);
174  if (rls == chids.end())
175  rls = chids.insert(std::make_pair(chid, std::list<RPCRoll*>())).first;
176  rls->second.emplace_back(r);
177 
178  doSubDets = fview.nextSibling();
179  }
180  for (auto& ich : chids) {
181  const RPCDetId& chid = ich.first;
182  const auto& rls = ich.second;
183 
184  BoundPlane* bp = nullptr;
185  if (!rls.empty()) {
186  const auto& refSurf = (*rls.begin())->surface();
187  if (chid.region() == 0) {
188  float corners[6] = {0, 0, 0, 0, 0, 0};
189  for (auto rl : rls) {
190  const double h2 = rl->surface().bounds().length() / 2;
191  const double w2 = rl->surface().bounds().width() / 2;
192  const auto x1y1AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(-w2, -h2, 0)));
193  const auto x2y2AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(+w2, +h2, 0)));
194  corners[0] = std::min(corners[0], x1y1AtRef.x());
195  corners[1] = std::min(corners[1], x1y1AtRef.y());
196  corners[2] = std::max(corners[2], x2y2AtRef.x());
197  corners[3] = std::max(corners[3], x2y2AtRef.y());
198  corners[4] = std::min(corners[4], x1y1AtRef.z());
199  corners[5] = std::max(corners[5], x1y1AtRef.z());
200  }
201  const LocalPoint lpOfCentre((corners[0] + corners[2]) / 2, (corners[1] + corners[3]) / 2, 0);
202  const auto gpOfCentre = refSurf.toGlobal(lpOfCentre);
203  auto bounds = new RectangularPlaneBounds(
204  (corners[2] - corners[0]) / 2, (corners[3] - corners[1]) / 2, (corners[5] - corners[4]) + 0.5);
205  bp = new BoundPlane(gpOfCentre, refSurf.rotation(), bounds);
206  } else {
207  float cornersLo[3] = {0, 0, 0}, cornersHi[3] = {0, 0, 0};
208  float cornersZ[2] = {0, 0};
209  for (auto rl : rls) {
210  const double h2 = rl->surface().bounds().length() / 2;
211  const double w2 = rl->surface().bounds().width() / 2;
212  const auto& topo = dynamic_cast<const TrapezoidalStripTopology&>(rl->specificTopology());
213  const double r = topo.radius();
214  const double wAtLo = w2 / r * (r - h2);
215  const double wAtHi = w2 / r * (r + h2);
216 
217  const auto x1y1AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(-wAtLo, -h2, 0)));
218  const auto x2y1AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(+wAtLo, -h2, 0)));
219  const auto x1y2AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(-wAtHi, +h2, 0)));
220  const auto x2y2AtRef = refSurf.toLocal(rl->toGlobal(LocalPoint(+wAtHi, +h2, 0)));
221 
222  cornersLo[0] = std::min(cornersLo[0], x1y1AtRef.x());
223  cornersLo[1] = std::max(cornersLo[1], x2y1AtRef.x());
224  cornersLo[2] = std::min(cornersLo[2], x1y1AtRef.y());
225 
226  cornersHi[0] = std::min(cornersHi[0], x1y2AtRef.x());
227  cornersHi[1] = std::max(cornersHi[1], x2y2AtRef.x());
228  cornersHi[2] = std::max(cornersHi[2], x1y2AtRef.y());
229 
230  cornersZ[0] = std::min(cornersZ[0], x1y1AtRef.z());
231  cornersZ[1] = std::max(cornersZ[1], x1y1AtRef.z());
232  }
233  const LocalPoint lpOfCentre((cornersHi[0] + cornersHi[1]) / 2, (cornersLo[2] + cornersHi[2]) / 2, 0);
234  const auto gpOfCentre = refSurf.toGlobal(lpOfCentre);
235  auto bounds = new TrapezoidalPlaneBounds((cornersLo[1] - cornersLo[0]) / 2,
236  (cornersHi[1] - cornersHi[0]) / 2,
237  (cornersHi[2] - cornersLo[2]) / 2,
238  (cornersZ[1] - cornersZ[0]) + 0.5);
239  bp = new BoundPlane(gpOfCentre, refSurf.rotation(), bounds);
240  }
241  }
242 
244  RPCChamber* ch = new RPCChamber(chid, surf);
245  for (auto rl : rls)
246  ch->add(rl);
247  geometry->add(ch);
248  }
249 
250  return geometry;
251 }

References RPCChamber::add(), RPCNumberingScheme::baseNumberToUnitNumber(), cms::cuda::be, Surface::bounds(), chids, geant_units::operators::convertMmToCm(), DDfetch(), DDValue::doubles(), DDFilteredView::firstChild(), dqmMemoryStats::float, DDFilteredView::geoHistory(), MuonDDDNumbering::geoHistoryToBaseNumber(), geometry, createfilelist::int, RPCDetId::layer(), Bounds::length(), LogDebug, DDFilteredView::logicalPart(), SiStripPI::max, min(), Skims_PA_cff::name, DDName::name(), DDBase< N, C >::name(), DDFilteredView::nextSibling(), me0TriggerPseudoDigis_cff::nStrips, DDSolid::parameters(), alignCSCRings::r, RPCDetId::region(), RPCDetId::ring(), makeMuonMisalignmentScenario::rot, DDFilteredView::rotation(), GeomDetEnumerators::RPCBarrel, GeomDetEnumerators::RPCEndcap, RPCDetId::sector(), DDLogicalPart::solid(), DDFilteredView::specifics(), HistogramManager_cfi::specs, RPCDetId::station(), AlCaHLTBitMon_QueryRunRegistry::string, RPCDetId::subsector(), theComp11Flag, Calorimetry_cff::thickness, DDFilteredView::translation(), w2, ApeEstimator_cff::width, x, y, and z.

Referenced by build().

Member Data Documentation

◆ chids

std::map<RPCDetId, std::list<RPCRoll*> > RPCGeometryBuilderFromDDD::chids
private

Definition at line 52 of file RPCGeometryBuilderFromDDD.h.

Referenced by buildGeometry().

◆ rpcnum_

std::unique_ptr<cms::RPCNumberingScheme> RPCGeometryBuilderFromDDD::rpcnum_ = nullptr
private

Definition at line 54 of file RPCGeometryBuilderFromDDD.h.

◆ theComp11Flag

bool RPCGeometryBuilderFromDDD::theComp11Flag
private

Definition at line 55 of file RPCGeometryBuilderFromDDD.h.

Referenced by buildGeometry().

cms::DDFilteredView::rot
const Double_t * rot() const
The absolute rotation of the current node.
Definition: DDFilteredView.cc:120
RPCRoll
Definition: RPCRoll.h:12
TkRotation< float >
MuonDDDNumbering
Definition: MuonDDDNumbering.h:24
DDAxes::y
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
cms::MuonNumbering::geoHistoryToBaseNumber
const MuonBaseNumber geoHistoryToBaseNumber(const cms::ExpandedNodes &) const
Definition: DD4hep_MuonNumbering.cc:8
geometry
ESHandle< TrackerGeometry > geometry
Definition: TkLasBeamFitter.cc:200
w2
common ppss p3p6s2 common epss epspn46 common const1 w2
Definition: inclppp.h:1
cms::DDFilteredView::parameters
const std::vector< double > parameters() const
extract shape parameters
Definition: DDFilteredView.cc:448
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
RPCDetId::region
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.
Definition: RPCDetId.h:53
GeomDetEnumerators::RPCEndcap
Definition: GeomDetEnumerators.h:20
RPCRollSpecs
Definition: RPCRollSpecs.h:18
min
T min(T a, T b)
Definition: MathUtil.h:58
DDFilteredView::logicalPart
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
Definition: DDFilteredView.cc:16
RPCDetId
Definition: RPCDetId.h:16
geometry
Definition: geometry.py:1
pos
Definition: PixelAliasList.h:18
HistogramManager_cfi.specs
specs
Definition: HistogramManager_cfi.py:80
cms::DDSpecParRegistry
Definition: DDSpecParRegistry.h:32
Bounds
Definition: Bounds.h:18
RPCGeometryBuilderFromDDD::chids
std::map< RPCDetId, std::list< RPCRoll * > > chids
Definition: RPCGeometryBuilderFromDDD.h:52
ReferenceCountingPointer
Definition: ReferenceCounted.h:60
DDAxes::x
cms::DDFilteredView
Definition: DDFilteredView.h:65
DDRotationMatrix
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
Definition: DDRotationMatrix.h:8
RPCChamber
Definition: RPCChamber.h:19
RPCNumberingScheme
Definition: RPCNumberingScheme.h:18
DD3Vector
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
Definition: DDTranslation.h:6
Bounds::length
virtual float length() const =0
cms::DDFilteredView::name
std::string_view name() const
Definition: DDFilteredView.cc:606
cms::DDFilteredView::trans
const Double_t * trans() const
The absolute translation of the current node.
Definition: DDFilteredView.cc:101
DDFilteredView::firstChild
bool firstChild()
set the current node to the first child ...
Definition: DDFilteredView.cc:86
cms::MuonNumbering::values
const MuonConstants & values() const
Definition: DD4hep_MuonNumbering.h:42
Calorimetry_cff.thickness
thickness
Definition: Calorimetry_cff.py:114
DDTranslation
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
cms::DDFilteredView::get
T get(const std::string &) const
extract attribute value
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
DDBase::name
const N & name() const
Definition: DDBase.h:59
DDAxes::z
cms::DDFilteredView::firstChild
bool firstChild()
set the current node to the first child
Definition: DDFilteredView.cc:218
DDFilteredView::nextSibling
bool nextSibling()
set the current node to the next sibling ...
Definition: DDFilteredView.cc:124
DDfetch
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
Definition: DDsvalues.cc:79
Point3DBase< float, GlobalTag >
cms::RPCNumberingScheme
Definition: DD4hep_RPCNumberingScheme.h:20
ALCARECOTkAlBeamHalo_cff.filter
filter
Definition: ALCARECOTkAlBeamHalo_cff.py:27
cms::DDSpecParRefs
std::vector< const DDSpecPar * > DDSpecParRefs
Definition: DDSpecParRegistry.h:30
RPCChamber::add
void add(RPCRoll *rl)
Add Roll to the chamber which takes ownership.
Definition: RPCChamber.cc:32
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
cms::DDFilteredView::history
const ExpandedNodes & history()
The numbering history of the current node.
Definition: DDFilteredView.cc:573
createfilelist.int
int
Definition: createfilelist.py:10
value
Definition: value.py:1
DDName::name
const std::string & name() const
Returns the name.
Definition: DDName.cc:40
DDFilteredView::geoHistory
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
Definition: DDFilteredView.cc:30
TrapezoidalPlaneBounds
Definition: TrapezoidalPlaneBounds.h:15
cms::DDCompactView::specpars
DDSpecParRegistry const & specpars() const
Definition: DDCompactView.h:33
RPCGeometryBuilderFromDDD::theComp11Flag
bool theComp11Flag
Definition: RPCGeometryBuilderFromDDD.h:55
DDFilteredView::specifics
std::vector< const DDsvalues_type * > specifics() const
Definition: DDFilteredView.cc:32
me0TriggerPseudoDigis_cff.nStrips
nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
Definition: me0TriggerPseudoDigis_cff.py:26
alignCSCRings.r
r
Definition: alignCSCRings.py:93
cms::DDFilteredView::isABox
auto isABox(Ts &&... ts) const -> decltype(isA< dd4hep::Box >(std::forward< Ts >(ts)...))
Definition: DDFilteredView.h:153
MuonBaseNumber
Definition: MuonBaseNumber.h:21
RPCGeometryBuilderFromDDD::buildGeometry
RPCGeometry * buildGeometry(DDFilteredView &fview, const MuonGeometryConstants &muonConstants)
Definition: RPCGeometryBuilderFromDDD.cc:66
RectangularPlaneBounds
Definition: RectangularPlaneBounds.h:12
BoundPlane
Plane BoundPlane
Definition: Plane.h:94
cms::RPCNumberingScheme::baseNumberToUnitNumber
void baseNumberToUnitNumber(const MuonBaseNumber &)
Definition: DD4hep_RPCNumberingScheme.cc:27
DDValue
Definition: DDValue.h:21
DDFilteredView::translation
const DDTranslation & translation() const
The absolute translation of the current node.
Definition: DDFilteredView.cc:26
cms::DDSpecParRegistry::filter
void filter(DDSpecParRefs &, const std::string &, const std::string &="") const
Definition: DDSpecparRegistry.cc:98
BoundPlane
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
DDSolid::parameters
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
Definition: DDSolid.cc:121
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
DDSpecificsMatchesValueFilter
Definition: DDFilter.h:70
DDFilteredView::rotation
const DDRotationMatrix & rotation() const
The absolute rotation of the current node.
Definition: DDFilteredView.cc:28
DDFilteredView
Definition: DDFilteredView.h:20
geant_units::operators::convertMmToCm
constexpr NumType convertMmToCm(NumType millimeters)
Definition: GeantUnits.h:62
GeomDetEnumerators::RPCBarrel
Definition: GeomDetEnumerators.h:19
RPCGeometry
Definition: RPCGeometry.h:20
cms::cuda::be
int be
Definition: HistoContainer.h:126
DDLogicalPart::solid
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
Definition: DDLogicalPart.cc:120
cms::DDDetector::worldVolume
Volume worldVolume() const
Handle to the world volume containing everything.
Definition: DDDetector.cc:41
cms::DDCompactView::detector
const cms::DDDetector * detector() const
Definition: DDCompactView.h:32
Basic3DVector< float >