@@ -522,21 +522,28 @@ struct alice3multicharm {
522522 if (std::fabs (xi.dcaXY ()) < xiFromXiC_dcaXYconstant || std::fabs (xi.dcaZ ()) < xiFromXiC_dcaZconstant)
523523 continue ; // likely a primary xi
524524
525+ histos.fill (HIST (" hDCAxyXi" ), std::fabs (xi.dcaXY () * 1e+4 ));
526+ histos.fill (HIST (" hDCAzXi" ), std::fabs (xi.dcaZ () * 1e+4 ));
527+
525528 if (xiCand.cascRadius () < minXiRadius)
526529 continue ;
527530
531+ histos.fill (HIST (" hMinXiDecayRadius" ), xiCand.cascRadius ());
528532 for (auto const & pi1c : tracksPiFromXiCgrouped) {
529533 if (mcSameMotherCheck && !checkSameMother (xi, pi1c))
530534 continue ;
531535 if (xiCand.posTrackId () == pi1c.globalIndex () || xiCand.negTrackId () == pi1c.globalIndex () || xiCand.bachTrackId () == pi1c.globalIndex ())
532536 continue ; // avoid using any track that was already used
537+
533538 if (pi1c.pt () < minPiCPt)
534539 continue ; // too low momentum
535540
541+ histos.fill (HIST (" hPi1cPt" ), pi1c.pt ());
536542 double pi1cTOFDiffInner = std::fabs (pi1c.innerTOFTrackTimeReco () - pi1c.innerTOFExpectedTimePi ());
537543 if (pi1cTOFDiffInner > piFromXiC_tofDiffInner)
538544 continue ; // did not arrive at expected time
539545
546+ histos.fill (HIST (" hInnerTOFTrackTimeRecoPi1c" ), pi1cTOFDiffInner);
540547 // second pion from XiC decay for starts here
541548 for (auto const & pi2c : tracksPiFromXiCgrouped) {
542549 if (mcSameMotherCheck && !checkSameMother (xi, pi2c))
@@ -551,10 +558,12 @@ struct alice3multicharm {
551558 if (pi2c.pt () < minPiCPt)
552559 continue ; // too low momentum
553560
561+ histos.fill (HIST (" hPi2cPt" ), pi2c.pt ());
554562 double pi2cTOFDiffInner = std::fabs (pi2c.innerTOFTrackTimeReco () - pi2c.innerTOFExpectedTimePi ());
555563 if (pi2cTOFDiffInner > piFromXiC_tofDiffInner)
556564 continue ; // did not arrive at expected time
557565
566+ histos.fill (HIST (" hInnerTOFTrackTimeRecoPi2c" ), pi2cTOFDiffInner);
558567 // if I am here, it means this is a triplet to be considered for XiC vertexing.
559568 // will now attempt to build a three-body decay candidate with these three track rows.
560569
@@ -563,6 +572,8 @@ struct alice3multicharm {
563572 if (!buildDecayCandidateThreeBody (xi, pi1c, pi2c, o2::constants::physics::MassXiMinus, o2::constants::physics::MassPionCharged, o2::constants::physics::MassPionCharged))
564573 continue ; // failed at building candidate
565574
575+ histos.fill (HIST (" hDCAXiCDaughters" ), thisXiCcandidate.dca * 1e+4 );
576+
566577 if (std::fabs (thisXiCcandidate.mass - o2::constants::physics::MassXiCPlus) > massWindowXiC)
567578 continue ; // out of mass region
568579
@@ -578,10 +589,13 @@ struct alice3multicharm {
578589 if (xicDecayRadius2D < minXiCRadius)
579590 continue ; // do not take if radius too small, likely a primary combination
580591
581- histos.fill (HIST (" hXiRadiusVsXicRadius" ), xiCand.cascRadius () * 1e+4 , xicDecayRadius2D * 1e+4 );
592+ histos.fill (HIST (" hMinXiCDecayRadius" ), xicDecayRadius2D * 1e+4 );
593+
582594 if (xicDecayRadius2D > xiCand.cascRadius ())
583595 continue ;
584596
597+ histos.fill (HIST (" hXiRadiusVsXicRadius" ), xiCand.cascRadius () * 1e+4 , xicDecayRadius2D * 1e+4 );
598+
585599 o2::dataformats::DCA dcaInfo;
586600 float xicdcaXY = 1e+10 , xicdcaZ = 1e+10 ;
587601 o2::track::TrackParCov xicTrackCopy (xicTrack); // paranoia
@@ -596,6 +610,8 @@ struct alice3multicharm {
596610 if (std::fabs (xicdcaXY) < xiCFromXiCC_dcaXY || std::fabs (xicdcaZ) < xiCFromXiCC_dcaZ)
597611 continue ; // likely a primary xic
598612
613+ histos.fill (HIST (" hDCAxyXiC" ), std::fabs (xicdcaXY * 1e+4 ));
614+ histos.fill (HIST (" hDCAzXiC" ), std::fabs (xicdcaZ * 1e+4 ));
599615 histos.fill (HIST (" hMassXiC" ), thisXiCcandidate.mass );
600616
601617 // attempt XiCC finding
@@ -610,16 +626,22 @@ struct alice3multicharm {
610626 if (picc.pt () < minPiCCPt)
611627 continue ; // too low momentum
612628
629+ histos.fill (HIST (" hPiccPt" ), picc.pt ());
630+
613631 double piccTOFDiffInner = std::fabs (picc.innerTOFTrackTimeReco () - picc.innerTOFExpectedTimePi ());
614632 if (piccTOFDiffInner > piFromXiCC_tofDiffInner)
615633 continue ; // did not arrive at expected time
616634
635+ histos.fill (HIST (" hInnerTOFTrackTimeRecoPicc" ), piccTOFDiffInner);
636+
617637 o2::track::TrackParCov piccTrack = getTrackParCov (picc);
618638 nCombinationsCC++;
619639 histos.fill (HIST (" hCharmBuilding" ), 2 .0f );
620640 if (!buildDecayCandidateTwoBody (xicTrack, piccTrack, o2::constants::physics::MassXiCPlus, o2::constants::physics::MassPionCharged))
621641 continue ; // failed at building candidate
622642
643+ histos.fill (HIST (" hDCAXiCCDaughters" ), thisXiCCcandidate.dca * 1e+4 );
644+
623645 const std::array<float , 3 > momentumCC = {
624646 thisXiCCcandidate.prong0mom [0 ] + thisXiCCcandidate.prong1mom [0 ],
625647 thisXiCCcandidate.prong0mom [1 ] + thisXiCCcandidate.prong1mom [1 ],
@@ -630,15 +652,20 @@ struct alice3multicharm {
630652 if (xiccDecayRadius2D < minXiCCRadius)
631653 continue ; // do not take if radius too small, likely a primary combination
632654
655+ histos.fill (HIST (" hMinXiCCDecayRadius" ), xiccDecayRadius2D * 1e+4 );
656+
633657 double totalMomentumC = std::hypot (momentumC[0 ], momentumC[1 ], momentumC[2 ]);
634658 double decayLengthXiC = std::hypot (
635659 thisXiCcandidate.xyz [0 ] - thisXiCCcandidate.xyz [0 ],
636660 thisXiCcandidate.xyz [1 ] - thisXiCCcandidate.xyz [1 ],
637661 thisXiCcandidate.xyz [2 ] - thisXiCCcandidate.xyz [2 ]);
638662 double xicProperLength = decayLengthXiC * thisXiCcandidate.mass / totalMomentumC;
663+
639664 if (xicProperLength < xicMinProperLength || xicProperLength > xicMaxProperLength)
640665 continue ; // likely background
641666
667+ histos.fill (HIST (" hProperLengthXiC" ), xicProperLength * 1e+4 );
668+
642669 double xicDistanceFromPV = std::hypot (
643670 thisXiCcandidate.xyz [0 ] - collision.posX (),
644671 thisXiCcandidate.xyz [1 ] - collision.posY (),
@@ -647,6 +674,8 @@ struct alice3multicharm {
647674 if (xicDecayDistanceFromPV < xicMinDecayDistanceFromPV)
648675 continue ; // too close to PV
649676
677+ histos.fill (HIST (" hMinxicDecayDistanceFromPV" ), xicDecayDistanceFromPV * 1e+4 );
678+
650679 double totalMomentumCC = std::hypot (momentumCC[0 ], momentumCC[1 ], momentumCC[2 ]);
651680 double decayLengthXiCC = std::hypot (
652681 thisXiCCcandidate.xyz [0 ] - collision.posX (),
@@ -656,10 +685,12 @@ struct alice3multicharm {
656685 if (xiccProperLength < xiccMinProperLength || xiccProperLength > xicMaxProperLength)
657686 continue ; // likely background
658687
659- histos.fill (HIST (" hXicRadiusVsXiccRadius " ), xicDecayRadius2D * 1e+4 , xiccDecayRadius2D * 1e+4 );
688+ histos.fill (HIST (" hProperLengthXiCC " ), xiccProperLength * 1e+4 );
660689 if (xiccDecayRadius2D > xicDecayRadius2D)
661690 continue ; // XiCC should decay before XiC
662691
692+ histos.fill (HIST (" hXicRadiusVsXiccRadius" ), xicDecayRadius2D * 1e+4 , xiccDecayRadius2D * 1e+4 );
693+
663694 float xiccdcaXY = 1e+10 , xiccdcaZ = 1e+10 ;
664695 if (xiccTrack.propagateToDCA (primaryVertex, magneticField, &dcaInfo)) {
665696 xiccdcaXY = dcaInfo.getY ();
@@ -669,29 +700,12 @@ struct alice3multicharm {
669700 if (std::fabs (xiccdcaXY) > xiCC_dcaXY || std::fabs (xiccdcaZ) > xiCC_dcaZ)
670701 continue ; // not pointing to PV
671702
703+ histos.fill (HIST (" hDCAxyXiCC" ), std::fabs (xiccdcaXY * 1e+4 ));
704+ histos.fill (HIST (" hDCAzXiCC" ), std::fabs (xiccdcaZ * 1e+4 ));
705+
672706 if (std::fabs (thisXiCcandidate.eta ) > xiccMaxEta)
673707 continue ; // not in central barrel
674708
675- histos.fill (HIST (" hMinxicDecayDistanceFromPV" ), xicDecayDistanceFromPV * 1e+4 );
676- histos.fill (HIST (" hInnerTOFTrackTimeRecoPi1c" ), pi1cTOFDiffInner);
677- histos.fill (HIST (" hInnerTOFTrackTimeRecoPi2c" ), pi2cTOFDiffInner);
678- histos.fill (HIST (" hInnerTOFTrackTimeRecoPicc" ), piccTOFDiffInner);
679- histos.fill (HIST (" hDCAXiCDaughters" ), thisXiCcandidate.dca * 1e+4 );
680- histos.fill (HIST (" hDCAXiCCDaughters" ), thisXiCCcandidate.dca * 1e+4 );
681- histos.fill (HIST (" hProperLengthXiCC" ), xiccProperLength * 1e+4 );
682- histos.fill (HIST (" hProperLengthXiC" ), xicProperLength * 1e+4 );
683- histos.fill (HIST (" hMinXiCCDecayRadius" ), xiccDecayRadius2D * 1e+4 );
684- histos.fill (HIST (" hMinXiCDecayRadius" ), xicDecayRadius2D * 1e+4 );
685- histos.fill (HIST (" hMinXiDecayRadius" ), xiCand.cascRadius ());
686- histos.fill (HIST (" hPi1cPt" ), pi1c.pt ());
687- histos.fill (HIST (" hPi2cPt" ), pi2c.pt ());
688- histos.fill (HIST (" hPiccPt" ), picc.pt ());
689- histos.fill (HIST (" hDCAxyXi" ), std::fabs (xi.dcaXY () * 1e+4 ));
690- histos.fill (HIST (" hDCAzXi" ), std::fabs (xi.dcaZ () * 1e+4 ));
691- histos.fill (HIST (" hDCAxyXiC" ), std::fabs (xicdcaXY * 1e+4 ));
692- histos.fill (HIST (" hDCAzXiC" ), std::fabs (xicdcaZ * 1e+4 ));
693- histos.fill (HIST (" hDCAxyXiCC" ), std::fabs (xiccdcaXY * 1e+4 ));
694- histos.fill (HIST (" hDCAzXiCC" ), std::fabs (xiccdcaZ * 1e+4 ));
695709 histos.fill (HIST (" hCharmBuilding" ), 3 .0f );
696710 histos.fill (HIST (" hMassXiCC" ), thisXiCCcandidate.mass );
697711 histos.fill (HIST (" hPtXiCC" ), thisXiCCcandidate.pt );
0 commit comments