Skip to content

Commit f830913

Browse files
committed
Add qa for McCollisions and particle production time
1 parent 019a377 commit f830913

1 file changed

Lines changed: 72 additions & 31 deletions

File tree

ALICE3/Tasks/alice3DecayerQa.cxx

Lines changed: 72 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,12 @@ struct Alice3DecayerQa {
4949
ConfigurableAxis axisDaughtersIds{"axisDaughtersIds", {1000, 0, 999}, "DaughtersIds axis for QA histograms"};
5050
ConfigurableAxis axisWeight{"axisWeight", {2, 0, 1}, "Weight axis for QA histograms"};
5151
ConfigurableAxis axisPos{"axisPos", {1000, 0, 999}, "Position axis for QA histograms"};
52+
ConfigurableAxis axisEventTime{"axisEventTime", {1000, -1e-3, 1e-3}, "Event time axis for QA histograms"};
53+
ConfigurableAxis axisProductionTime{"axisProductionTime", {1000, 0, 10}, "Particle production time axis for QA histograms"};
5254
ConfigurableAxis axisPhi{"axisPhi", {720, -360, 360}, "Phi axis for QA histograms"};
5355
ConfigurableAxis axisEta{"axisEta", {80, -4, 4}, "Eta axis for QA histograms"};
5456
ConfigurableAxis axisRapidity{"axisRapidity", {80, -4, 4}, "Rapidity axis for QA histograms"};
55-
ConfigurableAxis axisIsAlive{"axisIsAlive", {2, 0, 1}, "IsAlive axis for QA histograms"};
56-
ConfigurableAxis axisIsPrimary{"axisIsPrimary", {2, 0, 1}, "IsPrimary axis for QA histograms"};
57+
ConfigurableAxis axisImpactParameter{"axisImpactParameter", {200, 0, 20}, "Impact parameter axis for QA histograms"};
5758
ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f, 2.2f, 2.4f, 2.6f, 2.8f, 3.0f, 3.2f, 3.4f, 3.6f, 3.8f, 4.0f, 4.4f, 4.8f, 5.2f, 5.6f, 6.0f, 6.5f, 7.0f, 7.5f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 17.0f, 19.0f, 21.0f, 23.0f, 25.0f, 30.0f, 35.0f, 40.0f, 50.0f}, "pt axis for QA histograms"};
5859
ConfigurableAxis axisRadiusLog{"axisRadiusLog", {VARIABLE_WIDTH, 0.0f, 0.01f, 0.0104713f, 0.0109648f, 0.0114815f, 0.0120226f, 0.0125893f, 0.0131826f, 0.0138038f, 0.0144544f, 0.0151356f, 0.0158489f, 0.0165959f, 0.017378f, 0.018197f, 0.0190546f, 0.0199526f, 0.020893f, 0.0218776f, 0.0229087f, 0.0239883f, 0.0251189f, 0.0263027f, 0.0275423f, 0.0288403f, 0.0301995f, 0.0316228f, 0.0331131f, 0.0346737f, 0.0363078f, 0.0380189f, 0.0398107f, 0.0416869f, 0.0436516f, 0.0457088f, 0.047863f, 0.0501187f, 0.0524807f, 0.0549541f, 0.057544f, 0.060256f, 0.0630957f, 0.0660693f, 0.0691831f, 0.0724436f, 0.0758578f, 0.0794328f, 0.0831764f, 0.0870964f, 0.0912011f, 0.0954993f, 0.1f, 0.104713f, 0.109648f, 0.114815f, 0.120226f, 0.125893f, 0.131826f, 0.138038f, 0.144544f, 0.151356f, 0.158489f, 0.165959f, 0.17378f, 0.18197f, 0.190546f, 0.199526f, 0.20893f, 0.218776f, 0.229087f, 0.239883f, 0.251189f, 0.263027f, 0.275423f, 0.288403f, 0.301995f, 0.316228f, 0.331131f, 0.346737f, 0.363078f, 0.380189f, 0.398107f, 0.416869f, 0.436516f, 0.457088f, 0.47863f, 0.501187f, 0.524807f, 0.549541f, 0.57544f, 0.60256f, 0.630957f, 0.660693f, 0.691831f, 0.724436f, 0.758578f, 0.794328f, 0.831764f, 0.870964f, 0.912011f, 0.954993f, 1.0f, 1.04713f, 1.09648f, 1.14815f, 1.20226f, 1.25893f, 1.31826f, 1.38038f, 1.44544f, 1.51356f, 1.58489f, 1.65959f, 1.7378f, 1.8197f, 1.90546f, 1.99526f, 2.0893f, 2.18776f, 2.29087f, 2.39883f, 2.51189f, 2.63027f, 2.75423f, 2.88403f, 3.01995f, 3.16228f, 3.31131f, 3.46737f, 3.63078f, 3.80189f, 3.98107f, 4.16869f, 4.36516f, 4.57088f, 4.7863f, 5.01187f, 5.24807f, 5.49541f, 5.7544f, 6.0256f, 6.30957f, 6.60693f, 6.91831f, 7.24436f, 7.58578f, 7.94328f, 8.31764f, 8.70964f, 9.12011f, 9.54993f, 10.0f, 10.4713f, 10.9648f, 11.4815f, 12.0226f, 12.5893f, 13.1826f, 13.8038f, 14.4544f, 15.1356f, 15.8489f, 16.5959f, 17.378f, 18.197f, 19.0546f, 19.9526f, 20.893f, 21.8776f, 22.9087f, 23.9883f, 25.1189f, 26.3027f, 27.5423f, 28.8403f, 30.1995f, 31.6228f, 33.1131f, 34.6737f, 36.3078f, 38.0189f, 39.8107f, 41.6869f, 43.6516f, 45.7088f, 47.863f, 50.1187f, 52.4807f, 54.9541f, 57.544f, 60.256f, 63.0957f, 66.0693f, 69.1831f, 72.4436f, 75.8578f, 79.4328f, 83.1764f, 87.0964f, 91.2011f, 95.4993f, 100.0f}, "Radial axis"};
5960
ConfigurableAxis axisPtLog{"axisPtLog", {VARIABLE_WIDTH, 0.0f, 0.001f, 0.00104713f, 0.00109648f, 0.00114815f, 0.00120226f, 0.00125893f, 0.00131826f, 0.00138038f, 0.00144544f, 0.00151356f, 0.00158489f, 0.00165959f, 0.0017378f, 0.0018197f, 0.00190546f, 0.00199526f, 0.0020893f, 0.00218776f, 0.00229087f, 0.00239883f, 0.00251189f, 0.00263027f, 0.00275423f, 0.00288403f, 0.00301995f, 0.00316228f, 0.00331131f, 0.00346737f, 0.00363078f, 0.00380189f, 0.00398107f, 0.00416869f, 0.00436516f, 0.00457088f, 0.0047863f, 0.00501187f, 0.00524807f, 0.00549541f, 0.0057544f, 0.0060256f, 0.00630957f, 0.00660693f, 0.00691831f, 0.00724436f, 0.00758578f, 0.00794328f, 0.00831764f, 0.00870964f, 0.00912011f, 0.00954993f, 0.01f, 0.0104713f, 0.0109648f, 0.0114815f, 0.0120226f, 0.0125893f, 0.0131826f, 0.0138038f, 0.0144544f, 0.0151356f, 0.0158489f, 0.0165959f, 0.017378f, 0.018197f, 0.0190546f, 0.0199526f, 0.020893f, 0.0218776f, 0.0229087f, 0.0239883f, 0.0251189f, 0.0263027f, 0.0275423f, 0.0288403f, 0.0301995f, 0.0316228f, 0.0331131f, 0.0346737f, 0.0363078f, 0.0380189f, 0.0398107f, 0.0416869f, 0.0436516f, 0.0457088f, 0.047863f, 0.0501187f, 0.0524807f, 0.0549541f, 0.057544f, 0.060256f, 0.0630957f, 0.0660693f, 0.0691831f, 0.0724436f, 0.0758578f, 0.0794328f, 0.0831764f, 0.0870964f, 0.0912011f, 0.0954993f, 0.1f, 0.104713f, 0.109648f, 0.114815f, 0.120226f, 0.125893f, 0.131826f, 0.138038f, 0.144544f, 0.151356f, 0.158489f, 0.165959f, 0.17378f, 0.18197f, 0.190546f, 0.199526f, 0.20893f, 0.218776f, 0.229087f, 0.239883f, 0.251189f, 0.263027f, 0.275423f, 0.288403f, 0.301995f, 0.316228f, 0.331131f, 0.346737f, 0.363078f, 0.380189f, 0.398107f, 0.416869f, 0.436516f, 0.457088f, 0.47863f, 0.501187f, 0.524807f, 0.549541f, 0.57544f, 0.60256f, 0.630957f, 0.660693f, 0.691831f, 0.724436f, 0.758578f, 0.794328f, 0.831764f, 0.870964f, 0.912011f, 0.954993f, 1.0f, 1.04713f, 1.09648f, 1.14815f, 1.20226f, 1.25893f, 1.31826f, 1.38038f, 1.44544f, 1.51356f, 1.58489f, 1.65959f, 1.7378f, 1.8197f, 1.90546f, 1.99526f, 2.0893f, 2.18776f, 2.29087f, 2.39883f, 2.51189f, 2.63027f, 2.75423f, 2.88403f, 3.01995f, 3.16228f, 3.31131f, 3.46737f, 3.63078f, 3.80189f, 3.98107f, 4.16869f, 4.36516f, 4.57088f, 4.7863f, 5.01187f, 5.24807f, 5.49541f, 5.7544f, 6.0256f, 6.30957f, 6.60693f, 6.91831f, 7.24436f, 7.58578f, 7.94328f, 8.31764f, 8.70964f, 9.12011f, 9.54993f, 10.0f}, "pt axis for QA histograms"};
@@ -79,7 +80,18 @@ struct Alice3DecayerQa {
7980

8081
void init(o2::framework::InitContext&)
8182
{
82-
// QA with Table entries
83+
// QA with collision table entries
84+
histos.add("McCollision/hBCId", "hBCId", kTH1D, {axes.axisCollisionId});
85+
histos.add("McCollision/hGeneratorsID", "hGeneratorsID", kTH1D, {axes.axisCollisionId});
86+
histos.add("McCollision/hPosX", "hPosX", kTH1D, {axes.axisPos});
87+
histos.add("McCollision/hPosY", "hPosY", kTH1D, {axes.axisPos});
88+
histos.add("McCollision/hPosZ", "hPosZ", kTH1D, {axes.axisPos});
89+
histos.add("McCollision/hT", "hT", kTH1D, {axes.axisEventTime});
90+
histos.add("McCollision/hWeight", "hWeight", kTH1D, {axes.axisWeight});
91+
histos.add("McCollision/hImpactParameter", "hImpactParameter", kTH1D, {axes.axisImpactParameter});
92+
histos.add("McCollision/hRventPlaneAngle", "hRventPlaneAngle", kTH1D, {axes.axisPhi});
93+
94+
// QA with particle table entries
8395
histos.add("McParticle/hElPt", "hElPt", kTH1D, {axes.axisPt});
8496
histos.add("McParticle/hMuPt", "hMuPt", kTH1D, {axes.axisPt});
8597
histos.add("McParticle/hPiPt", "hPiPt", kTH1D, {axes.axisPt});
@@ -95,7 +107,7 @@ struct Alice3DecayerQa {
95107
histos.add("McParticle/hVx", "hVx", kTH1D, {axes.axisPos});
96108
histos.add("McParticle/hVy", "hVy", kTH1D, {axes.axisPos});
97109
histos.add("McParticle/hVz", "hVz", kTH1D, {axes.axisPos});
98-
histos.add("McParticle/hVt", "hVt", kTH1D, {axes.axisPos});
110+
histos.add("McParticle/hVt", "hVt", kTH1D, {axes.axisProductionTime});
99111
histos.add("McParticle/hPhi", "hPhi", kTH1D, {axes.axisPhi});
100112
histos.add("McParticle/hEta", "hEta", kTH1D, {axes.axisEta});
101113
histos.add("McParticle/hRapidity", "hRapidity", kTH1D, {axes.axisRapidity});
@@ -118,6 +130,11 @@ struct Alice3DecayerQa {
118130
histos.add("XiMinus/hV0DauDecayRadius", "hV0DauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})", kTH2D, {axes.axisRadiusLog, axes.axisPtLog});
119131
histos.add("XiMinus/hPosDauDecayRadius", "hPosDauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})", kTH2D, {axes.axisRadiusLog, axes.axisPtLog});
120132
histos.add("XiMinus/hNegDauDecayRadius", "hNegDauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})", kTH2D, {axes.axisRadiusLog, axes.axisPtLog});
133+
histos.add("XiMinus/hXiVt", "hXiVt;Production time (ns)", kTH1D, {axes.axisProductionTime});
134+
histos.add("XiMinus/hBachVt", "hBachVt;Production time (ns)", kTH1D, {axes.axisProductionTime});
135+
histos.add("XiMinus/hV0Vt", "hV0Vt;Production time (ns)", kTH1D, {axes.axisProductionTime});
136+
histos.add("XiMinus/hPosVt", "hPosVt;Production time (ns)", kTH1D, {axes.axisProductionTime});
137+
histos.add("XiMinus/hNegVt", "hNegVt;Production time (ns)", kTH1D, {axes.axisProductionTime});
121138

122139
auto hCheckHasK0SDecayed = histos.add<TH1>("K0S/hHasDecayed", "hHasDecayed", kTH1D, {{2, -0.5, 1.5}});
123140
hCheckHasK0SDecayed->GetXaxis()->SetBinLabel(1, "No");
@@ -132,6 +149,17 @@ struct Alice3DecayerQa {
132149

133150
void process(const aod::McCollision& collision, const aod::McParticles& particles)
134151
{
152+
// Collision Qa
153+
histos.fill(HIST("McCollision/hBCId"), collision.bcId());
154+
histos.fill(HIST("McCollision/hGeneratorsID"), collision.generatorsID());
155+
histos.fill(HIST("McCollision/hPosX"), collision.posX());
156+
histos.fill(HIST("McCollision/hPosY"), collision.posY());
157+
histos.fill(HIST("McCollision/hPosZ"), collision.posZ());
158+
histos.fill(HIST("McCollision/hT"), collision.t());
159+
histos.fill(HIST("McCollision/hWeight"), collision.weight());
160+
histos.fill(HIST("McCollision/hImpactParameter"), collision.impactParameter());
161+
histos.fill(HIST("McCollision/hRventPlaneAngle"), collision.eventPlaneAngle());
162+
135163
// Group with collision
136164
auto trueElectronsGrouped = trueElectrons->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
137165
auto trueMuonsGrouped = trueMuons->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
@@ -142,6 +170,35 @@ struct Alice3DecayerQa {
142170
auto trueLambdasGrouped = trueLambdas->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
143171
auto trueXiMinusGrouped = trueXiMinus->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
144172

173+
// All Particles
174+
for (const auto& particle : particles) {
175+
histos.fill(HIST("McParticle/hCollisionId"), particle.mcCollisionId());
176+
histos.fill(HIST("McParticle/hPdgCode"), particle.pdgCode());
177+
histos.fill(HIST("McParticle/hStatusCode"), particle.statusCode());
178+
histos.fill(HIST("McParticle/hFlags"), particle.flags());
179+
histos.fill(HIST("McParticle/hWeight"), particle.weight());
180+
histos.fill(HIST("McParticle/hVx"), particle.vx());
181+
histos.fill(HIST("McParticle/hVy"), particle.vy());
182+
histos.fill(HIST("McParticle/hVz"), particle.vz());
183+
histos.fill(HIST("McParticle/hVt"), particle.vt());
184+
histos.fill(HIST("McParticle/hPhi"), particle.phi());
185+
histos.fill(HIST("McParticle/hEta"), particle.eta());
186+
histos.fill(HIST("McParticle/hRapidity"), particle.y());
187+
histos.fill(HIST("McParticle/hPx"), particle.px());
188+
histos.fill(HIST("McParticle/hPy"), particle.py());
189+
histos.fill(HIST("McParticle/hPz"), particle.pz());
190+
histos.fill(HIST("McParticle/hPt"), particle.pt());
191+
histos.fill(HIST("McParticle/hP"), particle.p());
192+
histos.fill(HIST("McParticle/hE"), particle.e());
193+
for (const auto& motherParticleId : particle.mothersIds()) {
194+
histos.fill(HIST("McParticle/hMothersIds"), motherParticleId);
195+
}
196+
for (const auto& dauParticleId : particle.daughtersIds()) {
197+
histos.fill(HIST("McParticle/hDaughtersIds"), dauParticleId);
198+
}
199+
}
200+
201+
// Particles processed in OTF
145202
for (const auto& particle : trueElectronsGrouped) {
146203
histos.fill(HIST("McParticle/hElPt"), particle.pt());
147204
}
@@ -157,6 +214,8 @@ struct Alice3DecayerQa {
157214
for (const auto& particle : trueProtonsGrouped) {
158215
histos.fill(HIST("McParticle/hPrPt"), particle.pt());
159216
}
217+
218+
// Check topology from decayer
160219
for (const auto& particle : trueK0ShortGrouped) {
161220
histos.fill(HIST("K0S/hGeneratedPt"), particle.pt());
162221
if (particle.has_daughters()) {
@@ -181,6 +240,8 @@ struct Alice3DecayerQa {
181240
histos.fill(HIST("K0S/hHasDecayed"), 0);
182241
}
183242
}
243+
244+
// Check topology from decayer
184245
for (const auto& particle : trueLambdasGrouped) {
185246
histos.fill(HIST("Lambda/hGeneratedPt"), particle.pt());
186247
if (particle.has_daughters()) {
@@ -205,8 +266,11 @@ struct Alice3DecayerQa {
205266
histos.fill(HIST("Lambda/hHasDecayed"), 0);
206267
}
207268
}
269+
270+
// Check topology from decayer
208271
for (const auto& particle : trueXiMinusGrouped) {
209272
histos.fill(HIST("XiMinus/hGeneratedPt"), particle.pt());
273+
histos.fill(HIST("XiMinus/hXiVt"), particle.vt());
210274
if (particle.has_daughters()) {
211275
histos.fill(HIST("XiMinus/hHasDecayed"), 1);
212276
auto daughters = particle.daughtersIds();
@@ -223,6 +287,8 @@ struct Alice3DecayerQa {
223287
auto& bachelor = dau0.pdgCode() == PDG_t::kLambda0 ? dau1 : dau0;
224288
histos.fill(HIST("XiMinus/hBachDauDecayRadius"), radius(bachelor), bachelor.pt());
225289
histos.fill(HIST("XiMinus/hV0DauDecayRadius"), radius(v0), v0.pt());
290+
histos.fill(HIST("XiMinus/hBachVt"), v0.vt());
291+
histos.fill(HIST("XiMinus/hV0Vt"), bachelor.vt());
226292

227293
// Lambda -> p pi-
228294
if (v0.has_daughters()) {
@@ -237,6 +303,8 @@ struct Alice3DecayerQa {
237303
auto& negative = v0dau0.pdgCode() == PDG_t::kProton ? v0dau1 : v0dau0;
238304
histos.fill(HIST("XiMinus/hPosDauDecayRadius"), radius(positive), positive.pt());
239305
histos.fill(HIST("XiMinus/hNegDauDecayRadius"), radius(negative), negative.pt());
306+
histos.fill(HIST("XiMinus/hPosVt"), positive.vt());
307+
histos.fill(HIST("XiMinus/hNegVt"), negative.vt());
240308
}
241309
}
242310
}
@@ -246,33 +314,6 @@ struct Alice3DecayerQa {
246314
histos.fill(HIST("XiMinus/hHasDecayed"), 0);
247315
}
248316
}
249-
250-
for (const auto& particle : particles) {
251-
histos.fill(HIST("McParticle/hCollisionId"), particle.mcCollisionId());
252-
histos.fill(HIST("McParticle/hPdgCode"), particle.pdgCode());
253-
histos.fill(HIST("McParticle/hStatusCode"), particle.statusCode());
254-
histos.fill(HIST("McParticle/hFlags"), particle.flags());
255-
histos.fill(HIST("McParticle/hWeight"), particle.weight());
256-
histos.fill(HIST("McParticle/hVx"), particle.vx());
257-
histos.fill(HIST("McParticle/hVy"), particle.vy());
258-
histos.fill(HIST("McParticle/hVz"), particle.vz());
259-
histos.fill(HIST("McParticle/hVt"), particle.vt());
260-
histos.fill(HIST("McParticle/hPhi"), particle.phi());
261-
histos.fill(HIST("McParticle/hEta"), particle.eta());
262-
histos.fill(HIST("McParticle/hRapidity"), particle.y());
263-
histos.fill(HIST("McParticle/hPx"), particle.px());
264-
histos.fill(HIST("McParticle/hPy"), particle.py());
265-
histos.fill(HIST("McParticle/hPz"), particle.pz());
266-
histos.fill(HIST("McParticle/hPt"), particle.pt());
267-
histos.fill(HIST("McParticle/hP"), particle.p());
268-
histos.fill(HIST("McParticle/hE"), particle.e());
269-
for (const auto& motherParticleId : particle.mothersIds()) {
270-
histos.fill(HIST("McParticle/hMothersIds"), motherParticleId);
271-
}
272-
for (const auto& dauParticleId : particle.daughtersIds()) {
273-
histos.fill(HIST("McParticle/hDaughtersIds"), dauParticleId);
274-
}
275-
}
276317
}
277318

278319
PROCESS_SWITCH(Alice3DecayerQa, process, "fill MC-with-dau histograms", true);

0 commit comments

Comments
 (0)