Skip to content

Commit 894f153

Browse files
authored
Fix MC association + add debug histos (#999)
1 parent 13fd6b5 commit 894f153

1 file changed

Lines changed: 68 additions & 4 deletions

File tree

PWGLF/Tasks/v0cascadesqa.cxx

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@ struct v0cascadesQA {
9797
HistogramRegistry histos_Casc{
9898
"histos-Casc",
9999
{
100+
{"PassSelections", "PassSelections", {HistType::kTH1F, {{30, 0.f, 30.f}}}},
101+
{"PDGCodeNeg", "PDGCodeNeg", {HistType::kTH1F, {{3500, 0.f, 3500.f}}}},
102+
{"PDGCodePos", "PDGCodePos", {HistType::kTH1F, {{3500, 0.f, 3500.f}}}},
103+
{"PDGCodeBach", "PDGCodeBach", {HistType::kTH1F, {{3500, 0.f, 3500.f}}}},
104+
{"PDGCodeMotherOfBach", "PDGCodeMotherOfBach", {HistType::kTH1F, {{3500, 0.f, 3500.f}}}},
105+
{"PDGCodeMotherOfPos", "PDGCodeMotherOfPos", {HistType::kTH1F, {{3500, 0.f, 3500.f}}}},
106+
{"PDGCodeMotherOfNeg", "PDGCodeMotherOfNeg", {HistType::kTH1F, {{3500, 0.f, 3500.f}}}},
107+
{"PDGCodeMotherOfV0", "PDGCodeMotherOfV0", {HistType::kTH1F, {{3500, 0.f, 3500.f}}}},
100108
{"XiProgSelections", "XiProgSelections", {HistType::kTH2F, {{30, 0.5f, 30.5f}, {2, -2, 2}}}},
101109
{"OmegaProgSelections", "OmegaProgSelections", {HistType::kTH2F, {{30, 0.5f, 30.5f}, {2, -2, 2}}}},
102110
{"CascCosPA", "CascCosPA", {HistType::kTH2F, {{200, 0.9f, 1.0f}, {2, -2, 2}}}},
@@ -273,7 +281,9 @@ struct v0cascadesQA {
273281
for (auto& particleDauOfNeg0 : particleMotherOfNeg.daughters_as<aod::McParticles>()) {
274282
for (auto& particleDauOfNeg1 : particleMotherOfNeg.daughters_as<aod::McParticles>()) {
275283

276-
bool MomIsPrimary = particleMotherOfNeg.isPhysicalPrimary();
284+
bool MomIsPrimary = false;
285+
if (particleMotherOfNeg.isPhysicalPrimary())
286+
MomIsPrimary = true;
277287

278288
bool isK0sV0 = (MomIsPrimary && particleMotherOfNeg == particleMotherOfPos && particleMotherOfNeg.pdgCode() == 310) &&
279289
((particleDauOfNeg0.pdgCode() == 211 && particleDauOfNeg1.pdgCode() == -211) ||
@@ -418,6 +428,9 @@ struct v0cascadesQA {
418428
void processMcCascade(aod::Collision const& collision, aod::CascDataExt const& Cascades, aod::V0sLinked const&, aod::V0Datas const& fullV0s, MyTracksMC const& tracks, aod::McParticles const& mcParticles)
419429
{
420430
for (auto& casc : Cascades) {
431+
432+
histos_Casc.fill(HIST("PassSelections"), 0.5);
433+
421434
if (casc.v0radius() > Casc_v0radius &&
422435
casc.cascradius() > Casc_cascradius &&
423436
casc.v0cosPA(collision.posX(), collision.posY(), collision.posZ()) > Casc_v0cospa &&
@@ -426,37 +439,84 @@ struct v0cascadesQA {
426439
TMath::Abs(casc.dcapostopv()) > Casc_dcapostopv && TMath::Abs(casc.dcanegtopv()) > Casc_dcanegtopv && TMath::Abs(casc.dcabachtopv()) > Casc_dcabachtopv &&
427440
casc.dcaV0daughters() < Casc_dcav0dau && casc.dcacascdaughters() < Casc_dcacascdau) {
428441

442+
histos_Casc.fill(HIST("PassSelections"), 1.5);
443+
429444
auto v0index = casc.v0_as<o2::aod::V0sLinked>();
430445
if (!(v0index.has_v0Data())) {
431446
continue; // skip those cascades for which V0 doesn't exist
432447
}
433448
auto v0 = v0index.v0Data(); // de-reference index to correct v0data in case it exists
434449

450+
histos_Casc.fill(HIST("PassSelections"), 2.5);
451+
435452
auto reconegtrack = v0.negTrack_as<MyTracksMC>();
436453
auto recopostrack = v0.posTrack_as<MyTracksMC>();
437454
if (!reconegtrack.has_mcParticle() || !recopostrack.has_mcParticle()) {
438455
continue;
439456
}
457+
440458
auto mcnegtrack = reconegtrack.mcParticle_as<aod::McParticles>();
441459
auto mcpostrack = recopostrack.mcParticle_as<aod::McParticles>();
442460
if (!mcnegtrack.has_mothers() || !mcpostrack.has_mothers()) {
443461
continue;
444462
}
445463

464+
histos_Casc.fill(HIST("PassSelections"), 3.5);
465+
446466
auto recobachelor = casc.bachelor_as<MyTracksMC>();
447467
if (!recobachelor.has_mcParticle()) {
448468
continue;
449469
}
470+
450471
auto bachelor = recobachelor.mcParticle_as<aod::McParticles>();
451472

473+
histos_Casc.fill(HIST("PassSelections"), 4.5);
474+
452475
for (auto& particleMotherOfBach : bachelor.mothers_as<aod::McParticles>()) {
453476
for (auto& particleMotherOfNeg : mcnegtrack.mothers_as<aod::McParticles>()) {
454477
for (auto& particleMotherOfPos : mcpostrack.mothers_as<aod::McParticles>()) {
455478
for (auto& particleMotherOfV0 : particleMotherOfNeg.mothers_as<aod::McParticles>()) {
456479

457-
bool MomOfBachIsPrimary = particleMotherOfBach.isPhysicalPrimary();
458-
bool MomOfNegIsPrimary = particleMotherOfNeg.isPhysicalPrimary();
459-
bool MomOfPosIsPrimary = particleMotherOfPos.isPhysicalPrimary();
480+
histos_Casc.fill(HIST("PDGCodeNeg"), TMath::Abs(mcnegtrack.pdgCode()));
481+
histos_Casc.fill(HIST("PDGCodePos"), TMath::Abs(mcpostrack.pdgCode()));
482+
histos_Casc.fill(HIST("PDGCodeBach"), TMath::Abs(bachelor.pdgCode()));
483+
histos_Casc.fill(HIST("PDGCodeMotherOfNeg"), TMath::Abs(particleMotherOfNeg.pdgCode()));
484+
histos_Casc.fill(HIST("PDGCodeMotherOfPos"), TMath::Abs(particleMotherOfPos.pdgCode()));
485+
histos_Casc.fill(HIST("PDGCodeMotherOfV0"), TMath::Abs(particleMotherOfV0.pdgCode()));
486+
histos_Casc.fill(HIST("PDGCodeMotherOfBach"), TMath::Abs(particleMotherOfBach.pdgCode()));
487+
488+
bool MomOfBachIsPrimary = false;
489+
if (particleMotherOfBach.isPhysicalPrimary())
490+
MomOfBachIsPrimary = true;
491+
bool MomOfNegIsPrimary = false;
492+
if (particleMotherOfNeg.isPhysicalPrimary())
493+
MomOfNegIsPrimary = true;
494+
bool MomOfPosIsPrimary = false;
495+
if (particleMotherOfPos.isPhysicalPrimary())
496+
MomOfPosIsPrimary = true;
497+
498+
// Cross check on efficiencies - XiMinus
499+
if (MomOfBachIsPrimary && !(MomOfNegIsPrimary) && !(MomOfPosIsPrimary)) {
500+
histos_Casc.fill(HIST("PassSelections"), 5.5);
501+
if ((particleMotherOfNeg == particleMotherOfPos) && (particleMotherOfV0 == particleMotherOfBach)) {
502+
histos_Casc.fill(HIST("PassSelections"), 6.5);
503+
if (particleMotherOfBach.pdgCode() == 3312) {
504+
histos_Casc.fill(HIST("PassSelections"), 7.5);
505+
if (bachelor.pdgCode() == -211) {
506+
histos_Casc.fill(HIST("PassSelections"), 8.5);
507+
if (particleMotherOfNeg.pdgCode() == 3122) {
508+
histos_Casc.fill(HIST("PassSelections"), 9.5);
509+
if (mcnegtrack.pdgCode() == -211) {
510+
histos_Casc.fill(HIST("PassSelections"), 10.5);
511+
if (mcpostrack.pdgCode() == 2212) {
512+
histos_Casc.fill(HIST("PassSelections"), 11.5);
513+
}
514+
}
515+
}
516+
}
517+
}
518+
}
519+
}
460520

461521
bool isXiMinusCascade = (MomOfBachIsPrimary && !(MomOfNegIsPrimary) && !(MomOfPosIsPrimary) &&
462522
(particleMotherOfNeg == particleMotherOfPos) && (particleMotherOfV0 == particleMotherOfBach) &&
@@ -483,24 +543,28 @@ struct v0cascadesQA {
483543
(mcnegtrack.pdgCode() == -2212) && (mcpostrack.pdgCode() == 211));
484544

485545
if (isXiMinusCascade) {
546+
histos_Casc.fill(HIST("PassSelections"), 12.5);
486547
if (TMath::Abs(casc.yXi()) < 0.5) {
487548
histos_Casc.fill(HIST("InvMassXiMinusTrue"), casc.pt(), casc.mXi());
488549
}
489550
}
490551

491552
if (isOmegaMinusCascade) {
553+
histos_Casc.fill(HIST("PassSelections"), 13.5);
492554
if (TMath::Abs(casc.yOmega()) < 0.5) {
493555
histos_Casc.fill(HIST("InvMassOmegaMinusTrue"), casc.pt(), casc.mOmega());
494556
}
495557
}
496558

497559
if (isXiPlusCascade) {
560+
histos_Casc.fill(HIST("PassSelections"), 14.5);
498561
if (TMath::Abs(casc.yXi()) < 0.5) {
499562
histos_Casc.fill(HIST("InvMassXiPlusTrue"), casc.pt(), casc.mXi());
500563
}
501564
}
502565

503566
if (isOmegaPlusCascade) {
567+
histos_Casc.fill(HIST("PassSelections"), 15.5);
504568
if (TMath::Abs(casc.yOmega()) < 0.5) {
505569
histos_Casc.fill(HIST("InvMassOmegaPlusTrue"), casc.pt(), casc.mOmega());
506570
}

0 commit comments

Comments
 (0)