00001 #ifndef Alignment_MuonAlignment_AlignableDTStation_H 00002 #define Alignment_MuonAlignment_AlignableDTStation_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/AlignableDTChamber.h" 00018 00019 00020 #include <vector> 00021 00022 class GeomDet; 00023 00028 00029 class AlignableDTStation : public AlignableComposite 00030 { 00031 00032 public: 00033 00034 AlignableDTStation( const std::vector<AlignableDTChamber*> dtChambers ); 00035 00036 ~AlignableDTStation(); 00037 00038 virtual std::vector<Alignable*> components() const 00039 { 00040 00041 std::vector<Alignable*> result; 00042 result.insert( result.end(), theDTChambers.begin(), theDTChambers.end() ); 00043 return result; 00044 00045 } 00046 00047 // gets the global position as the average over all positions of the layers 00048 PositionType computePosition() ; 00049 // get the global orientation 00050 RotationType computeOrientation() ; //see explanation for "theOrientation" 00051 // get the Surface 00052 AlignableSurface computeSurface() ; 00053 00054 AlignableDTChamber &chamber(int i); 00055 00057 friend std::ostream& operator << ( std::ostream&, const AlignableDTStation& ); 00058 00060 void dump( void ) const; 00061 00062 00063 private: 00064 00065 std::vector<AlignableDTChamber*> theDTChambers; 00066 00067 00068 }; 00069 00070 #endif 00071 00072 00073 00074