00001 00007 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00008 00009 #include "Alignment/CommonAlignmentParametrization/interface/KarimakiAlignmentDerivatives.h" 00010 00011 00012 AlgebraicMatrix 00013 KarimakiAlignmentDerivatives::operator()( const TrajectoryStateOnSurface &tsos ) const 00014 { 00015 00016 // Get track parameters on surface 00017 AlgebraicVector5 alivec = tsos.localParameters().mixedFormatVector(); 00018 00019 // [0] q/p : charged: charge (+ or - one) divided by magnitude of momentum 00020 // neutral : inverse magnitude of momentum 00021 // [1] dxdz : direction tangent in local xz-plane 00022 // [2] dydz : direction tangent in local yz-plane 00023 // [3] x : local x-coordinate 00024 // [4] y : local y-coordinate 00025 00026 double tanpsi = alivec[1]; 00027 double tantheta = alivec[2]; 00028 double ux = alivec[3]; 00029 double vx = alivec[4]; 00030 00031 AlgebraicMatrix aliderivs(6,2); 00032 00033 aliderivs[0][0]= -1.0; 00034 aliderivs[0][1]= 0.0; 00035 aliderivs[1][0]= 0.0; 00036 aliderivs[1][1]= -1.0; 00037 aliderivs[2][0]= tanpsi; 00038 aliderivs[2][1]= tantheta; 00039 aliderivs[3][0]= vx*tanpsi; 00040 aliderivs[3][1]= vx*tantheta; 00041 aliderivs[4][0]= -ux*tanpsi; // New beta sign convention 00042 aliderivs[4][1]= -ux*tantheta; // New beta sign convention 00043 aliderivs[5][0]= vx; 00044 aliderivs[5][1]= -ux; 00045 00046 return(aliderivs); 00047 00048 }