CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/Alignment/TrackerAlignment/interface/AlignableTracker.h

Go to the documentation of this file.
00001 #ifndef Alignment_TrackerAlignment_AlignableTracker_H
00002 #define Alignment_TrackerAlignment_AlignableTracker_H
00003 
00004 #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h"
00005 
00006 #include "Alignment/CommonAlignment/interface/AlignableComposite.h"
00007 #include "Alignment/CommonAlignment/interface/AlignSetup.h"
00008 #include "Alignment/TrackerAlignment/interface/TrackerCounters.h"
00009 
00010 class GeometricDet;
00011 class TrackerGeometry;
00012 
00013 class AlignableTracker: public AlignableComposite 
00014 {
00015 
00016 public:
00017   
00019   explicit AlignableTracker(const TrackerGeometry *tracker); 
00020 
00023   Alignables& subStructures(const std::string &subStructName) {
00024     return alignableLists_.find(subStructName);
00025   }
00026 
00028   Alignables& outerHalfBarrels() { return this->subStructures("TOBHalfBarrel");}
00030   Alignables& innerHalfBarrels() { return this->subStructures("TIBHalfBarrel");}
00032   Alignables& pixelHalfBarrels() { return this->subStructures("TPBHalfBarrel");}
00034   Alignables& endCaps() { return this->subStructures("TECEndcap");}
00036   Alignables& pixelEndCaps() { return this->subStructures("TPEEndcap");}
00038   Alignables& TIDs() { return this->subStructures("TIDEndcap");}
00039 
00041   Alignables barrelGeomDets() { return this->merge(this->innerBarrelGeomDets(),
00042                                                    this->outerBarrelGeomDets());}
00044   Alignables TIBTIDGeomDets() { return this->merge(this->innerBarrelGeomDets(),
00045                                                    this->TIDGeomDets());
00046   }
00048   Alignables& innerBarrelGeomDets() { return this->subStructures("TIBModule");}
00050   Alignables& outerBarrelGeomDets() { return this->subStructures("TOBModule");}
00052   Alignables& pixelHalfBarrelGeomDets() { return this->subStructures("TPBModule");}
00054   Alignables& endcapGeomDets() { return this->subStructures("TECModule");}
00056   Alignables& TIDGeomDets() { return this->subStructures("TIDModule");}
00058   Alignables& pixelEndcapGeomDets() { return this->subStructures("TPEModule");}
00059   
00061   Alignables barrelRods() { return this->merge(this->innerBarrelRods(), this->outerBarrelRods());}
00063   Alignables& innerBarrelRods() { return this->subStructures("TIBString");}
00065   Alignables& outerBarrelRods() { return this->subStructures("TOBRod");}
00067   Alignables& pixelHalfBarrelLadders() { return this->subStructures("TPBLadder");}
00069   Alignables& endcapPetals() { return this->subStructures("TECPetal");}
00071   Alignables& TIDRings() { return this->subStructures("TIDRing");}
00073   Alignables& pixelEndcapPetals() { return this->subStructures("TPEPanel");}
00074                      
00076   Alignables barrelLayers() { return this->merge(this->innerBarrelLayers(),
00077                                                  this->outerBarrelLayers() );
00078   }
00080   Alignables& innerBarrelLayers() { return this->subStructures("TIBLayer");}
00082   Alignables& outerBarrelLayers() { return this->subStructures("TOBLayer");}
00084   Alignables& pixelHalfBarrelLayers() { return this->subStructures("TPBLayer");}
00086   Alignables& endcapLayers() { return this->subStructures("TECDisk");}
00088   Alignables& TIDLayers() { return this->subStructures("TIDDisk");}
00090   Alignables& pixelEndcapLayers() { return this->subStructures("TPEHalfDisk");}
00091 
00093   Alignments* alignments() const;
00094 
00096   AlignmentErrors* alignmentErrors() const;
00097 
00098   private:
00099 
00101   void buildBarrel( const std::string& subDet );  // prefix for sub-detector 
00102   
00104   void detsToAlignables(const TrackingGeometry::DetContainer& dets,
00105                         const std::string& moduleName );
00106 
00107   void buildTPB();
00108   void buildTPE();
00109   void buildTIB();
00110   void buildTID();
00111   void buildTOB();
00112   void buildTEC();
00113   void buildTRK();
00114 
00115   Alignables merge( const Alignables& list1, const Alignables& list2 ) const;
00116 
00117   AlignSetup<Alignables> alignableLists_; //< kind of map of lists of alignables
00118 
00119   TrackerCounters tkCounters_;
00120   
00121 
00122 };
00123 
00124 #endif //AlignableTracker_H