diff --git a/PWGMM/Mult/Tasks/dndeta.cxx b/PWGMM/Mult/Tasks/dndeta.cxx index a993f4fef72..626afb48aac 100644 --- a/PWGMM/Mult/Tasks/dndeta.cxx +++ b/PWGMM/Mult/Tasks/dndeta.cxx @@ -46,6 +46,8 @@ struct MultiplicityCounter { Configurable estimatorEta{"estimatorEta", 1.0, "eta range for INEL>0 sample definition"}; Configurable useEvSel{"useEvSel", true, "use event selection"}; + Configurable maxDCAZ{"maxDCAZ", 0.3f, "max track DCAZ"}; + Configurable useDCAZcut{"useDCAZcut", true, "apply track DCAZ cut"}; Configurable useZDfiffCut{"useZDiffCut", true, "use Z difference cut"}; Configurable maxZDiff{"maxZDiff", 1.0f, "max allowed Z difference for reconstruced collisions (cm)"}; Configurable fillResponse{"fillResponse", false, "Fill response matrix"}; @@ -86,8 +88,8 @@ struct MultiplicityCounter { registry.add({"Tracks/Control/PtEtaGen", " ; p_{T} (GeV/c) ; #eta", {HistType::kTH2F, {PtAxis, EtaAxis}}}); registry.add({"Tracks/PhiEtaGen", "; #varphi; #eta; tracks", {HistType::kTH2F, {PhiAxis, EtaAxis}}}); - registry.add({"Tracks/PhiEtaGenDuplicates", "; #varphi; #eta; tracks", {HistType::kTH2F, {PhiAxis, EtaAxis}}}); - registry.add({"Tracks/PhiEtaDuplicates", "; #varphi; #eta; tracks", {HistType::kTH2F, {PhiAxis, EtaAxis}}}); + registry.add({"Tracks/Control/PhiEtaGenDuplicates", "; #varphi; #eta; tracks", {HistType::kTH2F, {PhiAxis, EtaAxis}}}); + registry.add({"Tracks/Control/PhiEtaDuplicates", "; #varphi; #eta; tracks", {HistType::kTH2F, {PhiAxis, EtaAxis}}}); registry.add({"Events/Efficiency", "; status; events", {HistType::kTH1F, {{7, 0.5, 7.5}}}}); registry.add({"Events/NotFoundEventZvtx", " ; Z_{vtx} (cm)", {HistType::kTH1F, {ZAxis}}}); @@ -120,6 +122,8 @@ struct MultiplicityCounter { registry.add({"Tracks/Control/PtEfficiencyI", " ; p_{T} (GeV/c)", {HistType::kTH1F, {PtAxis}}}); registry.add({"Tracks/Control/PtEfficiencyINoEtaCut", " ; p_{T} (GeV/c)", {HistType::kTH1F, {PtAxis}}}); registry.add({"Tracks/Control/PtEfficiencyISecondaries", " ; p_{T} (GeV/c)", {HistType::kTH1F, {PtAxis}}}); + registry.add({"Tracks/Control/Mask", " ; bit", {HistType::kTH1F, {{17, -0.5, 16.5}}}}); + registry.add({"Tracks/Control/ITSClusters", " ; layer", {HistType::kTH1F, {{8, 0.5, 8.5}}}}); } } @@ -154,6 +158,7 @@ struct MultiplicityCounter { PROCESS_SWITCH(MultiplicityCounter, processEventStat, "Collect event sample stats", false); expressions::Filter ITStracks = (aod::track::detectorMap & (uint8_t)o2::aod::track::ITS) != (uint8_t)0; + expressions::Filter tracksDCAcut = ifnode(useDCAZcut.node() == false, true, nabs(aod::track::dcaZ) <= maxDCAZ); using ExTracks = soa::Join; using FiTracks = soa::Filtered; @@ -234,6 +239,9 @@ struct MultiplicityCounter { auto counter = 0; auto relatedTracks = particle.tracks_as>(); for (auto& track : relatedTracks) { + if (useDCAZcut && std::abs(track.dcaZ()) > maxDCAZ) { + continue; + } ++counter; if (!countedNoEtaCut) { registry.fill(HIST("Tracks/Control/PtEfficiencyINoEtaCut"), particle.pt()); @@ -249,10 +257,35 @@ struct MultiplicityCounter { registry.fill(HIST("Tracks/Control/PtEfficiencyISecondaries"), particle.pt()); } } + if (counter > 1) { + for (auto& track : relatedTracks) { + if (useDCAZcut && std::abs(track.dcaZ()) > maxDCAZ) { + continue; + } + for (auto layer = 0; layer < 7; ++layer) { + if (track.itsClusterMap() & (uint8_t(1) << layer)) { + registry.fill(HIST("Tracks/Control/ITSClusters"), layer + 1); + } + } + auto hasbit = false; + for (auto bit = 0; bit < 16; ++bit) { + if (track.mcMask() & (uint8_t(1) << bit)) { + registry.fill(HIST("Tracks/Control/Mask"), bit); + hasbit = true; + } + } + if (!hasbit) { + registry.fill(HIST("Tracks/Control/Mask"), 16); + } + } + } if (relatedTracks.size() > 1) { - registry.fill(HIST("Tracks/PhiEtaGenDuplicates"), particle.phi(), particle.eta()); + registry.fill(HIST("Tracks/Control/PhiEtaGenDuplicates"), particle.phi(), particle.eta()); for (auto& track : relatedTracks) { - registry.fill(HIST("Tracks/PhiEtaDuplicates"), track.phi(), track.eta()); + if (useDCAZcut && std::abs(track.dcaZ()) > maxDCAZ) { + continue; + } + registry.fill(HIST("Tracks/Control/PhiEtaDuplicates"), track.phi(), track.eta()); } } }