15 double uWidth,
double vLength,
16 bool doSplit,
double ySplit)
const
27 double myY = tsosPar[4];
28 double myLengthV = vLength;
31 const double sign = (tsosPar[4] < ySplit ? +1. : -1.);
32 const double yMiddle = ySplit * 0.5 - sign * vLength * .25;
33 myY = tsosPar[4] - yMiddle;
34 myLengthV = vLength * 0.5 + sign * ySplit;
39 result[
dx][0] = karimaki[0][0];
40 result[
dx][1] = karimaki[0][1];
41 result[
dy][0] = karimaki[1][0];
42 result[
dy][1] = karimaki[1][1];
43 result[
dz][0] = karimaki[2][0];
44 result[
dz][1] = karimaki[2][1];
45 const double aScale =
gammaScale(uWidth, myLengthV);
46 result[
drotZ][0] = myY / aScale;
47 result[
drotZ][1] = karimaki[5][1] / aScale;
49 double uRel = 2. * tsosPar[3] / uWidth;
50 double vRel = 2. * myY / myLengthV;
52 const double cutOff = 1.5;
53 if (uRel < -cutOff) { uRel = -cutOff; }
else if (uRel > cutOff) { uRel = cutOff; }
54 if (vRel < -cutOff) { vRel = -cutOff; }
else if (vRel > cutOff) { vRel = cutOff; }
57 const double uLP0 = 1.0;
58 const double uLP1 = uRel;
59 const double uLP2 = uRel * uRel - 1./3.;
60 const double vLP0 = 1.0;
61 const double vLP1 = vRel;
62 const double vLP2 = vRel * vRel - 1./3.;
65 result[
dslopeX][0] = tsosPar[1] * uLP1 * vLP0;
66 result[
dslopeX][1] = tsosPar[2] * uLP1 * vLP0;
67 result[
dslopeY][0] = tsosPar[1] * uLP0 * vLP1;
68 result[
dslopeY][1] = tsosPar[2] * uLP0 * vLP1;
71 result[
dsagittaX ][0] = tsosPar[1] * uLP2 * vLP0;
72 result[
dsagittaX ][1] = tsosPar[2] * uLP2 * vLP0;
73 result[
dsagittaXY][0] = tsosPar[1] * uLP1 * vLP1;
74 result[
dsagittaXY][1] = tsosPar[2] * uLP1 * vLP1;
75 result[
dsagittaY ][0] = tsosPar[1] * uLP0 * vLP2;
76 result[
dsagittaY ][1] = tsosPar[2] * uLP0 * vLP2;
86 return 0.5 * (width + splitLength);
const LocalTrajectoryParameters & localParameters() const
AlgebraicMatrix operator()(const TrajectoryStateOnSurface &tsos, double uWidth, double vLength, bool doSplit=false, double ySplit=0.) const
Returns 9x2 jacobian matrix.
CLHEP::HepMatrix AlgebraicMatrix
static double gammaScale(double width, double splitLength)
ROOT::Math::SVector< double, 5 > AlgebraicVector5
AlgebraicVector5 mixedFormatVector() const