Skip to content

Commit 4d53d5f

Browse files
committed
mix event for coherent jpsi A2
1 parent 6617cfd commit 4d53d5f

2 files changed

Lines changed: 99 additions & 2 deletions

File tree

PWGDQ/Core/VarManager.h

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

44634560
template <int pairType, typename T1, typename T2>

PWGDQ/Tasks/tableReader_withAssoc_direct.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1691,7 +1691,7 @@ struct AnalysisSameEventPairing {
16911691

16921692
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvectCentr) > 0);
16931693
constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0);
1694-
constexpr bool fillFlowReso = eventHasQvector;
1694+
// constexpr bool fillFlowReso = eventHasQvector;
16951695

16961696
for (auto& event : events) {
16971697
if (!event.isEventSelected_bit(0))
@@ -1708,7 +1708,7 @@ struct AnalysisSameEventPairing {
17081708
if (groupedAssocs.size() == 0)
17091709
continue;
17101710

1711-
if (fillFlowReso) {
1711+
if (fConfigOptions.useFlowReso) {
17121712
if (ResoFlowSP == nullptr || ResoFlowEP == nullptr) {
17131713
LOGF(fatal, "Flow resolution histograms are not available, cannot fill flow variables!");
17141714
}

0 commit comments

Comments
 (0)