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
103 changes: 72 additions & 31 deletions ALICE3/Tasks/alice3DecayerQa.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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"};
Expand All @@ -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});
Expand All @@ -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});
Expand All @@ -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<TH1>("K0S/hHasDecayed", "hHasDecayed", kTH1D, {{2, -0.5, 1.5}});
hCheckHasK0SDecayed->GetXaxis()->SetBinLabel(1, "No");
Expand All @@ -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);
Expand All @@ -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());
}
Expand All @@ -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()) {
Expand All @@ -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()) {
Expand All @@ -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();
Expand All @@ -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()) {
Expand All @@ -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());
}
}
}
Expand All @@ -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);
Expand Down
Loading