33 alignableObjectId_(
nullptr, dtGeometry, cscGeometry)
48 edm::LogInfo(
"AlignableMuon") <<
"Constructing alignable muon objects DONE";
77 <<
"@SUB=AlignableMuon::update" <<
"Updating alignable muon objects DONE";
85 LogDebug(
"Position") <<
"Constructing AlignableDTBarrel";
88 std::vector<AlignableDTChamber*> tmpDTChambersInStation;
89 std::vector<AlignableDTStation*> tmpDTStationsInWheel;
93 for(
int iwh = -2 ; iwh < 3 ; iwh++ ){
96 for(
int ist = 1 ; ist < 5 ; ist++ ){
100 std::vector<const GeomDet*> theSLs;
101 for(
const auto& det: pDT->
chambers()){
106 int wh = chamberId.
wheel();
111 if ( iwh == wh && ist == st ){
115 theDTBarrel.back()->wheel(iwh+2).station(ist-1).chamber(iChamber).update(det);
121 tmpDTChambersInStation.push_back( tmpDTChamber );
134 tmpDTChambersInStation.end());
140 tmpDTStationsInWheel.push_back(tmpDTStation);
143 tmpDTChambersInStation.clear();
151 tmpDTStationsInWheel.end());
161 tmpDTStationsInWheel.clear();
185 LogDebug(
"Position") <<
"Constructing AlignableCSCBarrel";
188 std::vector<AlignableCSCStation*> tmpCSCStationsInEndcap;
191 for(
int iec = 1 ; iec < 3 ; iec++ ){
194 std::vector<AlignableCSCRing*> tmpCSCRingsInStation;
197 for(
int ist = 1 ; ist < 5 ; ist++ ){
200 std::vector<AlignableCSCChamber*> tmpCSCChambersInRing;
203 for (
int iri = 1; iri < 5; iri++ ){
208 for(
const auto& det: vc){
216 int ri = cscId.
ring();
220 if ( iec == ec && ist == st && iri == ri ) {
224 theCSCEndcaps[iec-1]->station(ist-1).ring(iri-1).chamber(iChamber).update(det);
229 tmpCSCChambersInRing.push_back(tmpCSCChamber);
241 if (tmpCSCChambersInRing.size() > 0) {
245 tmpCSCChambersInRing.begin(),
246 tmpCSCChambersInRing.end());
252 tmpCSCRingsInStation.push_back(tmpCSCRing);
255 tmpCSCChambersInRing.clear();
270 tmpCSCRingsInStation.end());
273 tmpCSCStationsInEndcap.push_back(tmpCSCStation);
276 tmpCSCRingsInStation.clear();
288 tmpCSCStationsInEndcap.end());
294 tmpCSCStationsInEndcap.clear();
314 for (align::Alignables::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) {
316 for (align::Alignables::const_iterator superlayerIter = superlayers.begin(); superlayerIter != superlayers.end(); ++superlayerIter) {
318 for (align::Alignables::const_iterator layerIter = layers.begin(); layerIter != layers.end(); ++layerIter) {
319 result.push_back(*layerIter);
333 for (align::Alignables::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) {
335 for (align::Alignables::const_iterator superlayerIter = superlayers.begin(); superlayerIter != superlayers.end(); ++superlayerIter) {
336 result.push_back(*superlayerIter);
382 for (align::Alignables::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) {
384 for (align::Alignables::const_iterator layerIter = layers.begin(); layerIter != layers.end(); ++layerIter) {
385 result.push_back(*layerIter);
430 for ( align::Alignables::iterator iter = components.begin();
431 iter != components.end(); iter++ )
433 (*iter)->setMother( alignable );
445 for ( align::Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
447 Alignments* tmpAlignments = (*i)->alignments();
449 std::back_inserter(m_alignments->
m_align) );
450 delete tmpAlignments;
453 std::sort( m_alignments->
m_align.begin(), m_alignments->
m_align.end(),
467 for ( align::Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
472 delete tmpAlignmentErrorsExtended;
478 return m_alignmentErrors;
487 return tmpAlignments;
496 return tmpAlignmentErrorsExtended;
511 return tmpAlignments;
526 return tmpAlignmentErrorsExtended;
A muon DT Chamber( an AlignableDet )
const std::vector< const DTChamber * > & chambers() const
Return a vector of all Chamber.
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
align::Alignables DTLayers()
Methods to return specific of components.
void update(const DTGeometry *, const CSCGeometry *)
align::Alignables CSCChambers()
align::Alignables DTBarrel()
align::Alignables CSCStations()
align::Alignables DTStations()
const ChamberContainer & chambers() const
Return a vector of all chambers.
std::vector< AlignTransform > m_align
Alignments * alignments() const
Get alignments sorted by DetId.
std::vector< AlignableCSCEndcap * > theCSCEndcaps
Alignments * dtAlignments()
Get DT alignments sorted by DetId.
align::Alignables CSCEndcaps()
align::Alignables theMuonComponents
align::Alignables DTChambers()
virtual Alignables components() const =0
Return vector of all direct components.
align::Alignables DTWheels()
std::vector< AlignableCSCStation * > theCSCStations
void recursiveSetMothers(Alignable *alignable)
Set mothers recursively.
virtual align::Alignables components() const
Return all components.
std::vector< AlignableDTStation * > theDTStations
AlignmentErrorsExtended * cscAlignmentErrorsExtended()
Get CSC alignment errors sorted by DetId.
align::Alignables CSCLayers()
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.
AlignmentErrorsExtended * alignmentErrors() const
Get alignment errors sorted by DetId.
AlignableMuon(const DTGeometry *, const CSCGeometry *)
Constructor from geometries.
AlignmentErrorsExtended * dtAlignmentErrorsExtended()
Get DT alignment errors sorted by DetId.
std::vector< Alignable * > Alignables
std::vector< const CSCChamber * > ChamberContainer
align::Alignables CSCRings()
void buildDTBarrel(const DTGeometry *, bool update=false)
Build muon barrel.
std::vector< AlignableDTBarrel * > theDTBarrel
~AlignableMuon()
Destructor.
std::vector< AlignableDTWheel * > theDTWheels
int station() const
Return the station number.
static char chambers[264][20]
int wheel() const
Return the wheel number.
Constructor of the full muon geometry.
std::vector< AlignableCSCChamber * > theCSCChambers
A muon CSC Chamber( an AlignableDet )