40 alignableObjectId_(nullptr, dtGeometry, cscGeometry,
gemGeometry),
58 edm::LogInfo(
"AlignableMuon") <<
"Constructing alignable muon objects DONE";
81 edm::LogInfo(
"Alignment") <<
"@SUB=AlignableMuon::update" 82 <<
"Updating alignable muon objects DONE";
87 LogDebug(
"Position") <<
"Constructing AlignableDTBarrel";
90 std::vector<AlignableDTChamber*> tmpDTChambersInStation;
91 std::vector<AlignableDTStation*> tmpDTStationsInWheel;
94 for (
int iwh = -2; iwh < 3; iwh++) {
96 for (
int ist = 1; ist < 5; ist++) {
99 std::vector<const GeomDet*>
101 for (
const auto& det : pDT->
chambers()) {
106 int wh = chamberId.
wheel();
111 if (iwh == wh && ist == st) {
114 theDTBarrel.back()->wheel(iwh + 2).station(ist - 1).chamber(iChamber).update(det);
120 tmpDTChambersInStation.push_back(tmpDTChamber);
138 tmpDTStationsInWheel.push_back(tmpDTStation);
141 tmpDTChambersInStation.clear();
157 tmpDTStationsInWheel.clear();
177 LogDebug(
"Position") <<
"Constructing AlignableCSCBarrel";
180 std::vector<AlignableCSCStation*> tmpCSCStationsInEndcap;
183 for (
int iec = 1; iec < 3; iec++) {
185 std::vector<AlignableCSCRing*> tmpCSCRingsInStation;
188 for (
int ist = 1; ist < 5; ist++) {
190 std::vector<AlignableCSCChamber*> tmpCSCChambersInRing;
193 for (
int iri = 1; iri < 5; iri++) {
197 for (
const auto& det : vc) {
204 int ri = cscId.
ring();
208 if (iec == ec && ist == st && iri == ri) {
211 theCSCEndcaps[iec - 1]->station(ist - 1).ring(iri - 1).chamber(iChamber).update(det);
216 tmpCSCChambersInRing.push_back(tmpCSCChamber);
228 if (!tmpCSCChambersInRing.empty()) {
236 tmpCSCRingsInStation.push_back(tmpCSCRing);
239 tmpCSCChambersInRing.clear();
256 tmpCSCStationsInEndcap.push_back(tmpCSCStation);
259 tmpCSCRingsInStation.clear();
276 tmpCSCStationsInEndcap.clear();
290 LogDebug(
"Position") <<
"Constructing AlignableGEMEndcap";
291 std::vector<AlignableGEMStation*> tmpGEMStationsInEndcap;
294 std::vector<AlignableGEMRing*> tmpGEMRingsInStation;
299 std::vector<AlignableGEMSuperChamber*> tmpGEMSuperChambersInRing;
303 for (
const auto& det : vc) {
307 int ri = gemId.
ring();
309 if (iec == ec && ist == st && iri == ri) {
311 theGEMEndcaps[iec == -1 ? 0 : 1]->station(ist - 1).ring(iri - 1).superChamber(iChamber).update(det);
314 tmpGEMSuperChambersInRing.push_back(tmpGEMSuperChamber);
320 if (!tmpGEMSuperChambersInRing.empty()) {
322 theGEMSuperChambers.end(), tmpGEMSuperChambersInRing.begin(), tmpGEMSuperChambersInRing.end());
324 tmpGEMRingsInStation.push_back(tmpGEMRing);
325 tmpGEMSuperChambersInRing.clear();
331 tmpGEMStationsInEndcap.push_back(tmpGEMStation);
332 tmpGEMRingsInStation.clear();
339 tmpGEMStationsInEndcap.clear();
349 for (align::Alignables::const_iterator chamberIter =
chambers.begin(); chamberIter !=
chambers.end(); ++chamberIter) {
351 for (align::Alignables::const_iterator superlayerIter = superlayers.begin(); superlayerIter != superlayers.end();
354 for (align::Alignables::const_iterator layerIter =
layers.begin(); layerIter !=
layers.end(); ++layerIter) {
355 result.push_back(*layerIter);
368 for (align::Alignables::const_iterator chamberIter =
chambers.begin(); chamberIter !=
chambers.end(); ++chamberIter) {
370 for (align::Alignables::const_iterator superlayerIter = superlayers.begin(); superlayerIter != superlayers.end();
372 result.push_back(*superlayerIter);
412 for (align::Alignables::const_iterator chamberIter =
chambers.begin(); chamberIter !=
chambers.end(); ++chamberIter) {
414 for (align::Alignables::const_iterator layerIter =
layers.begin(); layerIter !=
layers.end(); ++layerIter) {
415 result.push_back(*layerIter);
454 for (align::Alignables::const_iterator superChamberIter = superChambers.begin();
455 superChamberIter != superChambers.end();
456 ++superChamberIter) {
458 for (align::Alignables::const_iterator chamberIter =
chambers.begin(); chamberIter !=
chambers.end();
461 for (align::Alignables::const_iterator etaPartitionIter = etaPartitions.begin();
462 etaPartitionIter != etaPartitions.end();
463 ++etaPartitionIter) {
464 result.push_back(*etaPartitionIter);
475 for (align::Alignables::const_iterator superChamberIter = superChambers.begin();
476 superChamberIter != superChambers.end();
477 ++superChamberIter) {
479 for (align::Alignables::const_iterator chamberIter =
chambers.begin(); chamberIter !=
chambers.end();
481 result.push_back(*chamberIter);
517 for (
const auto& iter : alignable->
components()) {
518 iter->setMother(alignable);
528 for (align::Alignables::iterator
i =
comp.begin();
i !=
comp.end();
i++) {
529 Alignments* tmpAlignments = (*i)->alignments();
531 delete tmpAlignments;
545 for (align::Alignables::iterator
i =
comp.begin();
i !=
comp.end();
i++) {
550 delete tmpAlignmentErrorsExtended;
556 return m_alignmentErrors;
563 return tmpAlignments;
570 return tmpAlignmentErrorsExtended;
582 return tmpAlignments;
593 back_inserter(tmpAlignmentErrorsExtended->
m_alignError));
596 back_inserter(tmpAlignmentErrorsExtended->
m_alignError));
598 return tmpAlignmentErrorsExtended;
610 return tmpAlignments;
621 back_inserter(tmpAlignmentErrorsExtended->
m_alignError));
624 back_inserter(tmpAlignmentErrorsExtended->
m_alignError));
627 return tmpAlignmentErrorsExtended;
std::vector< AlignableGEMRing * > theGEMRings
int station() const
Return the station number.
A muon DT Chamber( an AlignableDet )
constexpr int station() const
constexpr int region() const
align::Alignables DTLayers()
Methods to return specific of components.
align::Alignables CSCChambers()
AlignableMuon(const DTGeometry *, const CSCGeometry *, const GEMGeometry *)
Constructor from geometries.
std::vector< AlignableGEMEndcap * > theGEMEndcaps
align::Alignables DTBarrel()
align::Alignables CSCStations()
align::Alignables GEMStations()
align::Alignables GEMRings()
align::Alignables DTStations()
~AlignableMuon() override
Destructor.
const std::vector< const GEMStation * > & stations() const
Return a vector of all GEM stations.
int region() const
Get the region.
std::vector< AlignTransform > m_align
int region() const
Return the region.
std::vector< AlignableCSCEndcap * > theCSCEndcaps
align::Alignables GEMSuperChambers()
void buildGEMEndcap(const GEMGeometry *, bool update=false)
std::vector< AlignableGEMStation * > theGEMStations
Alignments * dtAlignments()
Get DT alignments sorted by DetId.
align::Alignables GEMEtaPartitions()
align::Alignables CSCEndcaps()
align::Alignables theMuonComponents
align::Alignables DTChambers()
align::Alignables DTWheels()
std::vector< AlignableCSCStation * > theCSCStations
std::vector< AlignableGEMSuperChamber * > theGEMSuperChambers
void recursiveSetMothers(Alignable *alignable)
Set mothers recursively.
constexpr int ring() const
std::vector< AlignableDTStation * > theDTStations
virtual const Alignables & components() const =0
Return vector of all direct components.
AlignmentErrorsExtended * cscAlignmentErrorsExtended()
Get CSC alignment errors sorted by DetId.
align::Alignables CSCLayers()
Alignments * alignments() const override
Get alignments sorted by DetId.
Log< level::Info, false > LogInfo
AlignmentErrorsExtended * alignmentErrors() const override
Get alignment errors sorted by DetId.
void buildCSCEndcap(const CSCGeometry *, bool update=false)
Build muon end caps.
std::vector< AlignableDTChamber * > theDTChambers
Containers of separate components.
std::vector< AlignableCSCRing * > theCSCRings
std::vector< AlignTransformErrorExtended > m_alignError
align::Alignables DTSuperLayers()
Alignments * cscAlignments()
Get CSC alignments sorted by DetId.
Alignments * gemAlignments()
align::Alignables GEMChambers()
AlignmentErrorsExtended * dtAlignmentErrorsExtended()
Get DT alignment errors sorted by DetId.
AlignmentErrorsExtended * gemAlignmentErrorsExtended()
std::vector< Alignable * > Alignables
align::Alignables GEMEndcaps()
std::vector< const CSCChamber * > ChamberContainer
align::Alignables CSCRings()
int wheel() const
Return the wheel number.
const std::vector< const GEMRegion * > & regions() const
Return a vector of all GEM regions.
const align::Alignables & components() const final
Return all components.
void buildDTBarrel(const DTGeometry *, bool update=false)
Build muon barrel.
std::vector< AlignableDTBarrel * > theDTBarrel
const std::vector< const DTChamber * > & chambers() const
Return a vector of all Chamber.
std::vector< AlignableDTWheel * > theDTWheels
const ChamberContainer & chambers() const
Return a vector of all chambers.
static char chambers[264][20]
Constructor of the full muon geometry.
void update(const DTGeometry *, const CSCGeometry *, const GEMGeometry *)
const std::vector< const GEMSuperChamber * > & superChambers() const
Return a vector of all GEM super chambers.
int station() const
Get the station.
std::vector< AlignableCSCChamber * > theCSCChambers
A muon CSC Chamber( an AlignableDet )