diff --git a/ALICE3/Tasks/alice3DecayerQa.cxx b/ALICE3/Tasks/alice3DecayerQa.cxx index 5b6ae287c44..ceacc433c4b 100644 --- a/ALICE3/Tasks/alice3DecayerQa.cxx +++ b/ALICE3/Tasks/alice3DecayerQa.cxx @@ -49,11 +49,12 @@ struct Alice3DecayerQa { ConfigurableAxis axisDaughtersIds{"axisDaughtersIds", {1000, 0, 999}, "DaughtersIds axis for QA histograms"}; ConfigurableAxis axisWeight{"axisWeight", {2, 0, 1}, "Weight axis for QA histograms"}; ConfigurableAxis axisPos{"axisPos", {1000, 0, 999}, "Position axis for QA histograms"}; + ConfigurableAxis axisEventTime{"axisEventTime", {1000, -1e-3, 1e-3}, "Event time axis for QA histograms"}; + ConfigurableAxis axisProductionTime{"axisProductionTime", {1000, 0, 10}, "Particle production time axis for QA histograms"}; ConfigurableAxis axisPhi{"axisPhi", {720, -360, 360}, "Phi axis for QA histograms"}; ConfigurableAxis axisEta{"axisEta", {80, -4, 4}, "Eta axis for QA histograms"}; ConfigurableAxis axisRapidity{"axisRapidity", {80, -4, 4}, "Rapidity axis for QA histograms"}; - ConfigurableAxis axisIsAlive{"axisIsAlive", {2, 0, 1}, "IsAlive axis for QA histograms"}; - ConfigurableAxis axisIsPrimary{"axisIsPrimary", {2, 0, 1}, "IsPrimary axis for QA histograms"}; + ConfigurableAxis axisImpactParameter{"axisImpactParameter", {200, 0, 20}, "Impact parameter axis for QA histograms"}; 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"}; 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"}; 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 { void init(o2::framework::InitContext&) { - // QA with Table entries + // QA with collision table entries + histos.add("McCollision/hBCId", "hBCId", kTH1D, {axes.axisCollisionId}); + histos.add("McCollision/hGeneratorsID", "hGeneratorsID", kTH1D, {axes.axisCollisionId}); + histos.add("McCollision/hPosX", "hPosX", kTH1D, {axes.axisPos}); + histos.add("McCollision/hPosY", "hPosY", kTH1D, {axes.axisPos}); + histos.add("McCollision/hPosZ", "hPosZ", kTH1D, {axes.axisPos}); + histos.add("McCollision/hT", "hT", kTH1D, {axes.axisEventTime}); + histos.add("McCollision/hWeight", "hWeight", kTH1D, {axes.axisWeight}); + histos.add("McCollision/hImpactParameter", "hImpactParameter", kTH1D, {axes.axisImpactParameter}); + histos.add("McCollision/hRventPlaneAngle", "hRventPlaneAngle", kTH1D, {axes.axisPhi}); + + // QA with particle table entries histos.add("McParticle/hElPt", "hElPt", kTH1D, {axes.axisPt}); histos.add("McParticle/hMuPt", "hMuPt", kTH1D, {axes.axisPt}); histos.add("McParticle/hPiPt", "hPiPt", kTH1D, {axes.axisPt}); @@ -95,7 +107,7 @@ struct Alice3DecayerQa { histos.add("McParticle/hVx", "hVx", kTH1D, {axes.axisPos}); histos.add("McParticle/hVy", "hVy", kTH1D, {axes.axisPos}); histos.add("McParticle/hVz", "hVz", kTH1D, {axes.axisPos}); - histos.add("McParticle/hVt", "hVt", kTH1D, {axes.axisPos}); + histos.add("McParticle/hVt", "hVt", kTH1D, {axes.axisProductionTime}); histos.add("McParticle/hPhi", "hPhi", kTH1D, {axes.axisPhi}); histos.add("McParticle/hEta", "hEta", kTH1D, {axes.axisEta}); histos.add("McParticle/hRapidity", "hRapidity", kTH1D, {axes.axisRapidity}); @@ -118,6 +130,11 @@ struct Alice3DecayerQa { histos.add("XiMinus/hV0DauDecayRadius", "hV0DauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})", kTH2D, {axes.axisRadiusLog, axes.axisPtLog}); histos.add("XiMinus/hPosDauDecayRadius", "hPosDauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})", kTH2D, {axes.axisRadiusLog, axes.axisPtLog}); histos.add("XiMinus/hNegDauDecayRadius", "hNegDauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})", kTH2D, {axes.axisRadiusLog, axes.axisPtLog}); + histos.add("XiMinus/hXiVt", "hXiVt;Production time (ns)", kTH1D, {axes.axisProductionTime}); + histos.add("XiMinus/hBachVt", "hBachVt;Production time (ns)", kTH1D, {axes.axisProductionTime}); + histos.add("XiMinus/hV0Vt", "hV0Vt;Production time (ns)", kTH1D, {axes.axisProductionTime}); + histos.add("XiMinus/hPosVt", "hPosVt;Production time (ns)", kTH1D, {axes.axisProductionTime}); + histos.add("XiMinus/hNegVt", "hNegVt;Production time (ns)", kTH1D, {axes.axisProductionTime}); auto hCheckHasK0SDecayed = histos.add("K0S/hHasDecayed", "hHasDecayed", kTH1D, {{2, -0.5, 1.5}}); hCheckHasK0SDecayed->GetXaxis()->SetBinLabel(1, "No"); @@ -132,6 +149,17 @@ struct Alice3DecayerQa { void process(const aod::McCollision& collision, const aod::McParticles& particles) { + // Collision Qa + histos.fill(HIST("McCollision/hBCId"), collision.bcId()); + histos.fill(HIST("McCollision/hGeneratorsID"), collision.generatorsID()); + histos.fill(HIST("McCollision/hPosX"), collision.posX()); + histos.fill(HIST("McCollision/hPosY"), collision.posY()); + histos.fill(HIST("McCollision/hPosZ"), collision.posZ()); + histos.fill(HIST("McCollision/hT"), collision.t()); + histos.fill(HIST("McCollision/hWeight"), collision.weight()); + histos.fill(HIST("McCollision/hImpactParameter"), collision.impactParameter()); + histos.fill(HIST("McCollision/hRventPlaneAngle"), collision.eventPlaneAngle()); + // Group with collision auto trueElectronsGrouped = trueElectrons->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache); auto trueMuonsGrouped = trueMuons->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache); @@ -142,6 +170,35 @@ struct Alice3DecayerQa { auto trueLambdasGrouped = trueLambdas->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache); auto trueXiMinusGrouped = trueXiMinus->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache); + // All Particles + for (const auto& particle : particles) { + histos.fill(HIST("McParticle/hCollisionId"), particle.mcCollisionId()); + histos.fill(HIST("McParticle/hPdgCode"), particle.pdgCode()); + histos.fill(HIST("McParticle/hStatusCode"), particle.statusCode()); + histos.fill(HIST("McParticle/hFlags"), particle.flags()); + histos.fill(HIST("McParticle/hWeight"), particle.weight()); + histos.fill(HIST("McParticle/hVx"), particle.vx()); + histos.fill(HIST("McParticle/hVy"), particle.vy()); + histos.fill(HIST("McParticle/hVz"), particle.vz()); + histos.fill(HIST("McParticle/hVt"), particle.vt()); + histos.fill(HIST("McParticle/hPhi"), particle.phi()); + histos.fill(HIST("McParticle/hEta"), particle.eta()); + histos.fill(HIST("McParticle/hRapidity"), particle.y()); + histos.fill(HIST("McParticle/hPx"), particle.px()); + histos.fill(HIST("McParticle/hPy"), particle.py()); + histos.fill(HIST("McParticle/hPz"), particle.pz()); + histos.fill(HIST("McParticle/hPt"), particle.pt()); + histos.fill(HIST("McParticle/hP"), particle.p()); + histos.fill(HIST("McParticle/hE"), particle.e()); + for (const auto& motherParticleId : particle.mothersIds()) { + histos.fill(HIST("McParticle/hMothersIds"), motherParticleId); + } + for (const auto& dauParticleId : particle.daughtersIds()) { + histos.fill(HIST("McParticle/hDaughtersIds"), dauParticleId); + } + } + + // Particles processed in OTF for (const auto& particle : trueElectronsGrouped) { histos.fill(HIST("McParticle/hElPt"), particle.pt()); } @@ -157,6 +214,8 @@ struct Alice3DecayerQa { for (const auto& particle : trueProtonsGrouped) { histos.fill(HIST("McParticle/hPrPt"), particle.pt()); } + + // Check topology from decayer for (const auto& particle : trueK0ShortGrouped) { histos.fill(HIST("K0S/hGeneratedPt"), particle.pt()); if (particle.has_daughters()) { @@ -181,6 +240,8 @@ struct Alice3DecayerQa { histos.fill(HIST("K0S/hHasDecayed"), 0); } } + + // Check topology from decayer for (const auto& particle : trueLambdasGrouped) { histos.fill(HIST("Lambda/hGeneratedPt"), particle.pt()); if (particle.has_daughters()) { @@ -205,8 +266,11 @@ struct Alice3DecayerQa { histos.fill(HIST("Lambda/hHasDecayed"), 0); } } + + // Check topology from decayer for (const auto& particle : trueXiMinusGrouped) { histos.fill(HIST("XiMinus/hGeneratedPt"), particle.pt()); + histos.fill(HIST("XiMinus/hXiVt"), particle.vt()); if (particle.has_daughters()) { histos.fill(HIST("XiMinus/hHasDecayed"), 1); auto daughters = particle.daughtersIds(); @@ -223,6 +287,8 @@ struct Alice3DecayerQa { auto& bachelor = dau0.pdgCode() == PDG_t::kLambda0 ? dau1 : dau0; histos.fill(HIST("XiMinus/hBachDauDecayRadius"), radius(bachelor), bachelor.pt()); histos.fill(HIST("XiMinus/hV0DauDecayRadius"), radius(v0), v0.pt()); + histos.fill(HIST("XiMinus/hBachVt"), v0.vt()); + histos.fill(HIST("XiMinus/hV0Vt"), bachelor.vt()); // Lambda -> p pi- if (v0.has_daughters()) { @@ -237,6 +303,8 @@ struct Alice3DecayerQa { auto& negative = v0dau0.pdgCode() == PDG_t::kProton ? v0dau1 : v0dau0; histos.fill(HIST("XiMinus/hPosDauDecayRadius"), radius(positive), positive.pt()); histos.fill(HIST("XiMinus/hNegDauDecayRadius"), radius(negative), negative.pt()); + histos.fill(HIST("XiMinus/hPosVt"), positive.vt()); + histos.fill(HIST("XiMinus/hNegVt"), negative.vt()); } } } @@ -246,33 +314,6 @@ struct Alice3DecayerQa { histos.fill(HIST("XiMinus/hHasDecayed"), 0); } } - - for (const auto& particle : particles) { - histos.fill(HIST("McParticle/hCollisionId"), particle.mcCollisionId()); - histos.fill(HIST("McParticle/hPdgCode"), particle.pdgCode()); - histos.fill(HIST("McParticle/hStatusCode"), particle.statusCode()); - histos.fill(HIST("McParticle/hFlags"), particle.flags()); - histos.fill(HIST("McParticle/hWeight"), particle.weight()); - histos.fill(HIST("McParticle/hVx"), particle.vx()); - histos.fill(HIST("McParticle/hVy"), particle.vy()); - histos.fill(HIST("McParticle/hVz"), particle.vz()); - histos.fill(HIST("McParticle/hVt"), particle.vt()); - histos.fill(HIST("McParticle/hPhi"), particle.phi()); - histos.fill(HIST("McParticle/hEta"), particle.eta()); - histos.fill(HIST("McParticle/hRapidity"), particle.y()); - histos.fill(HIST("McParticle/hPx"), particle.px()); - histos.fill(HIST("McParticle/hPy"), particle.py()); - histos.fill(HIST("McParticle/hPz"), particle.pz()); - histos.fill(HIST("McParticle/hPt"), particle.pt()); - histos.fill(HIST("McParticle/hP"), particle.p()); - histos.fill(HIST("McParticle/hE"), particle.e()); - for (const auto& motherParticleId : particle.mothersIds()) { - histos.fill(HIST("McParticle/hMothersIds"), motherParticleId); - } - for (const auto& dauParticleId : particle.daughtersIds()) { - histos.fill(HIST("McParticle/hDaughtersIds"), dauParticleId); - } - } } PROCESS_SWITCH(Alice3DecayerQa, process, "fill MC-with-dau histograms", true);