From 984477a72c5172b510b7ef3c6f120b0ad2c4bb62 Mon Sep 17 00:00:00 2001 From: cnkoster Date: Tue, 2 Sep 2025 09:59:05 +0200 Subject: [PATCH 1/7] Clean up directories and fix some histogram registry issues --- PWGCF/Flow/Tasks/flowSP.cxx | 231 +++++++++++++++++++----------------- 1 file changed, 120 insertions(+), 111 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 8727a7f9e8f..52ca83acd95 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -67,6 +67,7 @@ struct FlowSP { O2_DEFINE_CONFIGURABLE(cfgFillEventPlane, bool, false, "Flag to make and fill histos with Event Plane"); O2_DEFINE_CONFIGURABLE(cfgFillXandYterms, bool, false, "Flag to make and fill histos for with separate x and y terms for SPM"); O2_DEFINE_CONFIGURABLE(cfgFillChargeDependence, bool, true, "Flag to make and fill histos for charge dependent flow"); + O2_DEFINE_CONFIGURABLE(cfgFillChargeDependenceQA, bool, true, "Flag to make and fill QA histos for charge dependent flow"); O2_DEFINE_CONFIGURABLE(cfgFillPID, bool, false, "Flag to make and fill histos for PID flow"); // Centrality Estimators -> standard is FT0C O2_DEFINE_CONFIGURABLE(cfgCentFT0Cvariant1, bool, false, "Set centrality estimator to cfgCentFT0Cvariant1"); @@ -85,6 +86,7 @@ struct FlowSP { O2_DEFINE_CONFIGURABLE(cfgMagField, float, 99999, "Configurable magnetic field;default CCDB will be queried"); O2_DEFINE_CONFIGURABLE(cfgCentMin, float, 0, "Minimum cenrality for selected events"); O2_DEFINE_CONFIGURABLE(cfgCentMax, float, 90, "Maximum cenrality for selected events"); + O2_DEFINE_CONFIGURABLE(cfgFilterLeptons, bool, true, "Filter out leptons from MCGenerated by requiring |pdgCode| > 100"); // NUA and NUE weights O2_DEFINE_CONFIGURABLE(cfgFillWeights, bool, true, "Fill NUA weights"); O2_DEFINE_CONFIGURABLE(cfgFillWeightsPOS, bool, true, "Fill NUA weights only for positive charges"); @@ -495,33 +497,31 @@ struct FlowSP { } } if (cfgFillMixedHarmonics) { - registry.add("incl/v2/vnAxCxUx_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); - registry.add("incl/v2/vnAxCyUx_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); - registry.add("incl/v2/vnAxCyUy_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); - registry.add("incl/v2/vnAyCxUy_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); - registry.add("incl/v2/vnAxCxUx_cent_MH", "", kTProfile, {axisCent}); - registry.add("incl/v2/vnAxCyUx_cent_MH", "", kTProfile, {axisCent}); - registry.add("incl/v2/vnAxCyUy_cent_MH", "", kTProfile, {axisCent}); - registry.add("incl/v2/vnAyCxUy_cent_MH", "", kTProfile, {axisCent}); - registry.add("incl/v2/vnAxCxUx_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); - registry.add("incl/v2/vnAxCyUx_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); - registry.add("incl/v2/vnAxCyUy_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); - registry.add("incl/v2/vnAyCxUy_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); - registry.addClone("incl/v2/", "incl/v3/"); + registry.add("incl/MH/vnAxCxUx_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); + registry.add("incl/MH/vnAxCyUx_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); + registry.add("incl/MH/vnAxCyUy_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); + registry.add("incl/MH/vnAyCxUy_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); + registry.add("incl/MH/vnAxCxUx_cent_MH", "", kTProfile, {axisCent}); + registry.add("incl/MH/vnAxCyUx_cent_MH", "", kTProfile, {axisCent}); + registry.add("incl/MH/vnAxCyUy_cent_MH", "", kTProfile, {axisCent}); + registry.add("incl/MH/vnAyCxUy_cent_MH", "", kTProfile, {axisCent}); + registry.add("incl/MH/vnAxCxUx_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); + registry.add("incl/MH/vnAxCyUx_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); + registry.add("incl/MH/vnAxCyUy_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); + registry.add("incl/MH/vnAyCxUy_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); if (cfgFillPID) { - registry.add("incl/pion/v2/vnAxCxUx_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); - registry.add("incl/pion/v2/vnAxCyUx_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); - registry.add("incl/pion/v2/vnAxCyUy_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); - registry.add("incl/pion/v2/vnAyCxUy_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); - registry.add("incl/pion/v2/vnAxCxUx_cent_MH", "", kTProfile, {axisCent}); - registry.add("incl/pion/v2/vnAxCyUx_cent_MH", "", kTProfile, {axisCent}); - registry.add("incl/pion/v2/vnAxCyUy_cent_MH", "", kTProfile, {axisCent}); - registry.add("incl/pion/v2/vnAyCxUy_cent_MH", "", kTProfile, {axisCent}); - registry.add("incl/pion/v2/vnAxCxUx_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); - registry.add("incl/pion/v2/vnAxCyUx_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); - registry.add("incl/pion/v2/vnAxCyUy_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); - registry.add("incl/pion/v2/vnAyCxUy_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); - registry.addClone("incl/pion/v2/", "incl/pion/v3/"); + registry.add("incl/pion/MH/vnAxCxUx_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); + registry.add("incl/pion/MH/vnAxCyUx_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); + registry.add("incl/pion/MH/vnAxCyUy_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); + registry.add("incl/pion/MH/vnAyCxUy_pt_MH", "", kTProfile2D, {axisPt, axisCentrality}); + registry.add("incl/pion/MH/vnAxCxUx_cent_MH", "", kTProfile, {axisCent}); + registry.add("incl/pion/MH/vnAxCyUx_cent_MH", "", kTProfile, {axisCent}); + registry.add("incl/pion/MH/vnAxCyUy_cent_MH", "", kTProfile, {axisCent}); + registry.add("incl/pion/MH/vnAyCxUy_cent_MH", "", kTProfile, {axisCent}); + registry.add("incl/pion/MH/vnAxCxUx_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); + registry.add("incl/pion/MH/vnAxCyUx_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); + registry.add("incl/pion/MH/vnAxCyUy_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); + registry.add("incl/pion/MH/vnAyCxUy_eta_MH", "", kTProfile2D, {axisEtaVn, axisCentrality}); } } if (cfgFillEventPlane) { @@ -555,7 +555,7 @@ struct FlowSP { registry.addClone("incl/", "pos/"); registry.addClone("incl/", "neg/"); } - if (cfgFillPIDQA) { + if (cfgFillPIDQA || cfgFillChargeDependenceQA) { histos.addClone("incl/", "pos/"); histos.addClone("incl/", "neg/"); } @@ -971,7 +971,7 @@ struct FlowSP { } template - inline void fillHistograms(TrackObject track, float wacc, float weff, double centWeight, double ux, double uy, double uxMH, double uyMH, double uxMH2, double uyMH2, double qxA, double qyA, double qxC, double qyC, double corrQQx, double corrQQy, double corrQQ, double vnA, double vnC, double vnFull, double centrality) + inline void fillHistograms(TrackObject track, float wacc, float weff, double centWeight, double ux, double uy, double uxMH, double uyMH, double qxA, double qyA, double qxC, double qyC, double corrQQx, double corrQQy, double corrQQ, double vnA, double vnC, double vnFull, double centrality) { double weight = wacc * weff * centWeight; @@ -985,37 +985,20 @@ struct FlowSP { } if (cfgFillMixedHarmonics) { - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCxUx_eta_MH"), track.eta(), centrality, (uxMH * qxA * qxC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCyUx_eta_MH"), track.eta(), centrality, (uxMH * qyA * qyC) / corrQQy, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCyUy_eta_MH"), track.eta(), centrality, (uyMH * qxA * qyC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAyCxUy_eta_MH"), track.eta(), centrality, (uyMH * qyA * qxC) / corrQQy, weight); - - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCxUx_pt_MH"), track.pt(), centrality, (uxMH * qxA * qxC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCyUx_pt_MH"), track.pt(), centrality, (uxMH * qyA * qyC) / corrQQy, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCyUy_pt_MH"), track.pt(), centrality, (uyMH * qxA * qyC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAyCxUy_pt_MH"), track.pt(), centrality, (uyMH * qyA * qxC) / corrQQy, weight); - - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCxUx_cent_MH"), centrality, (uxMH * qxA * qxC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCyUx_cent_MH"), centrality, (uxMH * qyA * qyC) / corrQQy, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAxCyUy_cent_MH"), centrality, (uyMH * qxA * qyC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v2/vnAyCxUy_cent_MH"), centrality, (uyMH * qyA * qxC) / corrQQy, weight); - - // -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCxUx_eta_MH"), track.eta(), centrality, (uxMH2 * qxA * qxC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCyUx_eta_MH"), track.eta(), centrality, (uxMH2 * qyA * qyC) / corrQQy, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCyUy_eta_MH"), track.eta(), centrality, (uyMH2 * qxA * qyC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAyCxUy_eta_MH"), track.eta(), centrality, (uyMH2 * qyA * qxC) / corrQQy, weight); - - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCxUx_pt_MH"), track.pt(), centrality, (uxMH2 * qxA * qxC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCyUx_pt_MH"), track.pt(), centrality, (uxMH2 * qyA * qyC) / corrQQy, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCyUy_pt_MH"), track.pt(), centrality, (uyMH2 * qxA * qyC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAyCxUy_pt_MH"), track.pt(), centrality, (uyMH2 * qyA * qxC) / corrQQy, weight); - - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCxUx_cent_MH"), centrality, (uxMH2 * qxA * qxC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCyUx_cent_MH"), centrality, (uxMH2 * qyA * qyC) / corrQQy, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAxCyUy_cent_MH"), centrality, (uyMH2 * qxA * qyC) / corrQQx, weight); - registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("v3/vnAyCxUy_cent_MH"), centrality, (uyMH2 * qyA * qxC) / corrQQy, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCxUx_eta_MH"), track.eta(), centrality, (uxMH * qxA * qxC) / corrQQx, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCyUx_eta_MH"), track.eta(), centrality, (uxMH * qyA * qyC) / corrQQy, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCyUy_eta_MH"), track.eta(), centrality, (uyMH * qxA * qyC) / corrQQx, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAyCxUy_eta_MH"), track.eta(), centrality, (uyMH * qyA * qxC) / corrQQy, weight); + + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCxUx_pt_MH"), track.pt(), centrality, (uxMH * qxA * qxC) / corrQQx, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCyUx_pt_MH"), track.pt(), centrality, (uxMH * qyA * qyC) / corrQQy, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCyUy_pt_MH"), track.pt(), centrality, (uyMH * qxA * qyC) / corrQQx, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAyCxUy_pt_MH"), track.pt(), centrality, (uyMH * qyA * qxC) / corrQQy, weight); + + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCxUx_cent_MH"), centrality, (uxMH * qxA * qxC) / corrQQx, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCyUx_cent_MH"), centrality, (uxMH * qyA * qyC) / corrQQy, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAxCyUy_cent_MH"), centrality, (uyMH * qxA * qyC) / corrQQx, weight); + registry.fill(HIST(Charge[ct]) + HIST(Species[pt]) + HIST("MH/vnAyCxUy_cent_MH"), centrality, (uyMH * qyA * qxC) / corrQQy, weight); } if (cfgFillXandYterms) { @@ -1196,6 +1179,10 @@ struct FlowSP { fillTrackQA(track, vtxz, centrality, wacc, weff); } fillPIDQA(track); + + if(!cfgFillChargeDependenceQA) + return; + if (pos) { if (!cfgTrackSelDoTrackQAvsCent) { fillTrackQA(track, vtxz, waccP, weffP); @@ -1350,19 +1337,20 @@ struct FlowSP { bool pos = (track.sign() > 0) ? true : false; if (cfgFillQABefore) { - switch (trackPID) { - case kUnidentified: - fillAllQA(track, vtxz, centrality, pos); - break; - case kPions: - fillAllQA(track, vtxz, centrality, pos); - break; - case kKaons: - fillAllQA(track, vtxz, centrality, pos); - break; - case kProtons: - fillAllQA(track, vtxz, centrality, pos); - break; + fillAllQA(track, vtxz, centrality, pos); + + if (cfgFillPIDQA){ + switch (trackPID) { + case kPions: + fillAllQA(track, vtxz, centrality, pos); + break; + case kKaons: + fillAllQA(track, vtxz, centrality, pos); + break; + case kProtons: + fillAllQA(track, vtxz, centrality, pos); + break; + } } } @@ -1397,19 +1385,21 @@ struct FlowSP { histos.fill(HIST("hTrackCount"), trackSel_ParticleWeights); - switch (trackPID) { - case kUnidentified: - fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); - break; - case kPions: - fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); - break; - case kKaons: - fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); - break; - case kProtons: - fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); - break; + + fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); + + if(cfgFillPIDQA){ + switch (trackPID) { + case kPions: + fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); + break; + case kKaons: + fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); + break; + case kProtons: + fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); + break; + } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1418,45 +1408,42 @@ struct FlowSP { auto uxMH = std::cos(cfgHarmMixed1 * phi); auto uyMH = std::sin(cfgHarmMixed1 * phi); - - auto uxMH2 = std::cos(cfgHarmMixed2 * phi); - auto uyMH2 = std::sin(cfgHarmMixed2 * phi); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - double vnA = std::cos(cfgHarm * (phi - psiA)) / evPlaneRes; double vnC = std::cos(cfgHarm * (phi - psiC)) / evPlaneRes; double vnFull = std::cos(cfgHarm * (phi - psiFull)) / evPlaneRes; - fillHistograms(track, wacc, weff, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, wacc, weff, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); // NOTE: these are not the right wacc and weff!! Need to do for each particle species! This is just to test for now. if (cfgFillPID) { if (trackPID == kPions) { - fillHistograms(track, wacc, weff, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, wacc, weff, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); if (pos) - fillHistograms(track, waccP, weffP, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, waccP, weffP, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); else - fillHistograms(track, waccN, weffN, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, waccN, weffN, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); } else if (trackPID == kKaons) { - fillHistograms(track, wacc, weff, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, wacc, weff, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); if (pos) - fillHistograms(track, waccP, weffP, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, waccP, weffP, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); else - fillHistograms(track, waccN, weffN, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, waccN, weffN, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); } else if (trackPID == kProtons) { - fillHistograms(track, wacc, weff, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, wacc, weff, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); if (pos) - fillHistograms(track, waccP, weffP, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, waccP, weffP, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); else - fillHistograms(track, waccN, weffN, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, waccN, weffN, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); } } if (cfgFillChargeDependence) { if (pos) { - fillHistograms(track, waccP, weffP, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, waccP, weffP, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); } else { - fillHistograms(track, waccN, weffN, centWeight, ux, uy, uxMH, uyMH, uxMH2, uyMH2, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); + fillHistograms(track, waccN, weffN, centWeight, ux, uy, uxMH, uyMH, qxA, qyA, qxC, qyC, corrQQx, corrQQy, corrQQ, vnA, vnC, vnFull, centrality); } } } // end of track loop @@ -1516,27 +1503,44 @@ struct FlowSP { // This neglects PID (for now) later use getPID like in data. if (cfgFillQABefore) { + fillAllQA(track, vtxz, centrality, pos); + + if(cfgFillPIDQA){ + switch (std::abs(mcParticle.pdgCode())) { + case kPions: + fillAllQA(track, vtxz, centrality, pos); + break; + case kKaons: + fillAllQA(track, vtxz, centrality, pos); + break; + case kProtons: + fillAllQA(track, vtxz, centrality, pos); + break; + } + } + } + + if (!trackSelected(track, field)) + continue; + + fillMCPtHistos(track, mcParticle.pdgCode(), centrality); + + fillAllQA(track, vtxz, centrality, pos); + + if(cfgFillPIDQA){ switch (std::abs(mcParticle.pdgCode())) { case kPions: - fillAllQA(track, vtxz, centrality, pos); + fillAllQA(track, vtxz, centrality, pos); break; case kKaons: - fillAllQA(track, vtxz, centrality, pos); + fillAllQA(track, vtxz, centrality, pos); break; case kProtons: - fillAllQA(track, vtxz, centrality, pos); + fillAllQA(track, vtxz, centrality, pos); break; - default: - fillAllQA(track, vtxz, centrality, pos); } } - if (!trackSelected(track, field)) - continue; - - fillMCPtHistos(track, mcParticle.pdgCode(), centrality); - - fillTrackQA(track, vtxz); fillPrimaryHistos(mcParticle, centrality); } // end of track loop @@ -1618,6 +1622,11 @@ struct FlowSP { if (std::fabs(charge) < 1) continue; + + if(cfgFilterLeptons && std::fabs(pdgCode) < 100) { + continue; + } + bool pos = (charge > 0) ? true : false; fillMCPtHistos(particle, pdgCode, centrality); From 196adb9bfc47949d365ea4b3033bdb89eafdf706 Mon Sep 17 00:00:00 2001 From: cnkoster Date: Tue, 2 Sep 2025 10:08:12 +0200 Subject: [PATCH 2/7] Clean up magic number --- PWGCF/Flow/Tasks/flowSP.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 52ca83acd95..4b0004580d1 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -1622,8 +1622,8 @@ struct FlowSP { if (std::fabs(charge) < 1) continue; - - if(cfgFilterLeptons && std::fabs(pdgCode) < 100) { + int minPDG = 100; + if(cfgFilterLeptons && std::fabs(pdgCode) < minPDG) { continue; } From f8f21f43a8ff959ab9256478bb194ede89db87f2 Mon Sep 17 00:00:00 2001 From: cnkoster Date: Tue, 2 Sep 2025 10:09:58 +0200 Subject: [PATCH 3/7] Clean up magic number --- PWGCF/Flow/Tasks/flowSP.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 4b0004580d1..98cba7e0d3c 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -1622,8 +1622,8 @@ struct FlowSP { if (std::fabs(charge) < 1) continue; - int minPDG = 100; - if(cfgFilterLeptons && std::fabs(pdgCode) < minPDG) { + int minVal = 100; + if(cfgFilterLeptons && std::fabs(pdgCode) < minVal) { continue; } From cade02a591bf31dd33c2722db79fb57e0b44d616 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Tue, 2 Sep 2025 08:10:37 +0000 Subject: [PATCH 4/7] Please consider the following formatting changes --- PWGCF/Flow/Tasks/flowSP.cxx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 98cba7e0d3c..50da061177f 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -86,7 +86,7 @@ struct FlowSP { O2_DEFINE_CONFIGURABLE(cfgMagField, float, 99999, "Configurable magnetic field;default CCDB will be queried"); O2_DEFINE_CONFIGURABLE(cfgCentMin, float, 0, "Minimum cenrality for selected events"); O2_DEFINE_CONFIGURABLE(cfgCentMax, float, 90, "Maximum cenrality for selected events"); - O2_DEFINE_CONFIGURABLE(cfgFilterLeptons, bool, true, "Filter out leptons from MCGenerated by requiring |pdgCode| > 100"); + O2_DEFINE_CONFIGURABLE(cfgFilterLeptons, bool, true, "Filter out leptons from MCGenerated by requiring |pdgCode| > 100"); // NUA and NUE weights O2_DEFINE_CONFIGURABLE(cfgFillWeights, bool, true, "Fill NUA weights"); O2_DEFINE_CONFIGURABLE(cfgFillWeightsPOS, bool, true, "Fill NUA weights only for positive charges"); @@ -1180,7 +1180,7 @@ struct FlowSP { } fillPIDQA(track); - if(!cfgFillChargeDependenceQA) + if (!cfgFillChargeDependenceQA) return; if (pos) { @@ -1339,7 +1339,7 @@ struct FlowSP { if (cfgFillQABefore) { fillAllQA(track, vtxz, centrality, pos); - if (cfgFillPIDQA){ + if (cfgFillPIDQA) { switch (trackPID) { case kPions: fillAllQA(track, vtxz, centrality, pos); @@ -1385,10 +1385,9 @@ struct FlowSP { histos.fill(HIST("hTrackCount"), trackSel_ParticleWeights); - fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); - if(cfgFillPIDQA){ + if (cfgFillPIDQA) { switch (trackPID) { case kPions: fillAllQA(track, vtxz, centrality, pos, wacc, weff, waccP, weffP, waccN, weffN); @@ -1505,7 +1504,7 @@ struct FlowSP { if (cfgFillQABefore) { fillAllQA(track, vtxz, centrality, pos); - if(cfgFillPIDQA){ + if (cfgFillPIDQA) { switch (std::abs(mcParticle.pdgCode())) { case kPions: fillAllQA(track, vtxz, centrality, pos); @@ -1527,7 +1526,7 @@ struct FlowSP { fillAllQA(track, vtxz, centrality, pos); - if(cfgFillPIDQA){ + if (cfgFillPIDQA) { switch (std::abs(mcParticle.pdgCode())) { case kPions: fillAllQA(track, vtxz, centrality, pos); @@ -1622,9 +1621,9 @@ struct FlowSP { if (std::fabs(charge) < 1) continue; - int minVal = 100; - if(cfgFilterLeptons && std::fabs(pdgCode) < minVal) { - continue; + int minVal = 100; + if (cfgFilterLeptons && std::fabs(pdgCode) < minVal) { + continue; } bool pos = (charge > 0) ? true : false; From 73f6f8701547425e877f6e63831d7b5ef7b3473e Mon Sep 17 00:00:00 2001 From: cnkoster Date: Wed, 3 Sep 2025 12:47:44 +0200 Subject: [PATCH 5/7] Found missing primaryParticles in MCReco and added it --- PWGCF/Flow/Tasks/flowSP.cxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 50da061177f..707cac9f43c 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -1496,6 +1496,10 @@ struct FlowSP { histos.fill(HIST("hTrackCount"), trackSel_ZeroCharge); fillMCPtHistos(track, mcParticle.pdgCode(), centrality); + + if (!mcParticle.isPhysicalPrimary()) + continue; + bool pos = (track.sign() > 0) ? true : false; fillPrimaryHistos(mcParticle, centrality); From 3f6f2607fe94dbd16607790b9df0e9c6c9d4b4cb Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Wed, 3 Sep 2025 10:48:12 +0000 Subject: [PATCH 6/7] Please consider the following formatting changes --- PWGCF/Flow/Tasks/flowSP.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 707cac9f43c..cf721e260a0 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -1497,9 +1497,9 @@ struct FlowSP { fillMCPtHistos(track, mcParticle.pdgCode(), centrality); - if (!mcParticle.isPhysicalPrimary()) - continue; - + if (!mcParticle.isPhysicalPrimary()) + continue; + bool pos = (track.sign() > 0) ? true : false; fillPrimaryHistos(mcParticle, centrality); From ea22be92eb4e60e4737350ae2d5e1f458db13191 Mon Sep 17 00:00:00 2001 From: cnkoster Date: Wed, 3 Sep 2025 14:39:46 +0200 Subject: [PATCH 7/7] moved fillIsPrimary before selecting primaries --- PWGCF/Flow/Tasks/flowSP.cxx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index cf721e260a0..44cc6d7b027 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -1496,14 +1496,13 @@ struct FlowSP { histos.fill(HIST("hTrackCount"), trackSel_ZeroCharge); fillMCPtHistos(track, mcParticle.pdgCode(), centrality); + fillPrimaryHistos(mcParticle, centrality); if (!mcParticle.isPhysicalPrimary()) continue; bool pos = (track.sign() > 0) ? true : false; - fillPrimaryHistos(mcParticle, centrality); - // This neglects PID (for now) later use getPID like in data. if (cfgFillQABefore) { fillAllQA(track, vtxz, centrality, pos);