Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 22 additions & 28 deletions PWGMM/Mult/Tasks/dndeta.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand All @@ -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<aod::Tracks, aod::McTrackLabels>;

struct MultiplicityCounter {
Expand All @@ -48,8 +59,6 @@ struct MultiplicityCounter {
Configurable<bool> useEvSel{"useEvSel", true, "use event selection"};
Configurable<float> maxDCAZ{"maxDCAZ", 0.3f, "max track DCAZ"};
Configurable<bool> useDCAZcut{"useDCAZcut", true, "apply track DCAZ cut"};
Configurable<bool> useZDfiffCut{"useZDiffCut", true, "use Z difference cut"};
Configurable<float> maxZDiff{"maxZDiff", 1.0f, "max allowed Z difference for reconstruced collisions (cm)"};
Configurable<bool> fillResponse{"fillResponse", false, "Fill response matrix"};

HistogramRegistry registry{
Expand All @@ -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}}}} //
} //
};

Expand Down Expand Up @@ -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}}});
Expand All @@ -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) {
Expand Down Expand Up @@ -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<aod::Tracks, aod::TracksExtra, aod::TracksDCA>;
using ExTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA>;
using FiTracks = soa::Filtered<ExTracks>;
Partition<FiTracks> sample = nabs(aod::track::eta) < estimatorEta;

Expand Down Expand Up @@ -194,7 +204,7 @@ struct MultiplicityCounter {
PROCESS_SWITCH(MultiplicityCounter, processCounting, "Count tracks", false);

using Particles = soa::Filtered<aod::McParticles>;
using LabeledTracksEx = soa::Join<LabeledTracks, aod::TracksExtra, aod::TracksDCA>;
using LabeledTracksEx = soa::Join<LabeledTracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA>;
using Particle = Particles::iterator;
using ParticlesI = soa::Join<aod::McParticles, aod::ParticlesToTracks>;
expressions::Filter primaries = (aod::mcparticle::flags & (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) == (uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary;
Expand All @@ -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);

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down