1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
/** \file KarimakiAlignmentDerivatives.cc
*
* $Date: 2007/05/02 10:51:40 $
* $Revision: 1.5 $
*/
#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
#include "Alignment/CommonAlignmentParametrization/interface/KarimakiAlignmentDerivatives.h"
AlgebraicMatrix KarimakiAlignmentDerivatives::operator()(const TrajectoryStateOnSurface &tsos) const {
// Get track parameters on surface
AlgebraicVector5 alivec = tsos.localParameters().mixedFormatVector();
// [0] q/p : charged: charge (+ or - one) divided by magnitude of momentum
// neutral : inverse magnitude of momentum
// [1] dxdz : direction tangent in local xz-plane
// [2] dydz : direction tangent in local yz-plane
// [3] x : local x-coordinate
// [4] y : local y-coordinate
double tanpsi = alivec[1];
double tantheta = alivec[2];
double ux = alivec[3];
double vx = alivec[4];
AlgebraicMatrix aliderivs(6, 2);
aliderivs[0][0] = -1.0;
aliderivs[0][1] = 0.0;
aliderivs[1][0] = 0.0;
aliderivs[1][1] = -1.0;
aliderivs[2][0] = tanpsi;
aliderivs[2][1] = tantheta;
aliderivs[3][0] = vx * tanpsi;
aliderivs[3][1] = vx * tantheta;
aliderivs[4][0] = -ux * tanpsi; // New beta sign convention
aliderivs[4][1] = -ux * tantheta; // New beta sign convention
aliderivs[5][0] = vx;
aliderivs[5][1] = -ux;
return (aliderivs);
}
|