CMS 3D CMS Logo

AlignableMuon Class Reference

Constructor of the full muon geometry. More...

#include <Alignment/MuonAlignment/interface/AlignableMuon.h>

Inheritance diagram for AlignableMuon:

AlignableComposite Alignable

List of all members.

Public Member Functions

 AlignableMuon (const DTGeometry *, const CSCGeometry *)
 Constructor from geometries.
virtual std::vector< Alignable * > components () const
 Return all components.
AlignmentErrorscscAlignmentErrors ()
AlignmentscscAlignments ()
std::vector< Alignable * > CSCChambers ()
std::vector< Alignable * > CSCEndcaps ()
std::vector< Alignable * > CSCLayers ()
std::vector< Alignable * > CSCRings ()
std::vector< Alignable * > CSCStations ()
AlignmentErrorsdtAlignmentErrors ()
AlignmentsdtAlignments ()
std::vector< Alignable * > DTBarrel ()
std::vector< Alignable * > DTChambers ()
std::vector< Alignable * > DTLayers ()
std::vector< Alignable * > DTStations ()
std::vector< Alignable * > DTSuperLayers ()
std::vector< Alignable * > DTWheels ()
virtual Alignablemother ()
 Alignable tracker has no mother.
 ~AlignableMuon ()
 Destructor.

Private Member Functions

AlignmentErrorsalignmentErrors () const
 Return vector of alignment errors.
Alignmentsalignments () const
 Return alignment data.
void buildCSCEndcap (const CSCGeometry *)
void buildDTBarrel (const DTGeometry *)
RotationType computeOrientation ()
PositionType computePosition ()
AlignableSurface computeSurface ()
void recursiveSetMothers (Alignable *alignable)
 Set mothers recursively.

Private Attributes

std::vector
< AlignableCSCChamber * > 
theCSCChambers
std::vector< AlignableCSCEndcap * > theCSCEndcaps
std::vector< AlignableCSCRing * > theCSCRings
std::vector
< AlignableCSCStation * > 
theCSCStations
std::vector< AlignableDTBarrel * > theDTBarrel
std::vector< AlignableDTChamber * > theDTChambers
std::vector< AlignableDTStation * > theDTStations
std::vector< AlignableDTWheel * > theDTWheels
std::vector< Alignable * > theMuonComponents


Detailed Description

Constructor of the full muon geometry.

The alignable muon.

Date
2008/04/25 21:23:15
Revision
1.21
Author:
Andre Sznajder - UERJ(Brazil)

Definition at line 39 of file AlignableMuon.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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]

Alignable tracker has no mother.

Definition at line 55 of file AlignableMuon.h.

00055 { return 0; }

void AlignableMuon::recursiveSetMothers ( Alignable alignable  )  [private]

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 }


Member Data Documentation

std::vector<AlignableCSCChamber*> AlignableMuon::theCSCChambers [private]

Definition at line 122 of file AlignableMuon.h.

Referenced by buildCSCEndcap(), and CSCChambers().

std::vector<AlignableCSCEndcap*> AlignableMuon::theCSCEndcaps [private]

Definition at line 125 of file AlignableMuon.h.

Referenced by buildCSCEndcap(), and CSCEndcaps().

std::vector<AlignableCSCRing*> AlignableMuon::theCSCRings [private]

Definition at line 124 of file AlignableMuon.h.

Referenced by buildCSCEndcap(), and CSCRings().

std::vector<AlignableCSCStation*> AlignableMuon::theCSCStations [private]

Definition at line 123 of file AlignableMuon.h.

Referenced by buildCSCEndcap(), and CSCStations().

std::vector<AlignableDTBarrel*> AlignableMuon::theDTBarrel [private]

Definition at line 120 of file AlignableMuon.h.

Referenced by buildDTBarrel(), and DTBarrel().

std::vector<AlignableDTChamber*> AlignableMuon::theDTChambers [private]

Definition at line 117 of file AlignableMuon.h.

Referenced by buildDTBarrel(), and DTChambers().

std::vector<AlignableDTStation*> AlignableMuon::theDTStations [private]

Definition at line 118 of file AlignableMuon.h.

Referenced by buildDTBarrel(), and DTStations().

std::vector<AlignableDTWheel*> AlignableMuon::theDTWheels [private]

Definition at line 119 of file AlignableMuon.h.

Referenced by buildDTBarrel(), and DTWheels().

std::vector<Alignable*> AlignableMuon::theMuonComponents [private]

Definition at line 127 of file AlignableMuon.h.

Referenced by buildCSCEndcap(), buildDTBarrel(), components(), and ~AlignableMuon().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:14:18 2009 for CMSSW by  doxygen 1.5.4