From 2b6307dcfd2c697a23957436f257b97b29b47bed Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Fri, 17 Jan 2025 18:56:06 +0000 Subject: [PATCH] Please consider the following formatting changes --- PWGMM/Mult/Tasks/dndeta-mft-pbpb.cxx | 386 +++++++++++++++------------ PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx | 386 +++++++++++++++------------ 2 files changed, 428 insertions(+), 344 deletions(-) diff --git a/PWGMM/Mult/Tasks/dndeta-mft-pbpb.cxx b/PWGMM/Mult/Tasks/dndeta-mft-pbpb.cxx index a0240debe4b..9bc57c2c63e 100644 --- a/PWGMM/Mult/Tasks/dndeta-mft-pbpb.cxx +++ b/PWGMM/Mult/Tasks/dndeta-mft-pbpb.cxx @@ -59,9 +59,15 @@ struct DndetaMFTPbPb { // Histogram registry HistogramRegistry registry{ - "registry", {}, OutputObjHandlingPolicy::AnalysisObject}; + "registry", + {}, + OutputObjHandlingPolicy::AnalysisObject}; HistogramRegistry qaregistry{ - "qaregistry", {}, OutputObjHandlingPolicy::AnalysisObject, false, true}; + "qaregistry", + {}, + OutputObjHandlingPolicy::AnalysisObject, + false, + true}; // analysis specific conf. Configurable usePhiCut{"usePhiCut", false, "use azimuthal angle cut"}; @@ -79,7 +85,7 @@ struct DndetaMFTPbPb { Configurable cfgPtMin{"cfgPtMin", 0., "minimum pT of the MFT tracks"}; Configurable cfgRequireCA{"cfgRequireCA", false, - "Use Cellular Automaton track-finding algorithm"}; + "Use Cellular Automaton track-finding algorithm"}; Configurable cfgDCAxyMax{"cfgDCAxyMax", 2.0f, "Cut on dcaXY"}; } trkcuts; @@ -90,13 +96,13 @@ struct DndetaMFTPbPb { Configurable useZDiffCut{"useZDiffCut", false, "use Zvtx reco-mc diff. cut"}; Configurable maxZvtxDiff{"maxZvtxDiff", 1.0f, - "max allowed Z vtx difference for reconstruced collisions (cm)"}; + "max allowed Z vtx difference for reconstruced collisions (cm)"}; Configurable requireNoCollInTimeRangeStd{"requireNoCollInTimeRangeStd", false, - "reject collisions corrupted by the cannibalism, with other collisions " - "within +/- 10 microseconds"}; + "reject collisions corrupted by the cannibalism, with other collisions " + "within +/- 10 microseconds"}; Configurable requireNoCollInTimeRangeNarrow{"requireNoCollInTimeRangeNarrow", false, - "reject collisions corrupted by the cannibalism, with other collisions " - "within +/- 10 microseconds"}; + "reject collisions corrupted by the cannibalism, with other collisions " + "within +/- 10 microseconds"}; ConfigurableAxis occupancyBins{"occupancyBins", {VARIABLE_WIDTH, 0.0f, 250.0f, 500.0f, 750.0f, 1000.0f, 1500.0f, 2000.0f, 3000.0f, 4500.0f, @@ -105,36 +111,41 @@ struct DndetaMFTPbPb { Configurable minOccupancy{"minOccupancy", -1, "minimum occupancy from neighbouring collisions"}; Configurable maxOccupancy{"maxOccupancy", -1, "maximum occupancy from neighbouring collisions"}; ConfigurableAxis centBins{"centBins", - {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, - ""}; + {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, + ""}; Service pdg; /// @brief init function, definition of histograms - void init(InitContext &) { + void init(InitContext&) + { if (static_cast(doprocessDataInclusive) + - static_cast(doprocessDatawBestTracksInclusive) > + static_cast(doprocessDatawBestTracksInclusive) > 1) { - LOGP(fatal, "Either processDataInclusive OR " - "processDatawBestTracksInclusive should be enabled!"); + LOGP(fatal, + "Either processDataInclusive OR " + "processDatawBestTracksInclusive should be enabled!"); } if (static_cast(doprocessDataCent) + - static_cast(doprocessDatawBestTracksCent) > + static_cast(doprocessDatawBestTracksCent) > 1) { - LOGP(fatal, "Either processDataCent OR processDatawBestTracksCent should " - "be enabled!"); + LOGP(fatal, + "Either processDataCent OR processDatawBestTracksCent should " + "be enabled!"); } if (static_cast(doprocessMCInclusive) + - static_cast(doprocessMCwBestTracksInclusive) > + static_cast(doprocessMCwBestTracksInclusive) > 1) { - LOGP(fatal, "Either processMCInclusive OR processMCwBestTracksInclusive " - "should be enabled!"); + LOGP(fatal, + "Either processMCInclusive OR processMCwBestTracksInclusive " + "should be enabled!"); } if (static_cast(doprocessMCCent) + - static_cast(doprocessMCwBestTracksCent) > + static_cast(doprocessMCwBestTracksCent) > 1) { - LOGP(fatal, "Either processMCCent OR processMCwBestTracksCent should be " - "enabled!"); + LOGP(fatal, + "Either processMCCent OR processMCwBestTracksCent should be " + "enabled!"); } auto hev = registry.add("hEvtSel", "hEvtSel", HistType::kTH1F, @@ -163,7 +174,7 @@ struct DndetaMFTPbPb { ";status;events", {HistType::kTH1F, {{2, 0.5, 2.5}}}}); auto hstat = registry.get(HIST("Events/Selection")); - auto *x = hstat->GetXaxis(); + auto* x = hstat->GetXaxis(); x->SetBinLabel(1, "All"); x->SetBinLabel(2, "Selected"); @@ -180,7 +191,7 @@ struct DndetaMFTPbPb { "; #chi^{2}; #it{#eta};", {HistType::kTH2F, {{600, 0, 20}, {100, -8, 8}}}}); qaregistry.add( - {"Tracks/Chi2", "; #chi^{2};", {HistType::kTH1F, {{600, 0, 20}}}}); + {"Tracks/Chi2", "; #chi^{2};", {HistType::kTH1F, {{600, 0, 20}}}}); qaregistry.add({"Tracks/NclustersEta", "; nClusters; #eta;", {HistType::kTH2F, {{7, 4, 10}, {100, -8, 8}}}}); @@ -223,7 +234,7 @@ struct DndetaMFTPbPb { ";status;centrality;events", {HistType::kTH2F, {{2, 0.5, 2.5}, centAxis}}}); auto hstat = registry.get(HIST("Events/Centrality/Selection")); - auto *x = hstat->GetXaxis(); + auto* x = hstat->GetXaxis(); x->SetBinLabel(1, "All"); x->SetBinLabel(2, "Selected"); @@ -241,9 +252,9 @@ struct DndetaMFTPbPb { {HistType::kTH1F, {centAxis}}, true}); qaregistry.add( - {"Tracks/Centrality/Chi2Eta", - "; #chi^{2}; #it{#eta}; centrality", - {HistType::kTH3F, {{600, 0, 20}, {100, -8, 8}, centAxis}}}); + {"Tracks/Centrality/Chi2Eta", + "; #chi^{2}; #it{#eta}; centrality", + {HistType::kTH3F, {{600, 0, 20}, {100, -8, 8}, centAxis}}}); qaregistry.add({"Tracks/Centrality/Chi2", "; #chi^{2}; centrality", {HistType::kTH2F, {{600, 0, 20}, centAxis}}}); @@ -268,9 +279,9 @@ struct DndetaMFTPbPb { "; #varphi; #eta; centrality", {HistType::kTH3F, {phiAxis, etaAxis, centAxis}}}); qaregistry.add( - {"Tracks/Centrality/NclustersEtaBest", - "; nClusters; #eta; centrality", - {HistType::kTH3F, {{7, 4, 10}, {100, -8, 8}, centAxis}}}); + {"Tracks/Centrality/NclustersEtaBest", + "; nClusters; #eta; centrality", + {HistType::kTH3F, {{7, 4, 10}, {100, -8, 8}, centAxis}}}); qaregistry.add({"Tracks/Centrality/TrackAmbDegree", " ; N_{coll}^{comp}", {HistType::kTH2F, {{51, -0.5, 50.5}, centAxis}}}); @@ -301,7 +312,7 @@ struct DndetaMFTPbPb { ";status;events", {HistType::kTH1F, {{3, 0.5, 3.5}}}}); auto heff = registry.get(HIST("Events/EvtEffGen")); - auto *x = heff->GetXaxis(); + auto* x = heff->GetXaxis(); x->SetBinLabel(1, "All reconstructed"); x->SetBinLabel(2, "Selected reconstructed"); x->SetBinLabel(3, "All generated"); @@ -331,7 +342,7 @@ struct DndetaMFTPbPb { " ; Z_{rec} - Z_{gen} (cm)", {HistType::kTH1F, {deltaZAxis}}}); qaregistry.add( - {"Events/SplitMult", " ; N_{gen}", {HistType::kTH1F, {multAxis}}}); + {"Events/SplitMult", " ; N_{gen}", {HistType::kTH1F, {multAxis}}}); } if (doprocessMCCent || doprocessMCwBestTracksCent) { @@ -339,7 +350,7 @@ struct DndetaMFTPbPb { ";status;events", {HistType::kTH2F, {{3, 0.5, 3.5}, centAxis}}}); auto heff = registry.get(HIST("Events/Centrality/EvtEffGen")); - auto *x = heff->GetXaxis(); + auto* x = heff->GetXaxis(); x->SetBinLabel(1, "All reconstructed"); x->SetBinLabel(2, "Selected reconstructed"); x->SetBinLabel(3, "All generated"); @@ -381,24 +392,24 @@ struct DndetaMFTPbPb { if (doprocessTrkEffIdxInlusive) { qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffGen", - "hPtPhiEtaZvtxEffGen", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffGen", + "hPtPhiEtaZvtxEffGen", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffRec", - "hPtPhiEtaZvtxEffRec", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffRec", + "hPtPhiEtaZvtxEffRec", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add({"Tracks/hPhiEtaDuplicates", " ; p_{T} (GeV/c);", {HistType::kTH2F, {phiAxis, etaAxis}}}); qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffDuplicates", - "hPtPhiEtaZvtxEffDuplicates", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffDuplicates", + "hPtPhiEtaZvtxEffDuplicates", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffGenDuplicates", - "hPtPhiEtaZvtxEffGenDuplicates", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffGenDuplicates", + "hPtPhiEtaZvtxEffGenDuplicates", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add({"Tracks/NmftTrkPerPart", "; #it{N}_{mft tracks per particle};", {HistType::kTH1F, {{200, -0.5, 200.}}}}); @@ -431,13 +442,13 @@ struct DndetaMFTPbPb { if (doprocessTrkEffBestInclusive) { qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffBestGen", - "hPtPhiEtaZvtxEffGen", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffBestGen", + "hPtPhiEtaZvtxEffGen", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffBestRec", - "hPtPhiEtaZvtxEffRec", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffBestRec", + "hPtPhiEtaZvtxEffRec", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add({"Tracks/hPtEffBestFakeRec", " ; p_{T} (GeV/c);", {HistType::kTH1F, {ptAxis}}}); @@ -471,16 +482,16 @@ struct DndetaMFTPbPb { if (doprocessMcQACent) { qaregistry.add( - {"Events/Centrality/hRecPerGenColls", - "; #it{N}_{reco collisions} / #it{N}_{gen collisions}; centrality", - {HistType::kTH2F, {{200, 0., 2.}, centAxis}}}); + {"Events/Centrality/hRecPerGenColls", + "; #it{N}_{reco collisions} / #it{N}_{gen collisions}; centrality", + {HistType::kTH2F, {{200, 0., 2.}, centAxis}}}); qaregistry.add({"Tracks/Centrality/hNmftTrks", "; #it{N}_{mft tracks}; centrality", {HistType::kTH2F, {{200, -0.5, 200.}, centAxis}}}); qaregistry.add( - {"Tracks/Centrality/hFracAmbiguousMftTrks", - "; #it{N}_{ambiguous tracks} / #it{N}_{tracks}; centrality", - {HistType::kTH2F, {{100, 0., 1.}, centAxis}}}); + {"Tracks/Centrality/hFracAmbiguousMftTrks", + "; #it{N}_{ambiguous tracks} / #it{N}_{tracks}; centrality", + {HistType::kTH2F, {{100, 0., 1.}, centAxis}}}); } } @@ -498,7 +509,7 @@ struct DndetaMFTPbPb { /// Joined tables using FullBCs = soa::Join; using CollBCs = - soa::Join; + soa::Join; using Colls = soa::Join; using Coll = Colls::iterator; using CollsCent = soa::Join; @@ -514,7 +525,9 @@ struct DndetaMFTPbPb { using FiltBestTracks = soa::Filtered; using FiltParticles = soa::Filtered; - template bool isTrackSelected(const T &track) { + template + bool isTrackSelected(const T& track) + { if (track.eta() < trkcuts.cfgEtaMin || track.eta() > trkcuts.cfgEtaMax) return false; if (trkcuts.cfgRequireCA && !track.isCA()) @@ -535,17 +548,18 @@ struct DndetaMFTPbPb { (phi > o2::constants::math::TwoPI - cfgPhiCut) || ((phi > ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) - - cfgPhiCut) && + cfgPhiCut) && (phi < ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) + - cfgPhiCut))) + cfgPhiCut))) return false; } return true; } template - int countTracks(T const& tracks, float z, float c, float occ) { + int countTracks(T const& tracks, float z, float c, float occ) + { auto nTrk = 0; if (tracks.size() > 0) { for (auto const& track : tracks) { @@ -590,8 +604,9 @@ struct DndetaMFTPbPb { } template - int countBestTracks(T const& /*tracks*/, B const& besttracks, float z, - float c, float occ) { + int countBestTracks(T const& /*tracks*/, B const& besttracks, float z, + float c, float occ) + { auto nATrk = 0; if (besttracks.size() > 0) { for (auto const& atrack : besttracks) { @@ -647,7 +662,9 @@ struct DndetaMFTPbPb { return nATrk; } - template int countPart(P const& particles) { + template + int countPart(P const& particles) + { auto nCharged = 0; for (auto const& particle : particles) { if (!isChrgParticle(particle.pdgCode())) { @@ -659,7 +676,8 @@ struct DndetaMFTPbPb { } template - bool isGoodEvent(C const& collision) { + bool isGoodEvent(C const& collision) + { if constexpr (fillHis) { registry.fill(HIST("hEvtSel"), 0); } @@ -720,7 +738,8 @@ struct DndetaMFTPbPb { /// @brief Selection of charged particles /// @return true: charged; false: not charged - bool isChrgParticle(int code) { + bool isChrgParticle(int code) + { auto p = pdg->GetParticle(code); auto charge = 0.; if (p != nullptr) { @@ -731,7 +750,8 @@ struct DndetaMFTPbPb { template void fillHistMC(P const& particles, float cent, float zvtx, - bool const atLeastOne) { + bool const atLeastOne) + { for (auto const& particle : particles) { if (!isChrgParticle(particle.pdgCode())) { continue; @@ -772,7 +792,8 @@ struct DndetaMFTPbPb { } /// @brief process fnc. for general event statistics - void processTagging(FullBCs const& bcs, CollsCent const& collisions) { + void processTagging(FullBCs const& bcs, CollsCent const& collisions) + { std::vector::iterator> cols; for (auto const& bc : bcs) { if ((bc.selection_bit(aod::evsel::kIsBBT0A) && @@ -804,7 +825,8 @@ struct DndetaMFTPbPb { template void processData(typename C::iterator const& collision, - FiltMftTracks const& tracks) { + FiltMftTracks const& tracks) + { float c = -1; if constexpr (C::template contains()) { c = collision.centFT0C(); @@ -826,7 +848,7 @@ struct DndetaMFTPbPb { } auto nTrk = countTracks( - tracks, z, c, occ); //!@note here we obtain eta-z and phi-eta + tracks, z, c, occ); //!@note here we obtain eta-z and phi-eta if constexpr (C::template contains()) { registry.fill(HIST("Events/Centrality/NtrkZvtx"), nTrk, z, c); } else { @@ -836,8 +858,9 @@ struct DndetaMFTPbPb { template void processDatawBestTracks( - typename C::iterator const& collision, FiltMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + typename C::iterator const& collision, FiltMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { float c = -1; if constexpr (C::template contains()) { c = collision.centFT0C(); @@ -858,8 +881,8 @@ struct DndetaMFTPbPb { } auto nBestTrks = - countBestTracks(tracks, besttracks, z, c, - occ); //!@note here we obtain eta-z and phi-eta + countBestTracks(tracks, besttracks, z, c, + occ); //!@note here we obtain eta-z and phi-eta if constexpr (C::template contains()) { registry.fill(HIST("Events/Centrality/NtrkZvtxBest"), nBestTrks, z, c); } else { @@ -869,7 +892,8 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on DATA and REC MC w/o centrality selection void processDataInclusive(Colls::iterator const& collision, - FiltMftTracks const& tracks) { + FiltMftTracks const& tracks) + { processData(collision, tracks); } @@ -878,7 +902,8 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on DATA and REC MC w/ FT0C centrality selection void processDataCent(CollsCent::iterator const& collision, - FiltMftTracks const& tracks) { + FiltMftTracks const& tracks) + { processData(collision, tracks); } @@ -888,8 +913,9 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on DATA and REC MC based on BestCollisionsFwd /// table w/o centrality selection void processDatawBestTracksInclusive( - Colls::iterator const& collision, FiltMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + Colls::iterator const& collision, FiltMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { processDatawBestTracks(collision, tracks, besttracks); } @@ -899,8 +925,9 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on DATA and REC MC based on BestCollisionsFwd /// table w/ FT0C centrality selection void processDatawBestTracksCent( - CollsCent::iterator const& collision, FiltMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + CollsCent::iterator const& collision, FiltMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { processDatawBestTracks(collision, tracks, besttracks); } @@ -916,9 +943,10 @@ struct DndetaMFTPbPb { /// @param parts subscribe to filtered MC particle table template void processMC( - typename MC::iterator const& mcCollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks) { + typename MC::iterator const& mcCollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks) + { float cgen = -1; bool atLeastOne = false; int moreThanOne = 0; @@ -950,10 +978,10 @@ struct DndetaMFTPbPb { } auto perCollisionSample = - tracks.sliceBy(perCol, collision.globalIndex()); + tracks.sliceBy(perCol, collision.globalIndex()); auto nTrkRec = - countTracks(perCollisionSample, z, crec, - collision.trackOccupancyInTimeRange()); + countTracks(perCollisionSample, z, crec, + collision.trackOccupancyInTimeRange()); if constexpr (C::template contains()) { qaregistry.fill(HIST("Events/Centrality/ZvtxDiff"), @@ -985,7 +1013,7 @@ struct DndetaMFTPbPb { } auto perCollMCsample = mcSample->sliceByCached( - aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); + aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); auto nchrg = countPart(perCollMCsample); if (moreThanOne > 1) { if constexpr (C::template contains()) { @@ -1005,7 +1033,7 @@ struct DndetaMFTPbPb { } fillHistMC()>(particles, cgen, - zvtxMC, atLeastOne); + zvtxMC, atLeastOne); if (collisions.size() == 0) { if constexpr (C::template contains()) { @@ -1019,9 +1047,10 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on MC w/o centrality selection void processMCInclusive( - aod::McCollisions::iterator const& mccollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks) { + aod::McCollisions::iterator const& mccollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks) + { processMC(mccollision, collisions, particles, tracks); } @@ -1031,9 +1060,10 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on MC w FT0C centrality selection void processMCCent( - aod::McCollisions::iterator const& mccollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks) { + aod::McCollisions::iterator const& mccollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks) + { processMC(mccollision, collisions, particles, tracks); } @@ -1042,16 +1072,17 @@ struct DndetaMFTPbPb { "Count MC particles in FT0C bins", false); PresliceUnsorted perColU = - aod::fwdtrack::bestCollisionId; + aod::fwdtrack::bestCollisionId; /// @brief process template function to run on MC truth using /// aod::BestCollisionsFwd tracks template void processMCwBestTracks( - typename MC::iterator const& mcCollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks, - FiltBestTracks const& besttracks) { + typename MC::iterator const& mcCollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks, + FiltBestTracks const& besttracks) + { float cgen = -1; bool atLeastOne = false; // int moreThanOne = 0; @@ -1081,12 +1112,12 @@ struct DndetaMFTPbPb { } auto perCollisionSample = - tracks.sliceBy(perCol, collision.globalIndex()); + tracks.sliceBy(perCol, collision.globalIndex()); auto perCollisionASample = - besttracks.sliceBy(perColU, collision.globalIndex()); + besttracks.sliceBy(perColU, collision.globalIndex()); auto nTrkRec = countBestTracks( - perCollisionSample, perCollisionASample, z, crec, - collision.trackOccupancyInTimeRange()); + perCollisionSample, perCollisionASample, z, crec, + collision.trackOccupancyInTimeRange()); if constexpr (C::template contains()) { registry.fill(HIST("Events/Centrality/NtrkZvtxGen"), nTrkRec, z, @@ -1113,7 +1144,7 @@ struct DndetaMFTPbPb { } fillHistMC()>(particles, cgen, - zvtxMC, atLeastOne); + zvtxMC, atLeastOne); if (collisions.size() == 0) { if constexpr (C::template contains()) { @@ -1128,14 +1159,15 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on MC (inclusive, using aod::BestCollisionsFwd /// tracks) void processMCwBestTracksInclusive( - aod::McCollisions::iterator const& mccollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks, - // aod::BestCollisionsFwd const - // &besttracks - FiltBestTracks const& besttracks) { + aod::McCollisions::iterator const& mccollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks, + // aod::BestCollisionsFwd const + // &besttracks + FiltBestTracks const& besttracks) + { processMCwBestTracks( - mccollision, collisions, particles, tracks, besttracks); + mccollision, collisions, particles, tracks, besttracks); } PROCESS_SWITCH(PseudorapidityDensityMFT, processMCwBestTracksInclusive, @@ -1144,12 +1176,13 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on MC (FT0C centrality, using /// aod::BestCollisionsFwd tracks) void processMCwBestTracksCent( - aod::McCollisions::iterator const& mccollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks, - FiltBestTracks const& besttracks) { + aod::McCollisions::iterator const& mccollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks, + FiltBestTracks const& besttracks) + { processMCwBestTracks( - mccollision, collisions, particles, tracks, besttracks); + mccollision, collisions, particles, tracks, besttracks); } PROCESS_SWITCH(PseudorapidityDensityMFT, processMCwBestTracksCent, @@ -1158,17 +1191,18 @@ struct DndetaMFTPbPb { using ParticlesI = soa::Join; Partition primariesI = - ((aod::mcparticle::flags & - (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) == - (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary); + ((aod::mcparticle::flags & + (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) == + (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary); /// @brief process template function to calculate tracking efficiency (indexed /// as particle-to-MFT-tracks) template void processTrkEffIdx( - typename soa::Join const& collisions, - MC const& /*mccollisions*/, ParticlesI const& /*particles*/, - MFTTracksLabeled const& tracks) { + typename soa::Join const& collisions, + MC const& /*mccollisions*/, ParticlesI const& /*particles*/, + MFTTracksLabeled const& tracks) + { for (auto const& collision : collisions) { if (!isGoodEvent(collision)) { continue; @@ -1184,7 +1218,7 @@ struct DndetaMFTPbPb { auto mcCollision = collision.mcCollision(); auto particlesPerCol = primariesI->sliceByCached( - aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); + aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); particlesPerCol.bindExternalIndices(&tracks); for (auto const& particle : particlesPerCol) { @@ -1205,7 +1239,7 @@ struct DndetaMFTPbPb { auto iscounted = false; auto ncnt = 0; auto relatedTracks = - particle.template mfttracks_as(); + particle.template mfttracks_as(); for (auto const& track : relatedTracks) { if (!isTrackSelected(track)) { continue; @@ -1222,9 +1256,9 @@ struct DndetaMFTPbPb { qaregistry.fill(HIST("Tracks/Centrality/hPhiEtaDuplicates"), track.phi(), track.eta(), crec); qaregistry.fill( - HIST("Tracks/Centrality/hPtPhiEtaZvtxEffDuplicates"), - particle.pt(), particle.phi(), particle.eta(), - mcCollision.posZ(), crec); + HIST("Tracks/Centrality/hPtPhiEtaZvtxEffDuplicates"), + particle.pt(), particle.phi(), particle.eta(), + mcCollision.posZ(), crec); } } else { if (!iscounted) { // primaries @@ -1251,9 +1285,9 @@ struct DndetaMFTPbPb { if (relatedTracks.size() > 1) { if constexpr (C::template contains()) { qaregistry.fill( - HIST("Tracks/Centrality/hPtPhiEtaZvtxEffGenDuplicates"), - particle.pt(), particle.phi(), particle.eta(), - mcCollision.posZ(), crec); + HIST("Tracks/Centrality/hPtPhiEtaZvtxEffGenDuplicates"), + particle.pt(), particle.phi(), particle.eta(), + mcCollision.posZ(), crec); } else { qaregistry.fill(HIST("Tracks/hPtPhiEtaZvtxEffGenDuplicates"), particle.pt(), particle.phi(), particle.eta(), @@ -1268,9 +1302,10 @@ struct DndetaMFTPbPb { /// @brief process function to calculate tracking efficiency (inclusive, /// indexed) void processTrkEffIdxInlusive( - soa::Join const& collisions, - aod::McCollisions const& mccollisions, ParticlesI const& particles, - MFTTracksLabeled const& tracks) { + soa::Join const& collisions, + aod::McCollisions const& mccollisions, ParticlesI const& particles, + MFTTracksLabeled const& tracks) + { processTrkEffIdx(collisions, mccollisions, particles, tracks); } @@ -1281,9 +1316,10 @@ struct DndetaMFTPbPb { /// @brief process function to calculate tracking efficiency (FT0 bins, /// indexed) void processTrkEffIdxCent( - soa::Join const& collisions, - aod::McCollisions const& mccollisions, ParticlesI const& particles, - MFTTracksLabeled const& tracks) { + soa::Join const& collisions, + aod::McCollisions const& mccollisions, ParticlesI const& particles, + MFTTracksLabeled const& tracks) + { processTrkEffIdx(collisions, mccollisions, particles, tracks); } @@ -1295,10 +1331,11 @@ struct DndetaMFTPbPb { /// on BestCollisionsFwd in FT0C bins template void processTrkEffBest( - typename soa::Join::iterator const& collision, - MC const& /*mccollisions*/, FiltParticles const& particles, - FiltMcMftTracks const& /*tracks*/, - soa::SmallGroups const& besttracks) { + typename soa::Join::iterator const& collision, + MC const& /*mccollisions*/, FiltParticles const& particles, + FiltMcMftTracks const& /*tracks*/, + soa::SmallGroups const& besttracks) + { if (!isGoodEvent(collision)) { return; } @@ -1313,7 +1350,7 @@ struct DndetaMFTPbPb { auto mcCollision = collision.mcCollision(); auto particlesPerCol = particles.sliceByCached( - aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); + aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); for (auto const& particle : particlesPerCol) { if (!isChrgParticle(particle.pdgCode())) { continue; @@ -1357,54 +1394,56 @@ struct DndetaMFTPbPb { /// @brief process function to calculate tracking efficiency (inclusive, based /// on BestCollisionsFwd) void processTrkEffBestInclusive( - soa::Join::iterator const& collision, - aod::McCollisions const& mccollisions, FiltParticles const& particles, - FiltMcMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + soa::Join::iterator const& collision, + aod::McCollisions const& mccollisions, FiltParticles const& particles, + FiltMcMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { processTrkEffBest(collision, mccollisions, particles, tracks, besttracks); } PROCESS_SWITCH(PseudorapidityDensityMFT, processTrkEffBestInclusive, - "Process tracking efficiency (inclusive, based on BestCollisionsFwd)", - false); + "Process tracking efficiency (inclusive, based on BestCollisionsFwd)", + false); /// @brief process function to calculate tracking efficiency (in FT0 bins, /// based on BestCollisionsFwd) void processTrkEffBestCent( - soa::Join::iterator const& collision, - aod::McCollisions const& mccollisions, FiltParticles const& particles, - FiltMcMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + soa::Join::iterator const& collision, + aod::McCollisions const& mccollisions, FiltParticles const& particles, + FiltMcMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { processTrkEffBest( - collision, mccollisions, particles, tracks, besttracks); + collision, mccollisions, particles, tracks, besttracks); } PROCESS_SWITCH(PseudorapidityDensityMFT, processTrkEffBestCent, - "Process tracking efficiency (in FT0 bins, based on BestCollisionsFwd)", - false); + "Process tracking efficiency (in FT0 bins, based on BestCollisionsFwd)", + false); Preslice filtTrkperCol = o2::aod::fwdtrack::collisionId; /// @brief process template function for MC QA checks template void processMcQA( - typename soa::SmallGroups> const - &collisions, - aod::McCollisions const& mcCollisions, - FiltParticles const& /*particles*/, MFTTracksLabeled const& tracks, - aod::AmbiguousMFTTracks const& atracks) { + typename soa::SmallGroups> const& collisions, + aod::McCollisions const& mcCollisions, + FiltParticles const& /*particles*/, MFTTracksLabeled const& tracks, + aod::AmbiguousMFTTracks const& atracks) + { for (const auto& collision : collisions) { float crec = -1; if constexpr (C::template contains()) { crec = collision.centFT0C(); qaregistry.fill( - HIST("Events/Centrality/hRecPerGenColls"), - static_cast(collisions.size()) / mcCollisions.size(), crec); + HIST("Events/Centrality/hRecPerGenColls"), + static_cast(collisions.size()) / mcCollisions.size(), crec); } else { qaregistry.fill(HIST("Events/hRecPerGenColls"), static_cast(collisions.size()) / - mcCollisions.size()); + mcCollisions.size()); } if (!isGoodEvent(collision)) { @@ -1436,9 +1475,10 @@ struct DndetaMFTPbPb { /// @brief process function for QA checks (inclusive) void processMcQAInclusive( - soa::SmallGroups> const& collisions, - aod::McCollisions const& mcCollisions, FiltParticles const& particles, - MFTTracksLabeled const& tracks, aod::AmbiguousMFTTracks const& atracks) { + soa::SmallGroups> const& collisions, + aod::McCollisions const& mcCollisions, FiltParticles const& particles, + MFTTracksLabeled const& tracks, aod::AmbiguousMFTTracks const& atracks) + { processMcQA(collisions, mcCollisions, particles, tracks, atracks); } @@ -1447,9 +1487,10 @@ struct DndetaMFTPbPb { /// @brief process function for QA checks (in FT0 bins) void processMcQACent( - soa::SmallGroups> const& collisions, - aod::McCollisions const& mcCollisions, FiltParticles const& particles, - MFTTracksLabeled const& tracks, aod::AmbiguousMFTTracks const& atracks) { + soa::SmallGroups> const& collisions, + aod::McCollisions const& mcCollisions, FiltParticles const& particles, + MFTTracksLabeled const& tracks, aod::AmbiguousMFTTracks const& atracks) + { processMcQA(collisions, mcCollisions, particles, tracks, atracks); } @@ -1458,6 +1499,7 @@ struct DndetaMFTPbPb { "Process MC QA checks (in FT0 bins)", false); }; -WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ return WorkflowSpec{adaptAnalysisTask(cfgc)}; } diff --git a/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx b/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx index 8946e6683c4..9c6c5547955 100644 --- a/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx +++ b/PWGMM/Mult/Tasks/dndetaMFTPbPb.cxx @@ -59,9 +59,15 @@ struct DndetaMFTPbPb { // Histogram registry HistogramRegistry registry{ - "registry", {}, OutputObjHandlingPolicy::AnalysisObject}; + "registry", + {}, + OutputObjHandlingPolicy::AnalysisObject}; HistogramRegistry qaregistry{ - "qaregistry", {}, OutputObjHandlingPolicy::AnalysisObject, false, true}; + "qaregistry", + {}, + OutputObjHandlingPolicy::AnalysisObject, + false, + true}; // analysis specific conf. Configurable usePhiCut{"usePhiCut", false, "use azimuthal angle cut"}; @@ -79,7 +85,7 @@ struct DndetaMFTPbPb { Configurable cfgPtMin{"cfgPtMin", 0., "minimum pT of the MFT tracks"}; Configurable cfgRequireCA{"cfgRequireCA", false, - "Use Cellular Automaton track-finding algorithm"}; + "Use Cellular Automaton track-finding algorithm"}; Configurable cfgDCAxyMax{"cfgDCAxyMax", 2.0f, "Cut on dcaXY"}; } trkcuts; @@ -90,13 +96,13 @@ struct DndetaMFTPbPb { Configurable useZDiffCut{"useZDiffCut", false, "use Zvtx reco-mc diff. cut"}; Configurable maxZvtxDiff{"maxZvtxDiff", 1.0f, - "max allowed Z vtx difference for reconstruced collisions (cm)"}; + "max allowed Z vtx difference for reconstruced collisions (cm)"}; Configurable requireNoCollInTimeRangeStd{"requireNoCollInTimeRangeStd", false, - "reject collisions corrupted by the cannibalism, with other collisions " - "within +/- 10 microseconds"}; + "reject collisions corrupted by the cannibalism, with other collisions " + "within +/- 10 microseconds"}; Configurable requireNoCollInTimeRangeNarrow{"requireNoCollInTimeRangeNarrow", false, - "reject collisions corrupted by the cannibalism, with other collisions " - "within +/- 10 microseconds"}; + "reject collisions corrupted by the cannibalism, with other collisions " + "within +/- 10 microseconds"}; ConfigurableAxis occupancyBins{"occupancyBins", {VARIABLE_WIDTH, 0.0f, 250.0f, 500.0f, 750.0f, 1000.0f, 1500.0f, 2000.0f, 3000.0f, 4500.0f, @@ -105,36 +111,41 @@ struct DndetaMFTPbPb { Configurable minOccupancy{"minOccupancy", -1, "minimum occupancy from neighbouring collisions"}; Configurable maxOccupancy{"maxOccupancy", -1, "maximum occupancy from neighbouring collisions"}; ConfigurableAxis centBins{"centBins", - {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, - ""}; + {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, + ""}; Service pdg; /// @brief init function, definition of histograms - void init(InitContext &) { + void init(InitContext&) + { if (static_cast(doprocessDataInclusive) + - static_cast(doprocessDatawBestTracksInclusive) > + static_cast(doprocessDatawBestTracksInclusive) > 1) { - LOGP(fatal, "Either processDataInclusive OR " - "processDatawBestTracksInclusive should be enabled!"); + LOGP(fatal, + "Either processDataInclusive OR " + "processDatawBestTracksInclusive should be enabled!"); } if (static_cast(doprocessDataCent) + - static_cast(doprocessDatawBestTracksCent) > + static_cast(doprocessDatawBestTracksCent) > 1) { - LOGP(fatal, "Either processDataCent OR processDatawBestTracksCent should " - "be enabled!"); + LOGP(fatal, + "Either processDataCent OR processDatawBestTracksCent should " + "be enabled!"); } if (static_cast(doprocessMCInclusive) + - static_cast(doprocessMCwBestTracksInclusive) > + static_cast(doprocessMCwBestTracksInclusive) > 1) { - LOGP(fatal, "Either processMCInclusive OR processMCwBestTracksInclusive " - "should be enabled!"); + LOGP(fatal, + "Either processMCInclusive OR processMCwBestTracksInclusive " + "should be enabled!"); } if (static_cast(doprocessMCCent) + - static_cast(doprocessMCwBestTracksCent) > + static_cast(doprocessMCwBestTracksCent) > 1) { - LOGP(fatal, "Either processMCCent OR processMCwBestTracksCent should be " - "enabled!"); + LOGP(fatal, + "Either processMCCent OR processMCwBestTracksCent should be " + "enabled!"); } auto hev = registry.add("hEvtSel", "hEvtSel", HistType::kTH1F, @@ -163,7 +174,7 @@ struct DndetaMFTPbPb { ";status;events", {HistType::kTH1F, {{2, 0.5, 2.5}}}}); auto hstat = registry.get(HIST("Events/Selection")); - auto *x = hstat->GetXaxis(); + auto* x = hstat->GetXaxis(); x->SetBinLabel(1, "All"); x->SetBinLabel(2, "Selected"); @@ -180,7 +191,7 @@ struct DndetaMFTPbPb { "; #chi^{2}; #it{#eta};", {HistType::kTH2F, {{600, 0, 20}, {100, -8, 8}}}}); qaregistry.add( - {"Tracks/Chi2", "; #chi^{2};", {HistType::kTH1F, {{600, 0, 20}}}}); + {"Tracks/Chi2", "; #chi^{2};", {HistType::kTH1F, {{600, 0, 20}}}}); qaregistry.add({"Tracks/NclustersEta", "; nClusters; #eta;", {HistType::kTH2F, {{7, 4, 10}, {100, -8, 8}}}}); @@ -223,7 +234,7 @@ struct DndetaMFTPbPb { ";status;centrality;events", {HistType::kTH2F, {{2, 0.5, 2.5}, centAxis}}}); auto hstat = registry.get(HIST("Events/Centrality/Selection")); - auto *x = hstat->GetXaxis(); + auto* x = hstat->GetXaxis(); x->SetBinLabel(1, "All"); x->SetBinLabel(2, "Selected"); @@ -241,9 +252,9 @@ struct DndetaMFTPbPb { {HistType::kTH1F, {centAxis}}, true}); qaregistry.add( - {"Tracks/Centrality/Chi2Eta", - "; #chi^{2}; #it{#eta}; centrality", - {HistType::kTH3F, {{600, 0, 20}, {100, -8, 8}, centAxis}}}); + {"Tracks/Centrality/Chi2Eta", + "; #chi^{2}; #it{#eta}; centrality", + {HistType::kTH3F, {{600, 0, 20}, {100, -8, 8}, centAxis}}}); qaregistry.add({"Tracks/Centrality/Chi2", "; #chi^{2}; centrality", {HistType::kTH2F, {{600, 0, 20}, centAxis}}}); @@ -268,9 +279,9 @@ struct DndetaMFTPbPb { "; #varphi; #eta; centrality", {HistType::kTH3F, {phiAxis, etaAxis, centAxis}}}); qaregistry.add( - {"Tracks/Centrality/NclustersEtaBest", - "; nClusters; #eta; centrality", - {HistType::kTH3F, {{7, 4, 10}, {100, -8, 8}, centAxis}}}); + {"Tracks/Centrality/NclustersEtaBest", + "; nClusters; #eta; centrality", + {HistType::kTH3F, {{7, 4, 10}, {100, -8, 8}, centAxis}}}); qaregistry.add({"Tracks/Centrality/TrackAmbDegree", " ; N_{coll}^{comp}", {HistType::kTH2F, {{51, -0.5, 50.5}, centAxis}}}); @@ -301,7 +312,7 @@ struct DndetaMFTPbPb { ";status;events", {HistType::kTH1F, {{3, 0.5, 3.5}}}}); auto heff = registry.get(HIST("Events/EvtEffGen")); - auto *x = heff->GetXaxis(); + auto* x = heff->GetXaxis(); x->SetBinLabel(1, "All reconstructed"); x->SetBinLabel(2, "Selected reconstructed"); x->SetBinLabel(3, "All generated"); @@ -331,7 +342,7 @@ struct DndetaMFTPbPb { " ; Z_{rec} - Z_{gen} (cm)", {HistType::kTH1F, {deltaZAxis}}}); qaregistry.add( - {"Events/SplitMult", " ; N_{gen}", {HistType::kTH1F, {multAxis}}}); + {"Events/SplitMult", " ; N_{gen}", {HistType::kTH1F, {multAxis}}}); } if (doprocessMCCent || doprocessMCwBestTracksCent) { @@ -339,7 +350,7 @@ struct DndetaMFTPbPb { ";status;events", {HistType::kTH2F, {{3, 0.5, 3.5}, centAxis}}}); auto heff = registry.get(HIST("Events/Centrality/EvtEffGen")); - auto *x = heff->GetXaxis(); + auto* x = heff->GetXaxis(); x->SetBinLabel(1, "All reconstructed"); x->SetBinLabel(2, "Selected reconstructed"); x->SetBinLabel(3, "All generated"); @@ -381,24 +392,24 @@ struct DndetaMFTPbPb { if (doprocessTrkEffIdxInlusive) { qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffGen", - "hPtPhiEtaZvtxEffGen", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffGen", + "hPtPhiEtaZvtxEffGen", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffRec", - "hPtPhiEtaZvtxEffRec", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffRec", + "hPtPhiEtaZvtxEffRec", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add({"Tracks/hPhiEtaDuplicates", " ; p_{T} (GeV/c);", {HistType::kTH2F, {phiAxis, etaAxis}}}); qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffDuplicates", - "hPtPhiEtaZvtxEffDuplicates", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffDuplicates", + "hPtPhiEtaZvtxEffDuplicates", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffGenDuplicates", - "hPtPhiEtaZvtxEffGenDuplicates", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffGenDuplicates", + "hPtPhiEtaZvtxEffGenDuplicates", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add({"Tracks/NmftTrkPerPart", "; #it{N}_{mft tracks per particle};", {HistType::kTH1F, {{200, -0.5, 200.}}}}); @@ -431,13 +442,13 @@ struct DndetaMFTPbPb { if (doprocessTrkEffBestInclusive) { qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffBestGen", - "hPtPhiEtaZvtxEffGen", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffBestGen", + "hPtPhiEtaZvtxEffGen", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add( - {"Tracks/hPtPhiEtaZvtxEffBestRec", - "hPtPhiEtaZvtxEffRec", - {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); + {"Tracks/hPtPhiEtaZvtxEffBestRec", + "hPtPhiEtaZvtxEffRec", + {HistType::kTHnSparseF, {ptAxis, phiAxis, etaAxis, zAxis}}}); qaregistry.add({"Tracks/hPtEffBestFakeRec", " ; p_{T} (GeV/c);", {HistType::kTH1F, {ptAxis}}}); @@ -471,16 +482,16 @@ struct DndetaMFTPbPb { if (doprocessMcQACent) { qaregistry.add( - {"Events/Centrality/hRecPerGenColls", - "; #it{N}_{reco collisions} / #it{N}_{gen collisions}; centrality", - {HistType::kTH2F, {{200, 0., 2.}, centAxis}}}); + {"Events/Centrality/hRecPerGenColls", + "; #it{N}_{reco collisions} / #it{N}_{gen collisions}; centrality", + {HistType::kTH2F, {{200, 0., 2.}, centAxis}}}); qaregistry.add({"Tracks/Centrality/hNmftTrks", "; #it{N}_{mft tracks}; centrality", {HistType::kTH2F, {{200, -0.5, 200.}, centAxis}}}); qaregistry.add( - {"Tracks/Centrality/hFracAmbiguousMftTrks", - "; #it{N}_{ambiguous tracks} / #it{N}_{tracks}; centrality", - {HistType::kTH2F, {{100, 0., 1.}, centAxis}}}); + {"Tracks/Centrality/hFracAmbiguousMftTrks", + "; #it{N}_{ambiguous tracks} / #it{N}_{tracks}; centrality", + {HistType::kTH2F, {{100, 0., 1.}, centAxis}}}); } } @@ -498,7 +509,7 @@ struct DndetaMFTPbPb { /// Joined tables using FullBCs = soa::Join; using CollBCs = - soa::Join; + soa::Join; using Colls = soa::Join; using Coll = Colls::iterator; using CollsCent = soa::Join; @@ -514,7 +525,9 @@ struct DndetaMFTPbPb { using FiltBestTracks = soa::Filtered; using FiltParticles = soa::Filtered; - template bool isTrackSelected(const T &track) { + template + bool isTrackSelected(const T& track) + { if (track.eta() < trkcuts.cfgEtaMin || track.eta() > trkcuts.cfgEtaMax) return false; if (trkcuts.cfgRequireCA && !track.isCA()) @@ -535,17 +548,18 @@ struct DndetaMFTPbPb { (phi > o2::constants::math::TwoPI - cfgPhiCut) || ((phi > ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) - - cfgPhiCut) && + cfgPhiCut) && (phi < ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) + - cfgPhiCut))) + cfgPhiCut))) return false; } return true; } template - int countTracks(T const& tracks, float z, float c, float occ) { + int countTracks(T const& tracks, float z, float c, float occ) + { auto nTrk = 0; if (tracks.size() > 0) { for (auto const& track : tracks) { @@ -590,8 +604,9 @@ struct DndetaMFTPbPb { } template - int countBestTracks(T const& /*tracks*/, B const& besttracks, float z, - float c, float occ) { + int countBestTracks(T const& /*tracks*/, B const& besttracks, float z, + float c, float occ) + { auto nATrk = 0; if (besttracks.size() > 0) { for (auto const& atrack : besttracks) { @@ -647,7 +662,9 @@ struct DndetaMFTPbPb { return nATrk; } - template int countPart(P const& particles) { + template + int countPart(P const& particles) + { auto nCharged = 0; for (auto const& particle : particles) { if (!isChrgParticle(particle.pdgCode())) { @@ -659,7 +676,8 @@ struct DndetaMFTPbPb { } template - bool isGoodEvent(C const& collision) { + bool isGoodEvent(C const& collision) + { if constexpr (fillHis) { registry.fill(HIST("hEvtSel"), 0); } @@ -720,7 +738,8 @@ struct DndetaMFTPbPb { /// @brief Selection of charged particles /// @return true: charged; false: not charged - bool isChrgParticle(int code) { + bool isChrgParticle(int code) + { auto p = pdg->GetParticle(code); auto charge = 0.; if (p != nullptr) { @@ -731,7 +750,8 @@ struct DndetaMFTPbPb { template void fillHistMC(P const& particles, float cent, float zvtx, - bool const atLeastOne) { + bool const atLeastOne) + { for (auto const& particle : particles) { if (!isChrgParticle(particle.pdgCode())) { continue; @@ -772,7 +792,8 @@ struct DndetaMFTPbPb { } /// @brief process fnc. for general event statistics - void processTagging(FullBCs const& bcs, CollsCent const& collisions) { + void processTagging(FullBCs const& bcs, CollsCent const& collisions) + { std::vector::iterator> cols; for (auto const& bc : bcs) { if ((bc.selection_bit(aod::evsel::kIsBBT0A) && @@ -804,7 +825,8 @@ struct DndetaMFTPbPb { template void processData(typename C::iterator const& collision, - FiltMftTracks const& tracks) { + FiltMftTracks const& tracks) + { float c = -1; if constexpr (C::template contains()) { c = collision.centFT0C(); @@ -826,7 +848,7 @@ struct DndetaMFTPbPb { } auto nTrk = countTracks( - tracks, z, c, occ); //!@note here we obtain eta-z and phi-eta + tracks, z, c, occ); //!@note here we obtain eta-z and phi-eta if constexpr (C::template contains()) { registry.fill(HIST("Events/Centrality/NtrkZvtx"), nTrk, z, c); } else { @@ -836,8 +858,9 @@ struct DndetaMFTPbPb { template void processDatawBestTracks( - typename C::iterator const& collision, FiltMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + typename C::iterator const& collision, FiltMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { float c = -1; if constexpr (C::template contains()) { c = collision.centFT0C(); @@ -858,8 +881,8 @@ struct DndetaMFTPbPb { } auto nBestTrks = - countBestTracks(tracks, besttracks, z, c, - occ); //!@note here we obtain eta-z and phi-eta + countBestTracks(tracks, besttracks, z, c, + occ); //!@note here we obtain eta-z and phi-eta if constexpr (C::template contains()) { registry.fill(HIST("Events/Centrality/NtrkZvtxBest"), nBestTrks, z, c); } else { @@ -869,7 +892,8 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on DATA and REC MC w/o centrality selection void processDataInclusive(Colls::iterator const& collision, - FiltMftTracks const& tracks) { + FiltMftTracks const& tracks) + { processData(collision, tracks); } @@ -878,7 +902,8 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on DATA and REC MC w/ FT0C centrality selection void processDataCent(CollsCent::iterator const& collision, - FiltMftTracks const& tracks) { + FiltMftTracks const& tracks) + { processData(collision, tracks); } @@ -888,8 +913,9 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on DATA and REC MC based on BestCollisionsFwd /// table w/o centrality selection void processDatawBestTracksInclusive( - Colls::iterator const& collision, FiltMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + Colls::iterator const& collision, FiltMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { processDatawBestTracks(collision, tracks, besttracks); } @@ -899,8 +925,9 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on DATA and REC MC based on BestCollisionsFwd /// table w/ FT0C centrality selection void processDatawBestTracksCent( - CollsCent::iterator const& collision, FiltMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + CollsCent::iterator const& collision, FiltMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { processDatawBestTracks(collision, tracks, besttracks); } @@ -916,9 +943,10 @@ struct DndetaMFTPbPb { /// @param parts subscribe to filtered MC particle table template void processMC( - typename MC::iterator const& mcCollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks) { + typename MC::iterator const& mcCollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks) + { float cgen = -1; bool atLeastOne = false; int moreThanOne = 0; @@ -950,10 +978,10 @@ struct DndetaMFTPbPb { } auto perCollisionSample = - tracks.sliceBy(perCol, collision.globalIndex()); + tracks.sliceBy(perCol, collision.globalIndex()); auto nTrkRec = - countTracks(perCollisionSample, z, crec, - collision.trackOccupancyInTimeRange()); + countTracks(perCollisionSample, z, crec, + collision.trackOccupancyInTimeRange()); if constexpr (C::template contains()) { qaregistry.fill(HIST("Events/Centrality/ZvtxDiff"), @@ -985,7 +1013,7 @@ struct DndetaMFTPbPb { } auto perCollMCsample = mcSample->sliceByCached( - aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); + aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); auto nchrg = countPart(perCollMCsample); if (moreThanOne > 1) { if constexpr (C::template contains()) { @@ -1005,7 +1033,7 @@ struct DndetaMFTPbPb { } fillHistMC()>(particles, cgen, - zvtxMC, atLeastOne); + zvtxMC, atLeastOne); if (collisions.size() == 0) { if constexpr (C::template contains()) { @@ -1019,9 +1047,10 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on MC w/o centrality selection void processMCInclusive( - aod::McCollisions::iterator const& mccollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks) { + aod::McCollisions::iterator const& mccollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks) + { processMC(mccollision, collisions, particles, tracks); } @@ -1031,9 +1060,10 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on MC w FT0C centrality selection void processMCCent( - aod::McCollisions::iterator const& mccollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks) { + aod::McCollisions::iterator const& mccollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks) + { processMC(mccollision, collisions, particles, tracks); } @@ -1042,16 +1072,17 @@ struct DndetaMFTPbPb { "Count MC particles in FT0C bins", false); PresliceUnsorted perColU = - aod::fwdtrack::bestCollisionId; + aod::fwdtrack::bestCollisionId; /// @brief process template function to run on MC truth using /// aod::BestCollisionsFwd tracks template void processMCwBestTracks( - typename MC::iterator const& mcCollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks, - FiltBestTracks const& besttracks) { + typename MC::iterator const& mcCollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks, + FiltBestTracks const& besttracks) + { float cgen = -1; bool atLeastOne = false; // int moreThanOne = 0; @@ -1081,12 +1112,12 @@ struct DndetaMFTPbPb { } auto perCollisionSample = - tracks.sliceBy(perCol, collision.globalIndex()); + tracks.sliceBy(perCol, collision.globalIndex()); auto perCollisionASample = - besttracks.sliceBy(perColU, collision.globalIndex()); + besttracks.sliceBy(perColU, collision.globalIndex()); auto nTrkRec = countBestTracks( - perCollisionSample, perCollisionASample, z, crec, - collision.trackOccupancyInTimeRange()); + perCollisionSample, perCollisionASample, z, crec, + collision.trackOccupancyInTimeRange()); if constexpr (C::template contains()) { registry.fill(HIST("Events/Centrality/NtrkZvtxGen"), nTrkRec, z, @@ -1113,7 +1144,7 @@ struct DndetaMFTPbPb { } fillHistMC()>(particles, cgen, - zvtxMC, atLeastOne); + zvtxMC, atLeastOne); if (collisions.size() == 0) { if constexpr (C::template contains()) { @@ -1128,14 +1159,15 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on MC (inclusive, using aod::BestCollisionsFwd /// tracks) void processMCwBestTracksInclusive( - aod::McCollisions::iterator const& mccollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks, - // aod::BestCollisionsFwd const - // &besttracks - FiltBestTracks const& besttracks) { + aod::McCollisions::iterator const& mccollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks, + // aod::BestCollisionsFwd const + // &besttracks + FiltBestTracks const& besttracks) + { processMCwBestTracks( - mccollision, collisions, particles, tracks, besttracks); + mccollision, collisions, particles, tracks, besttracks); } PROCESS_SWITCH(PseudorapidityDensityMFT, processMCwBestTracksInclusive, @@ -1144,12 +1176,13 @@ struct DndetaMFTPbPb { /// @brief process fnc. to run on MC (FT0C centrality, using /// aod::BestCollisionsFwd tracks) void processMCwBestTracksCent( - aod::McCollisions::iterator const& mccollision, - soa::SmallGroups> const& collisions, - FiltParticles const& particles, FiltMcMftTracks const& tracks, - FiltBestTracks const& besttracks) { + aod::McCollisions::iterator const& mccollision, + soa::SmallGroups> const& collisions, + FiltParticles const& particles, FiltMcMftTracks const& tracks, + FiltBestTracks const& besttracks) + { processMCwBestTracks( - mccollision, collisions, particles, tracks, besttracks); + mccollision, collisions, particles, tracks, besttracks); } PROCESS_SWITCH(PseudorapidityDensityMFT, processMCwBestTracksCent, @@ -1158,17 +1191,18 @@ struct DndetaMFTPbPb { using ParticlesI = soa::Join; Partition primariesI = - ((aod::mcparticle::flags & - (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) == - (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary); + ((aod::mcparticle::flags & + (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) == + (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary); /// @brief process template function to calculate tracking efficiency (indexed /// as particle-to-MFT-tracks) template void processTrkEffIdx( - typename soa::Join const& collisions, - MC const& /*mccollisions*/, ParticlesI const& /*particles*/, - MFTTracksLabeled const& tracks) { + typename soa::Join const& collisions, + MC const& /*mccollisions*/, ParticlesI const& /*particles*/, + MFTTracksLabeled const& tracks) + { for (auto const& collision : collisions) { if (!isGoodEvent(collision)) { continue; @@ -1184,7 +1218,7 @@ struct DndetaMFTPbPb { auto mcCollision = collision.mcCollision(); auto particlesPerCol = primariesI->sliceByCached( - aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); + aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); particlesPerCol.bindExternalIndices(&tracks); for (auto const& particle : particlesPerCol) { @@ -1205,7 +1239,7 @@ struct DndetaMFTPbPb { auto iscounted = false; auto ncnt = 0; auto relatedTracks = - particle.template mfttracks_as(); + particle.template mfttracks_as(); for (auto const& track : relatedTracks) { if (!isTrackSelected(track)) { continue; @@ -1222,9 +1256,9 @@ struct DndetaMFTPbPb { qaregistry.fill(HIST("Tracks/Centrality/hPhiEtaDuplicates"), track.phi(), track.eta(), crec); qaregistry.fill( - HIST("Tracks/Centrality/hPtPhiEtaZvtxEffDuplicates"), - particle.pt(), particle.phi(), particle.eta(), - mcCollision.posZ(), crec); + HIST("Tracks/Centrality/hPtPhiEtaZvtxEffDuplicates"), + particle.pt(), particle.phi(), particle.eta(), + mcCollision.posZ(), crec); } } else { if (!iscounted) { // primaries @@ -1251,9 +1285,9 @@ struct DndetaMFTPbPb { if (relatedTracks.size() > 1) { if constexpr (C::template contains()) { qaregistry.fill( - HIST("Tracks/Centrality/hPtPhiEtaZvtxEffGenDuplicates"), - particle.pt(), particle.phi(), particle.eta(), - mcCollision.posZ(), crec); + HIST("Tracks/Centrality/hPtPhiEtaZvtxEffGenDuplicates"), + particle.pt(), particle.phi(), particle.eta(), + mcCollision.posZ(), crec); } else { qaregistry.fill(HIST("Tracks/hPtPhiEtaZvtxEffGenDuplicates"), particle.pt(), particle.phi(), particle.eta(), @@ -1268,9 +1302,10 @@ struct DndetaMFTPbPb { /// @brief process function to calculate tracking efficiency (inclusive, /// indexed) void processTrkEffIdxInlusive( - soa::Join const& collisions, - aod::McCollisions const& mccollisions, ParticlesI const& particles, - MFTTracksLabeled const& tracks) { + soa::Join const& collisions, + aod::McCollisions const& mccollisions, ParticlesI const& particles, + MFTTracksLabeled const& tracks) + { processTrkEffIdx(collisions, mccollisions, particles, tracks); } @@ -1281,9 +1316,10 @@ struct DndetaMFTPbPb { /// @brief process function to calculate tracking efficiency (FT0 bins, /// indexed) void processTrkEffIdxCent( - soa::Join const& collisions, - aod::McCollisions const& mccollisions, ParticlesI const& particles, - MFTTracksLabeled const& tracks) { + soa::Join const& collisions, + aod::McCollisions const& mccollisions, ParticlesI const& particles, + MFTTracksLabeled const& tracks) + { processTrkEffIdx(collisions, mccollisions, particles, tracks); } @@ -1295,10 +1331,11 @@ struct DndetaMFTPbPb { /// on BestCollisionsFwd in FT0C bins template void processTrkEffBest( - typename soa::Join::iterator const& collision, - MC const& /*mccollisions*/, FiltParticles const& particles, - FiltMcMftTracks const& /*tracks*/, - soa::SmallGroups const& besttracks) { + typename soa::Join::iterator const& collision, + MC const& /*mccollisions*/, FiltParticles const& particles, + FiltMcMftTracks const& /*tracks*/, + soa::SmallGroups const& besttracks) + { if (!isGoodEvent(collision)) { return; } @@ -1313,7 +1350,7 @@ struct DndetaMFTPbPb { auto mcCollision = collision.mcCollision(); auto particlesPerCol = particles.sliceByCached( - aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); + aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); for (auto const& particle : particlesPerCol) { if (!isChrgParticle(particle.pdgCode())) { continue; @@ -1357,54 +1394,56 @@ struct DndetaMFTPbPb { /// @brief process function to calculate tracking efficiency (inclusive, based /// on BestCollisionsFwd) void processTrkEffBestInclusive( - soa::Join::iterator const& collision, - aod::McCollisions const& mccollisions, FiltParticles const& particles, - FiltMcMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + soa::Join::iterator const& collision, + aod::McCollisions const& mccollisions, FiltParticles const& particles, + FiltMcMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { processTrkEffBest(collision, mccollisions, particles, tracks, besttracks); } PROCESS_SWITCH(PseudorapidityDensityMFT, processTrkEffBestInclusive, - "Process tracking efficiency (inclusive, based on BestCollisionsFwd)", - false); + "Process tracking efficiency (inclusive, based on BestCollisionsFwd)", + false); /// @brief process function to calculate tracking efficiency (in FT0 bins, /// based on BestCollisionsFwd) void processTrkEffBestCent( - soa::Join::iterator const& collision, - aod::McCollisions const& mccollisions, FiltParticles const& particles, - FiltMcMftTracks const& tracks, - soa::SmallGroups const& besttracks) { + soa::Join::iterator const& collision, + aod::McCollisions const& mccollisions, FiltParticles const& particles, + FiltMcMftTracks const& tracks, + soa::SmallGroups const& besttracks) + { processTrkEffBest( - collision, mccollisions, particles, tracks, besttracks); + collision, mccollisions, particles, tracks, besttracks); } PROCESS_SWITCH(PseudorapidityDensityMFT, processTrkEffBestCent, - "Process tracking efficiency (in FT0 bins, based on BestCollisionsFwd)", - false); + "Process tracking efficiency (in FT0 bins, based on BestCollisionsFwd)", + false); Preslice filtTrkperCol = o2::aod::fwdtrack::collisionId; /// @brief process template function for MC QA checks template void processMcQA( - typename soa::SmallGroups> const - &collisions, - aod::McCollisions const& mcCollisions, - FiltParticles const& /*particles*/, MFTTracksLabeled const& tracks, - aod::AmbiguousMFTTracks const& atracks) { + typename soa::SmallGroups> const& collisions, + aod::McCollisions const& mcCollisions, + FiltParticles const& /*particles*/, MFTTracksLabeled const& tracks, + aod::AmbiguousMFTTracks const& atracks) + { for (const auto& collision : collisions) { float crec = -1; if constexpr (C::template contains()) { crec = collision.centFT0C(); qaregistry.fill( - HIST("Events/Centrality/hRecPerGenColls"), - static_cast(collisions.size()) / mcCollisions.size(), crec); + HIST("Events/Centrality/hRecPerGenColls"), + static_cast(collisions.size()) / mcCollisions.size(), crec); } else { qaregistry.fill(HIST("Events/hRecPerGenColls"), static_cast(collisions.size()) / - mcCollisions.size()); + mcCollisions.size()); } if (!isGoodEvent(collision)) { @@ -1436,9 +1475,10 @@ struct DndetaMFTPbPb { /// @brief process function for QA checks (inclusive) void processMcQAInclusive( - soa::SmallGroups> const& collisions, - aod::McCollisions const& mcCollisions, FiltParticles const& particles, - MFTTracksLabeled const& tracks, aod::AmbiguousMFTTracks const& atracks) { + soa::SmallGroups> const& collisions, + aod::McCollisions const& mcCollisions, FiltParticles const& particles, + MFTTracksLabeled const& tracks, aod::AmbiguousMFTTracks const& atracks) + { processMcQA(collisions, mcCollisions, particles, tracks, atracks); } @@ -1447,9 +1487,10 @@ struct DndetaMFTPbPb { /// @brief process function for QA checks (in FT0 bins) void processMcQACent( - soa::SmallGroups> const& collisions, - aod::McCollisions const& mcCollisions, FiltParticles const& particles, - MFTTracksLabeled const& tracks, aod::AmbiguousMFTTracks const& atracks) { + soa::SmallGroups> const& collisions, + aod::McCollisions const& mcCollisions, FiltParticles const& particles, + MFTTracksLabeled const& tracks, aod::AmbiguousMFTTracks const& atracks) + { processMcQA(collisions, mcCollisions, particles, tracks, atracks); } @@ -1458,6 +1499,7 @@ struct DndetaMFTPbPb { "Process MC QA checks (in FT0 bins)", false); }; -WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ return WorkflowSpec{adaptAnalysisTask(cfgc)}; }