00001 #ifndef Alignment_MuonAlignment_AlignableDTBarrel_H 00002 #define Alignment_MuonAlignment_AlignableDTBarrel_H 00003 00013 #include "Alignment/CommonAlignment/interface/Alignable.h" 00014 #include "Alignment/CommonAlignment/interface/AlignableComposite.h" 00015 #include "Alignment/CommonAlignment/interface/AlignableSurface.h" 00016 00017 #include "Alignment/MuonAlignment/interface/AlignableDTWheel.h" 00018 00019 00020 00021 #include <vector> 00022 00023 class GeomDet; 00024 00029 00030 class AlignableDTBarrel : public AlignableComposite 00031 { 00032 00033 public: 00034 00035 AlignableDTBarrel( const std::vector<AlignableDTWheel*> dtWheels ); 00036 00037 ~AlignableDTBarrel(); 00038 00039 virtual std::vector<Alignable*> components() const 00040 { 00041 00042 std::vector<Alignable*> result; 00043 result.insert( result.end(), theDTWheels.begin(), theDTWheels.end() ); 00044 return result; 00045 00046 } 00047 00048 // gets the global position as the average over all positions of the layers 00049 PositionType computePosition() ; 00050 // get the global orientation 00051 RotationType computeOrientation() ; //see explanation for "theOrientation" 00052 // get the Surface 00053 AlignableSurface computeSurface() ; 00054 00055 AlignableDTWheel &wheel(int i); 00056 00058 friend std::ostream& operator << ( std::ostream&, const AlignableDTBarrel& ); 00059 00061 void dump( void ); 00062 00063 00064 // Get alignments sorted by DetId 00065 Alignments* alignments() const; 00066 00067 // Get alignment errors sorted by DetId 00068 AlignmentErrors* alignmentErrors() const; 00069 00070 00071 00072 private: 00073 00074 std::vector<AlignableDTWheel*> theDTWheels; 00075 00076 00077 }; 00078 00079 #endif 00080 00081 00082 00083