diff --git a/PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx b/PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx index 3cab8935800..93b8625ba65 100644 --- a/PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx +++ b/PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx @@ -49,29 +49,29 @@ using namespace o2::framework::expressions; using namespace o2::aod::track; AxisSpec PtAxis = {1001, -0.005, 10.005}; - AxisSpec DeltaZAxis = {61, -6.1, 6.1}; - AxisSpec ZAxis = {301, -30.1, 30.1}; - AxisSpec PhiAxis = {629, 0, o2::constants::math::TwoPI, "Rad", "phi axis"}; - // AxisSpec EtaAxis = {18, -4.6, -1.}; - AxisSpec DCAxyAxis = {5000, -1, 500}; - AxisSpec DCAzAxis = {5000, -251, 250}; - AxisSpec CentAxis = {{0, 10, 20, 30, 40, 50, 60, 70, 80, 100}}; - - static constexpr TrackSelectionFlags::flagtype trackSelectionITS = +AxisSpec DeltaZAxis = {61, -6.1, 6.1}; +AxisSpec ZAxis = {301, -30.1, 30.1}; +AxisSpec PhiAxis = {629, 0, o2::constants::math::TwoPI, "Rad", "phi axis"}; +// AxisSpec EtaAxis = {18, -4.6, -1.}; +AxisSpec DCAxyAxis = {5000, -1, 500}; +AxisSpec DCAzAxis = {5000, -251, 250}; +AxisSpec CentAxis = {{0, 10, 20, 30, 40, 50, 60, 70, 80, 100}}; + +static constexpr TrackSelectionFlags::flagtype trackSelectionITS = TrackSelectionFlags::kITSNCls | TrackSelectionFlags::kITSChi2NDF | TrackSelectionFlags::kITSHits; - static constexpr TrackSelectionFlags::flagtype trackSelectionTPC = +static constexpr TrackSelectionFlags::flagtype trackSelectionTPC = TrackSelectionFlags::kTPCNCls | TrackSelectionFlags::kTPCCrossedRowsOverNCls | TrackSelectionFlags::kTPCChi2NDF; - static constexpr TrackSelectionFlags::flagtype trackSelectionDCA = +static constexpr TrackSelectionFlags::flagtype trackSelectionDCA = TrackSelectionFlags::kDCAz | TrackSelectionFlags::kDCAxy; - using MFTTracksLabeled = soa::Join; +using MFTTracksLabeled = soa::Join; - struct PseudorapidityDensityMFT { +struct PseudorapidityDensityMFT { SliceCache cache; Preslice perCol = o2::aod::fwdtrack::collisionId; Preslice perMcCol = aod::mcparticle::mcCollisionId; @@ -80,7 +80,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; Service pdg; Configurable estimatorEta{"estimatorEta", 1.0, - "eta range for INEL>0 sample definition"}; + "eta range for INEL>0 sample definition"}; Configurable useEvSel{"useEvSel", true, "use event selection"}; Configurable disableITSROFCut{"disableITSROFCut", false, "Disable ITS ROF cut for event selection"}; @@ -99,9 +99,9 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; Configurable cfgPhiCut{"cfgPhiCut", 0.1f, "Cut on azimuthal angle of MFT tracks"}; Configurable cfgPhiCut1{"cfgPhiCut1", 0.0f, - "low Cut on azimuthal angle of MFT tracks"}; + "low Cut on azimuthal angle of MFT tracks"}; Configurable cfgPhiCut2{"cfgPhiCut2", 6.3f, - "high Cut on azimuthal angle of MFT tracks"}; + "high Cut on azimuthal angle of MFT tracks"}; Configurable cfgVzCut1{"cfgVzCut1", -30.0f, "Cut1 on vertex position of MFT tracks"}; Configurable cfgVzCut2{"cfgVzCut2", 30.0f, @@ -109,55 +109,53 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; Configurable cfgnCluster{"cfgnCluster", 5.0f, "Cut on no of clusters per MFT track"}; Configurable cfgnEta1{"cfgnEta1", -4.5f, - "Cut on eta1"}; + "Cut on eta1"}; Configurable cfgnEta2{"cfgnEta2", -1.0f, - "Cut on eta1"}; + "Cut on eta1"}; Configurable cfgChi2NDFMax{"cfgChi2NDFMax", 2000.0f, "Max allowed chi2/NDF for MFT tracks"}; Configurable maxDCAxy{"maxDCAxy", 2.0f, "Cut on dcaXY"}; Configurable maxDCAz{"maxDCAz", 2.0f, "Cut on dcaZ"}; HistogramRegistry registry{ "registry", - { - {"TracksEtaZvtx", - "; #eta; #it{z}_{vtx} (cm); tracks", - {HistType::kTH2F, {EtaAxis, ZAxis}}}, // - {"Tracks/EtaZvtx_gt0", - "; #eta; #it{z}_{vtx} (cm); tracks", - {HistType::kTH2F, {EtaAxis, ZAxis}}}, // - {"TracksPhiEta", - "; #varphi; #eta; tracks", - {HistType::kTH2F, {PhiAxis, EtaAxis}}}, // - {"TracksPhiZvtx", - "; #varphi; #it{z}_{vtx} (cm); tracks", - {HistType::kTH2F, {PhiAxis, ZAxis}}}, // - {"TracksPtEta", - " ; p_{T} (GeV/c); #eta", - {HistType::kTH2F, {PtAxis, EtaAxis}}}, // - {"EventSelection", - ";status;events", - {HistType::kTH1F, {{15, 0.5, 15.5}}}}, - {"EventCounts", - ";status;events", - {HistType::kTH1F, {{2, 0.5, 2.5}}}}, - {"Tracks/Control/TrackCount", ";status;Track counts", {HistType::kTH1F, {{15, 0.5, 15.5}}}}, // added - // Purity-related histograms - {"Purity/SelectedAfterDCAxy/All", - ";bin;counts", - {HistType::kTH1F, {{1, 0.5, 1.5}}}}, - {"Purity/SelectedAfterDCAxy/AllEta", - ";#eta;counts", - {HistType::kTH1F, {EtaAxis}}}, - {"Purity/Gen/PrimaryEta", - ";#eta;primaries", - {HistType::kTH1F, {EtaAxis}}}, - {"Purity/Gen/All", - ";bin;counts", - {HistType::kTH1F, {{1, 0.5, 1.5}}}}, - {"Purity/Gen/AllEta", - ";#eta;counts", - {HistType::kTH1F, {EtaAxis}}} - }}; + {{"TracksEtaZvtx", + "; #eta; #it{z}_{vtx} (cm); tracks", + {HistType::kTH2F, {EtaAxis, ZAxis}}}, // + {"Tracks/EtaZvtx_gt0", + "; #eta; #it{z}_{vtx} (cm); tracks", + {HistType::kTH2F, {EtaAxis, ZAxis}}}, // + {"TracksPhiEta", + "; #varphi; #eta; tracks", + {HistType::kTH2F, {PhiAxis, EtaAxis}}}, // + {"TracksPhiZvtx", + "; #varphi; #it{z}_{vtx} (cm); tracks", + {HistType::kTH2F, {PhiAxis, ZAxis}}}, // + {"TracksPtEta", + " ; p_{T} (GeV/c); #eta", + {HistType::kTH2F, {PtAxis, EtaAxis}}}, // + {"EventSelection", + ";status;events", + {HistType::kTH1F, {{15, 0.5, 15.5}}}}, + {"EventCounts", + ";status;events", + {HistType::kTH1F, {{2, 0.5, 2.5}}}}, + {"Tracks/Control/TrackCount", ";status;Track counts", {HistType::kTH1F, {{15, 0.5, 15.5}}}}, // added + // Purity-related histograms + {"Purity/SelectedAfterDCAxy/All", + ";bin;counts", + {HistType::kTH1F, {{1, 0.5, 1.5}}}}, + {"Purity/SelectedAfterDCAxy/AllEta", + ";#eta;counts", + {HistType::kTH1F, {EtaAxis}}}, + {"Purity/Gen/PrimaryEta", + ";#eta;primaries", + {HistType::kTH1F, {EtaAxis}}}, + {"Purity/Gen/All", + ";bin;counts", + {HistType::kTH1F, {{1, 0.5, 1.5}}}}, + {"Purity/Gen/AllEta", + ";#eta;counts", + {HistType::kTH1F, {EtaAxis}}}}}; void init(InitContext&) { @@ -167,9 +165,9 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; static_cast(doprocessCountingCentrality) > 1) { LOGP(fatal, - "Exactly one process function between processMult, " - "processMultReassoc, processMultReassoc3d and processCountingCentrality should be " - "enabled!"); + "Exactly one process function between processMult, " + "processMultReassoc, processMultReassoc3d and processCountingCentrality should be " + "enabled!"); } AxisSpec MultAxis = {multBinning, "N_{trk}"}; auto hstat = registry.get(HIST("EventSelection")); @@ -479,7 +477,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; x->SetBinLabel(2, "Selected"); registry.add("Events/Centrality/CentPercentileMCGen", - "CentPercentileMCGen", kTH1D, {CentAxis}, false); + "CentPercentileMCGen", kTH1D, {CentAxis}, false); registry.add({"Events/Centrality/NtrkZvtxGen", "; N_{trk}; Z_{vtx} (cm); centrality", {HistType::kTH3F, {MultAxis, ZAxis, CentAxis}}}); @@ -507,7 +505,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; for (const auto& bc : bcs) { if (!useEvSel || (useEvSel && ((bc.selection_bit(aod::evsel::kIsBBT0A) && - bc.selection_bit(aod::evsel::kIsBBT0C)) != 0))) { + bc.selection_bit(aod::evsel::kIsBBT0C)) != 0))) { registry.fill(HIST("EventSelection"), 8); // added 5->12 cols.clear(); for (const auto& collision : collisions) { @@ -531,7 +529,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; } PROCESS_SWITCH(PseudorapidityDensityMFT, processTagging, - "Collect event sample stats", true); + "Collect event sample stats", true); Partition sample = (aod::fwdtrack::eta < -2.8f) && (aod::fwdtrack::eta > -3.2f); @@ -547,10 +545,10 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; expressions::Filter trackSelectionCentral = ((aod::track::trackCutFlag & trackSelectionITS) == trackSelectionITS) && ifnode((aod::track::v001::detectorMap & (uint8_t)o2::aod::track::TPC) == - (uint8_t)o2::aod::track::TPC, - (aod::track::trackCutFlag & trackSelectionTPC) == - trackSelectionTPC, - true) && + (uint8_t)o2::aod::track::TPC, + (aod::track::trackCutFlag & trackSelectionTPC) == + trackSelectionTPC, + true) && ((aod::track::trackCutFlag & trackSelectionDCA) == trackSelectionDCA) && (nabs(aod::track::eta) < estimatorEta); @@ -559,8 +557,8 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; aod::TracksDCA>>; // central tracks for INEL>0 void processMult(CollwEv::iterator const& collision, - aod::MFTTracks const& tracks, - FiCentralTracks const& midtracks, aod::Tracks const&) + aod::MFTTracks const& tracks, + FiCentralTracks const& midtracks, aod::Tracks const&) { registry.fill(HIST("EventSelection"), 1.); @@ -590,7 +588,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; ((phi > o2::constants::math::PI - cfgPhiCut) && (phi < o2::constants::math::PI + cfgPhiCut)) || (phi > o2::constants::math::TwoPI - cfgPhiCut) || ((phi > ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) - cfgPhiCut) && - (phi < ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) + cfgPhiCut))) + (phi < ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) + cfgPhiCut))) continue; } @@ -613,7 +611,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; } PROCESS_SWITCH(PseudorapidityDensityMFT, processMult, - "Process reco or data info", true); + "Process reco or data info", true); // Common implementation for both BestCollisionsFwd and BestCollisionsFwd3d template void processMultReassocCommon(CollwEv::iterator const& collision, @@ -725,26 +723,26 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; float dcaxy_cut = retrack.bestDCAXY(); o2::math_utils::bringTo02Pi(phi); // Declare dcaz_cut only if needed below. - if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) { - if (usePhiCut) { - if ((phi <= 0.02) || ((phi >= 3.10) && (phi <= 3.23)) || (phi >= 6.21)) - continue; - } - if (useDCAxyCut) { - if (dcaxy_cut > maxDCAxy) - continue; - } - if constexpr (std::is_same_v>) { - float dcaz_cut = retrack.bestDCAZ(); - if (useDCAzCut) { - if (dcaz_cut > maxDCAz) + if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) { + if (usePhiCut) { + if ((phi <= 0.02) || ((phi >= 3.10) && (phi <= 3.23)) || (phi >= 6.21)) continue; } - } - // Purity denominator: all tracks that pass the DCA selection and other quality cuts - registry.fill(HIST("Purity/SelectedAfterDCAxy/All"), 1.); - registry.fill(HIST("Purity/SelectedAfterDCAxy/AllEta"), track.eta()); - registry.fill(HIST("TracksEtaZvtx"), track.eta(), z); + if (useDCAxyCut) { + if (dcaxy_cut > maxDCAxy) + continue; + } + if constexpr (std::is_same_v>) { + float dcaz_cut = retrack.bestDCAZ(); + if (useDCAzCut) { + if (dcaz_cut > maxDCAz) + continue; + } + } + // Purity denominator: all tracks that pass the DCA selection and other quality cuts + registry.fill(HIST("Purity/SelectedAfterDCAxy/All"), 1.); + registry.fill(HIST("Purity/SelectedAfterDCAxy/AllEta"), track.eta()); + registry.fill(HIST("TracksEtaZvtx"), track.eta(), z); if (midtracks.size() > 0 && retrack.ambDegree() > 0) { registry.fill(HIST("Tracks/EtaZvtx_gt0"), track.eta(), z); registry.fill(HIST("Tracks/2Danalysis/EtaZvtx_sel8_inelfwdgt0"), track.eta(), z); @@ -898,15 +896,15 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; processMultReassocCommon(collision, mft, retracks, midtracks, trk); } PROCESS_SWITCH(PseudorapidityDensityMFT, processMultReassoc, - "Process reco or data info", false); + "Process reco or data info", false); PROCESS_SWITCH(PseudorapidityDensityMFT, processMultReassoc3d, - "Process reco or data info (3d)", false); + "Process reco or data info (3d)", false); using ExColsCent = soa::Join; void processCountingCentrality(ExColsCent::iterator const& collision, - aod::MFTTracks const& tracks) + aod::MFTTracks const& tracks) { auto c = collision.centFT0C(); registry.fill(HIST("Events/Centrality/Selection"), 1., c); @@ -930,7 +928,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; ((phi > o2::constants::math::PI - cfgPhiCut) && (phi < o2::constants::math::PI + cfgPhiCut)) || (phi > o2::constants::math::TwoPI - cfgPhiCut) || ((phi > ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) - cfgPhiCut) && - (phi < ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) + cfgPhiCut))) + (phi < ((o2::constants::math::PIHalf - 0.1) * o2::constants::math::PI) + cfgPhiCut))) continue; } @@ -945,12 +943,12 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; } PROCESS_SWITCH(PseudorapidityDensityMFT, processCountingCentrality, - "Count tracks in centrality bins", false); + "Count tracks in centrality bins", false); using Particles = soa::Filtered; expressions::Filter primaries = (aod::mcparticle::flags & - (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) == + (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) == (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary; Partition mcSample = nabs(aod::mcparticle::eta) < 1.1f; Partition mcSampleCentral = @@ -959,7 +957,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; void processGen( aod::McCollisions::iterator const& mcCollision, o2::soa::SmallGroups> const& collisions, + aod::McCollisionLabels>> const& collisions, Particles const& particles, aod::MFTTracks const& /*tracks*/, FiCentralTracks const& midtracks) { @@ -1009,7 +1007,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; int moreThanOne = 0; LOGP(debug, "MC col {} has {} reco cols", mcCollision.globalIndex(), - collisions.size()); + collisions.size()); for (const auto& collision : collisions) { registry.fill(HIST("EventEfficiency"), 3.); if (!disableITSROFCut && !collision.selection_bit(aod::evsel::kNoITSROFrameBorder)) { @@ -1103,11 +1101,11 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; } PROCESS_SWITCH(PseudorapidityDensityMFT, processGen, - "Process generator-level info", false); + "Process generator-level info", false); using ExColsGenCent = soa::SmallGroups>; + aod::CentFT0Cs, aod::EvSels>>; void processGenCent(aod::McCollisions::iterator const& mcCollision, ExColsGenCent const& collisions, @@ -1116,7 +1114,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; { LOGP(debug, "MC col {} has {} reco cols", mcCollision.globalIndex(), - collisions.size()); + collisions.size()); float c_gen = -1; bool atLeastOne = false; @@ -1195,7 +1193,7 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; } PROCESS_SWITCH(PseudorapidityDensityMFT, processGenCent, - "Process generator-level info in centrality bins", false); + "Process generator-level info in centrality bins", false); void processGenPt( soa::Join::iterator const& collision, @@ -1216,10 +1214,10 @@ AxisSpec PtAxis = {1001, -0.005, 10.005}; } PROCESS_SWITCH(PseudorapidityDensityMFT, processGenPt, - "Process particle-level info of pt", false); - }; + "Process particle-level info of pt", false); +}; - WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) - { +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ return WorkflowSpec{adaptAnalysisTask(cfgc)}; - } +}