Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:31:54

0001 #ifndef Alignment_CommonAlignmentParametrization_BowedSurfaceAlignmentDerivatives_h
0002 #define Alignment_CommonAlignmentParametrization_BowedSurfaceAlignmentDerivatives_h
0003 
0004 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0005 
0006 /// \class BowedSurfaceAlignmentDerivatives
0007 ///
0008 /// Calculates alignment derivatives for a bowed surface using Legendre
0009 /// polynomials for the surface structure (as studied by Claus Kleinwort),
0010 /// i.e.
0011 /// - rigid body part (partially from KarimakiAlignmentDerivatives)
0012 /// - bow in local u, v and mixed term.
0013 ///
0014 /// If a surface is split into two parts at a given ySplit value,
0015 /// rotation axes are re-centred to that part hit by the track
0016 /// (as predicted by TSOS) and the length of the surface is re-scaled.
0017 ///
0018 ///  by Gero Flucke, October 2010
0019 ///  $Date$
0020 ///  $Revision$
0021 /// (last update by $Author$)
0022 
0023 class TrajectoryStateOnSurface;
0024 
0025 class BowedSurfaceAlignmentDerivatives {
0026 public:
0027   enum AlignmentParameterName {
0028     dx = 0,
0029     dy,
0030     dz,
0031     dslopeX,  // NOTE: slope(u) -> k*tan(beta),
0032     dslopeY,  //       slope(v) -> k*tan(alpha)
0033     drotZ,    // rotation around w axis, scaled by gammaScale
0034     dsagittaX,
0035     dsagittaXY,
0036     dsagittaY,
0037     N_PARAM
0038   };
0039 
0040   /// Returns 9x2 jacobian matrix
0041   AlgebraicMatrix operator()(const TrajectoryStateOnSurface &tsos,
0042                              double uWidth,
0043                              double vLength,
0044                              bool doSplit = false,
0045                              double ySplit = 0.) const;
0046 
0047   /// scale to apply to convert drotZ to karimaki-gamma,
0048   /// depending on module width and length (the latter after splitting!)
0049   static double gammaScale(double width, double splitLength);
0050 };
0051 
0052 #endif