From 5ac5c88d5986cea9e4573aea13d816be2a36e2fd Mon Sep 17 00:00:00 2001 From: mm1707 <126352184+mm1707@users.noreply.github.com> Date: Sun, 19 Jan 2025 14:25:39 +0100 Subject: [PATCH 1/6] TrackV0 Run2 Centrality and M_inv(pT) --- .../Core/FemtoUniverseV0Selection.h | 14 ++- .../femtoUniverseProducerTask.cxx | 93 +++++-------------- 2 files changed, 37 insertions(+), 70 deletions(-) diff --git a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h index d5999f658e0..6ac1023fe8e 100644 --- a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h +++ b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h @@ -329,6 +329,10 @@ void FemtoUniverseV0Selection::init(HistogramRegistry* registry) kTH1F, {massAxisAntiLambda}); mHistogramRegistry->add((folderName + "/hInvMassLambdaAntiLambda").c_str(), "", kTH2F, {massAxisLambda, massAxisAntiLambda}); + mHistogramRegistry->add((folderName + "/hInvMassAntiLambdavsPt").c_str(), + "; ; #it{p}_{T} (GeV/#it{c})", kTH2F, {massAxisAntiLambda, {8, 0.0, 5.0}}); + mHistogramRegistry->add((folderName + "/hInvMassLambdavsPt").c_str(), + "; ; #it{p}_{T} (GeV/#it{c})", kTH2F, {massAxisLambda, {8, 0.0, 5.0}}); posDaughTrack.initfill( HIST(o2::aod::femtouniverseparticle::ParticleTypeName[part]) + HIST("/hInvMassLambdaAntiLambda"), - v0.mLambda(), v0.mAntiLambda()); + v0.mLambda(), v0.mAntiLambda()); + mHistogramRegistry->fill( + HIST(o2::aod::femtouniverseparticle::ParticleTypeName[part]) + + HIST("/hInvMassAntiLambdavsPt"), + v0.mAntiLambda(), v0.pt()); + mHistogramRegistry->fill( + HIST(o2::aod::femtouniverseparticle::ParticleTypeName[part]) + + HIST("/hInvMassLambdavsPt"), + v0.mLambda(), v0.pt()); } posDaughTrack.fillQA::iterator; -using FemtoFullCollisionCentPP = - soa::Join::iterator; using FemtoFullCollisionCentRun2 = soa::Join::iterator; using FemtoFullCollisionCentRun3 = @@ -458,10 +456,10 @@ struct FemtoUniverseProducerTask { void init(InitContext&) { - if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false) { + if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false) { LOGF(fatal, "Neither processFullData nor processFullMC enabled. Please choose one."); } - if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true) { + if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true) { LOGF(fatal, "Cannot enable process Data and process MC at the same time. " "Please choose one."); @@ -811,51 +809,6 @@ struct FemtoUniverseProducerTask { return true; } - template - bool fillCollisionsCentPP(CollisionType const& col, TrackType const& tracks) - { - const auto vtxZ = col.posZ(); - float mult = 0; - int multNtr = 0; - if (confIsRun3) { - mult = col.centFT0M(); - multNtr = col.multNTracksPV(); - } else { - mult = 0.5 * (col.multFV0M()); /// For benchmarking on Run 2, V0M in - /// FemtoUniverseRun2 is defined V0M/2 - multNtr = col.multTracklets(); - } - if (confEvtUseTPCmult) { - multNtr = col.multTPC(); - } - - // check whether the basic event selection criteria are fulfilled - // if the basic selection is NOT fulfilled: - // in case of skimming run - don't store such collisions - // in case of trigger run - store such collisions but don't store any - // particle candidates for such collisions - if (!colCuts.isSelected(col)) { - return false; - } else { - if (!confIsUsePileUp) { - if (confDoSpher) { - outputCollision(vtxZ, mult, multNtr, colCuts.computeSphericity(col, tracks), mMagField); - } else { - outputCollision(vtxZ, mult, multNtr, 2, mMagField); - } - } else { - if (confDoSpher && (!confEvNoSameBunchPileup || col.selection_bit(aod::evsel::kNoSameBunchPileup)) && (!confEvIsGoodZvtxFT0vsPV || col.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV)) && (!confEvIsVertexITSTPC || col.selection_bit(aod::evsel::kIsVertexITSTPC))) { - outputCollision(vtxZ, mult, multNtr, colCuts.computeSphericity(col, tracks), mMagField); - } else { - outputCollision(vtxZ, mult, multNtr, 2, mMagField); - } - } - colCuts.fillQA(col); - return true; - } - return true; - } - template void fillMCTruthCollisions(CollisionType const& col, TrackType const& tracks) { @@ -1725,7 +1678,7 @@ struct FemtoUniverseProducerTask { { // get magnetic field for run getMagneticFieldTesla(col.bc_as()); - const double ir = 1.0; // fetch IR + const double ir = 0.0; // fetch IR // fill the tables const auto colcheck = fillCollisions(col, tracks); if (colcheck) { @@ -1738,25 +1691,6 @@ struct FemtoUniverseProducerTask { PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackData, "Provide experimental data for track track", true); - void processTrackDataCentPP(aod::FemtoFullCollisionCentPP const& col, - aod::BCsWithTimestamps const&, - aod::FemtoFullTracks const& tracks) - { - // get magnetic field for run - getMagneticFieldTesla(col.bc_as()); - const double ir = 1.0; // fetch IR - // fill the tables - const auto colcheck = fillCollisionsCentPP(col, tracks); - if (colcheck) { - if (confFillCollExt) { - fillCollisionsCentRun3ColExtra(col, ir); - } - fillTracks(tracks); - } - } - PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackDataCentPP, - "Provide experimental data for track track", true); - // using FilteredFemtoFullTracks = soa::Filtered; void processTrackPhiData(aod::FemtoFullCollision const& col, aod::BCsWithTimestamps const&, @@ -1884,6 +1818,27 @@ struct FemtoUniverseProducerTask { } PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackCentRun2Data, "Provide experimental data for Run 2 with centrality for track track", false); + void processTrackV0CentRun2Data(aod::FemtoFullCollisionCentRun2 const& col, + aod::BCsWithTimestamps const&, + soa::Filtered const& tracks, + aod::V0Datas const& fullV0s) + { + // get magnetic field for run + auto bc = col.bc_as(); + getMagneticFieldTesla(bc); + const double ir = 0.0; // fetch IR + + // fill the tables + const auto colcheck = fillCollisionsCentRun2(col); + if (colcheck) { + fillCollisionsCentRun3ColExtra(col, ir); + fillTracks(tracks); + fillV0(col, fullV0s, tracks); + } + } + PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackV0CentRun2Data, "Provide experimental data for Run 2 with centrality for track V0", false); + + void processTrackCentRun3Data(aod::FemtoFullCollisionCentRun3 const& col, aod::BCsWithTimestamps const&, soa::Filtered const& tracks) From 5e694bf7711b8d117ace3c187b49ab7bfc4e1f92 Mon Sep 17 00:00:00 2001 From: mm1707 Date: Sun, 19 Jan 2025 15:28:11 +0100 Subject: [PATCH 2/6] Clang and formatting --- PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h | 6 +++--- .../TableProducer/femtoUniverseProducerTask.cxx | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h index 6ac1023fe8e..d360e6a74f6 100644 --- a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h +++ b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h @@ -694,12 +694,12 @@ void FemtoUniverseV0Selection::fillQA(C const& /*col*/, V const& v0, T const& po mHistogramRegistry->fill( HIST(o2::aod::femtouniverseparticle::ParticleTypeName[part]) + HIST("/hInvMassLambdaAntiLambda"), - v0.mLambda(), v0.mAntiLambda()); - mHistogramRegistry->fill( + v0.mLambda(), v0.mAntiLambda()); + mHistogramRegistry->fill( HIST(o2::aod::femtouniverseparticle::ParticleTypeName[part]) + HIST("/hInvMassAntiLambdavsPt"), v0.mAntiLambda(), v0.pt()); - mHistogramRegistry->fill( + mHistogramRegistry->fill( HIST(o2::aod::femtouniverseparticle::ParticleTypeName[part]) + HIST("/hInvMassLambdavsPt"), v0.mLambda(), v0.pt()); diff --git a/PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx b/PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx index 322f344a5b6..4e0c0f9c668 100644 --- a/PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx +++ b/PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx @@ -1819,9 +1819,9 @@ struct FemtoUniverseProducerTask { PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackCentRun2Data, "Provide experimental data for Run 2 with centrality for track track", false); void processTrackV0CentRun2Data(aod::FemtoFullCollisionCentRun2 const& col, - aod::BCsWithTimestamps const&, - soa::Filtered const& tracks, - aod::V0Datas const& fullV0s) + aod::BCsWithTimestamps const&, + soa::Filtered const& tracks, + aod::V0Datas const& fullV0s) { // get magnetic field for run auto bc = col.bc_as(); @@ -1838,7 +1838,6 @@ struct FemtoUniverseProducerTask { } PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackV0CentRun2Data, "Provide experimental data for Run 2 with centrality for track V0", false); - void processTrackCentRun3Data(aod::FemtoFullCollisionCentRun3 const& col, aod::BCsWithTimestamps const&, soa::Filtered const& tracks) From 8f4bd7607ff456e9b7d9818d1fe0880487b3bd6c Mon Sep 17 00:00:00 2001 From: mm1707 Date: Sun, 19 Jan 2025 15:54:34 +0100 Subject: [PATCH 3/6] O2 linter --- PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h index d360e6a74f6..ae64480fe2a 100644 --- a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h +++ b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h @@ -589,7 +589,7 @@ std::array const std::vector decVtx = {v0.x(), v0.y(), v0.z()}; float observable = 0.; - for (auto& sel : mSelections) { + for (const auto& sel : mSelections) { const auto selVariable = sel.getSelectionVariable(); if (selVariable == femto_universe_v0_selection::kV0DecVtxMax) { for (size_t i = 0; i < decVtx.size(); ++i) { From cca99763dc8efb437873653c353346718c033a51 Mon Sep 17 00:00:00 2001 From: mm1707 Date: Sun, 19 Jan 2025 16:41:23 +0100 Subject: [PATCH 4/6] processTrackDataCentPP --- .../femtoUniverseProducerTask.cxx | 72 ++++++++++++++++++- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx b/PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx index 4e0c0f9c668..34be487f413 100644 --- a/PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx +++ b/PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx @@ -66,6 +66,8 @@ namespace o2::aod using FemtoFullCollision = soa::Join::iterator; +using FemtoFullCollisionCentPP = + soa::Join::iterator; using FemtoFullCollisionCentRun2 = soa::Join::iterator; using FemtoFullCollisionCentRun3 = @@ -456,10 +458,10 @@ struct FemtoUniverseProducerTask { void init(InitContext&) { - if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false) { + if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false) { LOGF(fatal, "Neither processFullData nor processFullMC enabled. Please choose one."); } - if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true) { + if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackV0CentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true) { LOGF(fatal, "Cannot enable process Data and process MC at the same time. " "Please choose one."); @@ -809,6 +811,51 @@ struct FemtoUniverseProducerTask { return true; } + template + bool fillCollisionsCentPP(CollisionType const& col, TrackType const& tracks) + { + const auto vtxZ = col.posZ(); + float mult = 0; + int multNtr = 0; + if (confIsRun3) { + mult = col.centFT0M(); + multNtr = col.multNTracksPV(); + } else { + mult = 0.5 * (col.multFV0M()); /// For benchmarking on Run 2, V0M in + /// FemtoUniverseRun2 is defined V0M/2 + multNtr = col.multTracklets(); + } + if (confEvtUseTPCmult) { + multNtr = col.multTPC(); + } + + // check whether the basic event selection criteria are fulfilled + // if the basic selection is NOT fulfilled: + // in case of skimming run - don't store such collisions + // in case of trigger run - store such collisions but don't store any + // particle candidates for such collisions + if (!colCuts.isSelected(col)) { + return false; + } else { + if (!confIsUsePileUp) { + if (confDoSpher) { + outputCollision(vtxZ, mult, multNtr, colCuts.computeSphericity(col, tracks), mMagField); + } else { + outputCollision(vtxZ, mult, multNtr, 2, mMagField); + } + } else { + if (confDoSpher && (!confEvNoSameBunchPileup || col.selection_bit(aod::evsel::kNoSameBunchPileup)) && (!confEvIsGoodZvtxFT0vsPV || col.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV)) && (!confEvIsVertexITSTPC || col.selection_bit(aod::evsel::kIsVertexITSTPC))) { + outputCollision(vtxZ, mult, multNtr, colCuts.computeSphericity(col, tracks), mMagField); + } else { + outputCollision(vtxZ, mult, multNtr, 2, mMagField); + } + } + colCuts.fillQA(col); + return true; + } + return true; + } + template void fillMCTruthCollisions(CollisionType const& col, TrackType const& tracks) { @@ -1678,7 +1725,7 @@ struct FemtoUniverseProducerTask { { // get magnetic field for run getMagneticFieldTesla(col.bc_as()); - const double ir = 0.0; // fetch IR + const double ir = 1.0; // fetch IR // fill the tables const auto colcheck = fillCollisions(col, tracks); if (colcheck) { @@ -1691,6 +1738,25 @@ struct FemtoUniverseProducerTask { PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackData, "Provide experimental data for track track", true); + void processTrackDataCentPP(aod::FemtoFullCollisionCentPP const& col, + aod::BCsWithTimestamps const&, + aod::FemtoFullTracks const& tracks) + { + // get magnetic field for run + getMagneticFieldTesla(col.bc_as()); + const double ir = 1.0; // fetch IR + // fill the tables + const auto colcheck = fillCollisionsCentPP(col, tracks); + if (colcheck) { + if (confFillCollExt) { + fillCollisionsCentRun3ColExtra(col, ir); + } + fillTracks(tracks); + } + } + PROCESS_SWITCH(FemtoUniverseProducerTask, processTrackDataCentPP, + "Provide experimental data for track track", true); + // using FilteredFemtoFullTracks = soa::Filtered; void processTrackPhiData(aod::FemtoFullCollision const& col, aod::BCsWithTimestamps const&, From 9f1d9e2ffdb67e41705eeeadf20be02194524140 Mon Sep 17 00:00:00 2001 From: mm1707 Date: Sun, 19 Jan 2025 16:59:07 +0100 Subject: [PATCH 5/6] O2 linter disable const-ref-in-for-loop --- PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h index ae64480fe2a..50dbaccb5c5 100644 --- a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h +++ b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h @@ -589,7 +589,7 @@ std::array const std::vector decVtx = {v0.x(), v0.y(), v0.z()}; float observable = 0.; - for (const auto& sel : mSelections) { + for (auto& sel : mSelections) { //o2-linter: disable=const-ref-in-for-loop const auto selVariable = sel.getSelectionVariable(); if (selVariable == femto_universe_v0_selection::kV0DecVtxMax) { for (size_t i = 0; i < decVtx.size(); ++i) { From d8e0586e498520869108f6372ac1f93d92ab7df1 Mon Sep 17 00:00:00 2001 From: mm1707 Date: Sun, 19 Jan 2025 17:02:37 +0100 Subject: [PATCH 6/6] Clang --- PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h index 50dbaccb5c5..aa2aad31d23 100644 --- a/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h +++ b/PWGCF/FemtoUniverse/Core/FemtoUniverseV0Selection.h @@ -589,7 +589,7 @@ std::array const std::vector decVtx = {v0.x(), v0.y(), v0.z()}; float observable = 0.; - for (auto& sel : mSelections) { //o2-linter: disable=const-ref-in-for-loop + for (auto& sel : mSelections) { // o2-linter: disable=const-ref-in-for-loop const auto selVariable = sel.getSelectionVariable(); if (selVariable == femto_universe_v0_selection::kV0DecVtxMax) { for (size_t i = 0; i < decVtx.size(); ++i) {