KFPTrack.cxx 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. //----------------------------------------------------------------------------
  2. // Implementation of the KFParticle class
  3. // .
  4. // @author I.Kisel, I.Kulakov, M.Zyzak
  5. // @version 1.0
  6. // @since 20.08.13
  7. //
  8. //
  9. // -= Copyright &copy ALICE HLT and CBM L1 Groups =-
  10. //____________________________________________________________________________
  11. #include "KFPTrack.h"
  12. #ifdef __ROOT__
  13. ClassImp(KFPTrack);
  14. #endif
  15. void KFPTrack::RotateXY( float alpha )
  16. {
  17. /** Rotates the parameters of the track on an angle alpha in the XY plane.
  18. ** Can be used in case of the transforamtion of the coordinate system.
  19. ** The rotation matrix is:
  20. ** \verbatim
  21. { cos(A), -sin(A), 0, 0, 0, 0 }
  22. { sin(A), cos(A), 0, 0, 0, 0 }
  23. { 0, 0, 1, 0, 0, 0 }
  24. { 0, 0, 0, cos(A), -sin(A), 0 }
  25. { 0, 0, 0, sin(A), cos(A), 0 }
  26. { 0, 0, 0, 0, 0, 1 }
  27. \endverbatim
  28. ** \param[in] alpha - rotation angle
  29. **/
  30. const float cA = cos( alpha );
  31. const float sA = sin( alpha );
  32. //float J[6][6] = { { cA, -sA, 0, 0, 0, 0 }, // X
  33. // { sA, cA, 0, 0, 0, 0 }, // Y
  34. // { 0, 0, 1, 0, 0, 0 }, // Z
  35. // { 0, 0, 0, cA, -sA, 0 }, // Px
  36. // { 0, 0, 0, sA, cA, 0 }, // Py
  37. // { 0, 0, 0, 0, 0, 1 } }; // Pz
  38. const float x = GetX(), y = GetY();
  39. SetX( -(x*sA + y*cA) );
  40. SetY( x*cA - y*sA );
  41. const float px = GetPx(), py = GetPy();
  42. SetPx( -(px*sA + py*cA) );
  43. SetPy( px*cA - py*sA );
  44. float cov[21];
  45. for(int iC=0; iC<21; iC++)
  46. cov[iC] = fC[iC];
  47. fC[0] = cA*cA* cov[2] + 2* cA* cov[1]* sA + cov[0]*sA* sA;
  48. fC[1] = -(cA*cA * cov[1]) + cA* (-cov[0] + cov[2])* sA + cov[1]*sA* sA;
  49. fC[2] = cA*cA* cov[0] - 2* cA* cov[1]* sA + cov[2]*sA* sA;
  50. fC[3] = -(cA* cov[4]) - cov[3]* sA;
  51. fC[4] = cA* cov[3] - cov[4]* sA;
  52. fC[5] = cov[5];
  53. fC[6] = cA*cA* cov[11] + cA *(cov[10] + cov[7])* sA + cov[6]*sA* sA;
  54. fC[7] = -(cA*cA * cov[10]) + cA* (cov[11] - cov[6])* sA + cov[7] *sA*sA;
  55. fC[8] = -(cA *cov[12]) - cov[8] *sA;
  56. fC[9] = cA*cA* cov[14] + 2 *cA* cov[13]* sA + cov[9]* sA*sA;
  57. fC[10] = -(cA*cA* cov[7]) + cA* (cov[11] - cov[6])* sA + cov[10]*sA* sA;
  58. fC[11] = cA*cA* cov[6] - cA* (cov[10] + cov[7]) *sA + cov[11]*sA* sA;
  59. fC[12] = cA* cov[8] - cov[12]* sA;
  60. fC[13] = -(cA*cA* cov[13]) + cA* (cov[14] - cov[9])* sA + cov[13]* sA*sA;
  61. fC[14] = cA*cA* cov[9] - 2* cA* cov[13]* sA + cov[14]* sA*sA;
  62. fC[15] = -(cA* cov[16]) - cov[15]* sA;
  63. fC[16] = cA* cov[15] - cov[16]* sA;
  64. fC[17] = cov[17];
  65. fC[18] = -(cA* cov[19]) - cov[18]* sA;
  66. fC[19] = cA* cov[18] - cov[19]* sA;
  67. fC[20] = cov[20];
  68. }