@@ -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