23 double myY = tsosPar[4];
24 double myLengthV = vLength;
29 const double sign = (tsosPar[4] < ySplit ? +1. : -1.);
30 const double yMiddle = ySplit * 0.5 - sign * vLength * .25;
31 myY = tsosPar[4] - yMiddle;
32 myLengthV = vLength * 0.5 + sign * ySplit;
37 result[
dx][0] = karimaki[0][0];
38 result[
dx][1] = karimaki[0][1];
39 result[
dy][0] = karimaki[1][0];
40 result[
dy][1] = karimaki[1][1];
41 result[
dz][0] = karimaki[2][0];
42 result[
dz][1] = karimaki[2][1];
43 const double aScale =
gammaScale(uWidth, myLengthV);
44 result[
drotZ][0] = myY / aScale;
45 result[
drotZ][1] = karimaki[5][1] / aScale;
47 double uRel = 2. * tsosPar[3] / uWidth;
48 double vRel = 2. * myY / myLengthV;
50 const double cutOff = 1.5;
53 }
else if (uRel > cutOff) {
58 }
else if (vRel > cutOff) {
63 const double uLP0 = 1.0;
64 const double uLP1 = uRel;
65 const double uLP2 = uRel * uRel - 1. / 3.;
66 const double vLP0 = 1.0;
67 const double vLP1 = vRel;
68 const double vLP2 = vRel * vRel - 1. / 3.;
71 result[
dslopeX][0] = tsosPar[1] * uLP1 * vLP0;
72 result[
dslopeX][1] = tsosPar[2] * uLP1 * vLP0;
73 result[
dslopeY][0] = tsosPar[1] * uLP0 * vLP1;
74 result[
dslopeY][1] = tsosPar[2] * uLP0 * vLP1;
77 result[
dsagittaX][0] = tsosPar[1] * uLP2 * vLP0;
78 result[
dsagittaX][1] = tsosPar[2] * uLP2 * vLP0;
79 result[
dsagittaXY][0] = tsosPar[1] * uLP1 * vLP1;
80 result[
dsagittaXY][1] = tsosPar[2] * uLP1 * vLP1;
81 result[
dsagittaY][0] = tsosPar[1] * uLP0 * vLP2;
82 result[
dsagittaY][1] = tsosPar[2] * uLP0 * vLP2;
91 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