#include <Alignment/MuonAlignment/interface/AlignableMuon.h>
The alignable muon.
Definition at line 39 of file AlignableMuon.h.
AlignableMuon::AlignableMuon | ( | const DTGeometry * | dtGeometry, | |
const CSCGeometry * | cscGeometry | |||
) |
Constructor from geometries.
Definition at line 31 of file AlignableMuon.cc.
References buildCSCEndcap(), buildDTBarrel(), components(), recursiveSetMothers(), and Alignable::theId.
00032 : AlignableComposite(0, align::AlignableMuon) // cannot yet set id, use 0 00033 { 00034 00035 // Build the muon barrel 00036 buildDTBarrel( dtGeometry ); 00037 00038 // Build the muon end caps 00039 buildCSCEndcap( cscGeometry ); 00040 00041 // Set links to mothers recursively 00042 recursiveSetMothers( this ); 00043 00044 // now can set id as for all composites: id of first component 00045 theId = this->components()[0]->id(); 00046 00047 edm::LogInfo("AlignableMuon") << "Constructing alignable muon objects DONE"; 00048 00049 00050 }
AlignableMuon::~AlignableMuon | ( | ) |
Destructor.
Definition at line 53 of file AlignableMuon.cc.
References iter, and theMuonComponents.
00054 { 00055 00056 for ( std::vector<Alignable*>::iterator iter=theMuonComponents.begin(); 00057 iter != theMuonComponents.end(); iter++){ 00058 delete *iter; 00059 } 00060 00061 00062 }
AlignmentErrors * AlignableMuon::alignmentErrors | ( | void | ) | const [private, virtual] |
Return vector of alignment errors.
Reimplemented from AlignableComposite.
Definition at line 420 of file AlignableMuon.cc.
References components(), edmNew::copy(), i, AlignmentErrors::m_alignError, and python::multivaluedict::sort().
00421 { 00422 00423 std::vector<Alignable*> comp = this->components(); 00424 AlignmentErrors* m_alignmentErrors = new AlignmentErrors(); 00425 00426 // Add components recursively 00427 for ( std::vector<Alignable*>::iterator i=comp.begin(); i!=comp.end(); i++ ) 00428 { 00429 AlignmentErrors* tmpAlignmentErrors = (*i)->alignmentErrors(); 00430 std::copy( tmpAlignmentErrors->m_alignError.begin(), tmpAlignmentErrors->m_alignError.end(), 00431 std::back_inserter(m_alignmentErrors->m_alignError) ); 00432 delete tmpAlignmentErrors; 00433 } 00434 00435 std::sort( m_alignmentErrors->m_alignError.begin(), m_alignmentErrors->m_alignError.end(), 00436 lessAlignmentDetId<AlignTransformError>() ); 00437 00438 return m_alignmentErrors; 00439 00440 }
Alignments * AlignableMuon::alignments | ( | void | ) | const [private, virtual] |
Return alignment data.
Reimplemented from AlignableComposite.
Definition at line 399 of file AlignableMuon.cc.
References components(), edmNew::copy(), i, Alignments::m_align, and python::multivaluedict::sort().
00400 { 00401 00402 std::vector<Alignable*> comp = this->components(); 00403 Alignments* m_alignments = new Alignments(); 00404 // Add components recursively 00405 for ( std::vector<Alignable*>::iterator i=comp.begin(); i!=comp.end(); i++ ) 00406 { 00407 Alignments* tmpAlignments = (*i)->alignments(); 00408 std::copy( tmpAlignments->m_align.begin(), tmpAlignments->m_align.end(), 00409 std::back_inserter(m_alignments->m_align) ); 00410 delete tmpAlignments; 00411 } 00412 00413 std::sort( m_alignments->m_align.begin(), m_alignments->m_align.end(), 00414 lessAlignmentDetId<AlignTransform>() ); 00415 00416 return m_alignments; 00417 00418 }
void AlignableMuon::buildCSCEndcap | ( | const CSCGeometry * | pCSC | ) | [private] |
Definition at line 160 of file AlignableMuon.cc.
References align::AlignableCSCChamber, align::AlignableCSCEndcap, align::AlignableCSCRing, align::AlignableCSCStation, CSCGeometry::chambers(), CSCDetId::endcap(), LogDebug, CSCDetId::ring(), st, CSCDetId::station(), theCSCChambers, theCSCEndcaps, theCSCRings, theCSCStations, and theMuonComponents.
Referenced by AlignableMuon().
00161 { 00162 00163 LogDebug("Position") << "Constructing AlignableCSCBarrel"; 00164 00165 // Temporary container for stations in a given endcap 00166 std::vector<AlignableCSCStation*> tmpCSCStationsInEndcap; 00167 00168 // Loop over endcaps ( 1..2 ) 00169 for( int iec = 1 ; iec < 3 ; iec++ ){ 00170 00171 // Temporary container for rings in a given station 00172 std::vector<AlignableCSCRing*> tmpCSCRingsInStation; 00173 00174 // Loop over stations ( 1..4 ) 00175 for( int ist = 1 ; ist < 5 ; ist++ ){ 00176 00177 // Temporary container for chambers in a given ring 00178 std::vector<AlignableCSCChamber*> tmpCSCChambersInRing; 00179 00180 // Loop over rings ( 1..4 ) 00181 for ( int iri = 1; iri < 5; iri++ ){ 00182 00183 // Loop over geom CSC Chambers 00184 std::vector<CSCChamber*> vc = pCSC->chambers(); 00185 for( std::vector<CSCChamber*>::const_iterator det = vc.begin(); det != vc.end(); ++det ){ 00186 00187 // Get the CSCDet ID 00188 CSCDetId cscId = (*det)->id(); 00189 00190 // Get chamber, station, ring, layer and endcap labels of the CSC chamber 00191 int ec = cscId.endcap(); 00192 int st = cscId.station(); 00193 int ri = cscId.ring(); 00194 //int ch = cscId.chamber(); 00195 00196 // Select the chambers in a given endcap, station, and ring 00197 if ( iec == ec && ist == st && iri == ri ) { 00198 00199 // Create the alignable CSC chamber 00200 AlignableCSCChamber* tmpCSCChamber = new AlignableCSCChamber( *det ); 00201 00202 // Store the alignable CSC chambers 00203 tmpCSCChambersInRing.push_back( tmpCSCChamber ); 00204 00205 // End If chamber selection 00206 } 00207 00208 // End loop over geom CSC chambers 00209 } 00210 00211 // Not all stations have 4 rings: only add the rings that exist (have chambers associated with them) 00212 if (tmpCSCChambersInRing.size() > 0) { 00213 00214 // Store the alignable CSC chambers 00215 theCSCChambers.insert( theCSCChambers.end(), tmpCSCChambersInRing.begin(), tmpCSCChambersInRing.end() ); 00216 00217 // Create the alignable CSC ring with chambers in a given ring 00218 AlignableCSCRing* tmpCSCRing = new AlignableCSCRing( tmpCSCChambersInRing ); 00219 00220 // Store the CSC rings in a given station 00221 tmpCSCRingsInStation.push_back( tmpCSCRing ); 00222 00223 // Clear the temporary vector of chambers in ring 00224 tmpCSCChambersInRing.clear(); 00225 00226 // End if this ring exists 00227 } 00228 00229 // End loop over rings 00230 } 00231 00232 // Create the alignable CSC station with rings in a given station 00233 AlignableCSCStation* tmpCSCStation = new AlignableCSCStation( tmpCSCRingsInStation ); 00234 00235 // Store the alignable CSC rings 00236 theCSCRings.insert( theCSCRings.end(), tmpCSCRingsInStation.begin(), tmpCSCRingsInStation.end() ); 00237 00238 // Store the CSC stations in a given endcap 00239 tmpCSCStationsInEndcap.push_back( tmpCSCStation ); 00240 00241 // Clear the temporary vector of rings in station 00242 tmpCSCRingsInStation.clear(); 00243 00244 // End loop over stations 00245 } 00246 00247 // Create the alignable CSC endcap 00248 AlignableCSCEndcap* tmpEndcap = new AlignableCSCEndcap( tmpCSCStationsInEndcap ); 00249 00250 // Store the alignable CSC stations 00251 theCSCStations.insert( theCSCStations.end(), tmpCSCStationsInEndcap.begin(), tmpCSCStationsInEndcap.end() ); 00252 00253 // Store the alignable CSC endcaps 00254 theCSCEndcaps.push_back( tmpEndcap ); 00255 00256 // Clear the temporary vector of stations in endcap 00257 tmpCSCStationsInEndcap.clear(); 00258 00259 // End loop over endcaps 00260 } 00261 00262 // Store the encaps in the muon components 00263 theMuonComponents.insert( theMuonComponents.end(), theCSCEndcaps.begin(), theCSCEndcaps.end() ); 00264 00265 00266 }
void AlignableMuon::buildDTBarrel | ( | const DTGeometry * | pDT | ) | [private] |
Definition at line 66 of file AlignableMuon.cc.
References align::AlignableDTBarrel, align::AlignableDTChamber, align::AlignableDTStation, align::AlignableDTWheel, DTGeometry::chambers(), LogDebug, st, DTChamberId::station(), theDTBarrel, theDTChambers, theDTStations, theDTWheels, theMuonComponents, and DTChamberId::wheel().
Referenced by AlignableMuon().
00067 { 00068 00069 LogDebug("Position") << "Constructing AlignableDTBarrel"; 00070 00071 // Temporary container for chambers in a given station and stations in a given wheel 00072 std::vector<AlignableDTChamber*> tmpDTChambersInStation; 00073 std::vector<AlignableDTStation*> tmpDTStationsInWheel; 00074 00075 00076 // Loop over wheels ( -2..2 ) 00077 for( int iwh = -2 ; iwh < 3 ; iwh++ ){ 00078 00079 // Loop over stations ( 1..4 ) 00080 for( int ist = 1 ; ist < 5 ; ist++ ){ 00081 00082 // Loop over geom DT Chambers 00083 std::vector<GeomDet*> theSLs; 00084 for( std::vector<DTChamber*>::const_iterator det = pDT->chambers().begin(); 00085 det != pDT->chambers().end(); ++det ){ 00086 // Get the chamber ID 00087 DTChamberId chamberId = (*det)->id(); 00088 00089 // Get wheel,station and sector of the chamber 00090 int wh = chamberId.wheel(); 00091 int st = chamberId.station(); 00092 //int se = chamberId.sector(); 00093 00094 // Select the chambers in a given wheel in a given station 00095 if ( iwh == wh && ist == st ){ 00096 00097 // Create the alignable DT chamber 00098 AlignableDTChamber* tmpDTChamber = new AlignableDTChamber( *det ); 00099 00100 // Store the DT chambers in a given DT Station and Wheel 00101 tmpDTChambersInStation.push_back( tmpDTChamber ); 00102 00103 // End chamber selection 00104 } 00105 00106 // End loop over chambers 00107 } 00108 00109 // Store the DT chambers 00110 theDTChambers.insert( theDTChambers.end(), tmpDTChambersInStation.begin(), 00111 tmpDTChambersInStation.end() ); 00112 00113 // Create the alignable DT station with chambers in a given station and wheel 00114 AlignableDTStation* tmpDTStation = new AlignableDTStation( tmpDTChambersInStation ); 00115 00116 // Store the DT stations in a given wheel 00117 tmpDTStationsInWheel.push_back( tmpDTStation ); 00118 00119 // Clear the temporary vector of chambers in a station 00120 tmpDTChambersInStation.clear(); 00121 00122 // End loop over stations 00123 } 00124 00125 // Store The DT stations 00126 theDTStations.insert( theDTStations.end(), tmpDTStationsInWheel.begin(), 00127 tmpDTStationsInWheel.end() ); 00128 00129 // Create the alignable DT wheel 00130 AlignableDTWheel* tmpWheel = new AlignableDTWheel( tmpDTStationsInWheel ); 00131 00132 00133 // Store the DT wheels 00134 theDTWheels.push_back( tmpWheel ); 00135 00136 // Clear temporary vector of stations in a wheel 00137 tmpDTStationsInWheel.clear(); 00138 00139 00140 // End loop over wheels 00141 } 00142 00143 // Create the alignable Muon Barrel 00144 AlignableDTBarrel* tmpDTBarrel = new AlignableDTBarrel( theDTWheels ); 00145 00146 // Store the barrel 00147 theDTBarrel.push_back( tmpDTBarrel ); 00148 00149 // Store the barrel in the muon 00150 theMuonComponents.push_back( tmpDTBarrel ); 00151 00152 00153 }
virtual std::vector<Alignable*> AlignableMuon::components | ( | ) | const [inline, virtual] |
Return all components.
Reimplemented from AlignableComposite.
Definition at line 52 of file AlignableMuon.h.
References theMuonComponents.
Referenced by AlignableMuon(), alignmentErrors(), alignments(), and recursiveSetMothers().
00052 { return theMuonComponents; }
RotationType AlignableMuon::computeOrientation | ( | ) | [private] |
PositionType AlignableMuon::computePosition | ( | ) | [private] |
AlignableSurface AlignableMuon::computeSurface | ( | ) | [private] |
AlignmentErrors * AlignableMuon::cscAlignmentErrors | ( | void | ) |
Definition at line 475 of file AlignableMuon.cc.
References edmNew::copy(), CSCEndcaps(), and AlignmentErrors::m_alignError.
Referenced by MuonAlignment::copyAlignmentToSurvey(), AlignmentProducer::endOfJob(), MisalignedMuonESProducer::produce(), MuonAlignment::saveCSCtoDB(), AlignmentProducer::startingNewLoop(), and MuonAlignmentOutputXML::write().
00476 { 00477 00478 // Retrieve muon endcaps alignment errors 00479 AlignmentErrors* cscEndCap1Errors = this->CSCEndcaps().front()->alignmentErrors(); 00480 AlignmentErrors* cscEndCap2Errors = this->CSCEndcaps().back()->alignmentErrors(); 00481 AlignmentErrors* tmpAlignmentErrors = new AlignmentErrors(); 00482 00483 std::copy(cscEndCap1Errors->m_alignError.begin(), cscEndCap1Errors->m_alignError.end(), back_inserter(tmpAlignmentErrors->m_alignError) ); 00484 std::copy(cscEndCap2Errors->m_alignError.begin(), cscEndCap2Errors->m_alignError.end(), back_inserter(tmpAlignmentErrors->m_alignError) ); 00485 00486 return tmpAlignmentErrors; 00487 00488 }
Alignments * AlignableMuon::cscAlignments | ( | void | ) |
Definition at line 460 of file AlignableMuon.cc.
References edmNew::copy(), CSCEndcaps(), and Alignments::m_align.
Referenced by AlignmentProducer::endOfJob(), MisalignedMuonESProducer::produce(), MuonAlignment::saveCSCtoDB(), and AlignmentProducer::startingNewLoop().
00461 { 00462 00463 // Retrieve muon endcaps alignments 00464 Alignments* cscEndCap1 = this->CSCEndcaps().front()->alignments(); 00465 Alignments* cscEndCap2 = this->CSCEndcaps().back()->alignments(); 00466 Alignments* tmpAlignments = new Alignments(); 00467 00468 std::copy( cscEndCap1->m_align.begin(), cscEndCap1->m_align.end(), back_inserter( tmpAlignments->m_align ) ); 00469 std::copy( cscEndCap2->m_align.begin(), cscEndCap2->m_align.end(), back_inserter( tmpAlignments->m_align ) ); 00470 00471 return tmpAlignments; 00472 00473 }
std::vector< Alignable * > AlignableMuon::CSCChambers | ( | ) |
Definition at line 353 of file AlignableMuon.cc.
References edmNew::copy(), HLT_VtxMuL3::result, and theCSCChambers.
Referenced by AlignmentParameterSelector::addSelection(), AlignmentMonitorMuonResiduals::afterAlignment(), AlignmentMonitorMuonResiduals::book(), AlignmentMonitorMuonHIP::book(), CSCLayers(), AlignmentMonitorMuonPositions::fill(), and MuonScenarioBuilder::moveCSCSectors().
00354 { 00355 std::vector<Alignable*> result; 00356 copy( theCSCChambers.begin(), theCSCChambers.end(), back_inserter(result) ); 00357 return result; 00358 }
std::vector< Alignable * > AlignableMuon::CSCEndcaps | ( | ) |
Definition at line 377 of file AlignableMuon.cc.
References edmNew::copy(), HLT_VtxMuL3::result, and theCSCEndcaps.
Referenced by AlignmentParameterSelector::addSelection(), MuonScenarioBuilder::applyScenario(), SurveyInputCSCfromPins::beginJob(), AlignmentProducer::beginOfJob(), MuonAlignment::copyAlignmentToSurvey(), cscAlignmentErrors(), cscAlignments(), MuonAlignment::fillGapsInSurvey(), MuonScenarioBuilder::moveMuon(), MuonAlignmentInputSurveyDB::newAlignableMuon(), MuonAlignmentInputXML::newAlignableMuon(), MuonAlignment::saveCSCSurveyToDB(), and MuonAlignmentOutputXML::write().
00378 { 00379 std::vector<Alignable*> result; 00380 copy( theCSCEndcaps.begin(), theCSCEndcaps.end(), back_inserter(result) ); 00381 return result; 00382 }
std::vector< Alignable * > AlignableMuon::CSCLayers | ( | ) |
Definition at line 337 of file AlignableMuon.cc.
References muonGeometry::chambers, CSCChambers(), layers, and HLT_VtxMuL3::result.
Referenced by AlignmentParameterSelector::addSelection(), and AlignmentMonitorMuonHIP::book().
00338 { 00339 std::vector<Alignable*> result; 00340 00341 std::vector<Alignable*> chambers = CSCChambers(); 00342 for (std::vector<Alignable*>::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) { 00343 std::vector<Alignable*> layers = (*chamberIter)->components(); 00344 for (std::vector<Alignable*>::const_iterator layerIter = layers.begin(); layerIter != layers.end(); ++layerIter) { 00345 result.push_back(*layerIter); 00346 } 00347 } 00348 00349 return result; 00350 }
std::vector< Alignable * > AlignableMuon::CSCRings | ( | ) |
Definition at line 361 of file AlignableMuon.cc.
References edmNew::copy(), HLT_VtxMuL3::result, and theCSCRings.
Referenced by AlignmentParameterSelector::addSelection(), and AlignmentMonitorMuonPositions::fill().
00362 { 00363 std::vector<Alignable*> result; 00364 copy( theCSCRings.begin(), theCSCRings.end(), back_inserter(result) ); 00365 return result; 00366 }
std::vector< Alignable * > AlignableMuon::CSCStations | ( | ) |
Definition at line 369 of file AlignableMuon.cc.
References edmNew::copy(), HLT_VtxMuL3::result, and theCSCStations.
Referenced by AlignmentParameterSelector::addSelection(), and AlignmentMonitorMuonHIP::book().
00370 { 00371 std::vector<Alignable*> result; 00372 copy( theCSCStations.begin(), theCSCStations.end(), back_inserter(result) ); 00373 return result; 00374 }
AlignmentErrors * AlignableMuon::dtAlignmentErrors | ( | void | ) |
Definition at line 451 of file AlignableMuon.cc.
References DTBarrel().
Referenced by MuonAlignment::copyAlignmentToSurvey(), AlignmentProducer::endOfJob(), MisalignedMuonESProducer::produce(), MuonAlignment::saveDTtoDB(), AlignmentProducer::startingNewLoop(), and MuonAlignmentOutputXML::write().
00452 { 00453 // Retrieve muon barrel alignment errors 00454 AlignmentErrors* tmpAlignmentErrors = this->DTBarrel().front()->alignmentErrors(); 00455 00456 return tmpAlignmentErrors; 00457 00458 }
Alignments * AlignableMuon::dtAlignments | ( | void | ) |
Definition at line 442 of file AlignableMuon.cc.
References DTBarrel().
Referenced by AlignmentProducer::endOfJob(), MisalignedMuonESProducer::produce(), MuonAlignment::saveDTtoDB(), and AlignmentProducer::startingNewLoop().
00443 { 00444 // Retrieve muon barrel alignments 00445 Alignments* tmpAlignments = this->DTBarrel().front()->alignments(); 00446 00447 return tmpAlignments; 00448 00449 }
std::vector< Alignable * > AlignableMuon::DTBarrel | ( | ) |
Definition at line 329 of file AlignableMuon.cc.
References edmNew::copy(), HLT_VtxMuL3::result, and theDTBarrel.
Referenced by AlignmentParameterSelector::addSelection(), MuonScenarioBuilder::applyScenario(), AlignmentProducer::beginOfJob(), MuonAlignment::copyAlignmentToSurvey(), dtAlignmentErrors(), dtAlignments(), MuonAlignment::fillGapsInSurvey(), MuonScenarioBuilder::moveMuon(), MuonAlignmentInputSurveyDB::newAlignableMuon(), MuonAlignmentInputXML::newAlignableMuon(), MuonAlignment::saveDTSurveyToDB(), and MuonAlignmentOutputXML::write().
00330 { 00331 std::vector<Alignable*> result ; 00332 copy( theDTBarrel.begin(), theDTBarrel.end(), back_inserter(result) ); 00333 return result; 00334 }
std::vector< Alignable * > AlignableMuon::DTChambers | ( | ) |
Definition at line 304 of file AlignableMuon.cc.
References edmNew::copy(), HLT_VtxMuL3::result, and theDTChambers.
Referenced by AlignmentParameterSelector::addSelection(), AlignmentMonitorMuonResiduals::afterAlignment(), AlignmentMonitorMuonResiduals::book(), AlignmentMonitorMuonHIP::book(), DTLayers(), DTSuperLayers(), AlignmentMonitorMuonPositions::fill(), and MuonScenarioBuilder::moveDTSectors().
00305 { 00306 std::vector<Alignable*> result; 00307 copy( theDTChambers.begin(), theDTChambers.end(), back_inserter(result) ); 00308 return result; 00309 }
std::vector< Alignable * > AlignableMuon::DTLayers | ( | ) |
Definition at line 269 of file AlignableMuon.cc.
References muonGeometry::chambers, DTChambers(), layers, and HLT_VtxMuL3::result.
Referenced by AlignmentParameterSelector::addSelection().
00270 { 00271 std::vector<Alignable*> result; 00272 00273 std::vector<Alignable*> chambers = DTChambers(); 00274 for (std::vector<Alignable*>::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) { 00275 std::vector<Alignable*> superlayers = (*chamberIter)->components(); 00276 for (std::vector<Alignable*>::const_iterator superlayerIter = superlayers.begin(); superlayerIter != superlayers.end(); ++superlayerIter) { 00277 std::vector<Alignable*> layers = (*superlayerIter)->components(); 00278 for (std::vector<Alignable*>::const_iterator layerIter = layers.begin(); layerIter != layers.end(); ++layerIter) { 00279 result.push_back(*layerIter); 00280 } 00281 } 00282 } 00283 00284 return result; 00285 }
std::vector< Alignable * > AlignableMuon::DTStations | ( | ) |
Definition at line 312 of file AlignableMuon.cc.
References edmNew::copy(), HLT_VtxMuL3::result, and theDTStations.
Referenced by AlignmentParameterSelector::addSelection().
00313 { 00314 std::vector<Alignable*> result; 00315 copy( theDTStations.begin(), theDTStations.end(), back_inserter(result) ); 00316 return result; 00317 }
std::vector< Alignable * > AlignableMuon::DTSuperLayers | ( | ) |
Definition at line 288 of file AlignableMuon.cc.
References muonGeometry::chambers, DTChambers(), and HLT_VtxMuL3::result.
Referenced by AlignmentParameterSelector::addSelection(), and AlignmentMonitorMuonHIP::book().
00289 { 00290 std::vector<Alignable*> result; 00291 00292 std::vector<Alignable*> chambers = DTChambers(); 00293 for (std::vector<Alignable*>::const_iterator chamberIter = chambers.begin(); chamberIter != chambers.end(); ++chamberIter) { 00294 std::vector<Alignable*> superlayers = (*chamberIter)->components(); 00295 for (std::vector<Alignable*>::const_iterator superlayerIter = superlayers.begin(); superlayerIter != superlayers.end(); ++superlayerIter) { 00296 result.push_back(*superlayerIter); 00297 } 00298 } 00299 00300 return result; 00301 }
std::vector< Alignable * > AlignableMuon::DTWheels | ( | ) |
Definition at line 321 of file AlignableMuon.cc.
References edmNew::copy(), HLT_VtxMuL3::result, and theDTWheels.
Referenced by AlignmentParameterSelector::addSelection(), AlignmentMonitorMuonHIP::book(), and AlignmentMonitorMuonPositions::fill().
00322 { 00323 std::vector<Alignable*> result; 00324 copy( theDTWheels.begin(), theDTWheels.end(), back_inserter(result) ); 00325 return result; 00326 }
virtual Alignable* AlignableMuon::mother | ( | ) | [inline, virtual] |
Set mothers recursively.
Definition at line 386 of file AlignableMuon.cc.
References components(), Alignable::components(), and iter.
Referenced by AlignableMuon().
00387 { 00388 00389 std::vector<Alignable*> components = alignable->components(); 00390 for ( std::vector<Alignable*>::iterator iter = components.begin(); 00391 iter != components.end(); iter++ ) 00392 { 00393 (*iter)->setMother( alignable ); 00394 recursiveSetMothers( *iter ); 00395 } 00396 00397 }
std::vector<AlignableCSCChamber*> AlignableMuon::theCSCChambers [private] |
std::vector<AlignableCSCEndcap*> AlignableMuon::theCSCEndcaps [private] |
std::vector<AlignableCSCRing*> AlignableMuon::theCSCRings [private] |
std::vector<AlignableCSCStation*> AlignableMuon::theCSCStations [private] |
std::vector<AlignableDTBarrel*> AlignableMuon::theDTBarrel [private] |
std::vector<AlignableDTChamber*> AlignableMuon::theDTChambers [private] |
std::vector<AlignableDTStation*> AlignableMuon::theDTStations [private] |
std::vector<AlignableDTWheel*> AlignableMuon::theDTWheels [private] |
std::vector<Alignable*> AlignableMuon::theMuonComponents [private] |
Definition at line 127 of file AlignableMuon.h.
Referenced by buildCSCEndcap(), buildDTBarrel(), components(), and ~AlignableMuon().