@@ -482,6 +482,14 @@ class VarManager : public TObject
482482 kQ2X0A2 ,
483483 kQ2Y0A1 ,
484484 kQ2Y0A2 ,
485+ kQ2X0B1 ,
486+ kQ2X0B2 ,
487+ kQ2Y0B1 ,
488+ kQ2Y0B2 ,
489+ kQ2X0C1 ,
490+ kQ2X0C2 ,
491+ kQ2Y0C1 ,
492+ kQ2Y0C2 ,
485493 kU2Q2Ev1 ,
486494 kU2Q2Ev2 ,
487495 kCos2DeltaPhiEv1 ,
@@ -2898,13 +2906,33 @@ void VarManager::FillTwoMixEvents(T1 const& ev1, T1 const& ev2, T2 const& /*trac
28982906 values[kQ2X0A2 ] = ev2.q2x0a ();
28992907 values[kQ2Y0A1 ] = ev1.q2y0a ();
29002908 values[kQ2Y0A2 ] = ev2.q2y0a ();
2909+
2910+ values[kQ2X0B1 ] = ev1.q2x0b ();
2911+ values[kQ2X0B2 ] = ev2.q2x0b ();
2912+ values[kQ2Y0B1 ] = ev1.q2y0b ();
2913+ values[kQ2Y0B2 ] = ev2.q2y0b ();
2914+
2915+ values[kQ2X0C1 ] = ev1.q2x0c ();
2916+ values[kQ2X0C2 ] = ev2.q2x0c ();
2917+ values[kQ2Y0C1 ] = ev1.q2y0c ();
2918+ values[kQ2Y0C2 ] = ev2.q2y0c ();
29012919 }
29022920 if constexpr ((fillMap & CollisionQvect) > 0 ) {
29032921 // Tobe used for the calculation of u1q1 and u2q2
29042922 values[kQ2X0A1 ] = (ev1.qvecBPosRe () * ev1.nTrkBPos () + ev1.qvecBNegRe () * ev1.nTrkBNeg ()) / (ev1.nTrkBPos () + ev1.nTrkBNeg ());
29052923 values[kQ2X0A2 ] = (ev2.qvecBPosRe () * ev2.nTrkBPos () + ev2.qvecBNegRe () * ev2.nTrkBNeg ()) / (ev2.nTrkBPos () + ev2.nTrkBNeg ());
29062924 values[kQ2Y0A1 ] = (ev1.qvecBPosIm () * ev1.nTrkBPos () + ev1.qvecBNegIm () * ev1.nTrkBNeg ()) / (ev1.nTrkBPos () + ev1.nTrkBNeg ());
29072925 values[kQ2Y0A2 ] = (ev2.qvecBPosIm () * ev2.nTrkBPos () + ev2.qvecBNegIm () * ev2.nTrkBNeg ()) / (ev2.nTrkBPos () + ev2.nTrkBNeg ());
2926+
2927+ values[kQ2X0B1 ] = ev1.qvecFT0ARe ();
2928+ values[kQ2X0B2 ] = ev2.qvecFT0ARe ();
2929+ values[kQ2Y0B1 ] = ev1.qvecFT0AIm ();
2930+ values[kQ2Y0B2 ] = ev2.qvecFT0AIm ();
2931+
2932+ values[kQ2X0C1 ] = ev1.qvecFT0CRe ();
2933+ values[kQ2X0C2 ] = ev2.qvecFT0CRe ();
2934+ values[kQ2Y0C1 ] = ev1.qvecFT0CIm ();
2935+ values[kQ2Y0C2 ] = ev2.qvecFT0CIm ();
29082936 }
29092937}
29102938
@@ -4377,6 +4405,10 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values)
43774405 // Compute the scalar product UQ for two muon from different event using Q-vector from A, for second and third harmonic
43784406 float Psi2A1 = getEventPlane (2 , values[kQ2X0A1 ], values[kQ2Y0A1 ]);
43794407 float Psi2A2 = getEventPlane (2 , values[kQ2X0A2 ], values[kQ2Y0A2 ]);
4408+ float Psi2B1 = getEventPlane (2 , values[kQ2X0B1 ], values[kQ2Y0B1 ]);
4409+ float Psi2B2 = getEventPlane (2 , values[kQ2X0B2 ], values[kQ2Y0B2 ]);
4410+ float Psi2C1 = getEventPlane (2 , values[kQ2X0C1 ], values[kQ2Y0C1 ]);
4411+ float Psi2C2 = getEventPlane (2 , values[kQ2X0C2 ], values[kQ2Y0C2 ]);
43804412 values[kCos2DeltaPhi ] = TMath::Cos (2 * (v12.Phi () - Psi2A1)); // WARNING: using the first event EP
43814413 values[kCos2DeltaPhiEv1 ] = TMath::Cos (2 * (v1.Phi () - Psi2A1));
43824414 values[kCos2DeltaPhiEv2 ] = TMath::Cos (2 * (v2.Phi () - Psi2A2));
@@ -4407,6 +4439,39 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values)
44074439 values[kV24ME ] = (std::isnan (V22ME ) || std::isinf (V22ME ) || std::isnan (V24ME ) || std::isinf (V24ME )) ? 0 . : V24ME ;
44084440 values[kWV24ME ] = (std::isnan (V22ME ) || std::isinf (V22ME ) || std::isnan (V24ME ) || std::isinf (V24ME )) ? 0 . : 1.0 ;
44094441
4442+ // coherent Jpsi A2
4443+ bool useCoherentJpsiA2 = fgUsedVars[kA2EP_RP_TPC ] || fgUsedVars[kA2EP_RP_FT0A ] || fgUsedVars[kA2EP_RP_FT0C ];
4444+ if (useCoherentJpsiA2) {
4445+ ROOT ::Math::Boost boostv12{v12.BoostToCM ()};
4446+ ROOT ::Math::PtEtaPhiMVector v_daughter = boostv12 (t1.sign () > 0 ? v1 : v2);
4447+ float Psi2A = t1.sign () > 0 ? Psi2A1 : Psi2A2;
4448+ float Psi2B = t1.sign () > 0 ? Psi2B1 : Psi2B2;
4449+ float Psi2C = t1.sign () > 0 ? Psi2C1 : Psi2C2;
4450+
4451+ // reaction plane
4452+ float phi = v_daughter.Phi () > TMath::Pi () ? 2 . * TMath::Pi () - v_daughter.Phi () : v_daughter.Phi ();
4453+ values[kDeltaPhiRP_TPC ] = phi > Psi2A ? phi - Psi2A : Psi2A - phi;
4454+ values[kDeltaPhiRP_TPC ] = values[kDeltaPhiRP_TPC ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_TPC ] : values[kDeltaPhiRP_TPC ];
4455+ values[kDeltaPhiRP_FT0A ] = phi > Psi2B ? phi - Psi2B : Psi2B - phi;
4456+ values[kDeltaPhiRP_FT0A ] = values[kDeltaPhiRP_FT0A ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_FT0A ] : values[kDeltaPhiRP_FT0A ];
4457+ values[kDeltaPhiRP_FT0C ] = phi > Psi2C ? phi - Psi2C : Psi2C - phi;
4458+ values[kDeltaPhiRP_FT0C ] = values[kDeltaPhiRP_FT0C ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_FT0C ] : values[kDeltaPhiRP_FT0C ];
4459+ // fold delta phi to [0, pi/2]
4460+ values[kDeltaPhiRP_TPC ] = values[kDeltaPhiRP_TPC ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_TPC ] : values[kDeltaPhiRP_TPC ];
4461+ values[kDeltaPhiRP_FT0A ] = values[kDeltaPhiRP_FT0A ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_FT0A ] : values[kDeltaPhiRP_FT0A ];
4462+ values[kDeltaPhiRP_FT0C ] = values[kDeltaPhiRP_FT0C ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_FT0C ] : values[kDeltaPhiRP_FT0C ];
4463+ values[kCos2DeltaPhiRP_TPC ] = TMath::Cos (2 . * (phi - Psi2A));
4464+ values[kCos2DeltaPhiRP_FT0A ] = TMath::Cos (2 . * (phi - Psi2B));
4465+ values[kCos2DeltaPhiRP_FT0C ] = TMath::Cos (2 . * (phi - Psi2C));
4466+
4467+ float A2RP_TPC = values[kCos2DeltaPhiRP_TPC ] / values[kR2EP ];
4468+ float A2RP_FT0A = values[kCos2DeltaPhiRP_FT0A ] / values[kR2EP ];
4469+ float A2RP_FT0C = values[kCos2DeltaPhiRP_FT0C ] / values[kR2EP ];
4470+ values[kA2EP_RP_TPC ] = std::isnan (A2RP_TPC ) || std::isinf (A2RP_TPC ) ? -999 . : A2RP_TPC ;
4471+ values[kA2EP_RP_FT0A ] = std::isnan (A2RP_FT0A ) || std::isinf (A2RP_FT0A ) ? -999 . : A2RP_FT0A ;
4472+ values[kA2EP_RP_FT0C ] = std::isnan (A2RP_FT0C ) || std::isinf (A2RP_FT0C ) ? -999 . : A2RP_FT0C ;
4473+ }
4474+
44104475 if constexpr ((fillMap & ReducedEventQvectorExtra) > 0 ) {
44114476 std::complex <double > Q21 (values[kQ2X0A ] * values[kS11A ], values[kQ2Y0A ] * values[kS11A ]);
44124477 std::complex <double > Q42 (values[kQ42XA ], values[kQ42YA ]);
@@ -4458,6 +4523,38 @@ void VarManager::FillPairMEAcrossTFs(T const& t1, T const& t2, float* values)
44584523 values[kEta ] = v12.Eta ();
44594524 values[kPhi ] = v12.Phi () > 0 ? v12.Phi () : v12.Phi () + 2 . * M_PI ;
44604525 values[kRap ] = -v12.Rapidity ();
4526+
4527+ bool useCoherentJpsiA2 = fgUsedVars[kA2EP_RP_TPC ] || fgUsedVars[kA2EP_RP_FT0A ] || fgUsedVars[kA2EP_RP_FT0C ];
4528+ if (useCoherentJpsiA2) {
4529+ ROOT ::Math::Boost boostv12{v12.BoostToCM ()};
4530+ ROOT ::Math::PtEtaPhiMVector v_daughter = boostv12 (v1);
4531+ float Psi2A = values[kPsi2A ];
4532+ float Psi2B = values[kPsi2B ];
4533+ float Psi2C = values[kPsi2C ];
4534+
4535+ // reaction plane
4536+ float phi = v_daughter.Phi () > TMath::Pi () ? 2 . * TMath::Pi () - v_daughter.Phi () : v_daughter.Phi ();
4537+ values[kDeltaPhiRP_TPC ] = phi > Psi2A ? phi - Psi2A : Psi2A - phi;
4538+ values[kDeltaPhiRP_TPC ] = values[kDeltaPhiRP_TPC ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_TPC ] : values[kDeltaPhiRP_TPC ];
4539+ values[kDeltaPhiRP_FT0A ] = phi > Psi2B ? phi - Psi2B : Psi2B - phi;
4540+ values[kDeltaPhiRP_FT0A ] = values[kDeltaPhiRP_FT0A ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_FT0A ] : values[kDeltaPhiRP_FT0A ];
4541+ values[kDeltaPhiRP_FT0C ] = phi > Psi2C ? phi - Psi2C : Psi2C - phi;
4542+ values[kDeltaPhiRP_FT0C ] = values[kDeltaPhiRP_FT0C ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_FT0C ] : values[kDeltaPhiRP_FT0C ];
4543+ // fold delta phi to [0, pi/2]
4544+ values[kDeltaPhiRP_TPC ] = values[kDeltaPhiRP_TPC ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_TPC ] : values[kDeltaPhiRP_TPC ];
4545+ values[kDeltaPhiRP_FT0A ] = values[kDeltaPhiRP_FT0A ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_FT0A ] : values[kDeltaPhiRP_FT0A ];
4546+ values[kDeltaPhiRP_FT0C ] = values[kDeltaPhiRP_FT0C ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_FT0C ] : values[kDeltaPhiRP_FT0C ];
4547+ values[kCos2DeltaPhiRP_TPC ] = TMath::Cos (2 . * (phi - Psi2A));
4548+ values[kCos2DeltaPhiRP_FT0A ] = TMath::Cos (2 . * (phi - Psi2B));
4549+ values[kCos2DeltaPhiRP_FT0C ] = TMath::Cos (2 . * (phi - Psi2C));
4550+
4551+ float A2RP_TPC = values[kCos2DeltaPhiRP_TPC ] / values[kR2EP ];
4552+ float A2RP_FT0A = values[kCos2DeltaPhiRP_FT0A ] / values[kR2EP ];
4553+ float A2RP_FT0C = values[kCos2DeltaPhiRP_FT0C ] / values[kR2EP ];
4554+ values[kA2EP_RP_TPC ] = std::isnan (A2RP_TPC ) || std::isinf (A2RP_TPC ) ? -999 . : A2RP_TPC ;
4555+ values[kA2EP_RP_FT0A ] = std::isnan (A2RP_FT0A ) || std::isinf (A2RP_FT0A ) ? -999 . : A2RP_FT0A ;
4556+ values[kA2EP_RP_FT0C ] = std::isnan (A2RP_FT0C ) || std::isinf (A2RP_FT0C ) ? -999 . : A2RP_FT0C ;
4557+ }
44614558}
44624559
44634560template <int pairType, typename T1 , typename T2 >
0 commit comments