Skip to content

Commit 9ee6f49

Browse files
authored
[PWGLF] Fix filling of the histogram (#13101)
1 parent dd19dab commit 9ee6f49

File tree

1 file changed

+60
-14
lines changed

1 file changed

+60
-14
lines changed

PWGLF/Tasks/QC/systematicsMapping.cxx

Lines changed: 60 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,19 @@ struct SystematicsMapping {
4040
ConfigurableAxis invariantMassBins{"invariantMassBins", {100, -0.1f, 0.1f}, "Binning for the invariant mass (GeV/c^2)"};
4141
ConfigurableAxis nsigmaBins{"nsigmaBins", {100, -10.f, 10.f}, "Binning for nSigma"};
4242
// Selection bins
43-
ConfigurableAxis tpcClusterBins{"tpcClusterBins", {5, 70, 100, 120, 135, 150}, "Min TPC clusters for tracks"};
43+
ConfigurableAxis tpcCrossedRowsBins{"tpcCrossedRowsBins", {5, 70, 100, 120, 135, 150}, "Min TPC clusters for tracks"};
4444
ConfigurableAxis itsClustersBins{"itsClustersBins", {5, 0, 6}, "Min ITS clusters for tracks"};
45+
ConfigurableAxis dcaBins{"dcaBins", {100, 0.f, 5.f}, "Binning for DCA (cm)"};
46+
ConfigurableAxis chi2Bins{"chi2Bins", {100, 0.f, 100.f}, "Binning for chi2"};
4547
// Selection configurables
4648
Configurable<float> selectionPosZ{"selectionPosZ", 10.f, "Max |z| of the primary vertex"};
49+
// V0 selection criteria
50+
Configurable<double> v0cospa{"v0cospa", 0.97, "V0 CosPA"};
51+
Configurable<float> dcav0dau{"dcav0dau", 10, "DCA V0 Daughters"};
52+
Configurable<float> dcanegtopv{"dcanegtopv", 0.0, "DCA Neg To PV"};
53+
Configurable<float> dcapostopv{"dcapostopv", 0.0, "DCA Pos To PV"};
54+
Configurable<float> v0radius{"v0radius", 0.0, "Radius"};
55+
Configurable<float> etadau{"etadau", 0.8, "Eta Daughters"};
4756

4857
HistogramRegistry registry{"registry"};
4958

@@ -58,28 +67,41 @@ struct SystematicsMapping {
5867
const AxisSpec ptAxis{ptBins, "#it{p}_{T} (GeV/c)"};
5968
const AxisSpec etaAxis{etaBins, "#eta"};
6069
const AxisSpec phiAxis{phiBins, "#phi (rad)"};
70+
const AxisSpec invariantMassAxis{invariantMassBins, "Invariant Mass (GeV/c^{2})"};
71+
const AxisSpec nsigmaAxisTPC{nsigmaBins, "nSigma TPC"};
72+
const AxisSpec nsigmaAxisTOF{nsigmaBins, "nSigma TOF"};
73+
const AxisSpec tpcCrossedRowsAxis{tpcCrossedRowsBins, "TPC crossed rows"};
74+
const AxisSpec itsClustersAxis{itsClustersBins, "ITS clusters"};
75+
const AxisSpec dcaXYAxis{dcaBins, "DCAxy (cm)"};
76+
const AxisSpec dcaZAxis{dcaBins, "DCAz (cm)"};
77+
const AxisSpec chi2TPCAxis{chi2Bins, "TPC Chi2"};
78+
const AxisSpec chi2ITSAxis{chi2Bins, "ITS Chi2"};
6179

6280
if (doprocessData) {
6381

6482
// First we define the histograms on which we are cutting (tpc clusters, its clusters, ..)
65-
registry.add("K/hTPCClusters", "", HistType::kTH1F, {{100, 0, 200}});
83+
registry.add("K/hTPCCrossedRows", "", HistType::kTH1F, {{100, 0, 200}});
6684
registry.add("K/hITSClusters", "", HistType::kTH1F, {{10, 0, 10}});
85+
registry.add("K/hDCAxy", "", HistType::kTH1F, {dcaBins});
86+
registry.add("K/hDCAz", "", HistType::kTH1F, {dcaBins});
87+
registry.add("K/hChi2OverNCLsTPC", "", HistType::kTH1F, {chi2Bins});
88+
registry.add("K/hChi2OverNCLsITS", "", HistType::kTH1F, {chi2Bins});
6789
registry.addClone("K/", "K0s/");
6890

6991
// Add the signal histograms
70-
registry.add("K/SignalPositive", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, nsigmaBins, tpcClusterBins, itsClustersBins});
71-
registry.add("K/SignalNegative", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, nsigmaBins, tpcClusterBins, itsClustersBins});
72-
registry.add("K0s/Signal", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins, invariantMassBins, tpcClusterBins, itsClustersBins});
92+
registry.add("K/SignalPositive", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis});
93+
registry.add("K/SignalNegative", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis});
94+
registry.add("K0s/Signal", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis, invariantMassBins, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis});
7395
}
7496

