diff --git a/PWGMM/Mult/Tasks/dndeta.cxx b/PWGMM/Mult/Tasks/dndeta.cxx index 626afb48aac..0d968964272 100644 --- a/PWGMM/Mult/Tasks/dndeta.cxx +++ b/PWGMM/Mult/Tasks/dndeta.cxx @@ -30,6 +30,7 @@ using namespace o2; using namespace o2::framework; using namespace o2::framework::expressions; +using namespace o2::aod::track; AxisSpec ZAxis = {301, -30.1, 30.1}; AxisSpec DeltaZAxis = {61, -6.1, 6.1}; @@ -39,6 +40,16 @@ AxisSpec MultAxis = {301, -0.5, 300.5}; AxisSpec PhiAxis = {629, 0, 2 * M_PI}; AxisSpec PtAxis = {2401, -0.005, 24.005}; +static constexpr TrackSelectionFlags::flagtype trackSelectionPattern = TrackSelectionFlags::kTrackType | + TrackSelectionFlags::kTPCNCls | + TrackSelectionFlags::kTPCCrossedRowsOverNCls | + TrackSelectionFlags::kTPCChi2NDF | + TrackSelectionFlags::kITSChi2NDF | + TrackSelectionFlags::kITSHits | + TrackSelectionFlags::kGoldenChi2 | + TrackSelectionFlags::kDCAz | + TrackSelectionFlags::kDCAxy; + using LabeledTracks = soa::Join; struct MultiplicityCounter { @@ -48,8 +59,6 @@ struct MultiplicityCounter { 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"}; HistogramRegistry registry{ @@ -62,7 +71,9 @@ struct MultiplicityCounter { {"Tracks/Control/PtEta", " ; p_{T} (GeV/c); #eta", {HistType::kTH2F, {PtAxis, EtaAxis}}}, // {"Tracks/Control/DCAXYPt", " ; p_{T} (GeV/c) ; DCA_{XY} (cm)", {HistType::kTH2F, {PtAxis, DCAAxis}}}, // {"Tracks/Control/DCAZPt", " ; p_{T} (GeV/c) ; DCA_{Z} (cm)", {HistType::kTH2F, {PtAxis, DCAAxis}}}, // - {"Events/Selection", ";status;events", {HistType::kTH1F, {{7, 0.5, 7.5}}}} // + {"Events/Selection", ";status;events", {HistType::kTH1F, {{7, 0.5, 7.5}}}}, // + {"Events/Control/Chi2", " ; #chi^2", {HistType::kTH1F, {{101, -0.1, 10.1}}}}, // + {"Events/Control/TimeResolution", " ; t (ms)", {HistType::kTH1F, {{1001, -0.1, 100.1}}}} // } // }; @@ -90,11 +101,9 @@ struct MultiplicityCounter { registry.add({"Tracks/PhiEtaGen", "; #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/Efficiency", "; status; events", {HistType::kTH1F, {{5, 0.5, 5.5}}}}); registry.add({"Events/NotFoundEventZvtx", " ; Z_{vtx} (cm)", {HistType::kTH1F, {ZAxis}}}); - registry.add({"Events/ZposDiff", " ; Z_{rec} - Z_{gen} (cm)", {HistType::kTH1F, {DeltaZAxis}}}); - if (fillResponse) { registry.add({"Events/Response", " ; N_{rec}; N_{gen}; Z_{vtx} (cm)", {HistType::kTH3F, {MultAxis, MultAxis, ZAxis}}}); registry.add({"Events/EfficiencyMult", " ; N_{gen}; Z_{vtx} (cm)", {HistType::kTH2F, {MultAxis, ZAxis}}}); @@ -108,8 +117,6 @@ struct MultiplicityCounter { x->SetBinLabel(3, "Reconstructed"); x->SetBinLabel(4, "Selected"); x->SetBinLabel(5, "Selected INEL>0"); - x->SetBinLabel(6, "Selected (Zdiff)"); - x->SetBinLabel(7, "Selected INEL>0 (ZDiff)"); } if (doprocessTrackEfficiency) { @@ -151,16 +158,19 @@ struct MultiplicityCounter { registry.fill(HIST("Events/Selection"), 7.); } } + for (auto& col : cols) { + registry.fill(HIST("Events/Control/Chi2"), col.chi2()); + registry.fill(HIST("Events/Control/TimeResolution"), col.collisionTimeRes()); + } } } } 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); + expressions::Filter trackSelectionFilter = (aod::track::trackCutFlag & trackSelectionPattern) == trackSelectionPattern; - using ExTracks = soa::Join; + using ExTracks = soa::Join; using FiTracks = soa::Filtered; Partition sample = nabs(aod::track::eta) < estimatorEta; @@ -194,7 +204,7 @@ struct MultiplicityCounter { PROCESS_SWITCH(MultiplicityCounter, processCounting, "Count tracks", false); using Particles = soa::Filtered; - using LabeledTracksEx = soa::Join; + using LabeledTracksEx = soa::Join; using Particle = Particles::iterator; using ParticlesI = soa::Join; expressions::Filter primaries = (aod::mcparticle::flags & (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) == (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary; @@ -215,11 +225,6 @@ struct MultiplicityCounter { continue; } auto mcCollision = collision.mcCollision(); - if (useZDfiffCut) { - if (std::abs(collision.posZ() - mcCollision.posZ()) > maxZDiff) { - continue; - } - } auto particlesI = primariesI->sliceByCached(aod::mcparticle::mcCollisionId, mcCollision.globalIndex()); particlesI.bindExternalIndices(&tracks); @@ -309,11 +314,6 @@ struct MultiplicityCounter { continue; } auto mcCollision = collision.mcCollision(); - if (useZDfiffCut) { - if (std::abs(collision.posZ() - mcCollision.posZ()) > maxZDiff) { - continue; - } - } auto particles = mcSample->sliceByCached(aod::mcparticle::mcCollisionId, mcCollision.globalIndex()); auto tracks = lsample->sliceByCached(aod::track::collisionId, collision.globalIndex()); tracks.bindExternalIndices(&mcParticles); @@ -382,12 +382,6 @@ struct MultiplicityCounter { registry.fill(HIST("Events/Efficiency"), 5.); } - registry.fill(HIST("Events/ZposDiff"), collision.posZ() - mcCollision.posZ()); - if (useZDfiffCut) { - if (std::abs(collision.posZ() - mcCollision.posZ()) > maxZDiff) { - continue; - } - } registry.fill(HIST("Events/Efficiency"), 6.); ++moreThanOne; atLeastOne = true;