23 TwoTrackCut(1), fMap(nullptr), fPID1(211), fPID2(211), fFrame(0), fAbs(kTRUE), fM12(0), fM22(0) {
50 Double_t px1 = tr1.Px();
51 Double_t py1 = tr1.Py();
52 Double_t pz1 = tr1.Pz();
53 Double_t px2, py2, pz2;
55 case TwoTrack::kHemishpere:
60 case TwoTrack::kRotated:
71 Double_t e1 = TMath::Sqrt(fM12 + px1 * px1 + py1 * py1 + pz1 * pz1);
72 Double_t e2 = TMath::Sqrt(fM22 + px2 * px2 + py2 * py2 + pz2 * pz2);
75 Double_t tPx = px1 + px2;
76 Double_t tPy = py1 + py2;
77 Double_t tPz = pz1 + pz2;
78 Double_t tE = e1 + e2;
79 Double_t tPt = tPx * tPx + tPy * tPy;
80 Double_t tMt = tE * tE - tPz * tPz;
81 Double_t tM = TMath::Sqrt(tMt - tPt);
82 tMt = TMath::Sqrt(tMt);
83 tPt = TMath::Sqrt(tPt);
84 Double_t tBeta = tPz / tE;
85 Double_t tGamma = tE / tMt;
87 Double_t particle1lcms_pz = tGamma * (pz1 - tBeta * e1);
89 Double_t particle2lcms_pz = tGamma * (pz2 - tBeta * e2);
92 Double_t particle1lcms_px = (px1 * tPx + py1 * tPy) / tPt;
93 Double_t particle1lcms_py = (-px1 * tPy + py1 * tPx) / tPt;
95 Double_t particle2lcms_px = (px2 * tPx + py2 * tPy) / tPt;
96 Double_t particle2lcms_py = (-px2 * tPy + py2 * tPx) / tPt;
98 X = particle1lcms_px - particle2lcms_px;
99 Y = particle1lcms_py - particle2lcms_py;
100 Z = particle1lcms_pz - particle2lcms_pz;
104 Z = tGamma * (pz1 - tBeta * e1);
105 Double_t tE1L = tGamma * (e1 - tBeta * pz1);
106 X = (px1 * tPx + py1 * tPy) / tPt;
107 Y = (-px1 * tPy + py1 * tPx) / tPt;
108 X = tMt / tM * (X - tPt / tMt * tE1L);
115 Int_t binX = fMap->GetXaxis()->FindBin(X);
116 Int_t binY = fMap->GetYaxis()->FindBin(Y);
117 Int_t binZ = fMap->GetZaxis()->FindBin(Z);
118 SetValue(fMap->GetBinContent(binX, binY, binZ));
138 Bool_t TwoTrack3DCFCut::Init(Int_t ) {
139 if (fMap ==
nullptr)
return kFALSE;
140 TDatabasePDG* db = TDatabasePDG::Instance();
141 TParticlePDG* p1 = db->GetParticle(fPID1);
142 TParticlePDG* p2 = db->GetParticle(fPID2);
143 if (p1 ==
nullptr || p2 ==
nullptr)
return kFALSE;
144 fM12 = p1->Mass() * p1->Mass();
145 fM22 = p2->Mass() * p2->Mass();