From 0a49ff94c16572f1446282d97ce2ca70a6f1eb43 Mon Sep 17 00:00:00 2001 From: cnkoster Date: Thu, 13 Mar 2025 10:31:22 +0100 Subject: [PATCH 1/6] Improve MC process functions --- PWGCF/Flow/Tasks/flowSP.cxx | 253 ++++++++++++++++++++++++++++-------- 1 file changed, 196 insertions(+), 57 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 32f1ca5691b..cd236ee22d7 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -27,6 +27,7 @@ #include "Framework/ASoAHelpers.h" #include "Framework/RunningWorkflowInfo.h" #include "Framework/HistogramRegistry.h" +#include "Framework/O2DatabasePDGPlugin.h" #include "Common/DataModel/EventSelection.h" #include "Common/Core/TrackSelection.h" @@ -122,12 +123,27 @@ struct FlowSP { ConfigurableAxis axisCl = {"axisCl", {160, 0, 160}, "Number of cl. TPC"}; Filter collisionFilter = nabs(aod::collision::posZ) < cfgVtxZ; - Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && nabs(aod::track::dcaXY) < cfgDCAxy&& nabs(aod::track::dcaZ) < cfgDCAz; + Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && nabs(aod::track::dcaXY) < cfgDCAxy && nabs(aod::track::dcaZ) < cfgDCAz; + Filter trackFilterMC = nabs(aod::mcparticle::eta) < cfgEta && aod::mcparticle::pt > cfgPtmin && aod::mcparticle::pt < cfgPtmax; using UsedCollisions = soa::Filtered>; using UsedTracks = soa::Filtered>; + // For MC Reco and Gen + using CCs = soa::Filtered>; + using CC = CCs::iterator; + using TCs = soa::Join; + using FilteredTCs = soa::Filtered>; + using TC = TCs::iterator; + using MCs = soa::Filtered; + + Preslice partPerMcCollision = aod::mcparticle::mcCollisionId; + PresliceUnsorted colPerMcCollision = aod::mccollisionlabel::mcCollisionId; + PresliceUnsorted trackPerMcParticle = aod::mctracklabel::mcParticleId; + Preslice trackPerCollision = aod::track::collisionId; + // Connect to ccdb Service ccdb; + Service pdg; // struct to hold the correction histos/ struct Config { @@ -176,8 +192,22 @@ struct FlowSP { nEventSelections }; - enum TrackSelections { - trackSel_FilteredTracks, + // enum TrackSelections { + // trackSel_FilteredTracks, + // trackSel_NCls, + // trackSel_FshCls, + // trackSel_TPCBoundary, + // trackSel_ZeroCharge, + // trackSel_ParticleWeights, + // nTrackSelections + // }; + + enum TrackSelectionsUnFiltered { + trackSel_Eta, + trackSel_Pt, + trackSel_DCAxy, + trackSel_DCAz, + trackSel_GlobalTracks, trackSel_NCls, trackSel_FshCls, trackSel_TPCBoundary, @@ -225,7 +255,7 @@ struct FlowSP { fWeightsNEG->init(true, false); } - if ((doprocessData || doprocessMCReco)) { + if (doprocessData || doprocessMCReco || doprocessMCGen) { if (cfgFillQAHistos) { registry.add("QA/after/hCent", "", {HistType::kTH1D, {axisCent}}); registry.add("QA/after/pt_phi", "", {HistType::kTH2D, {axisPt, axisPhiMod}}); @@ -245,19 +275,29 @@ struct FlowSP { registry.add("QA/after/CentFT0C_vs_CentFV0A", " ; Cent FT0C (%); Cent FV0A (%) ", {HistType::kTH2D, {axisCent, axisCent}}); registry.add("QA/after/CentFT0C_vs_CentNGlobal", " ; Cent FT0C (%); Cent NGlobal (%) ", {HistType::kTH2D, {axisCent, axisCent}}); + if (doprocessData || doprocessMCReco){ // track QA for pos, neg, incl - registry.add("incl/QA/hPt", "", kTH1D, {axisPt}); - registry.add("incl/QA/hPhi", "", kTH1D, {axisPhi}); - registry.add("incl/QA/hPhiCorrected", "", kTH1D, {axisPhi}); - registry.add("incl/QA/hEta", "", kTH1D, {axisEta}); - registry.add("incl/QA/hPhi_Eta_vz", "", kTH3D, {axisPhi, axisEta, axisVz}); - registry.add("incl/QA/hDCAxy_pt", "", kTH2D, {axisPt, axisDCAxy}); - registry.add("incl/QA/hDCAz_pt", "", kTH2D, {axisPt, axisDCAz}); - registry.add("incl/QA/hSharedClusters_pt", "", {HistType::kTH2D, {axisPt, axisShCl}}); - registry.add("incl/QA/hCrossedRows_pt", "", {HistType::kTH2D, {axisPt, axisCl}}); + registry.add("incl/QA/hPt", "", kTH1D, {axisPt}); + registry.add("incl/QA/hPhi", "", kTH1D, {axisPhi}); + registry.add("incl/QA/hPhiCorrected", "", kTH1D, {axisPhi}); + registry.add("incl/QA/hEta", "", kTH1D, {axisEta}); + registry.add("incl/QA/hPhi_Eta_vz", "", kTH3D, {axisPhi, axisEta, axisVz}); + registry.add("incl/QA/hDCAxy_pt", "", kTH2D, {axisPt, axisDCAxy}); + registry.add("incl/QA/hDCAz_pt", "", kTH2D, {axisPt, axisDCAz}); + registry.add("incl/QA/hSharedClusters_pt", "", {HistType::kTH2D, {axisPt, axisShCl}}); + registry.add("incl/QA/hCrossedRows_pt", "", {HistType::kTH2D, {axisPt, axisCl}}); + } } if (doprocessMCReco) { + registry.add("trackMCReco/after/hIsPhysicalPrimary", "", {HistType::kTH1D, {{2,0,2}}}); + registry.add("trackMCReco/hTrackSize_unFiltered", "", {HistType::kTH1D, {{100,0,20000}}}); + registry.add("trackMCReco/hTrackSize_Filtered", "", {HistType::kTH1D, {{100,0,2000}}}); + registry.get(HIST("trackMCReco/after/hIsPhysicalPrimary"))->GetXaxis()->SetBinLabel(1, "Secondary"); + registry.get(HIST("trackMCReco/after/hIsPhysicalPrimary"))->GetXaxis()->SetBinLabel(2, "Primary"); + + // registry.add("trackMCReco/after/hPrimary_cent", "", {HistType::kTH1D, {{2,0,2}}}); + registry.add("trackMCReco/after/hPt_inclusive", "", {HistType::kTH1D, {axisPt}}); registry.add("trackMCReco/after/hPt_positive", "", {HistType::kTH1D, {axisPt}}); registry.add("trackMCReco/after/hPt_negative", "", {HistType::kTH1D, {axisPt}}); @@ -366,9 +406,14 @@ struct FlowSP { registry.addClone("incl/", "pos/"); registry.addClone("incl/", "neg/"); } - } else if (doprocessMCGen) { - registry.add("trackMCGen/before/pt_gen_incl", "", {HistType::kTH1D, {axisPt}}); - registry.add("trackMCGen/before/phi_eta_vtxZ_gen", "", {HistType::kTH3D, {axisPhi, axisEta, axisVz}}); + } + + if (doprocessMCGen) { + registry.add("trackMCGen/nCollReconstructedPerMcCollision", "", {HistType::kTH1D, {{10, -5, 5}}}); + registry.add("trackMCGen/before/incl/pt_gen", "", {HistType::kTH1D, {axisPt}}); + registry.add("trackMCGen/before/incl/phi_eta_vtxZ_gen", "", {HistType::kTH3D, {axisPhi, axisEta, axisVz}}); + registry.addClone("trackMCGen/before/incl/", "trackMCGen/before/pos/"); + registry.addClone("trackMCGen/before/incl/", "trackMCGen/before/neg/"); registry.addClone("trackMCGen/before/", "trackMCGen/after/"); } @@ -387,7 +432,12 @@ struct FlowSP { registry.get(HIST("hEventCount"))->GetXaxis()->SetBinLabel(evSel_isSelectedZDC + 1, "isSelected"); registry.add("hTrackCount", "Number of Tracks; Cut; #Tracks Passed Cut", {HistType::kTH1D, {{nTrackSelections, 0, nTrackSelections}}}); - registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_FilteredTracks + 1, "Filtered Track"); + registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_Eta + 1, "Eta"); + registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_Pt + 1, "Pt"); + registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_DCAxy + 1, "DCAxy"); + registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_DCAz + 1, "DCAz"); + registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_GlobalTracks + 1, "GlobalTracks" ); + // registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_FilteredTracks + 1, "Filtered Track"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_NCls + 1, "nClusters TPC"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_FshCls + 1, "Frac. sh. Cls TPC"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_TPCBoundary + 1, "TPC Boundary"); @@ -605,6 +655,26 @@ struct FlowSP { template bool trackSelected(TrackObject track, const int& field) { + if(std::fabs(track.eta()) < cfgEta ) + return false; + registry.fill(HIST("hTrackCount"), trackSel_Eta); + + if (track.pt() < cfgPtmin || track.pt() > cfgPtmax) + return false; + + registry.fill(HIST("hTrackCount"), trackSel_Pt); + + if (track.dcaXY() > cfgDCAxy) + return false; + + registry.fill(HIST("hTrackCount"), trackSel_DCAxy); + + if (track.dcaZ() > cfgDCAz) + return false; + + registry.fill(HIST("hTrackCount"), trackSel_DCAz); + + // registry.fill(HIST("hTrackCount"), trackSel_GlobalTracks); if (track.tpcNClsFound() < cfgNcls) return false; @@ -872,7 +942,7 @@ struct FlowSP { if (cfgFillQAHistos) registry.fill(HIST("QA/before/hPt_inclusive"), track.pt()); - registry.fill(HIST("hTrackCount"), trackSel_FilteredTracks); + // registry.fill(HIST("hTrackCount"), trackSel_FilteredTracks); float weff = 1., wacc = 1.; float weffP = 1., waccP = 1.; @@ -945,7 +1015,7 @@ struct FlowSP { } PROCESS_SWITCH(FlowSP, processData, "Process analysis for non-derived data", true); - void processMCReco(soa::Filtered>::iterator const& collision, aod::BCsWithTimestamps const&, soa::Filtered> const& tracks, aod::McParticles const&) + void processMCReco(CC const& collision, aod::BCsWithTimestamps const&, TCs const& tracks, FilteredTCs const& filteredTracks, aod::McParticles const&) { auto bc = collision.template bc_as(); auto field = (cfgMagField == 99999) ? getMagneticField(bc.timestamp()) : cfgMagField; @@ -964,21 +1034,24 @@ struct FlowSP { if (cfgFillQAHistos) fillEventQA(collision, tracks); - if (cfgEvSelsMCReco && !eventSelected(collision, tracks.size(), centrality)) + if (!eventSelected(collision, filteredTracks.size(), centrality)) return; + + if(!collision.has_mcCollision()){ + LOGF(info, "No mccollision found for this collision"); + return; + } + if (cfgFillQAHistos) fillEventQA(collision, tracks); - for (const auto& track : tracks) { + // LOGF(info, "Size of tracks: %i", tracks.size()); + registry.fill(HIST("trackMCReco/hTrackSize_unFiltered"), tracks.size()); + registry.fill(HIST("trackMCReco/hTrackSize_Filtered"), tracks.size()); + for (const auto& track : filteredTracks) { auto mcParticle = track.mcParticle(); - if (!mcParticle.isPhysicalPrimary()) - continue; - - if (mcParticle.eta() < -cfgEta || mcParticle.eta() > cfgEta || mcParticle.pt() < cfgPtmin || mcParticle.pt() > cfgPtmax || track.tpcNClsFound() < cfgNcls) - continue; - if (track.sign() == 0.0) continue; bool pos = (track.sign() > 0) ? true : false; @@ -990,6 +1063,15 @@ struct FlowSP { registry.fill(HIST("trackMCReco/before/hPt_negative"), track.pt()); } + if (!mcParticle.isPhysicalPrimary()) + registry.fill(HIST("trackMCReco/before/hIsPhysicalPrimary"), 0); + else + registry.fill(HIST("trackMCReco/before/hIsPhysicalPrimary"), 1); + + if (!mcParticle.isPhysicalPrimary()){ + continue; + } + if (!trackSelected(track, field)) continue; @@ -1007,44 +1089,101 @@ struct FlowSP { } PROCESS_SWITCH(FlowSP, processMCReco, "Process analysis for MC reconstructed events", false); - Filter mcCollFilter = nabs(aod::mccollision::posZ) < cfgVtxZ; - void processMCGen(soa::Filtered::iterator const& mcCollision, soa::SmallGroups> const& collisions, aod::McParticles const& particles) + // Filter mcCollFilter = nabs(aod::mccollision::posZ) < cfgVtxZ; + void processMCGen(aod::McCollisions const& mcCollisions, CCs const& collisions, TCs const& tracks, FilteredTCs const& filteredTracks, MCs const& McParts) { - if (collisions.size() != 1) { // check if MC collision is only reconstructed once! (https://indico.cern.ch/event/1425820/contributions/6170879/attachments/2947721/5180548/DDChinellato-O2AT4-HandsOn-03a.pdf) - return; - } - float centrality = -1; - for (const auto& collision : collisions) { - centrality = collision.centFT0C(); - if (cfgFT0Cvariant1) - centrality = collision.centFT0CVariant1(); - if (cfgFT0M) - centrality = collision.centFT0M(); - if (cfgFV0A) - centrality = collision.centFV0A(); - if (cfgNGlobal) - centrality = collision.centNGlobal(); - } + // LOGF(info, "Size of mccollisions: %i", mcCollisions.size()); - if (particles.size() < 1) - return; - if (centrality < cfgCentMin || centrality > cfgCentMax) - return; + for (auto mcCollision : mcCollisions) { + float centrality = -1; + bool colSelected = true; - float vtxz = mcCollision.posZ(); + // get McParticles which belong to mccollision + auto partSlice = McParts.sliceBy(partPerMcCollision, mcCollision.globalIndex()); - for (const auto& particle : particles) { - if (!particle.isPhysicalPrimary()) + // get reconstructed collision which belongs to mccollision + auto colSlice = collisions.sliceBy(colPerMcCollision, mcCollision.globalIndex()); + registry.fill(HIST("trackMCGen/nCollReconstructedPerMcCollision"), colSlice.size()); + if (colSlice.size() != 1) { // check if MC collision is only reconstructed once! (https://indico.cern.ch/event/1425820/contributions/6170879/attachments/2947721/5180548/DDChinellato-O2AT4-HandsOn-03a.pdf) continue; + } - registry.fill(HIST("trackMCGen/before/pt_gen_incl"), particle.pt()); - registry.fill(HIST("trackMCGen/before/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); + for (const auto& col : colSlice) { + // get tracks that belong to reconstructed collision + auto trackSlice = tracks.sliceBy(trackPerCollision, col.globalIndex()); + + auto filteredTrackSlice = filteredTracks.sliceBy(trackPerCollision, col.globalIndex()); + + centrality = col.centFT0C(); + if (cfgFT0Cvariant1) + centrality = col.centFT0CVariant1(); + if (cfgFT0M) + centrality = col.centFT0M(); + if (cfgFV0A) + centrality = col.centFV0A(); + if (cfgNGlobal) + centrality = col.centNGlobal(); + fillEventQA(col, trackSlice); + if(trackSlice.size() < 1) { + colSelected=false; + continue; + } + if(!eventSelected(col, filteredTrackSlice.size(), centrality)){ + colSelected=false; + continue; + } + fillEventQA(col, trackSlice); - if (particle.eta() < -cfgEta || particle.eta() > cfgEta || particle.pt() < cfgPtmin || particle.pt() > cfgPtmax) - continue; + if(!colSelected) + continue; + + float vtxz = mcCollision.posZ(); + + for (const auto& particle : partSlice) { + if (!particle.isPhysicalPrimary()) + continue; - registry.fill(HIST("trackMCGen/after/pt_gen_incl"), particle.pt()); - registry.fill(HIST("trackMCGen/after/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); + int charge = 0;; + + auto pdgCode = particle.pdgCode(); + auto pdgInfo = pdg->GetParticle(pdgCode); + if (pdgInfo != nullptr) { + charge = pdgInfo->Charge(); + } + + if (std::fabs(charge) <1) + continue; + + LOGF(info, "Charge: %i \t pdgCode %d", charge, pdgCode); + + bool pos = (charge > 0) ? true : false; + + registry.fill(HIST("trackMCGen/before/incl/pt_gen"), particle.pt()); + registry.fill(HIST("trackMCGen/before/incl/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); + + if(pos){ + registry.fill(HIST("trackMCGen/before/pos/pt_gen"), particle.pt()); + registry.fill(HIST("trackMCGen/before/pos/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); + } else { + registry.fill(HIST("trackMCGen/before/neg/pt_gen"), particle.pt()); + registry.fill(HIST("trackMCGen/before/neg/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); + } + + if (particle.eta() < -cfgEta || particle.eta() > cfgEta || particle.pt() < cfgPtmin || particle.pt() > cfgPtmax) + continue; + + registry.fill(HIST("trackMCGen/after/incl/pt_gen"), particle.pt()); + registry.fill(HIST("trackMCGen/after/incl/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); + + if(pos){ + registry.fill(HIST("trackMCGen/after/pos/pt_gen"), particle.pt()); + registry.fill(HIST("trackMCGen/after/pos/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); + } else { + registry.fill(HIST("trackMCGen/after/neg/pt_gen"), particle.pt()); + registry.fill(HIST("trackMCGen/after/neg/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); + } + } + } } } PROCESS_SWITCH(FlowSP, processMCGen, "Process analysis for MC generated events", false); From 26344cb5f9154c43b6b1ff8b41d893df96963e78 Mon Sep 17 00:00:00 2001 From: cnkoster Date: Thu, 13 Mar 2025 10:48:11 +0100 Subject: [PATCH 2/6] Remove commented out code --- PWGCF/Flow/Tasks/flowSP.cxx | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index cd236ee22d7..e4541919995 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -93,7 +93,6 @@ struct FlowSP { O2_DEFINE_CONFIGURABLE(cfgTVXinTRD, bool, false, "Use kTVXinTRD (reject TRD triggered events)"); O2_DEFINE_CONFIGURABLE(cfgIsVertexITSTPC, bool, true, "Selects collisions with at least one ITS-TPC track"); O2_DEFINE_CONFIGURABLE(cfgIsGoodITSLayersAll, bool, true, "Cut time intervals with dead ITS staves"); - O2_DEFINE_CONFIGURABLE(cfgEvSelsMCReco, bool, true, "Apply event selections in MC Reco"); // harmonics for v coefficients O2_DEFINE_CONFIGURABLE(cfgHarm, int, 1, "Flow harmonic n for ux and uy: (Cos(n*phi), Sin(n*phi))"); O2_DEFINE_CONFIGURABLE(cfgHarmMixed, int, 2, "Flow harmonic n for ux and uy in mixed harmonics (MH): (Cos(n*phi), Sin(n*phi))"); @@ -192,17 +191,7 @@ struct FlowSP { nEventSelections }; - // enum TrackSelections { - // trackSel_FilteredTracks, - // trackSel_NCls, - // trackSel_FshCls, - // trackSel_TPCBoundary, - // trackSel_ZeroCharge, - // trackSel_ParticleWeights, - // nTrackSelections - // }; - - enum TrackSelectionsUnFiltered { + enum TrackSelectionsUnFiltered { trackSel_Eta, trackSel_Pt, trackSel_DCAxy, @@ -437,7 +426,6 @@ struct FlowSP { registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_DCAxy + 1, "DCAxy"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_DCAz + 1, "DCAz"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_GlobalTracks + 1, "GlobalTracks" ); - // registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_FilteredTracks + 1, "Filtered Track"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_NCls + 1, "nClusters TPC"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_FshCls + 1, "Frac. sh. Cls TPC"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_TPCBoundary + 1, "TPC Boundary"); From 5e13823535395b38d4d240396717f0df185064ec Mon Sep 17 00:00:00 2001 From: cnkoster Date: Thu, 13 Mar 2025 11:36:21 +0100 Subject: [PATCH 3/6] Change tracktables --- 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 e4541919995..5d501e12e74 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -281,7 +281,7 @@ struct FlowSP { if (doprocessMCReco) { registry.add("trackMCReco/after/hIsPhysicalPrimary", "", {HistType::kTH1D, {{2,0,2}}}); registry.add("trackMCReco/hTrackSize_unFiltered", "", {HistType::kTH1D, {{100,0,20000}}}); - registry.add("trackMCReco/hTrackSize_Filtered", "", {HistType::kTH1D, {{100,0,2000}}}); + registry.add("trackMCReco/hTrackSize_Filtered", "", {HistType::kTH1D, {{100,0,20000}}}); registry.get(HIST("trackMCReco/after/hIsPhysicalPrimary"))->GetXaxis()->SetBinLabel(1, "Secondary"); registry.get(HIST("trackMCReco/after/hIsPhysicalPrimary"))->GetXaxis()->SetBinLabel(2, "Primary"); @@ -1036,7 +1036,7 @@ struct FlowSP { // LOGF(info, "Size of tracks: %i", tracks.size()); registry.fill(HIST("trackMCReco/hTrackSize_unFiltered"), tracks.size()); - registry.fill(HIST("trackMCReco/hTrackSize_Filtered"), tracks.size()); + registry.fill(HIST("trackMCReco/hTrackSize_Filtered"), Filteredtracks.size()); for (const auto& track : filteredTracks) { auto mcParticle = track.mcParticle(); From 93b641f2c4189e8f89ca1308e119b327c8b39af0 Mon Sep 17 00:00:00 2001 From: cnkoster Date: Thu, 13 Mar 2025 11:52:42 +0100 Subject: [PATCH 4/6] Remove double statements --- PWGCF/Flow/Tasks/flowSP.cxx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 5d501e12e74..46f1fd383cd 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -1051,14 +1051,12 @@ struct FlowSP { registry.fill(HIST("trackMCReco/before/hPt_negative"), track.pt()); } - if (!mcParticle.isPhysicalPrimary()) + if (!mcParticle.isPhysicalPrimary()) { registry.fill(HIST("trackMCReco/before/hIsPhysicalPrimary"), 0); - else + continue; + } else { registry.fill(HIST("trackMCReco/before/hIsPhysicalPrimary"), 1); - - if (!mcParticle.isPhysicalPrimary()){ - continue; - } + } if (!trackSelected(track, field)) continue; From 99447db0e5c509be479d9c41704700170a7c2a92 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Thu, 13 Mar 2025 11:00:51 +0000 Subject: [PATCH 5/6] Please consider the following formatting changes --- PWGCF/Flow/Tasks/flowSP.cxx | 66 ++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 46f1fd383cd..1d017d989d1 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -122,16 +122,16 @@ struct FlowSP { ConfigurableAxis axisCl = {"axisCl", {160, 0, 160}, "Number of cl. TPC"}; Filter collisionFilter = nabs(aod::collision::posZ) < cfgVtxZ; - Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && nabs(aod::track::dcaXY) < cfgDCAxy && nabs(aod::track::dcaZ) < cfgDCAz; - Filter trackFilterMC = nabs(aod::mcparticle::eta) < cfgEta && aod::mcparticle::pt > cfgPtmin && aod::mcparticle::pt < cfgPtmax; + Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && nabs(aod::track::dcaXY) < cfgDCAxy&& nabs(aod::track::dcaZ) < cfgDCAz; + Filter trackFilterMC = nabs(aod::mcparticle::eta) < cfgEta && aod::mcparticle::pt > cfgPtmin&& aod::mcparticle::pt < cfgPtmax; using UsedCollisions = soa::Filtered>; using UsedTracks = soa::Filtered>; // For MC Reco and Gen - using CCs = soa::Filtered>; - using CC = CCs::iterator; - using TCs = soa::Join; - using FilteredTCs = soa::Filtered>; + using CCs = soa::Filtered>; + using CC = CCs::iterator; + using TCs = soa::Join; + using FilteredTCs = soa::Filtered>; using TC = TCs::iterator; using MCs = soa::Filtered; @@ -196,7 +196,7 @@ struct FlowSP { trackSel_Pt, trackSel_DCAxy, trackSel_DCAz, - trackSel_GlobalTracks, + trackSel_GlobalTracks, trackSel_NCls, trackSel_FshCls, trackSel_TPCBoundary, @@ -264,8 +264,8 @@ struct FlowSP { registry.add("QA/after/CentFT0C_vs_CentFV0A", " ; Cent FT0C (%); Cent FV0A (%) ", {HistType::kTH2D, {axisCent, axisCent}}); registry.add("QA/after/CentFT0C_vs_CentNGlobal", " ; Cent FT0C (%); Cent NGlobal (%) ", {HistType::kTH2D, {axisCent, axisCent}}); - if (doprocessData || doprocessMCReco){ - // track QA for pos, neg, incl + if (doprocessData || doprocessMCReco) { + // track QA for pos, neg, incl registry.add("incl/QA/hPt", "", kTH1D, {axisPt}); registry.add("incl/QA/hPhi", "", kTH1D, {axisPhi}); registry.add("incl/QA/hPhiCorrected", "", kTH1D, {axisPhi}); @@ -279,9 +279,9 @@ struct FlowSP { } if (doprocessMCReco) { - registry.add("trackMCReco/after/hIsPhysicalPrimary", "", {HistType::kTH1D, {{2,0,2}}}); - registry.add("trackMCReco/hTrackSize_unFiltered", "", {HistType::kTH1D, {{100,0,20000}}}); - registry.add("trackMCReco/hTrackSize_Filtered", "", {HistType::kTH1D, {{100,0,20000}}}); + registry.add("trackMCReco/after/hIsPhysicalPrimary", "", {HistType::kTH1D, {{2, 0, 2}}}); + registry.add("trackMCReco/hTrackSize_unFiltered", "", {HistType::kTH1D, {{100, 0, 20000}}}); + registry.add("trackMCReco/hTrackSize_Filtered", "", {HistType::kTH1D, {{100, 0, 20000}}}); registry.get(HIST("trackMCReco/after/hIsPhysicalPrimary"))->GetXaxis()->SetBinLabel(1, "Secondary"); registry.get(HIST("trackMCReco/after/hIsPhysicalPrimary"))->GetXaxis()->SetBinLabel(2, "Primary"); @@ -395,8 +395,8 @@ struct FlowSP { registry.addClone("incl/", "pos/"); registry.addClone("incl/", "neg/"); } - } - + } + if (doprocessMCGen) { registry.add("trackMCGen/nCollReconstructedPerMcCollision", "", {HistType::kTH1D, {{10, -5, 5}}}); registry.add("trackMCGen/before/incl/pt_gen", "", {HistType::kTH1D, {axisPt}}); @@ -425,7 +425,7 @@ struct FlowSP { registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_Pt + 1, "Pt"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_DCAxy + 1, "DCAxy"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_DCAz + 1, "DCAz"); - registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_GlobalTracks + 1, "GlobalTracks" ); + registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_GlobalTracks + 1, "GlobalTracks"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_NCls + 1, "nClusters TPC"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_FshCls + 1, "Frac. sh. Cls TPC"); registry.get(HIST("hTrackCount"))->GetXaxis()->SetBinLabel(trackSel_TPCBoundary + 1, "TPC Boundary"); @@ -643,10 +643,10 @@ struct FlowSP { template bool trackSelected(TrackObject track, const int& field) { - if(std::fabs(track.eta()) < cfgEta ) + if (std::fabs(track.eta()) < cfgEta) return false; registry.fill(HIST("hTrackCount"), trackSel_Eta); - + if (track.pt() < cfgPtmin || track.pt() > cfgPtmax) return false; @@ -1025,8 +1025,7 @@ struct FlowSP { if (!eventSelected(collision, filteredTracks.size(), centrality)) return; - - if(!collision.has_mcCollision()){ + if (!collision.has_mcCollision()) { LOGF(info, "No mccollision found for this collision"); return; } @@ -1053,7 +1052,7 @@ struct FlowSP { if (!mcParticle.isPhysicalPrimary()) { registry.fill(HIST("trackMCReco/before/hIsPhysicalPrimary"), 0); - continue; + continue; } else { registry.fill(HIST("trackMCReco/before/hIsPhysicalPrimary"), 1); } @@ -1110,17 +1109,17 @@ struct FlowSP { if (cfgNGlobal) centrality = col.centNGlobal(); fillEventQA(col, trackSlice); - if(trackSlice.size() < 1) { - colSelected=false; + if (trackSlice.size() < 1) { + colSelected = false; continue; } - if(!eventSelected(col, filteredTrackSlice.size(), centrality)){ - colSelected=false; + if (!eventSelected(col, filteredTrackSlice.size(), centrality)) { + colSelected = false; continue; } fillEventQA(col, trackSlice); - if(!colSelected) + if (!colSelected) continue; float vtxz = mcCollision.posZ(); @@ -1129,15 +1128,16 @@ struct FlowSP { if (!particle.isPhysicalPrimary()) continue; - int charge = 0;; + int charge = 0; + ; auto pdgCode = particle.pdgCode(); auto pdgInfo = pdg->GetParticle(pdgCode); if (pdgInfo != nullptr) { - charge = pdgInfo->Charge(); - } + charge = pdgInfo->Charge(); + } - if (std::fabs(charge) <1) + if (std::fabs(charge) < 1) continue; LOGF(info, "Charge: %i \t pdgCode %d", charge, pdgCode); @@ -1147,10 +1147,10 @@ struct FlowSP { registry.fill(HIST("trackMCGen/before/incl/pt_gen"), particle.pt()); registry.fill(HIST("trackMCGen/before/incl/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); - if(pos){ + if (pos) { registry.fill(HIST("trackMCGen/before/pos/pt_gen"), particle.pt()); registry.fill(HIST("trackMCGen/before/pos/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); - } else { + } else { registry.fill(HIST("trackMCGen/before/neg/pt_gen"), particle.pt()); registry.fill(HIST("trackMCGen/before/neg/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); } @@ -1161,10 +1161,10 @@ struct FlowSP { registry.fill(HIST("trackMCGen/after/incl/pt_gen"), particle.pt()); registry.fill(HIST("trackMCGen/after/incl/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); - if(pos){ + if (pos) { registry.fill(HIST("trackMCGen/after/pos/pt_gen"), particle.pt()); registry.fill(HIST("trackMCGen/after/pos/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); - } else { + } else { registry.fill(HIST("trackMCGen/after/neg/pt_gen"), particle.pt()); registry.fill(HIST("trackMCGen/after/neg/phi_eta_vtxZ_gen"), particle.phi(), particle.eta(), vtxz); } From ba250108f3b40a96408c0bfd3d4439e8c9848013 Mon Sep 17 00:00:00 2001 From: cnkoster Date: Thu, 13 Mar 2025 12:04:03 +0100 Subject: [PATCH 6/6] O2 linter --- PWGCF/Flow/Tasks/flowSP.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGCF/Flow/Tasks/flowSP.cxx b/PWGCF/Flow/Tasks/flowSP.cxx index 1d017d989d1..3bbde5b7a61 100644 --- a/PWGCF/Flow/Tasks/flowSP.cxx +++ b/PWGCF/Flow/Tasks/flowSP.cxx @@ -1079,7 +1079,7 @@ struct FlowSP { { // LOGF(info, "Size of mccollisions: %i", mcCollisions.size()); - for (auto mcCollision : mcCollisions) { + for (const auto& mcCollision : mcCollisions) { float centrality = -1; bool colSelected = true;