CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/Alignment/MuonAlignment/interface/AlignableCSCRing.h

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