00001 #ifndef Alignment_MuonAlignment_AlignableCSCEndcap_H 00002 #define Alignment_MuonAlignment_AlignableCSCEndcap_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/AlignableCSCStation.h" 00018 00019 00020 00021 #include <vector> 00022 00023 class GeomDet; 00024 00029 00030 class AlignableCSCEndcap : public AlignableComposite 00031 { 00032 00033 public: 00034 00035 AlignableCSCEndcap( const std::vector<AlignableCSCStation*> cscStations ); 00036 00037 ~AlignableCSCEndcap(); 00038 00039 virtual std::vector<Alignable*> components() const 00040 { 00041 00042 std::vector<Alignable*> result; 00043 result.insert( result.end(), theCSCStations.begin(), theCSCStations.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 AlignableCSCStation &station(int i); 00056 00058 friend std::ostream& operator << ( std::ostream&, const AlignableCSCEndcap& ); 00059 00061 void dump( void ) const; 00062 00063 // Get alignments sorted by DetId 00064 Alignments* alignments() const; 00065 00066 // Get alignment errors sorted by DetId 00067 AlignmentErrors* alignmentErrors() const; 00068 00069 00070 00071 private: 00072 00073 std::vector<AlignableCSCStation*> theCSCStations; 00074 00075 00076 }; 00077 00078 #endif 00079 00080 00081 00082