76 fvec energyInv = 1. / energy;
77 fvec h0 =
fP[3] * energyInv, h1 =
fP[4] * energyInv, h2 =
fP[5] * energyInv;
79 fC[21] = h0 *
fC[6] + h1 *
fC[10] + h2 *
fC[15];
80 fC[22] = h0 *
fC[7] + h1 *
fC[11] + h2 *
fC[16];
81 fC[23] = h0 *
fC[8] + h1 *
fC[12] + h2 *
fC[17];
82 fC[24] = h0 *
fC[9] + h1 *
fC[13] + h2 *
fC[18];
83 fC[25] = h0 *
fC[13] + h1 *
fC[14] + h2 *
fC[19];
84 fC[26] = h0 *
fC[18] + h1 *
fC[19] + h2 *
fC[20];
85 fC[27] = (h0 * h0 *
fC[9] + h1 * h1 *
fC[14] + h2 * h2 *
fC[20]
86 + 2 * (h0 * h1 *
fC[13] + h0 * h2 *
fC[18] + h1 * h2 *
fC[19]));
103 fC[0] =
fC[2] =
fC[5] = 100.;
151 fvec p2 = x2 + y2 + z2;
153 error = (x2 *
fC[9] + y2 *
fC[14] + z2 *
fC[20] + 2 * (x * y *
fC[13] + x * z *
fC[18] + y * z *
fC[19]));
154 const fvec LocalSmall = 1.e-4;
156 error = (mask & error);
172 fvec pt2 = px2 + py2;
174 error = (px2 *
fC[9] + py2 *
fC[14] + 2 * px * py *
fC[13]);
175 const fvec LocalSmall = 1.e-8;
177 error = (mask & error);
180 error += ((!mask) &
fvec(1.e10));
191 const fvec BIG = 1.e10;
192 const fvec LocalSmall = 1.e-8;
197 fvec pt2 = px * px + py * py;
198 fvec p2 = pt2 + pz * pz;
204 c =
fvec(b > LocalSmall) & (a / b);
210 fvec pt4 = pt2 * pt2;
211 fvec p2pt4 = p2 * pt4;
212 error = (h3 * h3 *
fC[9] + h4 * h4 *
fC[14] + pt4 *
fC[20]
213 + 2 * (h3 * (h4 *
fC[13] +
fC[18] * pt2) + pt2 * h4 *
fC[19]));
216 error =
if3(mask, (
sqrt(error / p2pt4)), BIG);
233 fvec pt2 = px2 + py2;
235 error = (py2 *
fC[9] + px2 *
fC[14] -
fvec(2.f) * px * py *
fC[13]);
254 error = (x2 *
fC[0] + y2 *
fC[2] -
fvec(2.f) * x * y *
fC[1]);
268 const fvec BIG = 1.e20;
269 const fvec LocalSmall = 1.e-10;
292 error =
if3(mask,
sqrt(s) /
m, BIG);
303 const fvec BIG = 1.e20;
312 fvec p2 = x2 + y2 + z2;
317 * (x2 *
fC[9] + y2 *
fC[14] + z2 *
fC[20]
318 +
fvec(2.f) * (x * y *
fC[13] + x * z *
fC[18] + y * z *
fC[19]))
319 +
fvec(2.f) * t * (x *
fC[31] + y *
fC[32] + z *
fC[33]);
331 const fvec BIG = 1.e20;
342 error = pt2 *
fC[35] + t * t / pt2 * (x2 *
fC[9] + y2 *
fC[14] + 2 * x * y *
fC[13])
343 +
fvec(2.f) * t * (x *
fC[31] + y *
fC[32]);
354 const fvec BIG = 1.e20;
361 error =
m *
m *
fC[35] + 2 *
fP[7] * cTM +
fP[7] *
fP[7] * dm * dm;
363 error =
if3(mask,
sqrt(error), BIG);
379 fvec d[3] = {XYZ[0] - Part[0], XYZ[1] - Part[1], XYZ[2] - Part[2]};
380 fvec p2 = Part[3] * Part[3] + Part[4] * Part[4] + Part[5] * Part[5];
398 const fvec kCLight = 0.000299792458;
399 b[0] *= kCLight *
GetQ();
400 b[1] *= kCLight *
GetQ();
401 b[2] *= kCLight *
GetQ();
406 for (
int iM = 0; iM < 8; iM++)
408 for (
int iV = 0; iV < 8; iV++)
416 h[0] =
m[3] * sigmaS;
417 h[1] =
m[4] * sigmaS;
418 h[2] =
m[5] * sigmaS;
419 h[3] = (h[1] * b[2] - h[2] * b[1]);
420 h[4] = (h[2] * b[0] - h[0] * b[2]);
421 h[5] = (h[0] * b[1] - h[1] * b[0]);
435 V[10] += h[4] * h[0];
436 V[11] += h[4] * h[1];
437 V[12] += h[4] * h[2];
438 V[13] += h[4] * h[3];
439 V[14] += h[4] * h[4];
441 V[15] += h[5] * h[0];
442 V[16] += h[5] * h[1];
443 V[17] += h[5] * h[2];
444 V[18] += h[5] * h[3];
445 V[19] += h[5] * h[4];
446 V[20] += h[5] * h[5];
456 if (Daughter.
fC[35][0] > 0) {
512 for (
Int_t iter = 0; iter < maxIter; iter++) {
518 if (Daughter.
fC[35][0] > 0) {
522 m[
i] = Daughter.
fP[
i];
524 mV[
i] = Daughter.
fC[
i];
528 fvec mS[6] = {ffC[0] + mV[0], ffC[1] + mV[1], ffC[2] + mV[2], ffC[3] + mV[3], ffC[4] + mV[4], ffC[5] + mV[5]};
533 fvec zeta[3] = {
m[0] - ffP[0],
m[1] - ffP[1],
m[2] - ffP[2]};
537 fvec mCHt0[7], mCHt1[7], mCHt2[7];
548 mCHt0[3] = ffC[6] - mV[6];
549 mCHt1[3] = ffC[7] - mV[7];
550 mCHt2[3] = ffC[8] - mV[8];
551 mCHt0[4] = ffC[10] - mV[10];
552 mCHt1[4] = ffC[11] - mV[11];
553 mCHt2[4] = ffC[12] - mV[12];
554 mCHt0[5] = ffC[15] - mV[15];
555 mCHt1[5] = ffC[16] - mV[16];
556 mCHt2[5] = ffC[17] - mV[17];
557 mCHt0[6] = ffC[21] - mV[21];
558 mCHt1[6] = ffC[22] - mV[22];
559 mCHt2[6] = ffC[23] - mV[23];
563 fvec k0[7], k1[7], k2[7];
566 k0[
i] = mCHt0[
i] * mS[0] + mCHt1[
i] * mS[1] + mCHt2[
i] * mS[3];
567 k1[
i] = mCHt0[
i] * mS[1] + mCHt1[
i] * mS[2] + mCHt2[
i] * mS[4];
568 k2[
i] = mCHt0[
i] * mS[3] + mCHt1[
i] * mS[4] + mCHt2[
i] * mS[5];
573 if (iter < maxIter - 1) {
575 fVtxGuess[
i] = ffP[
i] + k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2];
602 fP[
i] = ffP[
i] + (k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2]);
606 for (
Int_t i = 0, k = 0;
i < 7; ++
i) {
607 for (
Int_t j = 0; j <=
i; ++j, ++k) {
608 fC[k] = ffC[k] - (k0[
i] * mCHt0[j] + k1[
i] * mCHt1[j] + k2[
i] * mCHt2[j]);
613 if (iter == (maxIter - 1)) {
617 fChi2 += (mS[0] * zeta[0] + mS[1] * zeta[1] + mS[3] * zeta[2]) * zeta[0]
618 + (mS[1] * zeta[0] + mS[2] * zeta[1] + mS[4] * zeta[2]) * zeta[1]
619 + (mS[3] * zeta[0] + mS[4] * zeta[1] + mS[5] * zeta[2]) * zeta[2];
654 for (
Int_t iter = 0; iter < maxIter; iter++) {
660 if (Daughter.
fC[35][0] > 0) {
664 m[
i] = Daughter.
fP[
i];
666 mV[
i] = Daughter.
fC[
i];
669 fvec massMf2 =
m[6] *
m[6] - (
m[3] *
m[3] +
m[4] *
m[4] +
m[5] *
m[5]);
674 fvec mS[6] = {ffC[0] + mV[0], ffC[1] + mV[1], ffC[2] + mV[2], ffC[3] + mV[3], ffC[4] + mV[4], ffC[5] + mV[5]};
679 fvec zeta[3] = {
m[0] - ffP[0],
m[1] - ffP[1],
m[2] - ffP[2]};
683 fvec mCHt0[6], mCHt1[6], mCHt2[6];
694 mCHt0[3] = ffC[6] - mV[6];
695 mCHt1[3] = ffC[7] - mV[7];
696 mCHt2[3] = ffC[8] - mV[8];
697 mCHt0[4] = ffC[10] - mV[10];
698 mCHt1[4] = ffC[11] - mV[11];
699 mCHt2[4] = ffC[12] - mV[12];
700 mCHt0[5] = ffC[15] - mV[15];
701 mCHt1[5] = ffC[16] - mV[16];
702 mCHt2[5] = ffC[17] - mV[17];
706 fvec k0[6], k1[6], k2[6];
709 k0[
i] = mCHt0[
i] * mS[0] + mCHt1[
i] * mS[1] + mCHt2[
i] * mS[3];
710 k1[
i] = mCHt0[
i] * mS[1] + mCHt1[
i] * mS[2] + mCHt2[
i] * mS[4];
711 k2[
i] = mCHt0[
i] * mS[3] + mCHt1[
i] * mS[4] + mCHt2[
i] * mS[5];
716 if (iter < maxIter - 1) {
718 fVtxGuess[
i] = ffP[
i] + k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2];
724 fvec mVHt0[6], mVHt1[6], mVHt2[6];
747 fvec km0[6], km1[6], km2[6];
750 km0[
i] = mVHt0[
i] * mS[0] + mVHt1[
i] * mS[1] + mVHt2[
i] * mS[3];
751 km1[
i] = mVHt0[
i] * mS[1] + mVHt1[
i] * mS[2] + mVHt2[
i] * mS[4];
752 km2[
i] = mVHt0[
i] * mS[3] + mVHt1[
i] * mS[4] + mVHt2[
i] * mS[5];
755 fvec mf[7] = {
m[0],
m[1],
m[2],
m[3],
m[4],
m[5],
m[6]};
758 mf[
i] = mf[
i] - km0[
i] * zeta[0] - km1[
i] * zeta[1] - km2[
i] * zeta[2];
760 fvec energyMf =
sqrt(massMf2 + (mf[3] * mf[3] + mf[4] * mf[4] + mf[5] * mf[5]));
763 for (
Int_t iC = 0; iC < 28; iC++)
773 for (
Int_t i = 0, k = 0;
i < 6; ++
i) {
774 for (
Int_t j = 0; j <=
i; ++j, ++k) {
775 mVf[k] = mVf[k] - (km0[
i] * mVHt0[j] + km1[
i] * mVHt1[j] + km2[
i] * mVHt2[j]);
778 fvec mVf24 = mVf[24], mVf25 = mVf[25], mVf26 = mVf[26];
779 mVf[21] = mVf[6] * hmf[3] + mVf[10] * hmf[4] + mVf[15] * hmf[5] + mVf[21] * hmf[6];
780 mVf[22] = mVf[7] * hmf[3] + mVf[11] * hmf[4] + mVf[16] * hmf[5] + mVf[22] * hmf[6];
781 mVf[23] = mVf[8] * hmf[3] + mVf[12] * hmf[4] + mVf[17] * hmf[5] + mVf[23] * hmf[6];
782 mVf[24] = mVf[9] * hmf[3] + mVf[13] * hmf[4] + mVf[18] * hmf[5] + mVf[24] * hmf[6];
783 mVf[25] = mVf[13] * hmf[3] + mVf[14] * hmf[4] + mVf[19] * hmf[5] + mVf[25] * hmf[6];
784 mVf[26] = mVf[18] * hmf[3] + mVf[19] * hmf[4] + mVf[20] * hmf[5] + mVf[26] * hmf[6];
785 mVf[27] = mVf[24] * hmf[3] + mVf[25] * hmf[4] + mVf[26] * hmf[5]
786 + (mVf24 * hmf[3] + mVf25 * hmf[4] + mVf26 * hmf[5] + mVf[27] * hmf[6])
794 fvec mCCHt0[6], mCCHt1[6], mCCHt2[6];
817 fvec krf0[6], krf1[6], krf2[6];
820 krf0[
i] = mCCHt0[
i] * mS[0] + mCCHt1[
i] * mS[1] + mCCHt2[
i] * mS[3];
821 krf1[
i] = mCCHt0[
i] * mS[1] + mCCHt1[
i] * mS[2] + mCCHt2[
i] * mS[4];
822 krf2[
i] = mCCHt0[
i] * mS[3] + mCCHt1[
i] * mS[4] + mCCHt2[
i] * mS[5];
824 fvec rf[7] = {ffP[0], ffP[1], ffP[2], ffP[3], ffP[4], ffP[5], ffP[6]};
827 rf[
i] = rf[
i] + krf0[
i] * zeta[0] + krf1[
i] * zeta[1] + krf2[
i] * zeta[2];
829 fvec energyRf =
sqrt(massRf2 + (rf[3] * rf[3] + rf[4] * rf[4] + rf[5] * rf[5]));
832 for (
Int_t iC = 0; iC < 28; iC++)
842 for (
Int_t i = 0, k = 0;
i < 6; ++
i) {
843 for (
Int_t j = 0; j <=
i; ++j, ++k) {
844 mCf[k] = mCf[k] - (krf0[
i] * mCCHt0[j] + krf1[
i] * mCCHt1[j] + krf2[
i] * mCCHt2[j]);
847 fvec mCf24 = mCf[24], mCf25 = mCf[25], mCf26 = mCf[26];
848 mCf[21] = mCf[6] * hrf[3] + mCf[10] * hrf[4] + mCf[15] * hrf[5] + mCf[21] * hrf[6];
849 mCf[22] = mCf[7] * hrf[3] + mCf[11] * hrf[4] + mCf[16] * hrf[5] + mCf[22] * hrf[6];
850 mCf[23] = mCf[8] * hrf[3] + mCf[12] * hrf[4] + mCf[17] * hrf[5] + mCf[23] * hrf[6];
851 mCf[24] = mCf[9] * hrf[3] + mCf[13] * hrf[4] + mCf[18] * hrf[5] + mCf[24] * hrf[6];
852 mCf[25] = mCf[13] * hrf[3] + mCf[14] * hrf[4] + mCf[19] * hrf[5] + mCf[25] * hrf[6];
853 mCf[26] = mCf[18] * hrf[3] + mCf[19] * hrf[4] + mCf[20] * hrf[5] + mCf[26] * hrf[6];
854 mCf[27] = mCf[24] * hrf[3] + mCf[25] * hrf[4] + mCf[26] * hrf[5]
855 + (mCf24 * hrf[3] + mCf25 * hrf[4] + mCf26 * hrf[5] + mCf[27] * hrf[6])
858 for (
Int_t iC = 21; iC < 28; iC++) {
863 fP[6] = energyRf + energyMf;
872 for (
int i = 0;
i < 3;
i++) {
873 for (
int j = 0; j < 3; j++) {
874 mDvp[
i][j] = km0[
i + 3] * mCCHt0[j] + km1[
i + 3] * mCCHt1[j] + km2[
i + 3] * mCCHt2[j];
875 mDpv[
i][j] = km0[
i] * mCCHt0[j + 3] + km1[
i] * mCCHt1[j + 3] + km2[
i] * mCCHt2[j + 3];
876 mDpp[
i][j] = km0[
i + 3] * mCCHt0[j + 3] + km1[
i + 3] * mCCHt1[j + 3] + km2[
i + 3] * mCCHt2[j + 3];
880 mDe[0] = hmf[3] * mDvp[0][0] + hmf[4] * mDvp[1][0] + hmf[5] * mDvp[2][0];
881 mDe[1] = hmf[3] * mDvp[0][1] + hmf[4] * mDvp[1][1] + hmf[5] * mDvp[2][1];
882 mDe[2] = hmf[3] * mDvp[0][2] + hmf[4] * mDvp[1][2] + hmf[5] * mDvp[2][2];
883 mDe[3] = hmf[3] * mDpp[0][0] + hmf[4] * mDpp[1][0] + hmf[5] * mDpp[2][0];
884 mDe[4] = hmf[3] * mDpp[0][1] + hmf[4] * mDpp[1][1] + hmf[5] * mDpp[2][1];
885 mDe[5] = hmf[3] * mDpp[0][2] + hmf[4] * mDpp[1][2] + hmf[5] * mDpp[2][2];
886 mDe[6] = 2 * (mDe[3] * hrf[3] + mDe[4] * hrf[4] + mDe[5] * hrf[5]);
918 fP[
i] = ffP[
i] + k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2];
922 for (
Int_t i = 0, k = 0;
i < 6; ++
i) {
923 for (
Int_t j = 0; j <=
i; ++j, ++k) {
924 fC[k] = ffC[k] - (k0[
i] * mCHt0[j] + k1[
i] * mCHt1[j] + k2[
i] * mCHt2[j]);
928 for (
int i = 21;
i < 28;
i++)
933 if (iter == (maxIter - 1)) {
937 fChi2 += (mS[0] * zeta[0] + mS[1] * zeta[1] + mS[3] * zeta[2]) * zeta[0]
938 + (mS[1] * zeta[0] + mS[2] * zeta[1] + mS[4] * zeta[2]) * zeta[1]
939 + (mS[3] * zeta[0] + mS[4] * zeta[1] + mS[5] * zeta[2]) * zeta[2];
975 for (
Int_t iter = 0; iter < maxIter; iter++) {
980 if (Daughter.
fC[35][0] > 0) {
984 m[
i] = Daughter.
fP[
i];
986 mV[
i] = Daughter.
fC[
i];
990 fvec mS[6] = {ffC[0] + mV[0], ffC[1] + mV[1], ffC[2] + mV[2], ffC[3] + mV[3], ffC[4] + mV[4], ffC[5] + mV[5]};
995 fvec zeta[3] = {
m[0] - ffP[0],
m[1] - ffP[1],
m[2] - ffP[2]};
999 fvec mCHt0[7], mCHt1[7], mCHt2[7];
1025 fvec k0[7], k1[7], k2[7];
1028 k0[
i] = mCHt0[
i] * mS[0] + mCHt1[
i] * mS[1] + mCHt2[
i] * mS[3];
1029 k1[
i] = mCHt0[
i] * mS[1] + mCHt1[
i] * mS[2] + mCHt2[
i] * mS[4];
1030 k2[
i] = mCHt0[
i] * mS[3] + mCHt1[
i] * mS[4] + mCHt2[
i] * mS[5];
1035 if (iter < maxIter - 1) {
1037 fVtxGuess[
i] = ffP[
i] + k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2];
1045 fvec mVHt0[7], mVHt1[7], mVHt2[7];
1071 fvec km0[7], km1[7], km2[7];
1074 km0[
i] = mVHt0[
i] * mS[0] + mVHt1[
i] * mS[1] + mVHt2[
i] * mS[3];
1075 km1[
i] = mVHt0[
i] * mS[1] + mVHt1[
i] * mS[2] + mVHt2[
i] * mS[4];
1076 km2[
i] = mVHt0[
i] * mS[3] + mVHt1[
i] * mS[4] + mVHt2[
i] * mS[5];
1080 ffP[
i] = ffP[
i] + k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2];
1083 m[
i] =
m[
i] - km0[
i] * zeta[0] - km1[
i] * zeta[1] - km2[
i] * zeta[2];
1085 for (
Int_t i = 0, k = 0;
i < 7; ++
i) {
1086 for (
Int_t j = 0; j <=
i; ++j, ++k) {
1087 ffC[k] = ffC[k] - (k0[
i] * mCHt0[j] + k1[
i] * mCHt1[j] + k2[
i] * mCHt2[j]);
1091 for (
Int_t i = 0, k = 0;
i < 7; ++
i) {
1092 for (
Int_t j = 0; j <=
i; ++j, ++k) {
1093 mV[k] = mV[k] - (km0[
i] * mVHt0[j] + km1[
i] * mVHt1[j] + km2[
i] * mVHt2[j]);
1100 for (
Int_t j = 0; j < 7; ++j) {
1101 mDf[
i][j] = (km0[
i] * mCHt0[j] + km1[
i] * mCHt1[j] + km2[
i] * mCHt2[j]);
1105 fvec mJ1[7][7], mJ2[7][7];
1106 for (
Int_t iPar1 = 0; iPar1 < 7; iPar1++) {
1107 for (
Int_t iPar2 = 0; iPar2 < 7; iPar2++) {
1108 mJ1[iPar1][iPar2] = 0;
1109 mJ2[iPar1][iPar2] = 0;
1113 fvec mMassParticle = ffP[6] * ffP[6] - (ffP[3] * ffP[3] + ffP[4] * ffP[4] + ffP[5] * ffP[5]);
1114 fvec mMassDaughter =
m[6] *
m[6] - (
m[3] *
m[3] +
m[4] *
m[4] +
m[5] *
m[5]);
1131 for (
Int_t j = 0; j < 7; j++) {
1133 for (
Int_t k = 0; k < 7; k++) {
1134 mDJ[
i][j] += mDf[
i][k] * mJ1[j][k];
1140 for (
Int_t j = 0; j < 7; ++j) {
1142 for (
Int_t l = 0; l < 7; l++) {
1143 mDf[
i][j] += mJ2[
i][l] * mDJ[l][j];
1166 ffC[6] += mDf[3][0];
1167 ffC[7] += mDf[3][1];
1168 ffC[8] += mDf[3][2];
1169 ffC[10] += mDf[4][0];
1170 ffC[11] += mDf[4][1];
1171 ffC[12] += mDf[4][2];
1172 ffC[15] += mDf[5][0];
1173 ffC[16] += mDf[5][1];
1174 ffC[17] += mDf[5][2];
1175 ffC[21] += mDf[6][0];
1176 ffC[22] += mDf[6][1];
1177 ffC[23] += mDf[6][2];
1179 ffC[9] += mDf[3][3] + mDf[3][3];
1180 ffC[13] += mDf[4][3] + mDf[3][4];
1181 ffC[14] += mDf[4][4] + mDf[4][4];
1182 ffC[18] += mDf[5][3] + mDf[3][5];
1183 ffC[19] += mDf[5][4] + mDf[4][5];
1184 ffC[20] += mDf[5][5] + mDf[5][5];
1185 ffC[24] += mDf[6][3] + mDf[3][6];
1186 ffC[25] += mDf[6][4] + mDf[4][6];
1187 ffC[26] += mDf[6][5] + mDf[5][6];
1188 ffC[27] += mDf[6][6] + mDf[6][6];
1197 for (
Int_t i = 0, k = 0;
i < 7; ++
i) {
1198 for (
Int_t j = 0; j <=
i; ++j, ++k) {
1204 if (iter == (maxIter - 1)) {
1208 fChi2 += (mS[0] * zeta[0] + mS[1] * zeta[1] + mS[3] * zeta[2]) * zeta[0]
1209 + (mS[1] * zeta[0] + mS[2] * zeta[1] + mS[4] * zeta[2]) * zeta[1]
1210 + (mS[3] * zeta[0] + mS[4] * zeta[1] + mS[5] * zeta[2]) * zeta[2];
1230 fC[28] =
fC[29] =
fC[30] =
fC[31] =
fC[32] =
fC[33] =
fC[34] = 0;
1243 mB[0][0] =
fC[6] * mAi[0] +
fC[7] * mAi[1] +
fC[8] * mAi[3];
1244 mB[0][1] =
fC[6] * mAi[1] +
fC[7] * mAi[2] +
fC[8] * mAi[4];
1245 mB[0][2] =
fC[6] * mAi[3] +
fC[7] * mAi[4] +
fC[8] * mAi[5];
1247 mB[1][0] =
fC[10] * mAi[0] +
fC[11] * mAi[1] +
fC[12] * mAi[3];
1248 mB[1][1] =
fC[10] * mAi[1] +
fC[11] * mAi[2] +
fC[12] * mAi[4];
1249 mB[1][2] =
fC[10] * mAi[3] +
fC[11] * mAi[4] +
fC[12] * mAi[5];
1251 mB[2][0] =
fC[15] * mAi[0] +
fC[16] * mAi[1] +
fC[17] * mAi[3];
1252 mB[2][1] =
fC[15] * mAi[1] +
fC[16] * mAi[2] +
fC[17] * mAi[4];
1253 mB[2][2] =
fC[15] * mAi[3] +
fC[16] * mAi[4] +
fC[17] * mAi[5];
1255 mB[3][0] =
fC[21] * mAi[0] +
fC[22] * mAi[1] +
fC[23] * mAi[3];
1256 mB[3][1] =
fC[21] * mAi[1] +
fC[22] * mAi[2] +
fC[23] * mAi[4];
1257 mB[3][2] =
fC[21] * mAi[3] +
fC[22] * mAi[4] +
fC[23] * mAi[5];
1259 mB[4][0] =
fC[28] * mAi[0] +
fC[29] * mAi[1] +
fC[30] * mAi[3];
1260 mB[4][1] =
fC[28] * mAi[1] +
fC[29] * mAi[2] +
fC[30] * mAi[4];
1261 mB[4][2] =
fC[28] * mAi[3] +
fC[29] * mAi[4] +
fC[30] * mAi[5];
1266 fvec mAVi[6] = {
fC[0] - mV[0],
fC[1] - mV[1],
fC[2] - mV[2],
fC[3] - mV[3],
fC[4] - mV[4],
fC[5] - mV[5]};
1271 fvec dChi2 = (+(mAVi[0] * z[0] + mAVi[1] * z[1] + mAVi[3] * z[2]) * z[0]
1272 + (mAVi[1] * z[0] + mAVi[2] * z[1] + mAVi[4] * z[2]) * z[1]
1273 + (mAVi[3] * z[0] + mAVi[4] * z[1] + mAVi[5] * z[2]) * z[2]);
1286 fP[3] += mB[0][0] * z[0] + mB[0][1] * z[1] + mB[0][2] * z[2];
1287 fP[4] += mB[1][0] * z[0] + mB[1][1] * z[1] + mB[1][2] * z[2];
1288 fP[5] += mB[2][0] * z[0] + mB[2][1] * z[1] + mB[2][2] * z[2];
1289 fP[6] += mB[3][0] * z[0] + mB[3][1] * z[1] + mB[3][2] * z[2];
1290 fP[7] += mB[4][0] * z[0] + mB[4][1] * z[1] + mB[4][2] * z[2];
1301 d0 = mB[0][0] * mV[0] + mB[0][1] * mV[1] + mB[0][2] * mV[3] -
fC[6];
1302 d1 = mB[0][0] * mV[1] + mB[0][1] * mV[2] + mB[0][2] * mV[4] -
fC[7];
1303 d2 = mB[0][0] * mV[3] + mB[0][1] * mV[4] + mB[0][2] * mV[5] -
fC[8];
1308 fC[9] += d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
1310 d0 = mB[1][0] * mV[0] + mB[1][1] * mV[1] + mB[1][2] * mV[3] -
fC[10];
1311 d1 = mB[1][0] * mV[1] + mB[1][1] * mV[2] + mB[1][2] * mV[4] -
fC[11];
1312 d2 = mB[1][0] * mV[3] + mB[1][1] * mV[4] + mB[1][2] * mV[5] -
fC[12];
1317 fC[13] += d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
1318 fC[14] += d0 * mB[1][0] + d1 * mB[1][1] + d2 * mB[1][2];
1320 d0 = mB[2][0] * mV[0] + mB[2][1] * mV[1] + mB[2][2] * mV[3] -
fC[15];
1321 d1 = mB[2][0] * mV[1] + mB[2][1] * mV[2] + mB[2][2] * mV[4] -
fC[16];
1322 d2 = mB[2][0] * mV[3] + mB[2][1] * mV[4] + mB[2][2] * mV[5] -
fC[17];
1327 fC[18] += d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
1328 fC[19] += d0 * mB[1][0] + d1 * mB[1][1] + d2 * mB[1][2];
1329 fC[20] += d0 * mB[2][0] + d1 * mB[2][1] + d2 * mB[2][2];
1331 d0 = mB[3][0] * mV[0] + mB[3][1] * mV[1] + mB[3][2] * mV[3] -
fC[21];
1332 d1 = mB[3][0] * mV[1] + mB[3][1] * mV[2] + mB[3][2] * mV[4] -
fC[22];
1333 d2 = mB[3][0] * mV[3] + mB[3][1] * mV[4] + mB[3][2] * mV[5] -
fC[23];
1338 fC[24] += d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
1339 fC[25] += d0 * mB[1][0] + d1 * mB[1][1] + d2 * mB[1][2];
1340 fC[26] += d0 * mB[2][0] + d1 * mB[2][1] + d2 * mB[2][2];
1341 fC[27] += d0 * mB[3][0] + d1 * mB[3][1] + d2 * mB[3][2];
1343 d0 = mB[4][0] * mV[0] + mB[4][1] * mV[1] + mB[4][2] * mV[3] -
fC[28];
1344 d1 = mB[4][0] * mV[1] + mB[4][1] * mV[2] + mB[4][2] * mV[4] -
fC[29];
1345 d2 = mB[4][0] * mV[3] + mB[4][1] * mV[4] + mB[4][2] * mV[5] -
fC[30];
1350 fC[31] += d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
1351 fC[32] += d0 * mB[1][0] + d1 * mB[1][1] + d2 * mB[1][2];
1352 fC[33] += d0 * mB[2][0] + d1 * mB[2][1] + d2 * mB[2][2];
1353 fC[34] += d0 * mB[3][0] + d1 * mB[3][1] + d2 * mB[3][2];
1354 fC[35] += d0 * mB[4][0] + d1 * mB[4][1] + d2 * mB[4][2];
1371 const fvec energy2 = mP[6] * mP[6], p2 = mP[3] * mP[3] + mP[4] * mP[4] + mP[5] * mP[5], mass2 = mass * mass;
1373 const fvec a = energy2 - p2 + 2. * mass2;
1374 const fvec b = -2. * (energy2 + p2);
1375 const fvec c = energy2 - p2 - mass2;
1379 fvec d = 4. * energy2 * p2 - mass2 * (energy2 - p2 - 2. * mass2);
1381 lambda =
if3(qMask, ((energy2 + p2 -
sqrt(d)) / a), lambda);
1386 for (iIter = 0; iIter < 100; iIter++) {
1387 fvec lambda2 = lambda * lambda;
1388 fvec lambda4 = lambda2 * lambda2;
1392 fvec f = -mass2 * lambda4 + a * lambda2 + b * lambda + c;
1393 fvec df = -4. * mass2 * lambda2 * lambda + 2. * a * lambda + b;
1398 const fvec lpi = 1. / (1. + lambda);
1399 const fvec lmi = 1. / (1. - lambda);
1400 const fvec lp2i = lpi * lpi;
1401 const fvec lm2i = lmi * lmi;
1403 fvec lambda2 = lambda * lambda;
1405 fvec dfl = -4. * mass2 * lambda2 * lambda + 2. * a * lambda + b;
1407 dfx[0] = -2. * (1. + lambda) * (1. + lambda) * mP[3];
1408 dfx[1] = -2. * (1. + lambda) * (1. + lambda) * mP[4];
1409 dfx[2] = -2. * (1. + lambda) * (1. + lambda) * mP[5];
1410 dfx[3] = 2. * (1. - lambda) * (1. - lambda) * mP[6];
1411 fvec dlx[4] = {1, 1, 1, 1};
1413 for (
int i = 0;
i < 4;
i++)
1416 fvec dxx[4] = {mP[3] * lm2i, mP[4] * lm2i, mP[5] * lm2i, -mP[6] * lp2i};
1419 for (
Int_t j = 0; j < 7; j++)
1426 for (
Int_t j = 3; j < 7; j++)
1427 mJ[
i][j] = dlx[j - 3] * dxx[
i - 3];
1436 for (
Int_t j = 0; j < 7; j++) {
1438 for (
Int_t k = 0; k < 7; k++) {
1439 mCJ[
i][j] += mC[
IJ(
i, k)] * mJ[j][k];
1445 for (
Int_t j = 0; j <=
i; ++j) {
1447 for (
Int_t l = 0; l < 7; l++) {
1448 mC[
IJ(
i, j)] +=
if3(mask, mJ[
i][l] * mCJ[l][j],
Zero);
1453 mP[3] *=
if3(mask, lmi,
One);
1454 mP[4] *=
if3(mask, lmi,
One);
1455 mP[5] *=
if3(mask, lmi,
One);
1456 mP[6] *=
if3(mask, lpi,
One);
1476 fvec m2 = Mass * Mass;
1477 fvec s2 = m2 * SigmaMass * SigmaMass;
1483 mH[0] = mH[1] = mH[2] = 0.;
1490 fvec zeta = e0 * e0 - e0 *
fP[6];
1491 zeta = m2 - (
fP[6] *
fP[6] - p2);
1493 fvec mCHt[8], s2_est = 0;
1496 for (
Int_t j = 0; j < 8; ++j)
1497 mCHt[
i] +=
Cij(
i, j) * mH[j];
1498 s2_est += mH[
i] * mCHt[
i];
1505 fvec w2 = 1. / (s2 + s2_est);
1506 fChi2 += zeta * zeta * w2;
1508 for (
Int_t i = 0, ii = 0;
i < 8; ++
i) {
1509 fvec ki = mCHt[
i] * w2;
1511 for (
Int_t j = 0; j <=
i; ++j)
1512 fC[ii++] -= ki * mCHt[j];
1523 h[0] = h[1] = h[2] = h[3] = h[4] = h[5] = h[6] = 0;
1528 zeta -= h[
i] * (
fP[
i] -
fP[
i]);
1534 fChi2 += zeta * zeta * s;
1536 for (
Int_t i = 0, ii = 0;
i < 7; ++
i) {
1539 for (
Int_t j = 0; j <=
i; ++j)
1540 fC[ii++] -= ki *
fC[28 + j];
1581 fvec ds = 0., ds1 = 0.;
1608 fvec constraintC[6];
1610 if (IsConstrained) {
1612 constraintC[
i] =
fC[
i];
1615 constraintC[
i] = 0.;
1623 for (
Int_t iter = 0; iter < maxIter; iter++) {
1641 fC[
i] = constraintC[
i];
1646 fNDF = IsConstrained ? 0 : -3;
1650 for (
Int_t itr = 0; itr < nDaughters; itr++) {
1653 if (iter < maxIter - 1) {
1675 const fvec kCLight =
fQ * 0.000299792458;
1691 h[3] = h[1] * fld[2] - h[2] * fld[1];
1692 h[4] = h[2] * fld[0] - h[0] * fld[2];
1693 h[5] = h[0] * fld[1] - h[1] * fld[0];
1697 c =
fC[28] + h[0] *
fC[35];
1698 fC[0] += h[0] * (c +
fC[28]);
1701 fC[1] += h[1] *
fC[28] + h[0] *
fC[29];
1702 c =
fC[29] + h[1] *
fC[35];
1703 fC[2] += h[1] * (c +
fC[29]);
1706 fC[3] += h[2] *
fC[28] + h[0] *
fC[30];
1707 fC[4] += h[2] *
fC[29] + h[1] *
fC[30];
1708 c =
fC[30] + h[2] *
fC[35];
1709 fC[5] += h[2] * (c +
fC[30]);
1712 fC[6] += h[3] *
fC[28] + h[0] *
fC[31];
1713 fC[7] += h[3] *
fC[29] + h[1] *
fC[31];
1714 fC[8] += h[3] *
fC[30] + h[2] *
fC[31];
1715 c =
fC[31] + h[3] *
fC[35];
1716 fC[9] += h[3] * (c +
fC[31]);
1719 fC[10] += h[4] *
fC[28] + h[0] *
fC[32];
1720 fC[11] += h[4] *
fC[29] + h[1] *
fC[32];
1721 fC[12] += h[4] *
fC[30] + h[2] *
fC[32];
1722 fC[13] += h[4] *
fC[31] + h[3] *
fC[32];
1723 c =
fC[32] + h[4] *
fC[35];
1724 fC[14] += h[4] * (c +
fC[32]);
1727 fC[15] += h[5] *
fC[28] + h[0] *
fC[33];
1728 fC[16] += h[5] *
fC[29] + h[1] *
fC[33];
1729 fC[17] += h[5] *
fC[30] + h[2] *
fC[33];
1730 fC[18] += h[5] *
fC[31] + h[3] *
fC[33];
1731 fC[19] += h[5] *
fC[32] + h[4] *
fC[33];
1732 c =
fC[33] + h[5] *
fC[35];
1733 fC[20] += h[5] * (c +
fC[33]);
1736 fC[21] += h[0] *
fC[34];
1737 fC[22] += h[1] *
fC[34];
1738 fC[23] += h[2] *
fC[34];
1739 fC[24] += h[3] *
fC[34];
1740 fC[25] += h[4] *
fC[34];
1741 fC[26] += h[5] *
fC[34];
1775 fvec* isParticleFromVertex)
const
1779 fvec c[6] = {Vertex.fC[0] +
fC[0], Vertex.fC[1] +
fC[1], Vertex.fC[2] +
fC[2],
1780 Vertex.fC[3] +
fC[3], Vertex.fC[4] +
fC[4], Vertex.fC[5] +
fC[5]};
1782 fvec dx = (Vertex.fP[0] -
fP[0]);
1783 fvec dy = (Vertex.fP[1] -
fP[1]);
1784 fvec dz = (Vertex.fP[2] -
fP[2]);
1786 l =
sqrt(dx * dx + dy * dy + dz * dz);
1787 dl = c[0] * dx * dx + c[2] * dy * dy + c[5] * dz * dz + 2 * (c[1] * dx * dy + c[3] * dx * dz + c[4] * dy * dz);
1791 if (isParticleFromVertex) {
1792 *isParticleFromVertex =
fvec(ok &
fvec(l <
fvec(3 * dl)));
1802 *isParticleFromVertex =
fvec((*isParticleFromVertex) |
fvec(!(*isParticleFromVertex) &
fvec(
cos <
Zero)));
1810 const fvec kCLight = 0.000299792458;
1811 fvec bq = B *
fQ * kCLight;
1814 fvec dx = xyz[0] -
fP[0];
1815 fvec dy = xyz[1] -
fP[1];
1819 const fvec LocalSmall = 1.e-8;
1821 dS =
if3(mask, a / pt2, (
atan2(bq * a, pt2 + bq * (dy *
fP[3] - dx *
fP[4])) / bq));
1829 fvec ss[2], g[2][5];
1842 sB = (1.-bs*kOvSqr6)*(1.+bs*kOvSqr6)*ss[
i];
1845 g[
i][0] =
fP[0] + sB*px + cB*py;
1846 g[
i][1] =
fP[1] - cB*px + sB*py;
1847 g[
i][2] =
fP[2] + ss[
i]*pz;
1848 g[
i][3] = + c*px + s*py;
1849 g[
i][4] = - s*px + c*py;
1855 for(
Int_t j=0; j<2; j++){
1856 fvec xx = g[j][0]-xyz[0];
1857 fvec yy = g[j][1]-xyz[1];
1858 fvec zz = g[j][2]-xyz[2];
1859 fvec d = xx*xx + yy*yy + zz*zz;
1868 fvec x= g[
i][0], y= g[
i][1], z= g[
i][2], ppx= g[
i][3], ppy= g[
i][4];
1869 fvec ddx = x-xyz[0];
1870 fvec ddy = y-xyz[1];
1871 fvec ddz = z-xyz[2];
1872 fvec c = ddx*ppx + ddy*ppy + ddz*pz ;
1873 fvec pp2 = ppx*ppx + ppy*ppy + pz*pz;
1887 const fvec kCLight = 0.000299792458;
1888 fvec bq = B *
fQ * kCLight;
1891 fvec dx = xyz[0] -
fP[0];
1892 fvec dy = -xyz[2] +
fP[2];
1896 const fvec LocalSmall = 1.e-8;
1898 dS =
if3(mask, a / pt2, (
atan2(bq * a, pt2 + bq * (dy *
fP[3] + dx *
fP[5])) / bq));
1914 const fvec kCLight = 0.000299792458;
1916 fvec bq = B *
fQ * kCLight;
1917 fvec bq1 = B * p.
fQ * kCLight;
1920 const fvec LocalSmall = 1.e-8;
1925 const fvec two = 2.;
1926 const fvec four = 2.;
1929 fvec d2 = (dx * dx + dy * dy);
1931 fvec p2 = (px * px + py * py);
1932 fvec p21 = (px1 * px1 + py1 * py1);
1934 fvec a = (px * py1 - py * px1);
1935 fvec b = (px * px1 + py * py1);
1937 fvec ldx = bq * bq1 * dx - bq1 * py + bq * py1;
1938 fvec ldy = bq * bq1 * dy + bq1 * px - bq * px1;
1939 fvec l2 = ldx * ldx + ldy * ldy;
1941 fvec cS = bq1 * p2 + bq * bq1 * (dy * px - dx * py) - bq * b;
1942 fvec cS1 = bq * p21 - bq * bq1 * (dy * px1 - dx * py1) - bq1 * b;
1944 fvec ca = bq * bq * bq1 * d2 + two * (cS + bq * bq * (py1 * dx - px1 * dy));
1945 fvec ca1 = bq * bq1 * bq1 * d2 + two * (cS1 - bq1 * bq1 * (py * dx - px * dy));
1947 fvec sa = 4 * l2 * p2 - ca * ca;
1948 fvec sa1 = 4 * l2 * p21 - ca1 * ca1;
1953 sa1 = (!sa1Neg) & sa1;
1955 s =
if3(bq_big, (
atan2(bq * (bq1 * (dx * px + dy * py) + a), cS) / bq),
1956 (((dx * px + dy * py) + (py * px1 - px * py1) / bq1) / p2));
1957 ds =
if3(bq_big, (
atan2(
sqrt(sa), ca) / bq), (s * s - (d2 - two * (px1 * dy - py1 * dx) / bq1) / p2));
1959 ds = (
fvec((!dsNeg) & (!bq_big)) &
sqrt(ds)) + (bq_big & ds);
1961 s1 =
if3(bq1_big, (
atan2(-bq1 * (bq * (dx * px1 + dy * py1) + a), cS1) / bq1),
1962 ((-(dx * px1 + dy * py1) + (py * px1 - px * py1) / bq) / p21));
1963 ds1 =
if3(bq1_big, (
atan2(
sqrt(sa1), ca1) / bq1), (s1 * s1 - (d2 + two * (px * dy - py * dx) / bq) / p21));
1965 ds1 = (
fvec((!ds1Neg) & (!bq1_big)) &
sqrt(ds1)) + (bq1_big & ds1);
1968 fvec ss[2], ss1[2], g[2][5], g1[2][5];
1976 fvec bs = bq * ss[
i];
1980 const fvec kOvSqr6 = 1. /
sqrt(6.);
1981 sB =
if3(bq_big, (sss / bq), ((
One - bs * kOvSqr6) * (
One + bs * kOvSqr6) * ss[
i]));
1982 cB =
if3(bq_big, ((
One - c) / bq), (.5 * sB * bs));
1984 g[
i][0] =
fP[0] + sB * px + cB * py;
1985 g[
i][1] =
fP[1] - cB * px + sB * py;
1986 g[
i][2] =
fP[2] + ss[
i] * pz;
1987 g[
i][3] = +c * px + sss * py;
1988 g[
i][4] = -sss * px + c * py;
1994 sB =
if3(bq1_big, (sss / bq1), ((
One - bs * kOvSqr6) * (
One + bs * kOvSqr6) * ss1[
i]));
1995 cB =
if3(bq1_big, ((
One - c) / bq1), (.5 * sB * bs));
1997 g1[
i][0] = p.
fP[0] + sB * px1 + cB * py1;
1998 g1[
i][1] = p.
fP[1] - cB * px1 + sB * py1;
1999 g1[
i][2] = p.
fP[2] + ss[
i] * pz1;
2000 g1[
i][3] = +c * px1 + sss * py1;
2001 g1[
i][4] = -sss * px1 + c * py1;
2008 for (
Int_t j = 0; j < 2; j++) {
2009 for (
Int_t j1 = 0; j1 < 2; j1++) {
2010 fvec xx = g[j][0] - g1[j1][0];
2011 fvec yy = g[j][1] - g1[j1][1];
2012 fvec zz = g[j][2] - g1[j1][2];
2013 fvec d = xx * xx + yy * yy + zz * zz;
2016 DS = (mask & ss[j]) + ((!mask) & DS);
2017 DS1 = (mask & ss1[j]) + ((!mask) & DS1);
2018 dMin = (mask & d) + ((!mask) & dMin);
2023 fvec x= g[
i][0], y= g[
i][1], z= g[
i][2], ppx= g[
i][3], ppy= g[
i][4];
2024 fvec x1=g1[i1][0], y1= g1[i1][1], z1= g1[i1][2], ppx1= g1[i1][3], ppy1= g1[i1][4];
2028 fvec a = ppx*ppx1 + ppy*ppy1 + pz*pz1;
2029 fvec b = dx*ppx1 + dy*ppy1 + dz*pz1;
2030 fvec c = dx*ppx + dy*ppy + dz*pz ;
2031 fvec pp2 = ppx*ppx + ppy*ppy + pz*pz;
2032 fvec pp21= ppx1*ppx1 + ppy1*ppy1 + pz1*pz1;
2033 fvec det = pp2*pp21 - a*a;
2034 if(
fabs(det)>1.e-8 ){
2035 DS+=(a*b-pp21*c)/det;
2036 DS1+=(a*c-pp2*b)/det;
2054 const fvec kCLight = 0.000299792458;
2056 fvec bq = B *
fQ * kCLight;
2057 fvec bq1 = B * p.
fQ * kCLight;
2060 const fvec LocalSmall = 1.e-8;
2065 const fvec two = 2.;
2066 const fvec four = 2.;
2069 fvec d2 = (dx * dx + dy * dy);
2071 fvec p2 = (px * px + py * py);
2072 fvec p21 = (px1 * px1 + py1 * py1);
2074 fvec a = (px * py1 - py * px1);
2075 fvec b = (px * px1 + py * py1);
2077 fvec ldx = bq * bq1 * dx - bq1 * py + bq * py1;
2078 fvec ldy = bq * bq1 * dy + bq1 * px - bq * px1;
2079 fvec l2 = ldx * ldx + ldy * ldy;
2081 fvec cS = bq1 * p2 + bq * bq1 * (dy * px - dx * py) - bq * b;
2082 fvec cS1 = bq * p21 - bq * bq1 * (dy * px1 - dx * py1) - bq1 * b;
2084 fvec ca = bq * bq * bq1 * d2 + two * (cS + bq * bq * (py1 * dx - px1 * dy));
2085 fvec ca1 = bq * bq1 * bq1 * d2 + two * (cS1 - bq1 * bq1 * (py * dx - px * dy));
2087 fvec sa = 4 * l2 * p2 - ca * ca;
2088 fvec sa1 = 4 * l2 * p21 - ca1 * ca1;
2093 sa1 = (!sa1Neg) & sa1;
2095 s =
if3(bq_big, (
atan2(bq * (bq1 * (dx * px + dy * py) + a), cS) / bq),
2096 (((dx * px + dy * py) + (py * px1 - px * py1) / bq1) / p2));
2097 ds =
if3(bq_big, (
atan2(
sqrt(sa), ca) / bq), (s * s - (d2 - two * (px1 * dy - py1 * dx) / bq1) / p2));
2099 ds = (
fvec((!dsNeg) & (!bq_big)) &
sqrt(ds)) + (bq_big & ds);
2101 s1 =
if3(bq1_big, (
atan2(-bq1 * (bq * (dx * px1 + dy * py1) + a), cS1) / bq1),
2102 ((-(dx * px1 + dy * py1) + (py * px1 - px * py1) / bq) / p21));
2103 ds1 =
if3(bq1_big, (
atan2(
sqrt(sa1), ca1) / bq1), (s1 * s1 - (d2 + two * (px * dy - py * dx) / bq) / p21));
2105 ds1 = (
fvec((!ds1Neg) & (!bq1_big)) &
sqrt(ds1)) + (bq1_big & ds1);
2108 fvec ss[2], ss1[2], g[2][5], g1[2][5];
2116 fvec bs = bq * ss[
i];
2120 const fvec kOvSqr6 = 1. /
sqrt(6.);
2121 sB =
if3(bq_big, (sss / bq), ((
One - bs * kOvSqr6) * (
One + bs * kOvSqr6) * ss[
i]));
2122 cB =
if3(bq_big, ((
One - c) / bq), (.5 * sB * bs));
2124 g[
i][0] =
fP[0] + sB * px + cB * py;
2125 g[
i][1] = -
fP[2] - cB * px + sB * py;
2126 g[
i][2] =
fP[1] + ss[
i] * pz;
2127 g[
i][3] = +c * px + sss * py;
2128 g[
i][4] = -sss * px + c * py;
2134 sB =
if3(bq1_big, (sss / bq1), ((
One - bs * kOvSqr6) * (
One + bs * kOvSqr6) * ss1[
i]));
2135 cB =
if3(bq1_big, ((
One - c) / bq1), (.5 * sB * bs));
2137 g1[
i][0] = p.
fP[0] + sB * px1 + cB * py1;
2138 g1[
i][1] = -p.
fP[2] - cB * px1 + sB * py1;
2139 g1[
i][2] = p.
fP[1] + ss[
i] * pz1;
2140 g1[
i][3] = +c * px1 + sss * py1;
2141 g1[
i][4] = -sss * px1 + c * py1;
2148 for (
Int_t j = 0; j < 2; j++) {
2149 for (
Int_t j1 = 0; j1 < 2; j1++) {
2150 fvec xx = g[j][0] - g1[j1][0];
2151 fvec yy = g[j][1] - g1[j1][1];
2152 fvec zz = g[j][2] - g1[j1][2];
2153 fvec d = xx * xx + yy * yy + zz * zz;
2156 DS = (mask & ss[j]) + ((!mask) & DS);
2157 DS1 = (mask & ss1[j]) + ((!mask) & DS1);
2158 dMin = (mask & d) + ((!mask) & dMin);
2168 fvec p2 = r[3] * r[3] + r[4] * r[4] + r[5] * r[5];
2170 ((r[3] * (xyz[0] - r[0]) + r[4] * (xyz[1] - r[1]) + r[5] * (xyz[2] - r[2])) / p2),
Zero);
2197 fvec detp = p1p2 * p1p2 - p12 * p22;
2199 dS = (drp2 * p1p2 - drp1 * p22) / detp;
2200 dS1 = (drp2 * p12 - drp1 * p1p2) / detp;
2220 fvec dty = mTy[0] - mTy[1];
2222 r0[2] =
if3(
fabs(dty) >
small, (mTy[0] * mZ[0] - mTy[1] * mZ[1] + mY[1] - mY[0]) / dty, 0.);
2223 r0[1] = mY[0] + mTy[0] * (r0[2] - mZ[0]);
2249 const fvec kCLight = 0.000299792458;
2257 fvec sx = 0, sy = 0, sz = 0, syy = 0, syz = 0, syyy = 0, ssx = 0, ssy = 0, ssz = 0, ssyy = 0, ssyz = 0, ssyyy = 0;
2262 fvec p0[3], p1[3], p2[3];
2270 p2[0] =
fP[0] + px * dS;
2271 p2[1] =
fP[1] + py * dS;
2272 p2[2] =
fP[2] + pz * dS;
2274 p1[0] = 0.5 * (p0[0] + p2[0]);
2275 p1[1] = 0.5 * (p0[1] + p2[1]);
2276 p1[2] = 0.5 * (p0[2] + p2[2]);
2284 fvec ssy1 = (7 * fld[0][1] + 6 * fld[1][1] - fld[2][1]) * c * dS * dS / 96.;
2285 fvec ssy2 = (fld[0][1] + 2 * fld[1][1]) * c * dS * dS / 6.;
2297 for (
int iF1 = 0; iF1 < 3; iF1++)
2298 for (
int iF2 = 0; iF2 < 3; iF2++)
2299 fld[iF1][iF2] =
if3((
fabs(fld[iF1][iF2]) >
fvec(100.)),
Zero, fld[iF1][iF2]);
2301 sx = c * (fld[0][0] + 4 * fld[1][0] + fld[2][0]) * dS / 6.;
2302 sy = c * (fld[0][1] + 4 * fld[1][1] + fld[2][1]) * dS / 6.;
2303 sz = c * (fld[0][2] + 4 * fld[1][2] + fld[2][2]) * dS / 6.;
2305 ssx = c * (fld[0][0] + 2 * fld[1][0]) * dS * dS / 6.;
2306 ssy = c * (fld[0][1] + 2 * fld[1][1]) * dS * dS / 6.;
2307 ssz = c * (fld[0][2] + 2 * fld[1][2]) * dS * dS / 6.;
2309 fvec c2[3][3] = {{5, -4, -1}, {44, 80, -4}, {11, 44, 5}};
2310 fvec cc2[3][3] = {{38, 8, -4}, {148, 208, -20}, {3, 36, 3}};
2313 syz += c2[
n][
m] * fld[
n][1] * fld[
m][2];
2314 ssyz += cc2[
n][
m] * fld[
n][1] * fld[
m][2];
2317 syz *= c * c * dS * dS / 360.;
2318 ssyz *= c * c * dS * dS * dS / 2520.;
2320 syy = c * (fld[0][1] + 4 * fld[1][1] + fld[2][1]) * dS;
2321 syyy = syy * syy * syy / 1296;
2322 syy = syy * syy / 72;
2324 ssyy = (fld[0][1] * (38 * fld[0][1] + 156 * fld[1][1] - fld[2][1])
2325 + fld[1][1] * (208 * fld[1][1] + 16 * fld[2][1]) + fld[2][1] * (3 * fld[2][1]))
2326 * dS * dS * dS * c * c / 2520.;
2328 * (fld[0][1] * (85 * fld[0][1] + 526 * fld[1][1] - 7 * fld[2][1])
2329 + fld[1][1] * (1376 * fld[1][1] + 84 * fld[2][1]) + fld[2][1] * (19 * fld[2][1]))
2330 + fld[1][1] * (fld[1][1] * (1376 * fld[1][1] + 256 * fld[2][1]) + fld[2][1] * (62 * fld[2][1]))
2331 + fld[2][1] * fld[2][1] * (3 * fld[2][1]))
2332 * dS * dS * dS * dS * c * c * c / 90720.;
2339 mJ[2] = ssyyy - ssy;
2350 P[0] =
fP[0] + mJ[0] * px + mJ[1] * py + mJ[2] * pz;
2351 P[1] =
fP[1] + mJ[3] * px + mJ[4] * py + mJ[5] * pz;
2352 P[2] =
fP[2] - mJ[2] * px - mJ[1] * py + mJ[0] * pz;
2353 P[3] = mJ[6] * px + mJ[7] * py + mJ[8] * pz;
2354 P[4] = mJ[9] * px + py + mJ[10] * pz;
2355 P[5] = -mJ[8] * px - mJ[7] * py + mJ[6] * pz;
2360 for (
int iC = 0; iC < 36; iC++)
2392 const fvec A00 =
S[0] +
S[6] * J[0] +
S[10] * J[1] +
S[15] * J[2];
2393 const fvec A10 =
S[1] +
S[7] * J[0] +
S[11] * J[1] +
S[16] * J[2];
2394 const fvec A20 =
S[3] +
S[8] * J[0] +
S[12] * J[1] +
S[17] * J[2];
2395 const fvec A30 =
S[6] +
S[9] * J[0] +
S[13] * J[1] +
S[18] * J[2];
2396 const fvec A40 =
S[10] +
S[13] * J[0] +
S[14] * J[1] +
S[19] * J[2];
2397 const fvec A50 =
S[15] +
S[18] * J[0] +
S[19] * J[1] +
S[20] * J[2];
2398 const fvec A60 =
S[21] +
S[24] * J[0] +
S[25] * J[1] +
S[26] * J[2];
2399 const fvec A70 =
S[28] +
S[31] * J[0] +
S[32] * J[1] +
S[33] * J[2];
2401 S[0] = A00 + J[0] * A30 + J[1] * A40 + J[2] * A50;
2402 S[1] = A10 + J[3] * A30 + J[4] * A40 + J[5] * A50;
2403 S[3] = A20 - J[2] * A30 - J[1] * A40 + J[0] * A50;
2404 S[6] = J[6] * A30 + J[7] * A40 + J[8] * A50;
2405 S[10] = J[9] * A30 + A40 + J[10] * A50;
2406 S[15] = -J[8] * A30 - J[7] * A40 + J[6] * A50;
2411 const fvec A11 =
S[2] +
S[7] * J[3] +
S[11] * J[4] +
S[16] * J[5];
2412 const fvec A21 =
S[4] +
S[8] * J[3] +
S[12] * J[4] +
S[17] * J[5];
2413 const fvec A31 =
S[7] +
S[9] * J[3] +
S[13] * J[4] +
S[18] * J[5];
2414 const fvec A41 =
S[11] +
S[13] * J[3] +
S[14] * J[4] +
S[19] * J[5];
2415 const fvec A51 =
S[16] +
S[18] * J[3] +
S[19] * J[4] +
S[20] * J[5];
2416 const fvec A61 =
S[22] +
S[24] * J[3] +
S[25] * J[4] +
S[26] * J[5];
2417 const fvec A71 =
S[29] +
S[31] * J[3] +
S[32] * J[4] +
S[33] * J[5];
2419 S[2] = A11 + J[3] * A31 + J[4] * A41 + J[5] * A51;
2420 S[4] = A21 - J[2] * A31 - J[1] * A41 + J[0] * A51;
2421 S[7] = J[6] * A31 + J[7] * A41 + J[8] * A51;
2422 S[11] = J[9] * A31 + A41 + J[10] * A51;
2423 S[16] = -J[8] * A31 - J[7] * A41 + J[6] * A51;
2429 const fvec A22 =
S[5] -
S[8] * J[2] -
S[12] * J[1] +
S[17] * J[0];
2430 const fvec A32 =
S[8] -
S[9] * J[2] -
S[13] * J[1] +
S[18] * J[0];
2431 const fvec A42 =
S[12] -
S[13] * J[2] -
S[14] * J[1] +
S[19] * J[0];
2432 const fvec A52 =
S[17] -
S[18] * J[2] -
S[19] * J[1] +
S[20] * J[0];
2433 const fvec A62 =
S[23] -
S[24] * J[2] -
S[25] * J[1] +
S[26] * J[0];
2434 const fvec A72 =
S[30] -
S[31] * J[2] -
S[32] * J[1] +
S[33] * J[0];
2436 S[5] = A22 - J[2] * A32 - J[1] * A42 + J[0] * A52;
2437 S[8] = J[6] * A32 + J[7] * A42 + J[8] * A52;
2438 S[12] = J[9] * A32 + A42 + J[10] * A52;
2439 S[17] = -J[8] * A32 - J[7] * A42 + J[6] * A52;
2446 const fvec A33 =
S[9] * J[6] +
S[13] * J[7] +
S[18] * J[8];
2447 const fvec A43 =
S[13] * J[6] +
S[14] * J[7] +
S[19] * J[8];
2448 const fvec A53 =
S[18] * J[6] +
S[19] * J[7] +
S[20] * J[8];
2449 const fvec A63 =
S[24] * J[6] +
S[25] * J[7] +
S[26] * J[8];
2450 const fvec A73 =
S[31] * J[6] +
S[32] * J[7] +
S[33] * J[8];
2455 const fvec A34 =
S[9] * J[9] +
S[13] +
S[18] * J[10];
2456 const fvec A44 =
S[13] * J[9] +
S[14] +
S[19] * J[10];
2457 const fvec A54 =
S[18] * J[9] +
S[19] +
S[20] * J[10];
2458 const fvec A64 =
S[24] * J[9] +
S[25] +
S[26] * J[10];
2459 const fvec A74 =
S[31] * J[9] +
S[32] +
S[33] * J[10];
2464 const fvec A35 = -
S[9] * J[8] -
S[13] * J[7] +
S[18] * J[6];
2465 const fvec A45 = -
S[13] * J[8] -
S[14] * J[7] +
S[19] * J[6];
2466 const fvec A55 = -
S[18] * J[8] -
S[19] * J[7] +
S[20] * J[6];
2467 const fvec A65 = -
S[24] * J[8] -
S[25] * J[7] +
S[26] * J[6];
2468 const fvec A75 = -
S[31] * J[8] -
S[32] * J[7] +
S[33] * J[6];
2470 S[9] = J[6] * A33 + J[7] * A43 + J[8] * A53;
2471 S[13] = J[9] * A33 + A43 + J[10] * A53;
2472 S[18] = -J[8] * A33 - J[7] * A43 + J[6] * A53;
2476 S[14] = J[9] * A34 + A44 + J[10] * A54;
2477 S[19] = -J[8] * A34 - J[7] * A44 + J[6] * A54;
2481 S[20] = -J[8] * A35 - J[7] * A45 + J[6] * A55;
2494 const fvec kCLight = 0.000299792458;
2495 b = b *
fQ * kCLight;
2500 const fvec kOvSqr6 = 1. /
sqrt(6.);
2501 const fvec LocalSmall = 1.e-10;
2503 sB =
if3(
fvec(LocalSmall <
fabs(bs)), (s / b), ((
One - bs * kOvSqr6) * (
One + bs * kOvSqr6) * t));
2504 cB =
if3(
fvec(LocalSmall <
fabs(bs)), ((
One - c) / b), (.5 * sB * bs));
2510 p[0] =
fP[0] + sB * px + cB * py;
2511 p[1] =
fP[1] - cB * px + sB * py;
2512 p[2] =
fP[2] + t * pz;
2513 p[3] = c * px + s * py;
2514 p[4] = -s * px + c * py;
2548 fvec c6 =
fC[6], c7 =
fC[7], c8 =
fC[8], c17 =
fC[17], c18 =
fC[18], c24 =
fC[24], c31 =
fC[31];
2550 fvec cBC13 = cB *
fC[13], mJC13 = c7 - cB *
fC[9] + sB *
fC[13], mJC14 =
fC[11] - cBC13 + sB *
fC[14],
2551 mJC23 = c8 + t * c18, mJC24 =
fC[12] + t *
fC[19], mJC33 = c *
fC[9] + s *
fC[13],
2552 mJC34 = c *
fC[13] + s *
fC[14], mJC43 = -s *
fC[9] + c *
fC[13], mJC44 = -s *
fC[13] + c *
fC[14];
2554 e[0] =
fC[0] + 2 * (sB * c6 + cB *
fC[10]) + (sB *
fC[9] + 2 * cBC13) * sB + cB * cB *
fC[14];
2555 e[1] =
fC[1] - cB * c6 + sB *
fC[10] + mJC13 * sB + mJC14 * cB;
2556 e[2] =
fC[2] - cB * c7 + sB *
fC[11] - mJC13 * cB + mJC14 * sB;
2557 e[3] =
fC[3] + t *
fC[15] + mJC23 * sB + mJC24 * cB;
2558 e[4] =
fC[4] + t *
fC[16] - mJC23 * cB + mJC24 * sB;
2560 e[15] =
fC[15] + c18 * sB +
fC[19] * cB;
2561 e[16] =
fC[16] - c18 * cB +
fC[19] * sB;
2562 e[17] = c17 +
fC[20] * t;
2563 e[18] = c18 * c +
fC[19] * s;
2564 e[19] = -c18 * s +
fC[19] * c;
2566 e[5] =
fC[5] + (c17 + e[17]) * t;
2568 e[6] = c * c6 + s *
fC[10] + mJC33 * sB + mJC34 * cB;
2569 e[7] = c * c7 + s *
fC[11] - mJC33 * cB + mJC34 * sB;
2570 e[8] = c * c8 + s *
fC[12] + e[18] * t;
2571 e[9] = mJC33 * c + mJC34 * s;
2572 e[10] = -s * c6 + c *
fC[10] + mJC43 * sB + mJC44 * cB;
2574 e[11] = -s * c7 + c *
fC[11] - mJC43 * cB + mJC44 * sB;
2575 e[12] = -s * c8 + c *
fC[12] + e[19] * t;
2576 e[13] = mJC43 * c + mJC44 * s;
2577 e[14] = -mJC43 * s + mJC44 * c;
2579 e[21] =
fC[21] +
fC[25] * cB + c24 * sB;
2580 e[22] =
fC[22] - c24 * cB +
fC[25] * sB;
2581 e[23] =
fC[23] +
fC[26] * t;
2582 e[24] = c * c24 + s *
fC[25];
2583 e[25] = c *
fC[25] - c24 * s;
2586 e[28] =
fC[28] +
fC[32] * cB + c31 * sB;
2587 e[29] =
fC[29] - c31 * cB +
fC[32] * sB;
2588 e[30] =
fC[30] +
fC[33] * t;
2589 e[31] = c * c31 + s *
fC[32];
2590 e[32] = c *
fC[32] - s * c31;
2609 fvec d[3] = {vtx[0] - mP[0], vtx[1] - mP[1], vtx[2] - mP[2]};
2610 return sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
2619 fvec mP[8], mC[36], mP1[8], mC1[36];
2622 fvec dx = mP[0] - mP1[0];
2623 fvec dy = mP[1] - mP1[1];
2624 fvec dz = mP[2] - mP1[2];
2625 return sqrt(dx * dx + dy * dy + dz * dz);
2645 fvec d[3] = {
v[0] - mP[0],
v[1] - mP[1],
v[2] - mP[2]};
2648 .1 + 10. *
sqrt((d[0] * d[0] + d[1] * d[1] + d[2] * d[2]) / (mP[3] * mP[3] + mP[4] * mP[4] + mP[5] * mP[5]));
2650 fvec h[3] = {mP[3] * sigmaS, mP[4] * sigmaS, mP[5] * sigmaS};
2652 fvec mSi[6] = {mC[0] + h[0] * h[0], mC[1] + h[1] * h[0], mC[2] + h[1] * h[1],
2653 mC[3] + h[2] * h[0], mC[4] + h[2] * h[1], mC[5] + h[2] * h[2]};
2666 mS[0] = mSi[2] * mSi[5] - mSi[4] * mSi[4];
2667 mS[1] = mSi[3] * mSi[4] - mSi[1] * mSi[5];
2668 mS[2] = mSi[0] * mSi[5] - mSi[3] * mSi[3];
2669 mS[3] = mSi[1] * mSi[4] - mSi[2] * mSi[3];
2670 mS[4] = mSi[1] * mSi[3] - mSi[0] * mSi[4];
2671 mS[5] = mSi[0] * mSi[2] - mSi[1] * mSi[1];
2673 fvec s = (mSi[0] * mS[0] + mSi[1] * mS[1] + mSi[3] * mS[3]);
2677 * ((mS[0] * d[0] + mS[1] * d[1] + mS[3] * d[2]) * d[0]
2678 + (mS[1] * d[0] + mS[2] * d[1] + mS[4] * d[2]) * d[1]
2679 + (mS[3] * d[0] + mS[4] * d[1] + mS[5] * d[2]) * d[2]))
2689 fvec mP1[8], mC1[36];
2692 fvec d[3] = {
fP[0] - mP1[0],
fP[1] - mP1[1],
fP[2] - mP1[2]};
2696 + 10. *
sqrt((d[0] * d[0] + d[1] * d[1] + d[2] * d[2]) / (mP1[3] * mP1[3] + mP1[4] * mP1[4] + mP1[5] * mP1[5]));
2698 fvec h[3] = {mP1[3] * sigmaS, mP1[4] * sigmaS, mP1[5] * sigmaS};
2700 mC1[0] += h[0] * h[0];
2701 mC1[1] += h[1] * h[0];
2702 mC1[2] += h[1] * h[1];
2703 mC1[3] += h[2] * h[0];
2704 mC1[4] += h[2] * h[1];
2705 mC1[5] += h[2] * h[2];
2736 fvec mSi[6] = {mV[0] - Vtx.
fC[0], mV[1] - Vtx.
fC[1], mV[2] - Vtx.
fC[2],
2737 mV[3] - Vtx.
fC[3], mV[4] - Vtx.
fC[4], mV[5] - Vtx.
fC[5]};
2739 mS[0] = mSi[2] * mSi[5] - mSi[4] * mSi[4];
2740 mS[1] = mSi[3] * mSi[4] - mSi[1] * mSi[5];
2741 mS[2] = mSi[0] * mSi[5] - mSi[3] * mSi[3];
2742 mS[3] = mSi[1] * mSi[4] - mSi[2] * mSi[3];
2743 mS[4] = mSi[1] * mSi[3] - mSi[0] * mSi[4];
2744 mS[5] = mSi[0] * mSi[2] - mSi[1] * mSi[1];
2746 fvec s = (mSi[0] * mS[0] + mSi[1] * mS[1] + mSi[3] * mS[3]);
2758 fvec zeta[3] = {
m[0] - Vtx.
fP[0],
m[1] - Vtx.
fP[1],
m[2] - Vtx.
fP[2]};
2762 fvec mCHt0[3], mCHt1[3], mCHt2[3];
2764 mCHt0[0] = Vtx.
fC[0];
2765 mCHt1[0] = Vtx.
fC[1];
2766 mCHt2[0] = Vtx.
fC[3];
2767 mCHt0[1] = Vtx.
fC[1];
2768 mCHt1[1] = Vtx.
fC[2];
2769 mCHt2[1] = Vtx.
fC[4];
2770 mCHt0[2] = Vtx.
fC[3];
2771 mCHt1[2] = Vtx.
fC[4];
2772 mCHt2[2] = Vtx.
fC[5];
2776 fvec k0[3], k1[3], k2[3];
2779 k0[
i] = mCHt0[
i] * mS[0] + mCHt1[
i] * mS[1] + mCHt2[
i] * mS[3];
2780 k1[
i] = mCHt0[
i] * mS[1] + mCHt1[
i] * mS[2] + mCHt2[
i] * mS[4];
2781 k2[
i] = mCHt0[
i] * mS[3] + mCHt1[
i] * mS[4] + mCHt2[
i] * mS[5];
2786 fvec dChi2 = -(mS[0] * zeta[0] + mS[1] * zeta[1] + mS[3] * zeta[2]) * zeta[0]
2787 - (mS[1] * zeta[0] + mS[2] * zeta[1] + mS[4] * zeta[2]) * zeta[1]
2788 - (mS[3] * zeta[0] + mS[4] * zeta[1] + mS[5] * zeta[2]) * zeta[2];
2794 Vtx.
fP[
i] -= (mask & (k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2]));
2797 for (
Int_t i = 0, k = 0;
i < 3; ++
i) {
2798 for (
Int_t j = 0; j <=
i; ++j, ++k)
2799 Vtx.
fC[k] += (mask & (k0[
i] * mCHt0[j] + k1[
i] * mCHt1[j] + k2[
i] * mCHt2[j]));
2805 Vtx.
fChi2 += (mask & dChi2);
2821 fvec mS[6] = {mV[0] - Vtx.
fC[0], mV[1] - Vtx.
fC[1], mV[2] - Vtx.
fC[2],
2822 mV[3] - Vtx.
fC[3], mV[4] - Vtx.
fC[4], mV[5] - Vtx.
fC[5]};
2827 fvec zeta[3] = {
m[0] - Vtx.
fP[0],
m[1] - Vtx.
fP[1],
m[2] - Vtx.
fP[2]};
2831 fvec mCHt0[7], mCHt1[7], mCHt2[7];
2842 mCHt0[3] = Vtx.
fC[6] - mV[6];
2843 mCHt1[3] = Vtx.
fC[7] - mV[7];
2844 mCHt2[3] = Vtx.
fC[8] - mV[8];
2845 mCHt0[4] = Vtx.
fC[10] - mV[10];
2846 mCHt1[4] = Vtx.
fC[11] - mV[11];
2847 mCHt2[4] = Vtx.
fC[12] - mV[12];
2848 mCHt0[5] = Vtx.
fC[15] - mV[15];
2849 mCHt1[5] = Vtx.
fC[16] - mV[16];
2850 mCHt2[5] = Vtx.
fC[17] - mV[17];
2851 mCHt0[6] = Vtx.
fC[21] - mV[21];
2852 mCHt1[6] = Vtx.
fC[22] - mV[22];
2853 mCHt2[6] = Vtx.
fC[23] - mV[23];
2857 fvec k0[7], k1[7], k2[7];
2860 k0[
i] = mCHt0[
i] * mS[0] + mCHt1[
i] * mS[1] + mCHt2[
i] * mS[3];
2861 k1[
i] = mCHt0[
i] * mS[1] + mCHt1[
i] * mS[2] + mCHt2[
i] * mS[4];
2862 k2[
i] = mCHt0[
i] * mS[3] + mCHt1[
i] * mS[4] + mCHt2[
i] * mS[5];
2873 Vtx.
fC[13] -= mV[13];
2874 Vtx.
fC[14] -= mV[14];
2875 Vtx.
fC[18] -= mV[18];
2876 Vtx.
fC[19] -= mV[19];
2877 Vtx.
fC[20] -= mV[20];
2878 Vtx.
fC[24] -= mV[24];
2879 Vtx.
fC[25] -= mV[25];
2880 Vtx.
fC[26] -= mV[26];
2881 Vtx.
fC[27] -= mV[27];
2886 Vtx.
fP[
i] =
m[
i] - (k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2]);
2888 Vtx.
fP[
i] = Vtx.
fP[
i] - (k0[
i] * zeta[0] + k1[
i] * zeta[1] + k2[
i] * zeta[2]);
2892 fvec ffC[28] = {-mV[0], -mV[1], -mV[2], -mV[3], -mV[4], -mV[5], mV[6],
2893 mV[7], mV[8], Vtx.
fC[9], mV[10], mV[11], mV[12], Vtx.
fC[13],
2894 Vtx.
fC[14], mV[15], mV[16], mV[17], Vtx.
fC[18], Vtx.
fC[19], Vtx.
fC[20],
2895 mV[21], mV[22], mV[23], Vtx.
fC[24], Vtx.
fC[25], Vtx.
fC[26], Vtx.
fC[27]};
2897 for (
Int_t i = 0, k = 0;
i < 7; ++
i) {
2898 for (
Int_t j = 0; j <=
i; ++j, ++k) {
2899 Vtx.
fC[k] = ffC[k] + (k0[
i] * mCHt0[j] + k1[
i] * mCHt1[j] + k2[
i] * mCHt2[j]);
2907 Vtx.
fChi2 -= ((mS[0] * zeta[0] + mS[1] * zeta[1] + mS[3] * zeta[2]) * zeta[0]
2908 + (mS[1] * zeta[0] + mS[2] * zeta[1] + mS[4] * zeta[2]) * zeta[1]
2909 + (mS[3] * zeta[0] + mS[4] * zeta[1] + mS[5] * zeta[2]) * zeta[2]);
2916 P[0] =
fP[0] + dS *
fP[3];
2917 P[1] =
fP[1] + dS *
fP[4];
2918 P[2] =
fP[2] + dS *
fP[5];
2932 C[0] =
fC[0] + dS * (
fC[6] + c6);
2933 C[2] =
fC[2] + dS * (
fC[11] + c11);
2934 C[5] =
fC[5] + dS * (
fC[17] + c17);
2936 C[7] =
fC[7] + sc13;
2937 C[8] =
fC[8] + sc18;
2940 C[12] =
fC[12] + sc19;
2942 C[1] =
fC[1] + dS * (
fC[10] + C[7]);
2943 C[3] =
fC[3] + dS * (
fC[15] + C[8]);
2944 C[4] =
fC[4] + dS * (
fC[16] + C[12]);
2947 C[10] =
fC[10] + sc13;
2952 C[15] =
fC[15] + sc18;
2953 C[16] =
fC[16] + sc19;
2959 C[21] =
fC[21] + dS *
fC[24];
2960 C[22] =
fC[22] + dS *
fC[25];
2961 C[23] =
fC[23] + dS *
fC[26];
2967 C[28] =
fC[28] + dS *
fC[31];
2968 C[29] =
fC[29] + dS *
fC[32];
2969 C[30] =
fC[30] + dS *
fC[33];
2998 fP[0] = .5 * (
fP[0] +
m[0]);
2999 fP[1] = .5 * (
fP[1] +
m[1]);
3000 fP[2] = .5 * (
fP[2] +
m[2]);
3007 fvec daughterP[2][8], daughterC[2][36];
3012 for (
int iter = 0; iter < nIter; iter++) {
3032 for (
int id = 0;
id < 2;
id++) {
3034 fvec* p = daughterP[id];
3035 fvec* mC = daughterC[id];
3044 mB[0][0] = mC[6] * mAi[0] + mC[7] * mAi[1] + mC[8] * mAi[3];
3045 mB[0][1] = mC[6] * mAi[1] + mC[7] * mAi[2] + mC[8] * mAi[4];
3046 mB[0][2] = mC[6] * mAi[3] + mC[7] * mAi[4] + mC[8] * mAi[5];
3048 mB[1][0] = mC[10] * mAi[0] + mC[11] * mAi[1] + mC[12] * mAi[3];
3049 mB[1][1] = mC[10] * mAi[1] + mC[11] * mAi[2] + mC[12] * mAi[4];
3050 mB[1][2] = mC[10] * mAi[3] + mC[11] * mAi[4] + mC[12] * mAi[5];
3052 mB[2][0] = mC[15] * mAi[0] + mC[16] * mAi[1] + mC[17] * mAi[3];
3053 mB[2][1] = mC[15] * mAi[1] + mC[16] * mAi[2] + mC[17] * mAi[4];
3054 mB[2][2] = mC[15] * mAi[3] + mC[16] * mAi[4] + mC[17] * mAi[5];
3056 fvec z[3] = {v0[0] - p[0], v0[1] - p[1], v0[2] - p[2]};
3058 vtxMom[id][0] = p[3] + mB[0][0] * z[0] + mB[0][1] * z[1] + mB[0][2] * z[2];
3059 vtxMom[id][1] = p[4] + mB[1][0] * z[0] + mB[1][1] * z[1] + mB[1][2] * z[2];
3060 vtxMom[id][2] = p[5] + mB[2][0] * z[0] + mB[2][1] * z[1] + mB[2][2] * z[2];
3070 fvec mpx0 = vtxMom[0][0] + vtxMom[1][0];
3071 fvec mpy0 = vtxMom[0][1] + vtxMom[1][1];
3072 fvec mpt0 =
sqrt(mpx0 * mpx0 + mpy0 * mpy0);
3075 fvec ca0 = mpx0 / mpt0;
3076 fvec sa0 = mpy0 / mpt0;
3077 fvec r[3] = {v0[0], v0[1], v0[2]};
3078 fvec mC[3][3] = {{1000., 0, 0}, {0, 1000., 0}, {0, 0, 1000.}};
3081 for (
int id = 0;
id < 2;
id++) {
3082 const fvec kCLight = 0.000299792458;
3083 fvec q = Bz * daughters[id]->
GetQ() * kCLight;
3084 fvec px0 = vtxMom[id][0];
3085 fvec py0 = vtxMom[id][1];
3086 fvec pz0 = vtxMom[id][2];
3087 fvec pt0 =
sqrt(px0 * px0 + py0 * py0);
3088 fvec mG[3][6], mB[3], mH[3][3];
3100 mG[0][3] = -sa0 * px0 / pt0;
3101 mG[0][4] = 1 - sa0 * py0 / pt0;
3106 mB[0] = py0 - sa0 * pt0 - mG[0][3] * px0 - mG[0][4] * py0;
3113 mG[1][3] = -1 + ca0 * px0 / pt0;
3114 mG[1][4] = +ca0 * py0 / pt0;
3119 mB[1] = -px0 + ca0 * pt0 - mG[1][3] * px0 - mG[1][4] * py0;
3123 mG[2][0] = -pz0 * ca0;
3124 mG[2][1] = -pz0 * sa0;
3125 mG[2][2] = px0 * ca0 + py0 * sa0;
3130 mH[2][0] = mG[2][0];
3131 mH[2][1] = mG[2][1];
3132 mH[2][2] = mG[2][2];
3143 for (
int i = 0;
i < 3;
i++) {
3145 for (
int k = 0; k < 6; k++)
3146 m[
i] += mG[
i][k] * daughterP[
id][k];
3148 for (
int i = 0;
i < 3;
i++) {
3149 for (
int j = 0; j < 6; j++) {
3151 for (
int k = 0; k < 6; k++)
3152 mGV[
i][j] += mG[
i][k] * daughterC[
id][
IJ(k, j)];
3155 for (
int i = 0, k = 0;
i < 3;
i++) {
3156 for (
int j = 0; j <=
i; j++, k++) {
3158 for (
int l = 0; l < 6; l++)
3159 mV[k] += mGV[
i][l] * mG[j][l];
3168 for (
int i = 0;
i < 3;
i++) {
3170 for (
int k = 0; k < 3; k++)
3171 mHr[
i] += mH[
i][k] * r[k];
3174 for (
int i = 0;
i < 3;
i++) {
3175 for (
int j = 0; j < 3; j++) {
3177 for (
int k = 0; k < 3; k++)
3178 mCHt[
i][j] += mC[
i][k] * mH[j][k];
3182 for (
int i = 0, k = 0;
i < 3;
i++) {
3183 for (
int j = 0; j <=
i; j++, k++) {
3185 for (
int l = 0; l < 3; l++)
3186 mHCHt[k] += mH[
i][l] * mCHt[l][j];
3190 fvec mS[6] = {mHCHt[0] + mV[0], mHCHt[1] + mV[1], mHCHt[2] + mV[2],
3191 mHCHt[3] + mV[3], mHCHt[4] + mV[4], mHCHt[5] + mV[5]};
3197 fvec zeta[3] = {
m[0] - mHr[0],
m[1] - mHr[1],
m[2] - mHr[2]};
3204 k[
i][0] = mCHt[
i][0] * mS[0] + mCHt[
i][1] * mS[1] + mCHt[
i][2] * mS[3];
3205 k[
i][1] = mCHt[
i][0] * mS[1] + mCHt[
i][1] * mS[2] + mCHt[
i][2] * mS[4];
3206 k[
i][2] = mCHt[
i][0] * mS[3] + mCHt[
i][1] * mS[4] + mCHt[
i][2] * mS[5];
3212 r[
i] = r[
i] + k[
i][0] * zeta[0] + k[
i][1] * zeta[1] + k[
i][2] * zeta[2];
3217 for (
Int_t j = 0; j <=
i; ++j) {
3218 mC[
i][j] = mC[
i][j] - (k[
i][0] * mCHt[j][0] + k[
i][1] * mCHt[j][1] + k[
i][2] * mCHt[j][2]);
3219 mC[j][
i] = mC[
i][j];
3225 chi2 += ((mS[0] * zeta[0] + mS[1] * zeta[1] + mS[3] * zeta[2]) * zeta[0]
3226 + (mS[1] * zeta[0] + mS[2] * zeta[1] + mS[4] * zeta[2]) * zeta[1]
3227 + (mS[3] * zeta[0] + mS[4] * zeta[1] + mS[5] * zeta[2]) * zeta[2]);
3234 for (
int i = 0;
i < 3;
i++)
3236 for (
int i = 0, k = 0;
i < 3;
i++) {
3237 for (
int j = 0; j <=
i; j++, k++) {
3256 for (
int id = 0;
id < 2;
id++) {
3258 fvec* p = daughterP[id];
3259 fvec* mC = daughterC[id];
3269 mB[0][0] = mC[6] * mAi[0] + mC[7] * mAi[1] + mC[8] * mAi[3];
3270 mB[0][1] = mC[6] * mAi[1] + mC[7] * mAi[2] + mC[8] * mAi[4];
3271 mB[0][2] = mC[6] * mAi[3] + mC[7] * mAi[4] + mC[8] * mAi[5];
3273 mB[1][0] = mC[10] * mAi[0] + mC[11] * mAi[1] + mC[12] * mAi[3];
3274 mB[1][1] = mC[10] * mAi[1] + mC[11] * mAi[2] + mC[12] * mAi[4];
3275 mB[1][2] = mC[10] * mAi[3] + mC[11] * mAi[4] + mC[12] * mAi[5];
3277 mB[2][0] = mC[15] * mAi[0] + mC[16] * mAi[1] + mC[17] * mAi[3];
3278 mB[2][1] = mC[15] * mAi[1] + mC[16] * mAi[2] + mC[17] * mAi[4];
3279 mB[2][2] = mC[15] * mAi[3] + mC[16] * mAi[4] + mC[17] * mAi[5];
3281 mB[3][0] = mC[21] * mAi[0] + mC[22] * mAi[1] + mC[23] * mAi[3];
3282 mB[3][1] = mC[21] * mAi[1] + mC[22] * mAi[2] + mC[23] * mAi[4];
3283 mB[3][2] = mC[21] * mAi[3] + mC[22] * mAi[4] + mC[23] * mAi[5];
3285 fvec z[3] = {
m[0] - p[0],
m[1] - p[1],
m[2] - p[2]};
3303 fP[3] += p[3] + mB[0][0] * z[0] + mB[0][1] * z[1] + mB[0][2] * z[2];
3304 fP[4] += p[4] + mB[1][0] * z[0] + mB[1][1] * z[1] + mB[1][2] * z[2];
3305 fP[5] += p[5] + mB[2][0] * z[0] + mB[2][1] * z[1] + mB[2][2] * z[2];
3306 fP[6] += p[6] + mB[3][0] * z[0] + mB[3][1] * z[1] + mB[3][2] * z[2];
3310 d0 = mB[0][0] * mV[0] + mB[0][1] * mV[1] + mB[0][2] * mV[3] - mC[6];
3311 d1 = mB[0][0] * mV[1] + mB[0][1] * mV[2] + mB[0][2] * mV[4] - mC[7];
3312 d2 = mB[0][0] * mV[3] + mB[0][1] * mV[4] + mB[0][2] * mV[5] - mC[8];
3317 fC[9] += mC[9] + d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
3319 d0 = mB[1][0] * mV[0] + mB[1][1] * mV[1] + mB[1][2] * mV[3] - mC[10];
3320 d1 = mB[1][0] * mV[1] + mB[1][1] * mV[2] + mB[1][2] * mV[4] - mC[11];
3321 d2 = mB[1][0] * mV[3] + mB[1][1] * mV[4] + mB[1][2] * mV[5] - mC[12];
3326 fC[13] += mC[13] + d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
3327 fC[14] += mC[14] + d0 * mB[1][0] + d1 * mB[1][1] + d2 * mB[1][2];
3329 d0 = mB[2][0] * mV[0] + mB[2][1] * mV[1] + mB[2][2] * mV[3] - mC[15];
3330 d1 = mB[2][0] * mV[1] + mB[2][1] * mV[2] + mB[2][2] * mV[4] - mC[16];
3331 d2 = mB[2][0] * mV[3] + mB[2][1] * mV[4] + mB[2][2] * mV[5] - mC[17];
3336 fC[18] += mC[18] + d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
3337 fC[19] += mC[19] + d0 * mB[1][0] + d1 * mB[1][1] + d2 * mB[1][2];
3338 fC[20] += mC[20] + d0 * mB[2][0] + d1 * mB[2][1] + d2 * mB[2][2];
3340 d0 = mB[3][0] * mV[0] + mB[3][1] * mV[1] + mB[3][2] * mV[3] - mC[21];
3341 d1 = mB[3][0] * mV[1] + mB[3][1] * mV[2] + mB[3][2] * mV[4] - mC[22];
3342 d2 = mB[3][0] * mV[3] + mB[3][1] * mV[4] + mB[3][2] * mV[5] - mC[23];
3347 fC[24] += mC[24] + d0 * mB[0][0] + d1 * mB[0][1] + d2 * mB[0][2];
3348 fC[25] += mC[25] + d0 * mB[1][0] + d1 * mB[1][1] + d2 * mB[1][2];
3349 fC[26] += mC[26] + d0 * mB[2][0] + d1 * mB[2][1] + d2 * mB[2][2];
3350 fC[27] += mC[27] + d0 * mB[3][0] + d1 * mB[3][1] + d2 * mB[3][2];
3371 fvec alpha = 0., qt = 0.;
3375 fvec sp =
sqrt(spx * spx + spy * spy + spz * spz);
3377 fvec pn, pp, pln, plp;
3383 pln = (negative.
GetPx() * spx + negative.
GetPy() * spy + negative.
GetPz() * spz) / sp;
3384 plp = (positive.
GetPx() * spx + positive.
GetPy() * spy + positive.
GetPz() * spz) / sp;
3387 fvec ptm = (1. - ((pln / pn) * (pln / pn)));
3389 alpha = (plp - pln) / (plp + pln);
3391 QtAlfa[0] =
fvec(qt & mask);
3392 QtAlfa[1] =
fvec(alpha & mask);
3413 for (
Int_t j = 0; j < 8; j++) {
3417 for (
int i = 0;
i < 8;
i++) {
3434 for (
Int_t k = 0; k < 8; k++) {
3435 mAp[
i] += mA[
i][k] *
fP[k];
3444 for (
Int_t j = 0; j < 8; j++) {
3446 for (
Int_t k = 0; k < 8; k++) {
3453 for (
Int_t j = 0; j <=
i; j++) {
3455 for (
Int_t k = 0; k < 8; k++) {
3456 xx += mAC[
i][k] * mA[j][k];
3462 X() =
GetX() + Vtx[0];
3463 Y() =
GetY() + Vtx[1];
3464 Z() =
GetZ() + Vtx[2];
3472 fvec a0 = A[0], a1 = A[1], a2 = A[2], a3 = A[3];
3474 Ai[0] = a2 * A[5] - A[4] * A[4];
3475 Ai[1] = a3 * A[4] - a1 * A[5];
3476 Ai[3] = a1 * A[4] - a2 * a3;
3477 fvec det = (a0 * Ai[0] + a1 * Ai[1] + a3 * Ai[3]);
3479 fvec idet = 1. / det;
3487 Ai[2] = (a0 * A[5] - a3 * a3) * det;
3488 Ai[4] = (a1 * a3 - a0 * A[4]) * det;
3489 Ai[5] = (a0 * a2 - a1 * a1) * det;
3495 fvec d[3], uud, u[3][3];
3496 for (
int i = 0;
i < 3;
i++) {
3498 for (
int j = 0; j < 3; j++)
3502 for (
int i = 0;
i < 3;
i++) {
3504 for (
int j = 0; j <
i; j++)
3505 uud += u[j][
i] * u[j][
i] * d[j];
3506 uud = a[
i * (
i + 3) / 2] - uud;
3508 fvec smallval = 1.e-12f;
3510 uud = ((!initialised) & uud) + (smallval & initialised);
3512 d[
i] = uud /
fabs(uud);
3515 for (
int j =
i + 1; j < 3; j++) {
3517 for (
int k = 0; k <
i; k++)
3518 uud += u[k][
i] * u[k][j] * d[k];
3519 uud = a[j * (j + 1) / 2 +
i] - uud;
3520 u[
i][j] = d[
i] / u[
i][
i] * uud;
3526 for (
int i = 0;
i < 3;
i++) {
3530 for (
int i = 0;
i < 2;
i++) {
3531 u[
i][
i + 1] = -u[
i][
i + 1] * u[
i][
i] * u[
i + 1][
i + 1];
3533 for (
int i = 0;
i < 1;
i++) {
3534 u[
i][
i + 2] = u[
i][
i + 1] * u1[
i + 1] * u[
i + 1][
i + 2] - u[
i][
i + 2] * u[
i][
i] * u[
i + 2][
i + 2];
3537 for (
int i = 0;
i < 3;
i++)
3538 a[
i + 3] = u[
i][2] * u[2][2] * d[2];
3539 for (
int i = 0;
i < 2;
i++)
3540 a[
i + 1] = u[
i][1] * u[1][1] * d[1] + u[
i][2] * u[1][2] * d[2];
3541 a[0] = u[0][0] * u[0][0] * d[0] + u[0][1] * u[0][1] * d[1] + u[0][2] * u[0][2] * d[2];
3551 for (
Int_t i = 0, ij = 0;
i < kN;
i++) {
3552 for (
Int_t j = 0; j < kN; j++, ++ij) {
3554 for (
Int_t k = 0; k < kN; ++k)
3555 mA[ij] +=
S[(k <=
i) ?
i * (
i + 1) / 2 + k : k * (k + 1) / 2 +
i] *
Q[j * kN + k];
3560 for (
Int_t j = 0; j <=
i; j++) {
3561 Int_t ij = (j <=
i) ?
i * (
i + 1) / 2 + j : j * (j + 1) / 2 +
i;
3563 for (
Int_t k = 0; k < kN; k++)
3564 SOut[ij] +=
Q[
i * kN + k] * mA[k * kN + j];
friend F32vec4 fabs(const F32vec4 &a)
void GetDStoParticleBz(fvec Bz, const KFParticleBaseSIMD &p, fvec &dS, fvec &dS1) const
static void InvertCholetsky3(fvec a[6])
void TransportToProductionVertex()
static fvec InvertSym3(const fvec A[], fvec Ainv[])
void AddDaughterWithEnergyFitMC(const KFParticleBaseSIMD &Daughter, Bool_t isAtVtxGuess)
virtual void GetFieldValue(const fvec xyz[], fvec B[]) const =0
void TransportToDecayVertex()
void SubtractFromParticle(KFParticleBaseSIMD &Vtx) const
fvec & Covariance(Int_t i)
void ConstructGammaBz(const KFParticleBaseSIMD &daughter1, const KFParticleBaseSIMD &daughter2, fvec Bz)
void TransportLine(fvec S, fvec P[], fvec C[]) const
fvec GetDeviationFromParticle(const KFParticleBaseSIMD &p) const
void GetDistanceToVertexLine(const KFParticleBaseSIMD &Vertex, fvec &l, fvec &dl, fvec *isParticleFromVertex=0) const
static Int_t IJ(Int_t i, Int_t j)
void GetMeasurement(const fvec XYZ[], fvec m[], fvec V[], Bool_t isAtVtxGuess=0) const
fvec GetDistanceFromParticle(const KFParticleBaseSIMD &p) const
void SetNDaughters(int n)
void operator+=(const KFParticleBaseSIMD &Daughter)
std::vector< fvec > fDaughterIds
fvec GetDStoPointBy(fvec By, const fvec xyz[]) const
fvec GetMomentum(fvec &P, fvec &SigmaP) const
void Convert(bool ToProduction)
void SetMassConstraint(fvec Mass, fvec SigmaMass=0)
fvec GetR(fvec &R, fvec &SigmaR) const
void AddDaughter(const KFParticleBaseSIMD &Daughter, Bool_t isAtVtxGuess=0)
void AddDaughterWithEnergyFit(const KFParticleBaseSIMD &Daughter, Bool_t isAtVtxGuess)
virtual fvec GetDStoPoint(const fvec xyz[]) const =0
Bool_t fAtProductionVertex
fvec GetSCorrection(const fvec Part[], const fvec XYZ[]) const
fvec GetDistanceFromVertex(const fvec vtx[]) const
void TransportCBM(fvec dS, fvec P[], fvec C[]) const
fvec GetDecayLength(fvec &L, fvec &SigmaL) const
void GetDStoParticleLine(const KFParticleBaseSIMD &p, fvec &dS, fvec &dS1) const
fvec GetDecayLengthXY(fvec &L, fvec &SigmaL) const
void RotateXY(fvec angle, fvec Vtx[3])
void SetVtxGuess(fvec x, fvec y, fvec z)
static void multQSQt1(const fvec J[11], fvec S[])
void SetNonlinearMassConstraint(fvec Mass)
virtual void GetDStoParticle(const KFParticleBaseSIMD &p, fvec &DS, fvec &DSp) const =0
fvec GetCovariance(Int_t i) const
fvec GetDeviationFromVertex(const fvec v[], const fvec Cv[]=0) const
virtual void Transport(fvec dS, fvec P[], fvec C[]) const =0
fvec GetLifeTime(fvec &T, fvec &SigmaT) const
void GetDStoParticleCBM(const KFParticleBaseSIMD &p, fvec &dS, fvec &dS1) const
fvec GetDStoPointCBM(const fvec xyz[]) const
fvec GetDStoPointBz(fvec Bz, const fvec xyz[]) const
void SetVtxErrGuess(fvec &x, fvec &y, fvec &z)
void GetDStoParticleBy(fvec B, const KFParticleBaseSIMD &p, fvec &dS, fvec &dS1) const
void SetProductionVertex(const KFParticleBaseSIMD &Vtx)
void Construct(const KFParticleBaseSIMD *vDaughters[], Int_t nDaughters, const KFParticleBaseSIMD *ProdVtx=0, Float_t Mass=-1, Bool_t IsConstrained=0, Bool_t isAtVtxGuess=0)
void AddDaughterWithEnergyCalc(const KFParticleBaseSIMD &Daughter, Bool_t isAtVtxGuess)
fvec GetPt(fvec &Pt, fvec &SigmaPt) const
void SubtractFromVertex(KFParticleBaseSIMD &Vtx) const
void TransportBz(fvec Bz, fvec dS, fvec P[], fvec C[]) const
fvec GetPhi(fvec &Phi, fvec &SigmaPhi) const
void TransportToDS(fvec dS)
fvec & Cij(Int_t i, Int_t j)
fvec GetEta(fvec &Eta, fvec &SigmaEta) const
fvec GetMass(fvec &M, fvec &SigmaM) const
static void MultQSQt(const fvec Q[], const fvec S[], fvec SOut[])
static void GetArmenterosPodolanski(KFParticleBaseSIMD &positive, KFParticleBaseSIMD &negative, fvec QtAlfa[2])
void AddDaughterId(fvec id)
RVec< PromoteType< T > > cos(const RVec< T > &v)
RVec< PromoteType< T > > log(const RVec< T > &v)
RVec< PromoteType< T > > sqrt(const RVec< T > &v)
RVec< PromoteTypes< T0, T1 > > atan2(const RVec< T0 > &v, const T1 &y)
RVec< PromoteType< T > > sin(const RVec< T > &v)
*brief user defined string literal for JSON values *sa std::size_t n
Double_t Sqrt(Double_t x)