00001 #ifndef Alignment_MuonAlignment_AlignableCSCStation_H 00002 #define Alignment_MuonAlignment_AlignableCSCStation_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/AlignableCSCRing.h" 00018 00019 00020 #include <vector> 00021 00022 class GeomDet; 00023 class AlignableCSCRing; 00024 00029 00030 class AlignableCSCStation : public AlignableComposite 00031 { 00032 00033 public: 00034 00035 AlignableCSCStation( const std::vector<AlignableCSCRing*> cscRings ); 00036 00037 ~AlignableCSCStation(); 00038 00039 virtual std::vector<Alignable*> components() const 00040 { 00041 00042 std::vector<Alignable*> result; 00043 result.insert( result.end(), theCSCRings.begin(), theCSCRings.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 AlignableCSCRing &ring(int i); 00056 00057 //virtual void twist(float); 00058 00060 friend std::ostream& operator << ( std::ostream&, const AlignableCSCStation& ); 00061 00063 void dump( void ) const; 00064 00065 00066 00067 private: 00068 00069 std::vector<AlignableCSCRing*> theCSCRings; 00070 00071 00072 }; 00073 00074 #endif 00075 00076 00077 00078