diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index f3f0fbe9ce9..e9d66e9b4db 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -560,6 +560,18 @@ void VarManager::SetDefaultVarNames() fgVariableUnits[kKFCosPA] = ""; fgVariableNames[kKFNContributorsPV] = "Real Number of Trks to PV"; fgVariableUnits[kKFNContributorsPV] = ""; + fgVariableNames[kQ1X0A] = "Q_{1,x}^{A} "; + fgVariableUnits[kQ1X0A] = ""; + fgVariableNames[kQ1Y0A] = "Q_{1,y}^{A} "; + fgVariableUnits[kQ1Y0A] = ""; + fgVariableNames[kQ1X0B] = "Q_{1,x}^{B} "; + fgVariableUnits[kQ1X0B] = ""; + fgVariableNames[kQ1Y0B] = "Q_{1,y}^{B} "; + fgVariableUnits[kQ1Y0B] = ""; + fgVariableNames[kQ1X0C] = "Q_{1,x}^{C} "; + fgVariableUnits[kQ1X0C] = ""; + fgVariableNames[kQ1Y0C] = "Q_{1,y}^{C} "; + fgVariableUnits[kQ1Y0C] = ""; fgVariableNames[kQ2X0A] = "Q_{2,x}^{A} "; fgVariableUnits[kQ2X0A] = ""; fgVariableNames[kQ2Y0A] = "Q_{2,y}^{A} "; @@ -590,6 +602,18 @@ void VarManager::SetDefaultVarNames() fgVariableUnits[kQ3X0C] = ""; fgVariableNames[kQ3Y0C] = "Q_{3,y}^{C} "; fgVariableUnits[kQ3Y0C] = ""; + fgVariableNames[kQ4X0A] = "Q_{1,x}^{A} "; + fgVariableUnits[kQ4X0A] = ""; + fgVariableNames[kQ4Y0A] = "Q_{1,y}^{A} "; + fgVariableUnits[kQ4Y0A] = ""; + fgVariableNames[kQ4X0B] = "Q_{1,x}^{B} "; + fgVariableUnits[kQ4X0B] = ""; + fgVariableNames[kQ4Y0B] = "Q_{1,y}^{B} "; + fgVariableUnits[kQ4Y0B] = ""; + fgVariableNames[kQ4X0C] = "Q_{1,x}^{C} "; + fgVariableUnits[kQ4X0C] = ""; + fgVariableNames[kQ4Y0C] = "Q_{1,y}^{C} "; + fgVariableUnits[kQ4Y0C] = ""; fgVariableNames[kU2Q2] = "u_{2}Q_{2}^{A} "; fgVariableUnits[kU2Q2] = ""; fgVariableNames[kU3Q3] = "u_{3}Q_{3}^{A} "; diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 4c65e997c6f..3176249e765 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -180,6 +180,12 @@ class VarManager : public TObject kMCEventTime, kMCEventWeight, kMCEventImpParam, + kQ1X0A, // q-vector (e.g. from TPC) with x component (harmonic 1 and power 0), sub-event A + kQ1Y0A, // q-vector (e.g. from TPC) with y component (harmonic 1 and power 0), sub-event A + kQ1X0B, + kQ1Y0B, + kQ1X0C, + kQ1Y0C, kQ2X0A, // q-vector (e.g. from TPC) with x component (harmonic 2 and power 0), sub-event A kQ2Y0A, // q-vector (e.g. from TPC) with y component (harmonic 2 and power 0), sub-event A kQ2X0B, @@ -189,12 +195,18 @@ class VarManager : public TObject kMultA, // Multiplicity of the sub-event A kMultB, kMultC, - kQ3X0A, // q-vector (e.g. from TPC) with x component (harmonic 2 and power 0), sub-event A - kQ3Y0A, // q-vector (e.g. from TPC) with y component (harmonic 2 and power 0), sub-event A + kQ3X0A, // q-vector (e.g. from TPC) with x component (harmonic 3 and power 0), sub-event A + kQ3Y0A, // q-vector (e.g. from TPC) with y component (harmonic 3 and power 0), sub-event A kQ3X0B, kQ3Y0B, kQ3X0C, kQ3Y0C, + kQ4X0A, // q-vector (e.g. from TPC) with x component (harmonic 4 and power 0), sub-event A + kQ4Y0A, // q-vector (e.g. from TPC) with y component (harmonic 4 and power 0), sub-event A + kQ4X0B, + kQ4Y0B, + kQ4X0C, + kQ4Y0C, kR2SP, kR3SP, kR2EP, @@ -655,7 +667,7 @@ class VarManager : public TObject template static void FillDileptonCharmHadron(DQ const& dilepton, HF const& charmHadron, H hfHelper, T& bdtScoreCharmHad, float* values = nullptr); template - static void FillQVectorFromGFW(C const& collision, A const& compA2, A const& compB2, A const& compC2, A const& compA3, A const& compB3, A const& compC3, float normA = 1.0, float normB = 1.0, float normC = 1.0, float* values = nullptr); + static void FillQVectorFromGFW(C const& collision, A const& compA1, A const& compB1, A const& compC1, A const& compA2, A const& compB2, A const& compC2, A const& compA3, A const& compB3, A const& compC3, A const& compA4, A const& compB4, A const& compC4, float normA = 1.0, float normB = 1.0, float normC = 1.0, float* values = nullptr); template static void FillPairVn(T1 const& t1, T2 const& t2, float* values = nullptr); @@ -1047,6 +1059,12 @@ void VarManager::FillEvent(T const& event, float* values) } if constexpr ((fillMap & ReducedEventQvector) > 0) { + values[kQ1X0A] = event.q1x0a(); + values[kQ1Y0A] = event.q1y0a(); + values[kQ1X0B] = event.q1x0b(); + values[kQ1Y0B] = event.q1y0b(); + values[kQ1X0C] = event.q1x0c(); + values[kQ1Y0C] = event.q1y0c(); values[kQ2X0A] = event.q2x0a(); values[kQ2Y0A] = event.q2y0a(); values[kQ2X0B] = event.q2x0b(); @@ -1062,6 +1080,12 @@ void VarManager::FillEvent(T const& event, float* values) values[kQ3Y0B] = event.q3y0b(); values[kQ3X0C] = event.q3x0c(); values[kQ3Y0C] = event.q3y0c(); + values[kQ4X0A] = event.q4x0a(); + values[kQ4Y0A] = event.q4y0a(); + values[kQ4X0B] = event.q4x0b(); + values[kQ4Y0B] = event.q4y0b(); + values[kQ4X0C] = event.q4x0c(); + values[kQ4Y0C] = event.q4y0c(); values[kR2SP] = (event.q2x0b() * event.q2x0c() + event.q2y0b() * event.q2y0c()); values[kR3SP] = (event.q3x0b() * event.q3x0c() + event.q3y0b() * event.q3y0c()); if (event.q2y0b() * event.q2y0c() != 0.0) { @@ -2465,13 +2489,19 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton } template -void VarManager::FillQVectorFromGFW(C const& collision, A const& compA2, A const& compB2, A const& compC2, A const& compA3, A const& compB3, A const& compC3, float normA, float normB, float normC, float* values) +void VarManager::FillQVectorFromGFW(C const& collision, A const& compA1, A const& compB1, A const& compC1, A const& compA2, A const& compB2, A const& compC2, A const& compA3, A const& compB3, A const& compC3, A const& compA4, A const& compB4, A const& compC4, float normA, float normB, float normC, float* values) { if (!values) { values = fgValues; } - // Fill Qn vectors from generic flow framework for different eta gap A, B, C (n=2,3) + // Fill Qn vectors from generic flow framework for different eta gap A, B, C (n=1,2,3,4) + values[kQ1X0A] = compA1.real() / normA; + values[kQ1Y0A] = compA1.imag() / normA; + values[kQ1X0B] = compB1.real() / normB; + values[kQ1Y0B] = compB1.imag() / normB; + values[kQ1X0C] = compC1.real() / normC; + values[kQ1Y0C] = compC1.imag() / normC; values[kQ2X0A] = compA2.real() / normA; values[kQ2Y0A] = compA2.imag() / normA; values[kQ2X0B] = compB2.real() / normB; @@ -2484,6 +2514,12 @@ void VarManager::FillQVectorFromGFW(C const& collision, A const& compA2, A const values[kQ3Y0B] = compB3.imag() / normB; values[kQ3X0C] = compC3.real() / normC; values[kQ3Y0C] = compC3.imag() / normC; + values[kQ4X0A] = compA4.real() / normA; + values[kQ4Y0A] = compA4.imag() / normA; + values[kQ4X0B] = compB4.real() / normB; + values[kQ4Y0B] = compB4.imag() / normB; + values[kQ4X0C] = compC4.real() / normC; + values[kQ4Y0C] = compC4.imag() / normC; values[kMultA] = normA; values[kMultB] = normB; values[kMultC] = normC; diff --git a/PWGDQ/DataModel/ReducedInfoTables.h b/PWGDQ/DataModel/ReducedInfoTables.h index 9e7d718477b..d308c61b260 100644 --- a/PWGDQ/DataModel/ReducedInfoTables.h +++ b/PWGDQ/DataModel/ReducedInfoTables.h @@ -39,25 +39,37 @@ namespace reducedevent { // basic event information -DECLARE_SOA_BITMAP_COLUMN(Tag, tag, 64); //! Bit-field for storing event information (e.g. high level info, cut decisions) -DECLARE_SOA_COLUMN(Q2X0A, q2x0a, float); //! Q-vector x component, with event eta gap A (harmonic 2 and power 0) -DECLARE_SOA_COLUMN(Q2Y0A, q2y0a, float); //! Q-vector y component, with event eta gap A (harmonic 2 and power 0) -DECLARE_SOA_COLUMN(Q2X0B, q2x0b, float); //! Q-vector x component, with event eta gap B (harmonic 2 and power 0) -DECLARE_SOA_COLUMN(Q2Y0B, q2y0b, float); //! Q-vector y component, with event eta gap B (harmonic 2 and power 0) -DECLARE_SOA_COLUMN(Q2X0C, q2x0c, float); //! Q-vector x component, with event eta gap C (harmonic 2 and power 0) -DECLARE_SOA_COLUMN(Q2Y0C, q2y0c, float); //! Q-vector y component, with event eta gap C (harmonic 2 and power 0) -DECLARE_SOA_COLUMN(MultA, multa, float); //! Event multiplicity eta gap A -DECLARE_SOA_COLUMN(MultB, multb, float); //! Event multiplicity eta gap B -DECLARE_SOA_COLUMN(MultC, multc, float); //! Event multiplicity eta gap C -DECLARE_SOA_COLUMN(Q3X0A, q3x0a, float); //! Q-vector x component, with event eta gap A (harmonic 3 and power 0) -DECLARE_SOA_COLUMN(Q3Y0A, q3y0a, float); //! -DECLARE_SOA_COLUMN(Q3X0B, q3x0b, float); //! -DECLARE_SOA_COLUMN(Q3Y0B, q3y0b, float); //! -DECLARE_SOA_COLUMN(Q3X0C, q3x0c, float); //! -DECLARE_SOA_COLUMN(Q3Y0C, q3y0c, float); //! -DECLARE_SOA_COLUMN(MCPosX, mcPosX, float); //! -DECLARE_SOA_COLUMN(MCPosY, mcPosY, float); //! -DECLARE_SOA_COLUMN(MCPosZ, mcPosZ, float); //! +DECLARE_SOA_BITMAP_COLUMN(Tag, tag, 64); //! Bit-field for storing event information (e.g. high level info, cut decisions) +DECLARE_SOA_COLUMN(Q1X0A, q1x0a, float); //! Q-vector x component, with event eta gap A (harmonic 1 and power 0) +DECLARE_SOA_COLUMN(Q1Y0A, q1y0a, float); //! Q-vector y component, with event eta gap A (harmonic 1 and power 0) +DECLARE_SOA_COLUMN(Q1X0B, q1x0b, float); //! Q-vector x component, with event eta gap B (harmonic 1 and power 0) +DECLARE_SOA_COLUMN(Q1Y0B, q1y0b, float); //! Q-vector y component, with event eta gap B (harmonic 1 and power 0) +DECLARE_SOA_COLUMN(Q1X0C, q1x0c, float); //! Q-vector x component, with event eta gap C (harmonic 1 and power 0) +DECLARE_SOA_COLUMN(Q1Y0C, q1y0c, float); //! Q-vector y component, with event eta gap C (harmonic 1 and power 0) +DECLARE_SOA_COLUMN(Q2X0A, q2x0a, float); //! Q-vector x component, with event eta gap A (harmonic 2 and power 0) +DECLARE_SOA_COLUMN(Q2Y0A, q2y0a, float); //! Q-vector y component, with event eta gap A (harmonic 2 and power 0) +DECLARE_SOA_COLUMN(Q2X0B, q2x0b, float); //! Q-vector x component, with event eta gap B (harmonic 2 and power 0) +DECLARE_SOA_COLUMN(Q2Y0B, q2y0b, float); //! Q-vector y component, with event eta gap B (harmonic 2 and power 0) +DECLARE_SOA_COLUMN(Q2X0C, q2x0c, float); //! Q-vector x component, with event eta gap C (harmonic 2 and power 0) +DECLARE_SOA_COLUMN(Q2Y0C, q2y0c, float); //! Q-vector y component, with event eta gap C (harmonic 2 and power 0) +DECLARE_SOA_COLUMN(MultA, multa, float); //! Event multiplicity eta gap A +DECLARE_SOA_COLUMN(MultB, multb, float); //! Event multiplicity eta gap B +DECLARE_SOA_COLUMN(MultC, multc, float); //! Event multiplicity eta gap C +DECLARE_SOA_COLUMN(Q3X0A, q3x0a, float); //! Q-vector x component, with event eta gap A (harmonic 3 and power 0) +DECLARE_SOA_COLUMN(Q3Y0A, q3y0a, float); //! Q-vector y component, with event eta gap A (harmonic 3 and power 0) +DECLARE_SOA_COLUMN(Q3X0B, q3x0b, float); //! Q-vector x component, with event eta gap B (harmonic 3 and power 0) +DECLARE_SOA_COLUMN(Q3Y0B, q3y0b, float); //! Q-vector y component, with event eta gap B (harmonic 3 and power 0) +DECLARE_SOA_COLUMN(Q3X0C, q3x0c, float); //! Q-vector x component, with event eta gap C (harmonic 3 and power 0) +DECLARE_SOA_COLUMN(Q3Y0C, q3y0c, float); //! Q-vector y component, with event eta gap C (harmonic 3 and power 0) +DECLARE_SOA_COLUMN(Q4X0A, q4x0a, float); //! Q-vector x component, with event eta gap A (harmonic 4 and power 0) +DECLARE_SOA_COLUMN(Q4Y0A, q4y0a, float); //! Q-vector y component, with event eta gap A (harmonic 4 and power 0) +DECLARE_SOA_COLUMN(Q4X0B, q4x0b, float); //! Q-vector x component, with event eta gap B (harmonic 4 and power 0) +DECLARE_SOA_COLUMN(Q4Y0B, q4y0b, float); //! Q-vector y component, with event eta gap B (harmonic 4 and power 0) +DECLARE_SOA_COLUMN(Q4X0C, q4x0c, float); //! Q-vector x component, with event eta gap C (harmonic 4 and power 0) +DECLARE_SOA_COLUMN(Q4Y0C, q4y0c, float); //! Q-vector y component, with event eta gap C (harmonic 4 and power 0) +DECLARE_SOA_COLUMN(MCPosX, mcPosX, float); //! +DECLARE_SOA_COLUMN(MCPosY, mcPosY, float); //! +DECLARE_SOA_COLUMN(MCPosZ, mcPosZ, float); //! } // namespace reducedevent DECLARE_SOA_TABLE(ReducedEvents, "AOD", "REDUCEDEVENT", //! Main event information table @@ -77,10 +89,11 @@ DECLARE_SOA_TABLE(ReducedEventsVtxCov, "AOD", "REVTXCOV", //! Event vertex co collision::CovYY, collision::CovYZ, collision::CovZZ, collision::Chi2); DECLARE_SOA_TABLE(ReducedEventsQvector, "AOD", "REQVECTOR", //! Event Q-vector information - reducedevent::Q2X0A, reducedevent::Q2Y0A, reducedevent::Q2X0B, reducedevent::Q2Y0B, - reducedevent::Q2X0C, reducedevent::Q2Y0C, reducedevent::MultA, reducedevent::MultB, reducedevent::MultC, - reducedevent::Q3X0A, reducedevent::Q3Y0A, reducedevent::Q3X0B, reducedevent::Q3Y0B, - reducedevent::Q3X0C, reducedevent::Q3Y0C); + reducedevent::Q1X0A, reducedevent::Q1Y0A, reducedevent::Q1X0B, reducedevent::Q1Y0B, reducedevent::Q1X0C, reducedevent::Q1Y0C, + reducedevent::Q2X0A, reducedevent::Q2Y0A, reducedevent::Q2X0B, reducedevent::Q2Y0B, reducedevent::Q2X0C, reducedevent::Q2Y0C, + reducedevent::MultA, reducedevent::MultB, reducedevent::MultC, + reducedevent::Q3X0A, reducedevent::Q3Y0A, reducedevent::Q3X0B, reducedevent::Q3Y0B, reducedevent::Q3X0C, reducedevent::Q3Y0C, + reducedevent::Q4X0A, reducedevent::Q4Y0A, reducedevent::Q4X0B, reducedevent::Q4Y0B, reducedevent::Q4X0C, reducedevent::Q4Y0C); // TODO and NOTE: This table is just an extension of the ReducedEvents table // There is no explicit accounting for MC events which were not reconstructed!!! @@ -266,10 +279,10 @@ namespace reducedmft DECLARE_SOA_INDEX_COLUMN(ReducedEvent, reducedevent); //! DECLARE_SOA_COLUMN(FilteringFlags, filteringFlags, uint8_t); //! -DECLARE_SOA_COLUMN(Pt, pt, float); //! -DECLARE_SOA_COLUMN(Eta, eta, float); //! -DECLARE_SOA_COLUMN(Phi, phi, float); //! -DECLARE_SOA_COLUMN(Sign, sign, int); //! +DECLARE_SOA_COLUMN(Pt, pt, float); //! +DECLARE_SOA_COLUMN(Eta, eta, float); //! +DECLARE_SOA_COLUMN(Phi, phi, float); //! +DECLARE_SOA_COLUMN(Sign, sign, int); //! DECLARE_SOA_COLUMN(FwdDcaX, fwdDcaX, float); //! DECLARE_SOA_COLUMN(FwdDcaY, fwdDcaY, float); //! DECLARE_SOA_COLUMN(MftClusterSizesAndTrackFlags, mftClusterSizesAndTrackFlags, uint64_t); //! @@ -461,32 +474,32 @@ DECLARE_SOA_COLUMN(FwdDcaY2, fwdDcaY2, float); //! Y component of forward DCA // pair information namespace reducedpair { -DECLARE_SOA_INDEX_COLUMN(ReducedEvent, reducedevent); //! +DECLARE_SOA_INDEX_COLUMN(ReducedEvent, reducedevent); //! DECLARE_SOA_INDEX_COLUMN_FULL(Index0, index0, int, ReducedTracks, "_0"); //! Index to first prong DECLARE_SOA_INDEX_COLUMN_FULL(Index1, index1, int, ReducedTracks, "_1"); //! Index to second prong -DECLARE_SOA_COLUMN(Mass, mass, float); //! -DECLARE_SOA_COLUMN(Pt, pt, float); //! -DECLARE_SOA_COLUMN(Eta, eta, float); //! -DECLARE_SOA_COLUMN(Phi, phi, float); //! -DECLARE_SOA_COLUMN(Sign, sign, int); //! -DECLARE_SOA_BITMAP_COLUMN(FilterMap, filterMap, 32); //! -DECLARE_SOA_COLUMN(McDecision, mcDecision, uint32_t); //! -DECLARE_SOA_COLUMN(Tauz, tauz, float); //! Longitudinal pseudo-proper time of lepton pair (in ns) -DECLARE_SOA_COLUMN(TauzErr, tauzErr, float); //! Error on longitudinal pseudo-proper time of lepton pair (in ns) -DECLARE_SOA_COLUMN(Tauxy, tauxy, float); //! Transverse pseudo-proper time of lepton pair (in ns) -DECLARE_SOA_COLUMN(TauxyErr, tauxyErr, float); //! Error on transverse pseudo-proper time of lepton pair (in ns) -DECLARE_SOA_COLUMN(Lz, lz, float); //! Longitudinal projection of decay length -DECLARE_SOA_COLUMN(Lxy, lxy, float); //! Transverse projection of decay length -DECLARE_SOA_COLUMN(Chi2pca, chi2pca, float); //! Chi2 for PCA of the dilepton -DECLARE_SOA_COLUMN(CosPointingAngle, cosPointingAngle, float); //! Cosine of the pointing angle -DECLARE_SOA_COLUMN(U2Q2, u2q2, float); //! Scalar product between unitary vector with event flow vector (harmonic 2) -DECLARE_SOA_COLUMN(U3Q3, u3q3, float); //! Scalar product between unitary vector with event flow vector (harmonic 3) -DECLARE_SOA_COLUMN(Cos2DeltaPhi, cos2deltaphi, float); //! Cosinus term using event plane angle (harmonic 2) -DECLARE_SOA_COLUMN(Cos3DeltaPhi, cos3deltaphi, float); //! Cosinus term using event plane angle (harmonic 3) -DECLARE_SOA_COLUMN(R2SP, r2sp, float); //! Event plane resolution for SP method -DECLARE_SOA_COLUMN(R2EP, r2ep, float); //! Event plane resolution for EP method -DECLARE_SOA_COLUMN(CentFT0C, centft0c, float); //! Centrality information from FT0C -DECLARE_SOA_COLUMN(CollisionId, collisionId, int); //! +DECLARE_SOA_COLUMN(Mass, mass, float); //! +DECLARE_SOA_COLUMN(Pt, pt, float); //! +DECLARE_SOA_COLUMN(Eta, eta, float); //! +DECLARE_SOA_COLUMN(Phi, phi, float); //! +DECLARE_SOA_COLUMN(Sign, sign, int); //! +DECLARE_SOA_BITMAP_COLUMN(FilterMap, filterMap, 32); //! +DECLARE_SOA_COLUMN(McDecision, mcDecision, uint32_t); //! +DECLARE_SOA_COLUMN(Tauz, tauz, float); //! Longitudinal pseudo-proper time of lepton pair (in ns) +DECLARE_SOA_COLUMN(TauzErr, tauzErr, float); //! Error on longitudinal pseudo-proper time of lepton pair (in ns) +DECLARE_SOA_COLUMN(Tauxy, tauxy, float); //! Transverse pseudo-proper time of lepton pair (in ns) +DECLARE_SOA_COLUMN(TauxyErr, tauxyErr, float); //! Error on transverse pseudo-proper time of lepton pair (in ns) +DECLARE_SOA_COLUMN(Lz, lz, float); //! Longitudinal projection of decay length +DECLARE_SOA_COLUMN(Lxy, lxy, float); //! Transverse projection of decay length +DECLARE_SOA_COLUMN(Chi2pca, chi2pca, float); //! Chi2 for PCA of the dilepton +DECLARE_SOA_COLUMN(CosPointingAngle, cosPointingAngle, float); //! Cosine of the pointing angle +DECLARE_SOA_COLUMN(U2Q2, u2q2, float); //! Scalar product between unitary vector with event flow vector (harmonic 2) +DECLARE_SOA_COLUMN(U3Q3, u3q3, float); //! Scalar product between unitary vector with event flow vector (harmonic 3) +DECLARE_SOA_COLUMN(Cos2DeltaPhi, cos2deltaphi, float); //! Cosinus term using event plane angle (harmonic 2) +DECLARE_SOA_COLUMN(Cos3DeltaPhi, cos3deltaphi, float); //! Cosinus term using event plane angle (harmonic 3) +DECLARE_SOA_COLUMN(R2SP, r2sp, float); //! Event plane resolution for SP method +DECLARE_SOA_COLUMN(R2EP, r2ep, float); //! Event plane resolution for EP method +DECLARE_SOA_COLUMN(CentFT0C, centft0c, float); //! Centrality information from FT0C +DECLARE_SOA_COLUMN(CollisionId, collisionId, int); //! // DECLARE_SOA_INDEX_COLUMN(ReducedMuon, reducedmuon2); //! DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //! [](float pt, float phi) -> float { return pt * std::cos(phi); }); diff --git a/PWGDQ/Tasks/dqFlow.cxx b/PWGDQ/Tasks/dqFlow.cxx index 0cbf0c0d468..fc65f37fe31 100644 --- a/PWGDQ/Tasks/dqFlow.cxx +++ b/PWGDQ/Tasks/dqFlow.cxx @@ -281,12 +281,18 @@ struct DQEventQvector { uint8_t nentriesN = 0.0; uint8_t nentriesP = 0.0; uint8_t nentriesFull = 0.0; + complex Q1vecN; + complex Q1vecP; + complex Q1vecFull; complex Q2vecN; complex Q2vecP; complex Q2vecFull; complex Q3vecN; complex Q3vecP; complex Q3vecFull; + complex Q4vecN; + complex Q4vecP; + complex Q4vecFull; if (fGFW && (tracks1.size() > 0)) { // Obtain the GFWCumulant where Q is calculated (index=region, with different eta gaps) @@ -300,16 +306,22 @@ struct DQEventQvector { nentriesFull = gfwCumFull.GetN(); // Get the Q vector for selected harmonic, power (for minPt=0) + Q1vecN = gfwCumN.Vec(1, fConfigNPow); + Q1vecP = gfwCumP.Vec(1, fConfigNPow); + Q1vecFull = gfwCumFull.Vec(1, fConfigNPow); Q2vecN = gfwCumN.Vec(2, fConfigNPow); Q2vecP = gfwCumP.Vec(2, fConfigNPow); Q2vecFull = gfwCumFull.Vec(2, fConfigNPow); Q3vecN = gfwCumN.Vec(3, fConfigNPow); Q3vecP = gfwCumP.Vec(3, fConfigNPow); Q3vecFull = gfwCumFull.Vec(3, fConfigNPow); + Q4vecN = gfwCumN.Vec(4, fConfigNPow); + Q4vecP = gfwCumP.Vec(4, fConfigNPow); + Q4vecFull = gfwCumFull.Vec(4, fConfigNPow); } // Fill the VarManager::fgValues with the Q vector quantities - VarManager::FillQVectorFromGFW(collision, Q2vecFull, Q2vecN, Q2vecP, Q3vecFull, Q3vecN, Q3vecP, nentriesFull, nentriesN, nentriesP); + VarManager::FillQVectorFromGFW(collision, Q1vecFull, Q1vecN, Q1vecP, Q2vecFull, Q2vecN, Q2vecP, Q3vecFull, Q3vecN, Q3vecP, Q4vecFull, Q4vecN, Q4vecP, nentriesFull, nentriesN, nentriesP); if (fConfigQA) { if ((tracks1.size() > 0) && (nentriesFull * nentriesN * nentriesP != 0.0)) { @@ -322,7 +334,7 @@ struct DQEventQvector { // Fill the tree for the reduced event table with Q vector quantities if (fEventCut->IsSelected(VarManager::fgValues)) { - eventQvector(VarManager::fgValues[VarManager::kQ2X0A], VarManager::fgValues[VarManager::kQ2Y0A], VarManager::fgValues[VarManager::kQ2X0B], VarManager::fgValues[VarManager::kQ2Y0B], VarManager::fgValues[VarManager::kQ2X0C], VarManager::fgValues[VarManager::kQ2Y0C], VarManager::fgValues[VarManager::kMultA], VarManager::fgValues[VarManager::kMultC], VarManager::fgValues[VarManager::kMultC], VarManager::fgValues[VarManager::kQ3X0A], VarManager::fgValues[VarManager::kQ3Y0A], VarManager::fgValues[VarManager::kQ3X0B], VarManager::fgValues[VarManager::kQ3Y0B], VarManager::fgValues[VarManager::kQ3X0C], VarManager::fgValues[VarManager::kQ3Y0C]); + eventQvector(VarManager::fgValues[VarManager::kQ1X0A], VarManager::fgValues[VarManager::kQ1Y0A], VarManager::fgValues[VarManager::kQ1X0B], VarManager::fgValues[VarManager::kQ1Y0B], VarManager::fgValues[VarManager::kQ1X0C], VarManager::fgValues[VarManager::kQ1Y0C], VarManager::fgValues[VarManager::kQ2X0A], VarManager::fgValues[VarManager::kQ2Y0A], VarManager::fgValues[VarManager::kQ2X0B], VarManager::fgValues[VarManager::kQ2Y0B], VarManager::fgValues[VarManager::kQ2X0C], VarManager::fgValues[VarManager::kQ2Y0C], VarManager::fgValues[VarManager::kMultA], VarManager::fgValues[VarManager::kMultC], VarManager::fgValues[VarManager::kMultC], VarManager::fgValues[VarManager::kQ3X0A], VarManager::fgValues[VarManager::kQ3Y0A], VarManager::fgValues[VarManager::kQ3X0B], VarManager::fgValues[VarManager::kQ3Y0B], VarManager::fgValues[VarManager::kQ3X0C], VarManager::fgValues[VarManager::kQ3Y0C], VarManager::fgValues[VarManager::kQ4X0A], VarManager::fgValues[VarManager::kQ4Y0A], VarManager::fgValues[VarManager::kQ4X0B], VarManager::fgValues[VarManager::kQ4Y0B], VarManager::fgValues[VarManager::kQ4X0C], VarManager::fgValues[VarManager::kQ4Y0C]); } }