7597
if (doprocessMc) {
76-
registry.add("K/GeneratedPositive", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins});
77-
registry.add("K/GeneratedNegative", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins});
78-
registry.add("K0s/Generated", "", HistType::kTHnSparseF, {ptBins, etaBins, phiBins});
98+
registry.add("K/GeneratedPositive", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis});
99+
registry.add("K/GeneratedNegative", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis});
100+
registry.add("K0s/Generated", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis});
79101
}
80102
}
81103

82-
using TrackType = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullKa, aod::pidTOFFullPi>;
104+
using TrackType = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullKa, aod::pidTOFFullKa, aod::TracksDCA>;
83105
using CollisionType = soa::Join<aod::Collisions, aod::EvSels>;
84106

85107
void processData(CollisionType const& collisions,
@@ -94,21 +116,45 @@ struct SystematicsMapping {
94116
for (const auto& track : tracks) {
95117
if (track.collisionId() != collision.globalIndex())
96118
continue;
97-
registry.fill(HIST("hTPCClusters"), track.tpcNClsFound());
98-
registry.fill(HIST("hITSClusters"), track.itsNCls());
119+
registry.fill(HIST("K/hTPCCrossedRows"), track.tpcNClsCrossedRows());
120+
registry.fill(HIST("K/hITSClusters"), track.itsNCls());
121+
registry.fill(HIST("K/hDCAxy"), track.dcaXY());
122+
registry.fill(HIST("K/hDCAz"), track.dcaZ());
123+
registry.fill(HIST("K/hChi2OverNCLsTPC"), track.tpcChi2NCl());
124+
registry.fill(HIST("K/hChi2OverNCLsITS"), track.itsChi2NCl());
99125
if (track.sign() > 0)
100-
registry.fill(HIST("K/SignalPositive"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tpcNClsFound(), track.itsNCls());
126+
registry.fill(HIST("K/SignalPositive"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.tpcNClsCrossedRows(), track.itsNCls(), track.dcaXY(), track.dcaZ(), track.tpcChi2NCl(), track.itsChi2NCl());
101127
else
102-
registry.fill(HIST("K/SignalNegative"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tpcNClsFound(), track.itsNCls());
128+
registry.fill(HIST("K/SignalNegative"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.tpcNClsCrossedRows(), track.itsNCls(), track.dcaXY(), track.dcaZ(), track.tpcChi2NCl(), track.itsChi2NCl());
103129
}
104130

105131
// K0s loop
106132
for (const auto& v0 : v0s) {
107133
if (v0.collisionId() != collision.globalIndex())
108134
continue;
135+
109136
const auto& posTrack = v0.posTrack_as<TrackType>();
110137
const auto& negTrack = v0.negTrack_as<TrackType>();
111-
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()));
138+
if (v0.v0radius() < v0radius ||
139+
v0.v0cosPA() < v0cospa ||
140+
std::abs(posTrack.eta()) > etadau ||
141+
std::abs(negTrack.eta()) > etadau)
142+
continue;
143+
registry.fill(HIST("K0s/hTPCCrossedRows"), std::min(posTrack.tpcNClsCrossedRows(), negTrack.tpcNClsCrossedRows()));
144+
registry.fill(HIST("K0s/hITSClusters"), std::min(posTrack.itsNCls(), negTrack.itsNCls()));
145+
registry.fill(HIST("K0s/hDCAxy"), std::min(posTrack.dcaXY(), negTrack.dcaXY()));
146+
registry.fill(HIST("K0s/hDCAz"), std::min(posTrack.dcaZ(), negTrack.dcaZ()));
147+
registry.fill(HIST("K0s/hChi2OverNCLsTPC"), std::min(posTrack.tpcChi2NCl(), negTrack.tpcChi2NCl()));
148+
registry.fill(HIST("K0s/hChi2OverNCLsITS"), std::min(posTrack.itsChi2NCl(), negTrack.itsChi2NCl()));
149+
registry.fill(HIST("K0s/Signal"), v0.pt(), v0.eta(), v0.phi(), v0.mK0Short() - constants::physics::MassK0Short,
150+
std::max(posTrack.tpcNSigmaPi(), negTrack.tpcNSigmaPi()),
151+
std::max(posTrack.tofNSigmaPi(), negTrack.tofNSigmaPi()),
152+
std::min(posTrack.tpcNClsCrossedRows(), negTrack.tpcNClsCrossedRows()),
153+
std::min(posTrack.itsNCls(), negTrack.itsNCls()),
154+
std::min(posTrack.dcaXY(), negTrack.dcaXY()),
155+
std::min(posTrack.dcaZ(), negTrack.dcaZ()),
156+
std::min(posTrack.tpcChi2NCl(), negTrack.tpcChi2NCl()),
157+
std::min(posTrack.itsChi2NCl(), negTrack.itsChi2NCl()));
112158
}
113159
}
114160
}

0 commit comments

Comments
 (0)