CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/Alignment/CommonAlignmentParametrization/interface/BowedSurfaceAlignmentParameters.h

Go to the documentation of this file.
00001 #ifndef Alignment_CommonAlignment_BowedSurfaceAlignmentParameters_h
00002 #define Alignment_CommonAlignment_BowedSurfaceAlignmentParameters_h
00003 
00004 #include "Alignment/CommonAlignment/interface/AlignmentParameters.h"
00005 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
00006 #include "CondFormats/Alignment/interface/Definitions.h"
00007 
00008 #include "Alignment/CommonAlignmentParametrization/interface/BowedSurfaceAlignmentDerivatives.h"
00009 
00022 
00023 class Alignable;
00024 class AlignableDetOrUnitPtr;
00025 class TrajectoryStateOnSurface;
00026 
00027 class BowedSurfaceAlignmentParameters : public AlignmentParameters 
00028 {
00029 public:
00031   typedef BowedSurfaceAlignmentDerivatives BowedDerivs;
00032   enum AlignmentParameterName {
00033     dx = BowedDerivs::dx,
00034     dy = BowedDerivs::dy,
00035     dz = BowedDerivs::dz,
00036     dslopeX = BowedDerivs::dslopeX, // NOTE: slope(u) -> k*tan(beta),
00037     dslopeY = BowedDerivs::dslopeY, //       slope(v) -> l*tan(alpha)
00038     drotZ   = BowedDerivs::drotZ,   //       rot(w)   -> m*gamma
00039     dsagittaX = BowedDerivs::dsagittaX,
00040     dsagittaXY = BowedDerivs::dsagittaXY,
00041     dsagittaY = BowedDerivs::dsagittaY,
00042     N_PARAM = BowedDerivs::N_PARAM
00043   };
00044 
00046   BowedSurfaceAlignmentParameters(Alignable *alignable);
00047 
00049   BowedSurfaceAlignmentParameters(Alignable *alignable, 
00050                                const AlgebraicVector &parameters, 
00051                                const AlgebraicSymMatrix &covMatrix);
00052 
00054   BowedSurfaceAlignmentParameters(Alignable *alignable, const AlgebraicVector &parameters, 
00055                                const AlgebraicSymMatrix &covMatrix, 
00056                                const std::vector<bool> &selection);
00057 
00059   virtual ~BowedSurfaceAlignmentParameters() {};
00060   virtual void apply();
00061   virtual int type() const;
00062 
00064   virtual BowedSurfaceAlignmentParameters* clone(const AlgebraicVector &parameters, 
00065                                                  const AlgebraicSymMatrix &covMatrix) const;
00066  
00068   virtual BowedSurfaceAlignmentParameters*
00069     cloneFromSelected(const AlgebraicVector &parameters,
00070                       const AlgebraicSymMatrix &covMatrix) const;
00071   
00073   virtual AlgebraicMatrix derivatives(const TrajectoryStateOnSurface &tsos,
00074                                       const AlignableDetOrUnitPtr &aliDet) const;
00075 
00077   align::LocalVector translation() const;
00078 
00080   align::EulerAngles rotation() const;
00081 
00083   void print() const;
00084 };
00085 
00086 #endif
00087