@@ -479,6 +479,14 @@ class VarManager : public TObject
479479 kQ2X0A2 ,
480480 kQ2Y0A1 ,
481481 kQ2Y0A2 ,
482+ kQ2X0B1 ,
483+ kQ2X0B2 ,
484+ kQ2Y0B1 ,
485+ kQ2Y0B2 ,
486+ kQ2X0C1 ,
487+ kQ2X0C2 ,
488+ kQ2Y0C1 ,
489+ kQ2Y0C2 ,
482490 kU2Q2Ev1 ,
483491 kU2Q2Ev2 ,
484492 kCos2DeltaPhiEv1 ,
@@ -2879,13 +2887,33 @@ void VarManager::FillTwoMixEvents(T1 const& ev1, T1 const& ev2, T2 const& /*trac
28792887 values[kQ2X0A2 ] = ev2.q2x0a ();
28802888 values[kQ2Y0A1 ] = ev1.q2y0a ();
28812889 values[kQ2Y0A2 ] = ev2.q2y0a ();
2890+
2891+ values[kQ2X0B1 ] = ev1.q2x0b ();
2892+ values[kQ2X0B2 ] = ev2.q2x0b ();
2893+ values[kQ2Y0B1 ] = ev1.q2y0b ();
2894+ values[kQ2Y0B2 ] = ev2.q2y0b ();
2895+
2896+ values[kQ2X0C1 ] = ev1.q2x0c ();
2897+ values[kQ2X0C2 ] = ev2.q2x0c ();
2898+ values[kQ2Y0C1 ] = ev1.q2y0c ();
2899+ values[kQ2Y0C2 ] = ev2.q2y0c ();
28822900 }
28832901 if constexpr ((fillMap & CollisionQvect) > 0 ) {
28842902 // Tobe used for the calculation of u1q1 and u2q2
28852903 values[kQ2X0A1 ] = (ev1.qvecBPosRe () * ev1.nTrkBPos () + ev1.qvecBNegRe () * ev1.nTrkBNeg ()) / (ev1.nTrkBPos () + ev1.nTrkBNeg ());
28862904 values[kQ2X0A2 ] = (ev2.qvecBPosRe () * ev2.nTrkBPos () + ev2.qvecBNegRe () * ev2.nTrkBNeg ()) / (ev2.nTrkBPos () + ev2.nTrkBNeg ());
28872905 values[kQ2Y0A1 ] = (ev1.qvecBPosIm () * ev1.nTrkBPos () + ev1.qvecBNegIm () * ev1.nTrkBNeg ()) / (ev1.nTrkBPos () + ev1.nTrkBNeg ());
28882906 values[kQ2Y0A2 ] = (ev2.qvecBPosIm () * ev2.nTrkBPos () + ev2.qvecBNegIm () * ev2.nTrkBNeg ()) / (ev2.nTrkBPos () + ev2.nTrkBNeg ());
2907+
2908+ values[kQ2X0B1 ] = ev1.qvecFT0ARe ();
2909+ values[kQ2X0B2 ] = ev2.qvecFT0ARe ();
2910+ values[kQ2Y0B1 ] = ev1.qvecFT0AIm ();
2911+ values[kQ2Y0B2 ] = ev2.qvecFT0AIm ();
2912+
2913+ values[kQ2X0C1 ] = ev1.qvecFT0CRe ();
2914+ values[kQ2X0C2 ] = ev2.qvecFT0CRe ();
2915+ values[kQ2Y0C1 ] = ev1.qvecFT0CIm ();
2916+ values[kQ2Y0C2 ] = ev2.qvecFT0CIm ();
28892917 }
28902918}
28912919
@@ -4287,6 +4315,10 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values)
42874315 // Compute the scalar product UQ for two muon from different event using Q-vector from A, for second and third harmonic
42884316 float Psi2A1 = getEventPlane (2 , values[kQ2X0A1 ], values[kQ2Y0A1 ]);
42894317 float Psi2A2 = getEventPlane (2 , values[kQ2X0A2 ], values[kQ2Y0A2 ]);
4318+ float Psi2B1 = getEventPlane (2 , values[kQ2X0B1 ], values[kQ2Y0B1 ]);
4319+ float Psi2B2 = getEventPlane (2 , values[kQ2X0B2 ], values[kQ2Y0B2 ]);
4320+ float Psi2C1 = getEventPlane (2 , values[kQ2X0C1 ], values[kQ2Y0C1 ]);
4321+ float Psi2C2 = getEventPlane (2 , values[kQ2X0C2 ], values[kQ2Y0C2 ]);
42904322 values[kCos2DeltaPhi ] = TMath::Cos (2 * (v12.Phi () - Psi2A1)); // WARNING: using the first event EP
42914323 values[kCos2DeltaPhiEv1 ] = TMath::Cos (2 * (v1.Phi () - Psi2A1));
42924324 values[kCos2DeltaPhiEv2 ] = TMath::Cos (2 * (v2.Phi () - Psi2A2));
@@ -4317,6 +4349,39 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values)
43174349 values[kV24ME ] = (std::isnan (V22ME ) || std::isinf (V22ME ) || std::isnan (V24ME ) || std::isinf (V24ME )) ? 0 . : V24ME ;
43184350 values[kWV24ME ] = (std::isnan (V22ME ) || std::isinf (V22ME ) || std::isnan (V24ME ) || std::isinf (V24ME )) ? 0 . : 1.0 ;
43194351
4352+ // coherent Jpsi A2
4353+ bool useCoherentJpsiA2 = fgUsedVars[kA2EP_RP_TPC ] || fgUsedVars[kA2EP_RP_FT0A ] || fgUsedVars[kA2EP_RP_FT0C ];
4354+ if (useCoherentJpsiA2) {
4355+ ROOT ::Math::Boost boostv12{v12.BoostToCM ()};
4356+ ROOT ::Math::PtEtaPhiMVector v_daughter = boostv12 (t1.sign () > 0 ? v1 : v2);
4357+ float Psi2A = t1.sign () > 0 ? Psi2A1 : Psi2A2;
4358+ float Psi2B = t1.sign () > 0 ? Psi2B1 : Psi2B2;
4359+ float Psi2C = t1.sign () > 0 ? Psi2C1 : Psi2C2;
4360+
4361+ // reaction plane
4362+ float phi = RecoDecay::constrainAngle (v_daughter.Phi (), -o2::constants::math::PI );
4363+ values[kDeltaPhiRP_TPC ] = phi > Psi2A ? phi - Psi2A : Psi2A - phi;
4364+ values[kDeltaPhiRP_TPC ] = values[kDeltaPhiRP_TPC ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_TPC ] : values[kDeltaPhiRP_TPC ];
4365+ values[kDeltaPhiRP_FT0A ] = phi > Psi2B ? phi - Psi2B : Psi2B - phi;
4366+ values[kDeltaPhiRP_FT0A ] = values[kDeltaPhiRP_FT0A ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_FT0A ] : values[kDeltaPhiRP_FT0A ];
4367+ values[kDeltaPhiRP_FT0C ] = phi > Psi2C ? phi - Psi2C : Psi2C - phi;
4368+ values[kDeltaPhiRP_FT0C ] = values[kDeltaPhiRP_FT0C ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_FT0C ] : values[kDeltaPhiRP_FT0C ];
4369+ // fold delta phi to [0, pi/2]
4370+ values[kDeltaPhiRP_TPC ] = values[kDeltaPhiRP_TPC ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_TPC ] : values[kDeltaPhiRP_TPC ];
4371+ values[kDeltaPhiRP_FT0A ] = values[kDeltaPhiRP_FT0A ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_FT0A ] : values[kDeltaPhiRP_FT0A ];
4372+ values[kDeltaPhiRP_FT0C ] = values[kDeltaPhiRP_FT0C ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_FT0C ] : values[kDeltaPhiRP_FT0C ];
4373+ values[kCos2DeltaPhiRP_TPC ] = TMath::Cos (2 . * (phi - Psi2A));
4374+ values[kCos2DeltaPhiRP_FT0A ] = TMath::Cos (2 . * (phi - Psi2B));
4375+ values[kCos2DeltaPhiRP_FT0C ] = TMath::Cos (2 . * (phi - Psi2C));
4376+
4377+ float A2RP_TPC = values[kCos2DeltaPhiRP_TPC ] / values[kR2EP ];
4378+ float A2RP_FT0A = values[kCos2DeltaPhiRP_FT0A ] / values[kR2EP ];
4379+ float A2RP_FT0C = values[kCos2DeltaPhiRP_FT0C ] / values[kR2EP ];
4380+ values[kA2EP_RP_TPC ] = std::isnan (A2RP_TPC ) || std::isinf (A2RP_TPC ) ? -999 . : A2RP_TPC ;
4381+ values[kA2EP_RP_FT0A ] = std::isnan (A2RP_FT0A ) || std::isinf (A2RP_FT0A ) ? -999 . : A2RP_FT0A ;
4382+ values[kA2EP_RP_FT0C ] = std::isnan (A2RP_FT0C ) || std::isinf (A2RP_FT0C ) ? -999 . : A2RP_FT0C ;
4383+ }
4384+
43204385 if constexpr ((fillMap & ReducedEventQvectorExtra) > 0 ) {
43214386 std::complex <double > Q21 (values[kQ2X0A ] * values[kS11A ], values[kQ2Y0A ] * values[kS11A ]);
43224387 std::complex <double > Q42 (values[kQ42XA ], values[kQ42YA ]);
@@ -4388,6 +4453,38 @@ void VarManager::FillPairMEAcrossTFs(T const& t1, T const& t2, float* values)
43884453 values[kCos2ThetaStarFT0C ] = values[kCosThetaStarFT0C ] * values[kCosThetaStarFT0C ];
43894454 }
43904455 }
4456+
4457+ bool useCoherentJpsiA2 = fgUsedVars[kA2EP_RP_TPC ] || fgUsedVars[kA2EP_RP_FT0A ] || fgUsedVars[kA2EP_RP_FT0C ];
4458+ if (useCoherentJpsiA2) {
4459+ ROOT ::Math::Boost boostv12{v12.BoostToCM ()};
4460+ ROOT ::Math::PtEtaPhiMVector v_daughter = boostv12 (v1);
4461+ float Psi2A = values[kPsi2A ];
4462+ float Psi2B = values[kPsi2B ];
4463+ float Psi2C = values[kPsi2C ];
4464+
4465+ // reaction plane
4466+ float phi = RecoDecay::constrainAngle (v_daughter.Phi (), -o2::constants::math::PI );
4467+ values[kDeltaPhiRP_TPC ] = phi > Psi2A ? phi - Psi2A : Psi2A - phi;
4468+ values[kDeltaPhiRP_TPC ] = values[kDeltaPhiRP_TPC ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_TPC ] : values[kDeltaPhiRP_TPC ];
4469+ values[kDeltaPhiRP_FT0A ] = phi > Psi2B ? phi - Psi2B : Psi2B - phi;
4470+ values[kDeltaPhiRP_FT0A ] = values[kDeltaPhiRP_FT0A ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_FT0A ] : values[kDeltaPhiRP_FT0A ];
4471+ values[kDeltaPhiRP_FT0C ] = phi > Psi2C ? phi - Psi2C : Psi2C - phi;
4472+ values[kDeltaPhiRP_FT0C ] = values[kDeltaPhiRP_FT0C ] > TMath::Pi () ? 2 . * TMath::Pi () - values[kDeltaPhiRP_FT0C ] : values[kDeltaPhiRP_FT0C ];
4473+ // fold delta phi to [0, pi/2]
4474+ values[kDeltaPhiRP_TPC ] = values[kDeltaPhiRP_TPC ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_TPC ] : values[kDeltaPhiRP_TPC ];
4475+ values[kDeltaPhiRP_FT0A ] = values[kDeltaPhiRP_FT0A ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_FT0A ] : values[kDeltaPhiRP_FT0A ];
4476+ values[kDeltaPhiRP_FT0C ] = values[kDeltaPhiRP_FT0C ] > TMath::Pi () / 2 . ? TMath::Pi () - values[kDeltaPhiRP_FT0C ] : values[kDeltaPhiRP_FT0C ];
4477+ values[kCos2DeltaPhiRP_TPC ] = TMath::Cos (2 . * (phi - Psi2A));
4478+ values[kCos2DeltaPhiRP_FT0A ] = TMath::Cos (2 . * (phi - Psi2B));
4479+ values[kCos2DeltaPhiRP_FT0C ] = TMath::Cos (2 . * (phi - Psi2C));
4480+
4481+ float A2RP_TPC = values[kCos2DeltaPhiRP_TPC ] / values[kR2EP ];
4482+ float A2RP_FT0A = values[kCos2DeltaPhiRP_FT0A ] / values[kR2EP ];
4483+ float A2RP_FT0C = values[kCos2DeltaPhiRP_FT0C ] / values[kR2EP ];
4484+ values[kA2EP_RP_TPC ] = std::isnan (A2RP_TPC ) || std::isinf (A2RP_TPC ) ? -999 . : A2RP_TPC ;
4485+ values[kA2EP_RP_FT0A ] = std::isnan (A2RP_FT0A ) || std::isinf (A2RP_FT0A ) ? -999 . : A2RP_FT0A ;
4486+ values[kA2EP_RP_FT0C ] = std::isnan (A2RP_FT0C ) || std::isinf (A2RP_FT0C ) ? -999 . : A2RP_FT0C ;
4487+ }
43914488}
43924489
43934490template <int pairType, typename T1 , typename T2 >
0 commit comments