Skip to content
Merged
Changes from 3 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
43 changes: 32 additions & 11 deletions PWGLF/Tasks/QC/systematicsMapping.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,10 @@ struct SystematicsMapping {
ConfigurableAxis invariantMassBins{"invariantMassBins", {100, -0.1f, 0.1f}, "Binning for the invariant mass (GeV/c^2)"};
ConfigurableAxis nsigmaBins{"nsigmaBins", {100, -10.f, 10.f}, "Binning for nSigma"};
// Selection bins
ConfigurableAxis tpcClusterBins{"tpcClusterBins", {5, 70, 100, 120, 135, 150}, "Min TPC clusters for tracks"};
ConfigurableAxis tpcCrossedRowsBins{"tpcCrossedRowsBins", {5, 70, 100, 120, 135, 150}, "Min TPC clusters for tracks"};
ConfigurableAxis itsClustersBins{"itsClustersBins", {5, 0, 6}, "Min ITS clusters for tracks"};
ConfigurableAxis dcaBins{"dcaBins", {100, 0.f, 5.f}, "Binning for DCA (cm)"};
ConfigurableAxis chi2Bins{"chi2Bins", {100, 0.f, 100.f}, "Binning for chi2"};
// Selection configurables
Configurable<float> selectionPosZ{"selectionPosZ", 10.f, "Max |z| of the primary vertex"};

Expand All @@ -62,14 +64,18 @@ struct SystematicsMapping {
if (doprocessData) {

// First we define the histograms on which we are cutting (tpc clusters, its clusters, ..)
registry.add("K/hTPCClusters", "", HistType::kTH1F, {{100, 0, 200}});
registry.add("K/hTPCCrossedRows", "", HistType::kTH1F, {{100, 0, 200}});
registry.add("K/hITSClusters", "", HistType::kTH1F, {{10, 0, 10}});
registry.add("K/hDCAxy", "", HistType::kTH1F, {dcaBins});
registry.add("K/hDCAz", "", HistType::kTH1F, {dcaBins});
registry.add("K/hChi2OverNCLsTPC", "", HistType::kTH1F, {chi2Bins});
registry.add("K/hChi2OverNCLsITS", "", HistType::kTH1F, {chi2Bins});
registry.addClone("K/", "K0s/");

// Add the signal histograms
registry.add("K/SignalPositive", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, nsigmaBins, tpcClusterBins, itsClustersBins});
registry.add("K/SignalNegative", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, nsigmaBins, tpcClusterBins, itsClustersBins});
registry.add("K0s/Signal", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, invariantMassBins, tpcClusterBins, itsClustersBins});
registry.add("K/SignalPositive", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, nsigmaBins, tpcCrossedRowsBins, itsClustersBins, dcaBins, chi2Bins});
registry.add("K/SignalNegative", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, nsigmaBins, tpcCrossedRowsBins, itsClustersBins, dcaBins, chi2Bins});
registry.add("K0s/Signal", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, invariantMassBins, tpcCrossedRowsBins, itsClustersBins, dcaBins, chi2Bins});
}

if (doprocessMc) {
Expand All @@ -79,7 +85,7 @@ struct SystematicsMapping {
}
}

using TrackType = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullKa, aod::pidTOFFullPi>;
using TrackType = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullKa, aod::pidTOFFullPi, aod::TracksDCA>;
using CollisionType = soa::Join<aod::Collisions, aod::EvSels>;

void processData(CollisionType const& collisions,
Expand All @@ -94,12 +100,16 @@ struct SystematicsMapping {
for (const auto& track : tracks) {
if (track.collisionId() != collision.globalIndex())
continue;
registry.fill(HIST("hTPCClusters"), track.tpcNClsFound());
registry.fill(HIST("hITSClusters"), track.itsNCls());
registry.fill(HIST("K/hTPCCrossedRows"), track.tpcNClsCrossedRows());
registry.fill(HIST("K/hITSClusters"), track.itsNCls());
registry.fill(HIST("K/hDCAxy"), track.dcaXY());
registry.fill(HIST("K/hDCAz"), track.dcaZ());
registry.fill(HIST("K/hChi2OverNCLsTPC"), track.tpcChi2NCl());
registry.fill(HIST("K/hChi2OverNCLsITS"), track.itsChi2NCl());
if (track.sign() > 0)
registry.fill(HIST("K/SignalPositive"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tpcNClsFound(), track.itsNCls());
registry.fill(HIST("K/SignalPositive"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tpcNClsCrossedRows(), track.itsNCls(), track.dcaXY(), track.dcaZ(), track.tpcChi2NCl());
else
registry.fill(HIST("K/SignalNegative"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tpcNClsFound(), track.itsNCls());
registry.fill(HIST("K/SignalNegative"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tpcNClsCrossedRows(), track.itsNCls(), track.dcaXY(), track.dcaZ(), track.tpcChi2NCl());
}

// K0s loop
Expand All @@ -108,7 +118,18 @@ struct SystematicsMapping {
continue;
const auto& posTrack = v0.posTrack_as<TrackType>();
const auto& negTrack = v0.negTrack_as<TrackType>();
registry.fill(HIST("K0s/Signal"), v0.pt(), v0.eta(), v0.phi(), v0.mK0Short() - constants::physics::MassK0Short, std::min(posTrack.tpcNClsFound(), negTrack.tpcNClsFound()), std::min(posTrack.itsNCls(), negTrack.itsNCls()));
registry.fill(HIST("K0s/hTPCCrossedRows"), std::min(posTrack.tpcNClsCrossedRows(), negTrack.tpcNClsCrossedRows()));
registry.fill(HIST("K0s/hITSClusters"), std::min(posTrack.itsNCls(), negTrack.itsNCls()));
registry.fill(HIST("K0s/hDCAxy"), std::min(posTrack.dcaXY(), negTrack.dcaXY()));
registry.fill(HIST("K0s/hDCAz"), std::min(posTrack.dcaZ(), negTrack.dcaZ()));
registry.fill(HIST("K0s/hChi2OverNCLsTPC"), std::min(posTrack.tpcChi2NCl(), negTrack.tpcChi2NCl()));
registry.fill(HIST("K0s/hChi2OverNCLsITS"), std::min(posTrack.itsChi2NCl(), negTrack.itsChi2NCl()));
registry.fill(HIST("K0s/Signal"), v0.pt(), v0.eta(), v0.phi(), v0.mK0Short() - constants::physics::MassK0Short,
std::min(posTrack.tpcNClsCrossedRows(), negTrack.tpcNClsCrossedRows()),
std::min(posTrack.itsNCls(), negTrack.itsNCls()),
std::min(posTrack.dcaXY(), negTrack.dcaXY()),
std::min(posTrack.dcaZ(), negTrack.dcaZ()),
std::min(posTrack.tpcChi2NCl(), negTrack.tpcChi2NCl()));
}
}
}
Expand Down
Loading