CMS 3D CMS Logo

AlignableMuon.cc
Go to the documentation of this file.
1 
8 // Framework
10 
19 // Muon components
32 
33 #include <iostream>
34 
35 //--------------------------------------------------------------------------------------------------
37  const CSCGeometry* cscGeometry,
38  const GEMGeometry* gemGeometry)
39  : AlignableComposite(0, align::AlignableMuon), // cannot yet set id, use 0
40  alignableObjectId_(nullptr, dtGeometry, cscGeometry, gemGeometry) {
41  // Build the muon barrel
42  buildDTBarrel(dtGeometry);
43 
44  // Build the muon end caps
45  buildCSCEndcap(cscGeometry);
47 
48  // Set links to mothers recursively
49  recursiveSetMothers(this);
50 
51  // now can set id as for all composites: id of first component
52  theId = this->components()[0]->id();
53 
54  edm::LogInfo("AlignableMuon") << "Constructing alignable muon objects DONE";
55 }
56 
57 //--------------------------------------------------------------------------------------------------
59  for (align::Alignables::iterator iter = theMuonComponents.begin(); iter != theMuonComponents.end(); iter++) {
60  delete *iter;
61  }
62 }
63 
64 //------------------------------------------------------------------------------
65 void AlignableMuon::update(const DTGeometry* dtGeometry,
66  const CSCGeometry* cscGeometry,
67  const GEMGeometry* gemGeometry) {
68  // update the muon barrel
69  buildDTBarrel(dtGeometry, /* update = */ true);
70 
71  // update the muon end caps
72  buildCSCEndcap(cscGeometry, /* update = */ true);
73  buildGEMEndcap(gemGeometry, /* update = */ true);
74 
75  edm::LogInfo("Alignment") << "@SUB=AlignableMuon::update"
76  << "Updating alignable muon objects DONE";
77 }
78 
79 //------------------------------------------------------------------------------
81  LogDebug("Position") << "Constructing AlignableDTBarrel";
82 
83  // Temporary container for chambers in a given station and stations in a given wheel
84  std::vector<AlignableDTChamber*> tmpDTChambersInStation;
85  std::vector<AlignableDTStation*> tmpDTStationsInWheel;
86 
87  // Loop over wheels ( -2..2 )
88  for (int iwh = -2; iwh < 3; iwh++) {
89  // Loop over stations ( 1..4 )
90  for (int ist = 1; ist < 5; ist++) {
91  // Loop over geom DT Chambers
92  int iChamber{0};
93  std::vector<const GeomDet*>
94  theSLs; // FIXME: What is this vector meant to be for? Probably redundant since super layers are handled inside of the AlignableDTChamber.
95  for (const auto& det : pDT->chambers()) {
96  // Get the chamber ID
97  DTChamberId chamberId = det->id();
98 
99  // Get wheel,station and sector of the chamber
100  int wh = chamberId.wheel();
101  int st = chamberId.station();
102  //int se = chamberId.sector();
103 
104  // Select the chambers in a given wheel in a given station
105  if (iwh == wh && ist == st) {
106  if (update) {
107  // Update the alignable DT chamber
108  theDTBarrel.back()->wheel(iwh + 2).station(ist - 1).chamber(iChamber).update(det);
109  } else {
110  // Create the alignable DT chamber
111  AlignableDTChamber* tmpDTChamber = new AlignableDTChamber(det);
112 
113  // Store the DT chambers in a given DT Station and Wheel
114  tmpDTChambersInStation.push_back(tmpDTChamber);
115  }
116 
117  ++iChamber;
118  // End chamber selection
119  }
120 
121  // End loop over chambers
122  }
123 
124  if (!update) {
125  // Store the DT chambers
126  theDTChambers.insert(theDTChambers.end(), tmpDTChambersInStation.begin(), tmpDTChambersInStation.end());
127 
128  // Create the alignable DT station with chambers in a given station and wheel
129  AlignableDTStation* tmpDTStation = new AlignableDTStation(tmpDTChambersInStation);
130 
131  // Store the DT stations in a given wheel
132  tmpDTStationsInWheel.push_back(tmpDTStation);
133 
134  // Clear the temporary vector of chambers in a station
135  tmpDTChambersInStation.clear();
136  }
137  // End loop over stations
138  }
139 
140  if (!update) {
141  // Store The DT stations
142  theDTStations.insert(theDTStations.end(), tmpDTStationsInWheel.begin(), tmpDTStationsInWheel.end());
143 
144  // Create the alignable DT wheel
145  AlignableDTWheel* tmpWheel = new AlignableDTWheel(tmpDTStationsInWheel);
146 
147  // Store the DT wheels
148  theDTWheels.push_back(tmpWheel);
149 
150  // Clear temporary vector of stations in a wheel
151  tmpDTStationsInWheel.clear();
152  }
153 
154  // End loop over wheels
155  }
156 
157  if (!update) {
158  // Create the alignable Muon Barrel
159  AlignableDTBarrel* tmpDTBarrel = new AlignableDTBarrel(theDTWheels);
160 
161  // Store the barrel
162  theDTBarrel.push_back(tmpDTBarrel);
163 
164  // Store the barrel in the muon
165  theMuonComponents.push_back(tmpDTBarrel);
166  }
167 }
168 
169 //------------------------------------------------------------------------------
171  LogDebug("Position") << "Constructing AlignableCSCBarrel";
172 
173  // Temporary container for stations in a given endcap
174  std::vector<AlignableCSCStation*> tmpCSCStationsInEndcap;
175 
176  // Loop over endcaps ( 1..2 )
177  for (int iec = 1; iec < 3; iec++) {
178  // Temporary container for rings in a given station
179  std::vector<AlignableCSCRing*> tmpCSCRingsInStation;
180 
181  // Loop over stations ( 1..4 )
182  for (int ist = 1; ist < 5; ist++) {
183  // Temporary container for chambers in a given ring
184  std::vector<AlignableCSCChamber*> tmpCSCChambersInRing;
185 
186  // Loop over rings ( 1..4 )
187  for (int iri = 1; iri < 5; iri++) {
188  // Loop over geom CSC Chambers
189  int iChamber{0};
190  const CSCGeometry::ChamberContainer& vc = pCSC->chambers();
191  for (const auto& det : vc) {
192  // Get the CSCDet ID
193  CSCDetId cscId = det->id();
194 
195  // Get chamber, station, ring, layer and endcap labels of the CSC chamber
196  int ec = cscId.endcap();
197  int st = cscId.station();
198  int ri = cscId.ring();
199  //int ch = cscId.chamber();
200 
201  // Select the chambers in a given endcap, station, and ring
202  if (iec == ec && ist == st && iri == ri) {
203  if (update) {
204  // Update the alignable CSC chamber
205  theCSCEndcaps[iec - 1]->station(ist - 1).ring(iri - 1).chamber(iChamber).update(det);
206  } else {
207  AlignableCSCChamber* tmpCSCChamber = new AlignableCSCChamber(det);
208 
209  // Store the alignable CSC chambers
210  tmpCSCChambersInRing.push_back(tmpCSCChamber);
211  }
212 
213  ++iChamber;
214  // End If chamber selection
215  }
216 
217  // End loop over geom CSC chambers
218  }
219 
220  if (!update) {
221  // Not all stations have 4 rings: only add the rings that exist (have chambers associated with them)
222  if (!tmpCSCChambersInRing.empty()) {
223  // Store the alignable CSC chambers
224  theCSCChambers.insert(theCSCChambers.end(), tmpCSCChambersInRing.begin(), tmpCSCChambersInRing.end());
225 
226  // Create the alignable CSC ring with chambers in a given ring
227  AlignableCSCRing* tmpCSCRing = new AlignableCSCRing(tmpCSCChambersInRing);
228 
229  // Store the CSC rings in a given station
230  tmpCSCRingsInStation.push_back(tmpCSCRing);
231 
232  // Clear the temporary vector of chambers in ring
233  tmpCSCChambersInRing.clear();
234 
235  // End if this ring exists
236  }
237  }
238 
239  // End loop over rings
240  }
241 
242  if (!update) {
243  // Create the alignable CSC station with rings in a given station
244  AlignableCSCStation* tmpCSCStation = new AlignableCSCStation(tmpCSCRingsInStation);
245 
246  // Store the alignable CSC rings
247  theCSCRings.insert(theCSCRings.end(), tmpCSCRingsInStation.begin(), tmpCSCRingsInStation.end());
248 
249  // Store the CSC stations in a given endcap
250  tmpCSCStationsInEndcap.push_back(tmpCSCStation);
251 
252  // Clear the temporary vector of rings in station
253  tmpCSCRingsInStation.clear();
254  }
255 
256  // End loop over stations
257  }
258 
259  if (!update) {
260  // Create the alignable CSC endcap
261  AlignableCSCEndcap* tmpEndcap = new AlignableCSCEndcap(tmpCSCStationsInEndcap);
262 
263  // Store the alignable CSC stations
264  theCSCStations.insert(theCSCStations.end(), tmpCSCStationsInEndcap.begin(), tmpCSCStationsInEndcap.end());
265 
266  // Store the alignable CSC endcaps
267  theCSCEndcaps.push_back(tmpEndcap);
268 
269  // Clear the temporary vector of stations in endcap
270  tmpCSCStationsInEndcap.clear();
271  }
272 
273  // End loop over endcaps
274  }
275 
276  if (!update) {
277  // Store the encaps in the muon components
278  theMuonComponents.insert(theMuonComponents.end(), theCSCEndcaps.begin(), theCSCEndcaps.end());
279  }
280 }
281 
282 //--------------------------------------------------------------------------------------------------
284  LogDebug("Position") << "Constructing AlignableGEMEndcap";
285  std::vector<AlignableGEMStation*> tmpGEMStationsInEndcap;
286  for (int iec = -1; iec < 2; iec = iec + 2) {
287  std::vector<AlignableGEMRing*> tmpGEMRingsInStation;
288 
289  for (int ist = 0; ist < 3; ist++) {
290  if (ist == 0)
291  continue; //Run3 GEM dosen't have ME0
292  if (ist == 2)
293  continue; //Run3 GEM dosen't have GE2/1
294  std::vector<AlignableGEMSuperChamber*> tmpGEMSuperChambersInRing;
295  int iri = 1;
296  int iChamber{0};
297  auto vc = pGEM->superChambers();
298  for (const auto& det : vc) {
299  GEMDetId gemId = det->id();
300  int ec = gemId.region();
301  int st = gemId.station();
302  int ri = gemId.ring();
303 
304  if (iec == ec && ist == st && iri == ri) {
305  if (update) {
306  theGEMEndcaps[iec == -1 ? 0 : 1]->station(ist - 1).ring(iri - 1).superChamber(iChamber).update(det);
307  } else {
308  AlignableGEMSuperChamber* tmpGEMSuperChamber = new AlignableGEMSuperChamber(det);
309  tmpGEMSuperChambersInRing.push_back(tmpGEMSuperChamber);
310  }
311  ++iChamber;
312  }
313  }
314  if (!update) {
315  if (!tmpGEMSuperChambersInRing.empty()) {
316  theGEMSuperChambers.insert(
317  theGEMSuperChambers.end(), tmpGEMSuperChambersInRing.begin(), tmpGEMSuperChambersInRing.end());
318  AlignableGEMRing* tmpGEMRing = new AlignableGEMRing(tmpGEMSuperChambersInRing);
319  tmpGEMRingsInStation.push_back(tmpGEMRing);
320  tmpGEMSuperChambersInRing.clear();
321  }
322  }
323  if (!update) {
324  AlignableGEMStation* tmpGEMStation = new AlignableGEMStation(tmpGEMRingsInStation);
325  theGEMRings.insert(theGEMRings.end(), tmpGEMRingsInStation.begin(), tmpGEMRingsInStation.end());
326  tmpGEMStationsInEndcap.push_back(tmpGEMStation);
327  tmpGEMRingsInStation.clear();
328  }
329  }
330  if (!update) {
331  AlignableGEMEndcap* tmpEndcap = new AlignableGEMEndcap(tmpGEMStationsInEndcap);
332  theGEMStations.insert(theGEMStations.end(), tmpGEMStationsInEndcap.begin(), tmpGEMStationsInEndcap.end());
333  theGEMEndcaps.push_back(tmpEndcap);
334  tmpGEMStationsInEndcap.clear();
335  }
336  }
337 }
338 
339 //--------------------------------------------------------------------------------------------------
342 
344  for (align::Alignables::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) {
345  align::Alignables superlayers = (*chamberIter)->components();
346  for (align::Alignables::const_iterator superlayerIter = superlayers.begin(); superlayerIter != superlayers.end();
347  ++superlayerIter) {
348  align::Alignables layers = (*superlayerIter)->components();
349  for (align::Alignables::const_iterator layerIter = layers.begin(); layerIter != layers.end(); ++layerIter) {
350  result.push_back(*layerIter);
351  }
352  }
353  }
354 
355  return result;
356 }
357 
358 //--------------------------------------------------------------------------------------------------
361 
363  for (align::Alignables::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) {
364  align::Alignables superlayers = (*chamberIter)->components();
365  for (align::Alignables::const_iterator superlayerIter = superlayers.begin(); superlayerIter != superlayers.end();
366  ++superlayerIter) {
367  result.push_back(*superlayerIter);
368  }
369  }
370 
371  return result;
372 }
373 
374 //--------------------------------------------------------------------------------------------------
377  copy(theDTChambers.begin(), theDTChambers.end(), back_inserter(result));
378  return result;
379 }
380 
381 //--------------------------------------------------------------------------------------------------
384  copy(theDTStations.begin(), theDTStations.end(), back_inserter(result));
385  return result;
386 }
387 
388 //--------------------------------------------------------------------------------------------------
391  copy(theDTWheels.begin(), theDTWheels.end(), back_inserter(result));
392  return result;
393 }
394 
395 //--------------------------------------------------------------------------------------------------
398  copy(theDTBarrel.begin(), theDTBarrel.end(), back_inserter(result));
399  return result;
400 }
401 
402 //--------------------------------------------------------------------------------------------------
405 
407  for (align::Alignables::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) {
408  align::Alignables layers = (*chamberIter)->components();
409  for (align::Alignables::const_iterator layerIter = layers.begin(); layerIter != layers.end(); ++layerIter) {
410  result.push_back(*layerIter);
411  }
412  }
413 
414  return result;
415 }
416 
417 //--------------------------------------------------------------------------------------------------
420  copy(theCSCChambers.begin(), theCSCChambers.end(), back_inserter(result));
421  return result;
422 }
423 
424 //--------------------------------------------------------------------------------------------------
427  copy(theCSCRings.begin(), theCSCRings.end(), back_inserter(result));
428  return result;
429 }
430 
431 //--------------------------------------------------------------------------------------------------
434  copy(theCSCStations.begin(), theCSCStations.end(), back_inserter(result));
435  return result;
436 }
437 
438 //--------------------------------------------------------------------------------------------------
441  copy(theCSCEndcaps.begin(), theCSCEndcaps.end(), back_inserter(result));
442  return result;
443 }
444 
445 //__________________________________________________________________________________________________
448  align::Alignables superChambers = GEMSuperChambers();
449  for (align::Alignables::const_iterator superChamberIter = superChambers.begin();
450  superChamberIter != superChambers.end();
451  ++superChamberIter) {
452  align::Alignables chambers = (*superChamberIter)->components();
453  for (align::Alignables::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end();
454  ++chamberIter) {
455  align::Alignables etaPartitions = (*chamberIter)->components();
456  for (align::Alignables::const_iterator etaPartitionIter = etaPartitions.begin();
457  etaPartitionIter != etaPartitions.end();
458  ++etaPartitionIter) {
459  result.push_back(*etaPartitionIter);
460  }
461  }
462  }
463  return result;
464 }
465 
466 //__________________________________________________________________________________________________
469  align::Alignables superChambers = GEMSuperChambers();
470  for (align::Alignables::const_iterator superChamberIter = superChambers.begin();
471  superChamberIter != superChambers.end();
472  ++superChamberIter) {
473  align::Alignables chambers = (*superChamberIter)->components();
474  for (align::Alignables::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end();
475  ++chamberIter) {
476  result.push_back(*chamberIter);
477  }
478  }
479  return result;
480 }
481 
482 //__________________________________________________________________________________________________
485  copy(theGEMSuperChambers.begin(), theGEMSuperChambers.end(), back_inserter(result));
486  return result;
487 }
488 
489 //__________________________________________________________________________________________________
492  copy(theGEMRings.begin(), theGEMRings.end(), back_inserter(result));
493  return result;
494 }
495 
496 //__________________________________________________________________________________________________
499  copy(theGEMStations.begin(), theGEMStations.end(), back_inserter(result));
500  return result;
501 }
502 
503 //--------------------------------------------------------------------------------------------------
506  copy(theGEMEndcaps.begin(), theGEMEndcaps.end(), back_inserter(result));
507  return result;
508 }
509 
510 //__________________________________________________________________________________________________
512  for (const auto& iter : alignable->components()) {
513  iter->setMother(alignable);
514  recursiveSetMothers(iter);
515  }
516 }
517 
518 //__________________________________________________________________________________________________
521  Alignments* m_alignments = new Alignments();
522  // Add components recursively
523  for (align::Alignables::iterator i = comp.begin(); i != comp.end(); i++) {
524  Alignments* tmpAlignments = (*i)->alignments();
525  std::copy(tmpAlignments->m_align.begin(), tmpAlignments->m_align.end(), std::back_inserter(m_alignments->m_align));
526  delete tmpAlignments;
527  }
528 
529  // sort by rawId
530  std::sort(m_alignments->m_align.begin(), m_alignments->m_align.end());
531 
532  return m_alignments;
533 }
534 //__________________________________________________________________________________________________
537  AlignmentErrorsExtended* m_alignmentErrors = new AlignmentErrorsExtended();
538 
539  // Add components recursively
540  for (align::Alignables::iterator i = comp.begin(); i != comp.end(); i++) {
541  AlignmentErrorsExtended* tmpAlignmentErrorsExtended = (*i)->alignmentErrors();
542  std::copy(tmpAlignmentErrorsExtended->m_alignError.begin(),
543  tmpAlignmentErrorsExtended->m_alignError.end(),
544  std::back_inserter(m_alignmentErrors->m_alignError));
545  delete tmpAlignmentErrorsExtended;
546  }
547 
548  // sort by rawId
549  std::sort(m_alignmentErrors->m_alignError.begin(), m_alignmentErrors->m_alignError.end());
550 
551  return m_alignmentErrors;
552 }
553 //__________________________________________________________________________________________________
555  // Retrieve muon barrel alignments
556  Alignments* tmpAlignments = this->DTBarrel().front()->alignments();
557 
558  return tmpAlignments;
559 }
560 //__________________________________________________________________________________________________
562  // Retrieve muon barrel alignment errors
563  AlignmentErrorsExtended* tmpAlignmentErrorsExtended = this->DTBarrel().front()->alignmentErrors();
564 
565  return tmpAlignmentErrorsExtended;
566 }
567 //__________________________________________________________________________________________________
569  // Retrieve muon endcaps alignments
570  Alignments* cscEndCap1 = this->CSCEndcaps().front()->alignments();
571  Alignments* cscEndCap2 = this->CSCEndcaps().back()->alignments();
572  Alignments* tmpAlignments = new Alignments();
573 
574  std::copy(cscEndCap1->m_align.begin(), cscEndCap1->m_align.end(), back_inserter(tmpAlignments->m_align));
575  std::copy(cscEndCap2->m_align.begin(), cscEndCap2->m_align.end(), back_inserter(tmpAlignments->m_align));
576 
577  return tmpAlignments;
578 }
579 //__________________________________________________________________________________________________
581  // Retrieve muon endcaps alignment errors
582  AlignmentErrorsExtended* cscEndCap1Errors = this->CSCEndcaps().front()->alignmentErrors();
583  AlignmentErrorsExtended* cscEndCap2Errors = this->CSCEndcaps().back()->alignmentErrors();
584  AlignmentErrorsExtended* tmpAlignmentErrorsExtended = new AlignmentErrorsExtended();
585 
586  std::copy(cscEndCap1Errors->m_alignError.begin(),
587  cscEndCap1Errors->m_alignError.end(),
588  back_inserter(tmpAlignmentErrorsExtended->m_alignError));
589  std::copy(cscEndCap2Errors->m_alignError.begin(),
590  cscEndCap2Errors->m_alignError.end(),
591  back_inserter(tmpAlignmentErrorsExtended->m_alignError));
592 
593  return tmpAlignmentErrorsExtended;
594 }
595 
596 //__________________________________________________________________________________________________
598  Alignments* gemEndCap1 = this->GEMEndcaps().front()->alignments();
599  Alignments* gemEndCap2 = this->GEMEndcaps().back()->alignments();
600  Alignments* tmpAlignments = new Alignments();
601  std::copy(gemEndCap1->m_align.begin(), gemEndCap1->m_align.end(), back_inserter(tmpAlignments->m_align));
602  std::copy(gemEndCap2->m_align.begin(), gemEndCap2->m_align.end(), back_inserter(tmpAlignments->m_align));
603  std::sort(tmpAlignments->m_align.begin(), tmpAlignments->m_align.end());
604 
605  return tmpAlignments;
606 }
607 //__________________________________________________________________________________________________
609  // Retrieve muon endcaps alignment errors
610  AlignmentErrorsExtended* gemEndCap1Errors = this->GEMEndcaps().front()->alignmentErrors();
611  AlignmentErrorsExtended* gemEndCap2Errors = this->GEMEndcaps().back()->alignmentErrors();
612  AlignmentErrorsExtended* tmpAlignmentErrorsExtended = new AlignmentErrorsExtended();
613 
614  std::copy(gemEndCap1Errors->m_alignError.begin(),
615  gemEndCap1Errors->m_alignError.end(),
616  back_inserter(tmpAlignmentErrorsExtended->m_alignError));
617  std::copy(gemEndCap2Errors->m_alignError.begin(),
618  gemEndCap2Errors->m_alignError.end(),
619  back_inserter(tmpAlignmentErrorsExtended->m_alignError));
620  std::sort(tmpAlignmentErrorsExtended->m_alignError.begin(), tmpAlignmentErrorsExtended->m_alignError.end());
621 
622  return tmpAlignmentErrorsExtended;
623 }
AlignableMuon::~AlignableMuon
~AlignableMuon() override
Destructor.
Definition: AlignableMuon.cc:58
AlignmentErrorsExtended.h
DTGeometry
Definition: DTGeometry.h:28
AlignableMuon::dtAlignmentErrorsExtended
AlignmentErrorsExtended * dtAlignmentErrorsExtended()
Get DT alignment errors sorted by DetId.
Definition: AlignableMuon.cc:561
AlCaHLTBitMon_QueryRunRegistry.comp
string comp
Definition: AlCaHLTBitMon_QueryRunRegistry.py:249
mps_fire.i
i
Definition: mps_fire.py:428
AlignableGEMRing.h
MessageLogger.h
align
Definition: AlignableIndexer.h:30
GEMDetId::ring
constexpr int ring() const
Definition: GEMDetId.h:176
AlignableCSCStation
Definition: AlignableCSCStation.h:28
AlignableMuon::theCSCChambers
std::vector< AlignableCSCChamber * > theCSCChambers
Definition: AlignableMuon.h:132
AlignableMuon::GEMEndcaps
align::Alignables GEMEndcaps()
Definition: AlignableMuon.cc:504
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
GEMDetId::region
constexpr int region() const
Definition: GEMDetId.h:171
AlignableMuon::theDTChambers
std::vector< AlignableDTChamber * > theDTChambers
Containers of separate components.
Definition: AlignableMuon.h:127
CSCDetId::ring
int ring() const
Definition: CSCDetId.h:68
AlignableMuon::CSCLayers
align::Alignables CSCLayers()
Definition: AlignableMuon.cc:403
Alignable
Definition: Alignable.h:27
AlignableMuon::theCSCStations
std::vector< AlignableCSCStation * > theCSCStations
Definition: AlignableMuon.h:133
AlignableComposite
Definition: AlignableComposite.h:25
Alignments.h
AlignableMuon::cscAlignments
Alignments * cscAlignments()
Get CSC alignments sorted by DetId.
Definition: AlignableMuon.cc:568
align::AlignableCSCStation
Definition: StructureType.h:80
AlignableMuon::CSCChambers
align::Alignables CSCChambers()
Definition: AlignableMuon.cc:418
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
AlignableMuon::update
void update(const DTGeometry *, const CSCGeometry *, const GEMGeometry *)
Definition: AlignableMuon.cc:65
align::AlignableDTChamber
Definition: StructureType.h:76
AlignableMuon::theCSCEndcaps
std::vector< AlignableCSCEndcap * > theCSCEndcaps
Definition: AlignableMuon.h:135
AlignableMuon::CSCStations
align::Alignables CSCStations()
Definition: AlignableMuon.cc:432
AlignableMuon::theGEMRings
std::vector< AlignableGEMRing * > theGEMRings
Definition: AlignableMuon.h:139
AlignableMuon::dtAlignments
Alignments * dtAlignments()
Get DT alignments sorted by DetId.
Definition: AlignableMuon.cc:554
AlignableMuon::buildGEMEndcap
void buildGEMEndcap(const GEMGeometry *, bool update=false)
Definition: AlignableMuon.cc:283
AlignableMuon::theGEMStations
std::vector< AlignableGEMStation * > theGEMStations
Definition: AlignableMuon.h:138
AlignableCSCChamber
A muon CSC Chamber( an AlignableDet )
Definition: AlignableCSCChamber.h:24
CSCGeometry
Definition: CSCGeometry.h:24
AlignableMuon::DTChambers
align::Alignables DTChambers()
Definition: AlignableMuon.cc:375
align::AlignableGEMRing
Definition: StructureType.h:86
AlignableDTWheel.h
align::AlignableCSCEndcap
Definition: StructureType.h:79
AlignableCSCChamber.h
AlignableDTStation
Definition: AlignableDTStation.h:27
align::AlignableGEMStation
Definition: StructureType.h:85
DTGeometry::chambers
const std::vector< const DTChamber * > & chambers() const
Return a vector of all Chamber.
Definition: DTGeometry.cc:84
AlignableMuon::DTSuperLayers
align::Alignables DTSuperLayers()
Definition: AlignableMuon.cc:359
AlignableGEMSuperChamber
Definition: AlignableGEMSuperChamber.h:18
AlignableMuon::recursiveSetMothers
void recursiveSetMothers(Alignable *alignable)
Set mothers recursively.
Definition: AlignableMuon.cc:511
AlignableMuon::DTLayers
align::Alignables DTLayers()
Methods to return specific of components.
Definition: AlignableMuon.cc:340
AlignableMuon::gemAlignments
Alignments * gemAlignments()
Definition: AlignableMuon.cc:597
AlignableMuon::theDTStations
std::vector< AlignableDTStation * > theDTStations
Definition: AlignableMuon.h:128
AlignableGEMRing
Definition: AlignableGEMRing.h:16
AlignableMuon::DTBarrel
align::Alignables DTBarrel()
Definition: AlignableMuon.cc:396
AlignableMuon::GEMSuperChambers
align::Alignables GEMSuperChambers()
Definition: AlignableMuon.cc:483
AlignableMuon::theMuonComponents
align::Alignables theMuonComponents
Definition: AlignableMuon.h:142
AlignableMuon::components
const align::Alignables & components() const final
Return all components.
Definition: AlignableMuon.h:51
DTLayer.h
AlignableMuon::GEMRings
align::Alignables GEMRings()
Definition: AlignableMuon.cc:490
AlignableMuon::buildDTBarrel
void buildDTBarrel(const DTGeometry *, bool update=false)
Build muon barrel.
Definition: AlignableMuon.cc:80
align::AlignableGEMEndcap
Definition: StructureType.h:84
align::AlignableDTStation
Definition: StructureType.h:75
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
AlignableMuon.h
AlignableMuon::theCSCRings
std::vector< AlignableCSCRing * > theCSCRings
Definition: AlignableMuon.h:134
AlignableMuon::theGEMSuperChambers
std::vector< AlignableGEMSuperChamber * > theGEMSuperChambers
Definition: AlignableMuon.h:137
AlignableMuon::DTWheels
align::Alignables DTWheels()
Definition: AlignableMuon.cc:389
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
AlignableGEMStation
Definition: AlignableGEMStation.h:19
GEMDetId
Definition: GEMDetId.h:18
AlignableCSCRing
Definition: AlignableCSCRing.h:28
AlignableCSCRing.h
CSCDetId
Definition: CSCDetId.h:26
AlignableMuon
Constructor of the full muon geometry.
Definition: AlignableMuon.h:38
CSCGeometry::ChamberContainer
std::vector< const CSCChamber * > ChamberContainer
Definition: CSCGeometry.h:30
chambers
static char chambers[264][20]
Definition: ReadPGInfo.cc:243
AlignableDTStation.h
AlignableMuon::GEMChambers
align::Alignables GEMChambers()
Definition: AlignableMuon.cc:467
align::AlignableCSCChamber
Definition: StructureType.h:82
AlignableMuon::gemAlignmentErrorsExtended
AlignmentErrorsExtended * gemAlignmentErrorsExtended()
Definition: AlignableMuon.cc:608
AlignableDTBarrel
Definition: AlignableDTBarrel.h:27
AlignmentErrorsExtended
Definition: AlignmentErrorsExtended.h:10
AlignableCSCEndcap.h
AlignableMuon::CSCRings
align::Alignables CSCRings()
Definition: AlignableMuon.cc:425
AlignableMuon::theGEMEndcaps
std::vector< AlignableGEMEndcap * > theGEMEndcaps
Definition: AlignableMuon.h:140
AlignableGEMStation.h
align::AlignableDTBarrel
Definition: StructureType.h:73
AlignableMuon::GEMEtaPartitions
align::Alignables GEMEtaPartitions()
Definition: AlignableMuon.cc:446
AlignableMuon::buildCSCEndcap
void buildCSCEndcap(const CSCGeometry *, bool update=false)
Build muon end caps.
Definition: AlignableMuon.cc:170
align::AlignableDTWheel
Definition: StructureType.h:74
AlignableMuon::alignmentErrors
AlignmentErrorsExtended * alignmentErrors() const override
Get alignment errors sorted by DetId.
Definition: AlignableMuon.cc:535
GeomDet.h
align::Alignables
std::vector< Alignable * > Alignables
Definition: Utilities.h:31
GEMGeometry.h
AlignableMuon::CSCEndcaps
align::Alignables CSCEndcaps()
Definition: AlignableMuon.cc:439
align::AlignableGEMSuperChamber
Definition: StructureType.h:87
AlignableGEMEndcap
Definition: AlignableGEMEndcap.h:18
AlignableMuon::alignments
Alignments * alignments() const override
Get alignments sorted by DetId.
Definition: AlignableMuon.cc:519
AlignableDTChamber.h
AlignableMuon::theDTBarrel
std::vector< AlignableDTBarrel * > theDTBarrel
Definition: AlignableMuon.h:130
AlignableMuon::DTStations
align::Alignables DTStations()
Definition: AlignableMuon.cc:382
AlignableCSCStation.h
CSCDetId::endcap
int endcap() const
Definition: CSCDetId.h:85
AlignableDTBarrel.h
Alignable::theId
align::ID theId
Definition: Alignable.h:235
AlignableMuon::AlignableMuon
AlignableMuon(const DTGeometry *, const CSCGeometry *, const GEMGeometry *)
Constructor from geometries.
Definition: AlignableMuon.cc:36
CSCGeometry::chambers
const ChamberContainer & chambers() const
Return a vector of all chambers.
Definition: CSCGeometry.cc:96
gemGeometry_cff.gemGeometry
gemGeometry
Definition: gemGeometry_cff.py:5
AlignableCSCEndcap
Definition: AlignableCSCEndcap.h:27
AlignableDTChamber
A muon DT Chamber( an AlignableDet )
Definition: AlignableDTChamber.h:24
DTChamber.h
GEMDetId::station
constexpr int station() const
Definition: GEMDetId.h:179
Alignments::m_align
std::vector< AlignTransform > m_align
Definition: Alignments.h:19
AlignmentErrorsExtended::m_alignError
std::vector< AlignTransformErrorExtended > m_alignError
Definition: AlignmentErrorsExtended.h:19
GEMGeometry
Definition: GEMGeometry.h:24
AlignableGEMEndcap.h
mps_fire.result
result
Definition: mps_fire.py:311
DTChamberId
Definition: DTChamberId.h:14
AlignableDTWheel
Definition: AlignableDTWheel.h:27
CSCDetId::station
int station() const
Definition: CSCDetId.h:79
GEMGeometry::superChambers
const std::vector< const GEMSuperChamber * > & superChambers() const
Return a vector of all GEM super chambers.
Definition: GEMGeometry.cc:36
AlignableMuon::cscAlignmentErrorsExtended
AlignmentErrorsExtended * cscAlignmentErrorsExtended()
Get CSC alignment errors sorted by DetId.
Definition: AlignableMuon.cc:580
AlignableGEMSuperChamber.h
align::AlignableCSCRing
Definition: StructureType.h:81
Alignable::components
virtual const Alignables & components() const =0
Return vector of all direct components.
Alignments
Definition: Alignments.h:10
DTChamberId::wheel
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:39
AlignableMuon::GEMStations
align::Alignables GEMStations()
Definition: AlignableMuon.cc:497
hgcalTopologyTester_cfi.layers
layers
Definition: hgcalTopologyTester_cfi.py:8
AlignableMuon::theDTWheels
std::vector< AlignableDTWheel * > theDTWheels
Definition: AlignableMuon.h:129
DTChamberId::station
int station() const
Return the station number.
Definition: DTChamberId.h:42
update
#define update(a, b)
Definition: TrackClassifier.cc:10
CSCGeometry.h