25 vector<FairTrackParam> parInVPPos1;
26 vector<FairTrackParam> parInVPPos2;
27 vector<FairTrackParam> parInVPNeg;
28 vector<Double_t> m2Pos1_400;
29 vector<Double_t> m2Pos1_700;
30 vector<Double_t> m2Pos2_400;
31 vector<Double_t> m2Pos2_700;
32 vector<Double_t> chi2NDFPos1;
33 vector<Double_t> chi2NDFPos2;
34 vector<Double_t> chi2NDFNeg;
35 vector<Int_t> nHitsPos1;
36 vector<Int_t> nHitsPos2;
37 vector<Double_t> dedxPos1;
38 vector<Double_t> dedxPos2;
39 vector<Int_t> nGemHitsNeg;
40 vector<Int_t> nGemHitsPos1;
41 vector<Int_t> nGemHitsPos2;
42 vector<Int_t> nFsdHitsNeg;
43 vector<Int_t> nFsdHitsPos1;
44 vector<Int_t> nFsdHitsPos2;
74 if (
fKalman->TGeoTrackPropagate(&par, VPZ, pdg,
nullptr,
nullptr) ==
kBMNERROR)
90 parInVPNeg.push_back(par);
92 nGemHitsNeg.push_back(nGEM);
93 nFsdHitsNeg.push_back(nFSD);
98 if (m2Tof400 > 2 || m2Tof700 > 2) {
99 parInVPPos1.push_back(par);
101 m2Pos1_400.push_back(m2Tof400);
102 m2Pos1_700.push_back(m2Tof700);
105 dedxPos1.push_back(
GetdEdx(tr));
106 nGemHitsPos1.push_back(nGEM);
107 nFsdHitsPos1.push_back(nFSD);
112 parInVPPos2.push_back(par);
114 m2Pos2_400.push_back(m2Tof400);
115 m2Pos2_700.push_back(m2Tof700);
118 dedxPos2.push_back(
GetdEdx(tr));
119 nGemHitsPos2.push_back(nGEM);
120 nFsdHitsPos2.push_back(nFSD);
134 for (
Int_t j = 0; j < (
Int_t)parInVPPos2.size(); ++j) {
135 for (
Int_t k = 0; k < (
Int_t)parInVPNeg.size(); ++k) {
137 FairTrackParam VP1 = parInVPPos1[
i];
138 FairTrackParam VP2 = parInVPPos2[j];
139 FairTrackParam VP3 = parInVPNeg[k];
140 FairTrackParam V01 = parInVPPos1[
i];
141 FairTrackParam V02 = parInVPPos2[j];
142 FairTrackParam V03 = parInVPNeg[k];
167 Double_t dV0X1sq = V01.GetCovariance(0, 0);
168 Double_t dV0Y1sq = V01.GetCovariance(1, 1);
169 Double_t dV0X2sq = V02.GetCovariance(0, 0);
170 Double_t dV0Y2sq = V02.GetCovariance(1, 1);
171 Double_t dV0X3sq = V03.GetCovariance(0, 0);
172 Double_t dV0Y3sq = V03.GetCovariance(1, 1);
173 Double_t dVPX1sq = VP1.GetCovariance(0, 0);
174 Double_t dVPY1sq = VP1.GetCovariance(1, 1);
175 Double_t dVPX2sq = VP2.GetCovariance(0, 0);
176 Double_t dVPY2sq = VP2.GetCovariance(1, 1);
177 Double_t dVPX3sq = VP3.GetCovariance(0, 0);
178 Double_t dVPY3sq = VP3.GetCovariance(1, 1);
183 Double_t DCA123 = (DCA12 + DCA13 + DCA23) / 3.0;
186 1.0 / DCA12 *
Sqrt(
Sq(V0X2 - V0X1) * (dV0X1sq + dV0X2sq) +
Sq(V0Y2 - V0Y1) * (dV0Y1sq + dV0Y2sq));
188 1.0 / DCA13 *
Sqrt(
Sq(V0X3 - V0X1) * (dV0X1sq + dV0X3sq) +
Sq(V0Y3 - V0Y1) * (dV0Y1sq + dV0Y3sq));
190 1.0 / DCA23 *
Sqrt(
Sq(V0X3 - V0X2) * (dV0X2sq + dV0X3sq) +
Sq(V0Y3 - V0Y2) * (dV0Y2sq + dV0Y3sq));
195 1.0 / DCA1 *
Sqrt(
Sq(VPX1 - VPX) * (dVPX1sq + dVPXsq) +
Sq(VPY1 - VPY) * (dVPY1sq + dVPYsq));
198 1.0 / DCA2 *
Sqrt(
Sq(VPX2 - VPX) * (dVPX2sq + dVPXsq) +
Sq(VPY2 - VPY) * (dVPY2sq + dVPYsq));
201 1.0 / DCA3 *
Sqrt(
Sq(VPX3 - VPX) * (dVPX3sq + dVPXsq) +
Sq(VPY3 - VPY) * (dVPY3sq + dVPYsq));
203 Double_t V0X = (V0X1 + V0X2 + V0X3) / 3.0;
204 Double_t V0Y = (V0Y1 + V0Y2 + V0Y3) / 3.0;
213 partTriple.
SetChi2Triple(chi2NDFPos1[
i], chi2NDFPos2[j], chi2NDFNeg[k]);
229 vector<Int_t> nHits1 = {nFsdHitsPos1[
i], nGemHitsPos1[
i]};
230 vector<Int_t> nHits2 = {nFsdHitsPos2[j], nGemHitsPos2[j]};
231 vector<Int_t> nHits3 = {nFsdHitsNeg[k], nGemHitsNeg[k]};
235 Double_t Tx1, Ty1, Tx2, Ty2, Tx3, Ty3;
255 A1 = 1. /
Sqrt(Tx1 * Tx1 + Ty1 * Ty1 + 1);
256 lPos1.
SetXYZM(Tx1 * A1 * p1, Ty1 * A1 * p1, A1 * p1,
fMassD);
258 A2 = 1. /
Sqrt(Tx2 * Tx2 + Ty2 * Ty2 + 1);
259 lPos2.
SetXYZM(Tx2 * A2 * p2, Ty2 * A2 * p2, A2 * p2,
fMassP);
263 A3 = 1. /
Sqrt(Tx3 * Tx3 + Ty3 * Ty3 + 1);
279 Double_t PzPart0 = PzPart1 + PzPart2 + PzPart3;
280 Double_t PxPart0 = PzPart1 * Tx1 + PzPart2 * Tx2 + PzPart3 * Tx3;
281 Double_t PyPart0 = PzPart1 * Ty1 + PzPart2 * Ty2 + PzPart3 * Ty3;
283 Double_t TxPart0 = PxPart0 / PzPart0;
284 Double_t TyPart0 = PyPart0 / PzPart0;
286 Double_t xPart0 = TxPart0 * (VPZ - V0Z) + V0X;
287 Double_t yPart0 = TyPart0 * (VPZ - V0Z) + V0Y;