Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:56:38

0001 #ifndef Alignment_MuonAlignment_AlignableCSCRing_H
0002 #define Alignment_MuonAlignment_AlignableCSCRing_H
0003 
0004 /** \class AlignableCSCRing 
0005  *  The alignable muon CSC ring.
0006  *
0007  *  $Date: 2008/04/15 16:05:53 $
0008  *  $Revision: 1.3 $
0009  *  \author Jim Pivarski - Texas A&M University
0010  */
0011 
0012 #include "Alignment/CommonAlignment/interface/Utilities.h"
0013 #include "Alignment/CommonAlignment/interface/AlignableComposite.h"
0014 #include "Alignment/CommonAlignment/interface/AlignableSurface.h"
0015 
0016 #include "Alignment/MuonAlignment/interface/AlignableCSCChamber.h"
0017 
0018 #include <vector>
0019 
0020 class GeomDet;
0021 class AlignableCSCChamber;
0022 
0023 /// Concrete class for muon CSC Ring alignable.
0024 ///
0025 /// Misalignment can be de-/reactivated (forwarded to components).
0026 ///
0027 
0028 class AlignableCSCRing : public AlignableComposite {
0029 public:
0030   AlignableCSCRing(const std::vector<AlignableCSCChamber*>& cscChambers);
0031 
0032   // gets the global position as the average over all positions of the layers
0033   PositionType computePosition();
0034   // get the global orientation
0035   RotationType computeOrientation();  //see explanation for "theOrientation"
0036   // get the Surface
0037   AlignableSurface computeSurface();
0038 
0039   AlignableCSCChamber& chamber(int i);
0040 
0041   //virtual void twist(float);
0042 
0043   /// Printout muon CSC Ring information (not recursive)
0044   friend std::ostream& operator<<(std::ostream&, const AlignableCSCRing&);
0045 
0046   /// Recursive printout of the muon CSC Ring structure
0047   void dump(void) const override;
0048 
0049 private:
0050   std::vector<AlignableCSCChamber*> theCSCChambers;
0051 };
0052 
0053 #endif