@@ -149,14 +149,13 @@ struct HfFilter { // Main struct for HF triggers
149149
150150 // parameters for Sigma_C proton trigger
151151 Configurable<LabeledArray<float >> cutsSigmaCPr{
152- " cutsSigmaCPr" ,
153- {cutsSigmaCPrDefault[0 ],
154- static_cast <uint32_t >(labelsRowsSigmaCPr.size ()),
155- static_cast <uint32_t >(labelsColumnsSigmaCPr.size ()),
156- labelsRowsSigmaCPr,
157- labelsColumnsSigmaCPr},
158- " Cuts for SigmaCPr trigger (proton pT, PID, TOF)"
159- };
152+ " cutsSigmaCPr" ,
153+ {cutsSigmaCPrDefault[0 ],
154+ static_cast <uint32_t >(labelsRowsSigmaCPr.size ()),
155+ static_cast <uint32_t >(labelsColumnsSigmaCPr.size ()),
156+ labelsRowsSigmaCPr,
157+ labelsColumnsSigmaCPr},
158+ " Cuts for SigmaCPr trigger (proton pT, PID, TOF)" };
160159 // parameters for charm baryons to Xi bachelor
161160 Configurable<LabeledArray<float >> cutsXiCascades{" cutsXiCascades" , {cutsCascades[0 ], 1 , 8 , labelsEmpty, labelsColumnsCascades}, " Selections for cascades (Xi) for Xi+bachelor triggers" };
162161 Configurable<LabeledArray<float >> cutsXiBachelor{" cutsXiBachelor" , {cutsCharmBaryons[0 ], 1 , 15 , labelsEmpty, labelsColumnsCharmBarCuts}, " Selections for charm baryons (Xi+Pi, Xi+Ka, Xi+Pi+Pi)" };
@@ -295,15 +294,15 @@ struct HfFilter { // Main struct for HF triggers
295294 helper.setPtRangeSoftKaonXicResoToSigmaC (ptCuts->get (0u , 5u ), ptCuts->get (1u , 5u ));
296295 helper.setVtxConfiguration (dfStrangeness, true ); // (DCAFitterN, useAbsDCA)
297296 helper.setVtxConfiguration (dfStrangeness3, true ); // (DCAFitterN, useAbsDCA)
298- helper.setParSigmaCPr (
299- cutsPtDeltaMassCharmReso->get (0u , 13u ), // min ΔM
300- cutsPtDeltaMassCharmReso->get (1u , 13u ), // max ΔM
301- cutsPtDeltaMassCharmReso->get (2u , 13u ), // min pT SigmaC
302- cutsSigmaCPr->get (0u , 0u ), // min pT proton
303- cutsSigmaCPr->get (1u , 0u ), // max pT proton
304- static_cast <bool >(cutsSigmaCPr->get (2u , 0u )), // force TOF
305- cutsSigmaCPr->get (3u , 0u ) // TOF pT threshold
306- );
297+ helper.setParSigmaCPr (
298+ cutsPtDeltaMassCharmReso->get (0u , 13u ), // min ΔM
299+ cutsPtDeltaMassCharmReso->get (1u , 13u ), // max ΔM
300+ cutsPtDeltaMassCharmReso->get (2u , 13u ), // min pT SigmaC
301+ cutsSigmaCPr->get (0u , 0u ), // min pT proton
302+ cutsSigmaCPr->get (1u , 0u ), // max pT proton
303+ static_cast <bool >(cutsSigmaCPr->get (2u , 0u )), // force TOF
304+ cutsSigmaCPr->get (3u , 0u ) // TOF pT threshold
305+ );
307306 dfStrangeness.setMatCorrType (matCorr);
308307 dfStrangeness3.setMatCorrType (matCorr);
309308 helper.setVtxConfiguration (df2, false ); // (DCAFitterN, useAbsDCA)
@@ -390,7 +389,7 @@ struct HfFilter { // Main struct for HF triggers
390389 // ThetaC
391390 hMassVsPtC[kNCharmParticles + 21 ] = registry.add <TH2>(" fMassVsPtCharmBaryonToDstarP" , " #it{M} vs. #it{p}_{T} distribution of triggered D^{*0}#p candidates;#it{p}_{T} (GeV/#it{c});#it{M} (GeV/#it{c}^{2});counts" , HistType::kTH2D , {ptAxis, massAxisC[kNCharmParticles + 21 ]});
392391 hMassVsPtC[kNCharmParticles + 22 ] = registry.add <TH2>(" fMassVsPtCharmBaryonToDstarPWrongSign" , " #it{M} vs. #it{p}_{T} distribution of triggered D^{*0}#p wrong sign candidates;#it{p}_{T} (GeV/#it{c});#it{M} (GeV/#it{c}^{2});counts" , HistType::kTH2D , {ptAxis, massAxisC[kNCharmParticles + 22 ]});
393- // SigmaC-p
392+ // SigmaC-p
394393 hMassVsPtC[kNCharmParticles + 23 ] = registry.add <TH2>(" fMassVsPtSigmaCPr" , " #it{M} vs. #it{p}_{T} distribution of #Sigma_{c} for SigmaCPr trigger;#it{p}_{T} (GeV/#it{c});#it{M} (GeV/#it{c}^{2});counts" , HistType::kTH2D , {ptAxis, massAxisC[kNCharmParticles + 23 ]});
395394
396395 for (int iBeautyPart{0 }; iBeautyPart < kNBeautyParticles ; ++iBeautyPart) {
@@ -480,7 +479,7 @@ struct HfFilter { // Main struct for HF triggers
480479 bool isSelectedITSROFBorder = evSel.applyITSROFBorderCut ? collision.selection_bit (o2::aod::evsel::kNoITSROFrameBorder ) : true ;
481480 bool isSelectedPvZ = (std::fabs (collision.posZ ()) < evSel.maxPvZ );
482481 if (!isSelectedTVX || !isSelectedTFBorder || !isSelectedITSROFBorder || !isSelectedPvZ) {
483- tags (keepEvent[kHighPt2P ], keepEvent[kHighPt3P ], keepEvent[kBeauty3P ], keepEvent[kBeauty4P ], keepEvent[kFemto2P ], keepEvent[kFemto3P ], keepEvent[kDoubleCharm2P ], keepEvent[kDoubleCharm3P ], keepEvent[kDoubleCharmMix ], keepEvent[kV0Charm2P ], keepEvent[kV0Charm3P ], keepEvent[kCharmBarToXiBach ], keepEvent[kSigmaCPPK ], keepEvent[kSigmaC0K0 ], keepEvent[kSigmaCPr ], keepEvent[kPhotonCharm2P ], keepEvent[kPhotonCharm3P ], keepEvent[kSingleCharm2P ], keepEvent[kSingleCharm3P ], keepEvent[kSingleNonPromptCharm2P ], keepEvent[kSingleNonPromptCharm3P ], keepEvent[kCharmBarToXi2Bach ], keepEvent[kPrCharm2P ], keepEvent[kBtoJPsiKa ], keepEvent[kBtoJPsiKstar ], keepEvent[kBtoJPsiPhi ], keepEvent[kBtoJPsiPrKa ], keepEvent[kBtoJPsiPi ]);
482+ tags (keepEvent[kHighPt2P ], keepEvent[kHighPt3P ], keepEvent[kBeauty3P ], keepEvent[kBeauty4P ], keepEvent[kFemto2P ], keepEvent[kFemto3P ], keepEvent[kDoubleCharm2P ], keepEvent[kDoubleCharm3P ], keepEvent[kDoubleCharmMix ], keepEvent[kV0Charm2P ], keepEvent[kV0Charm3P ], keepEvent[kCharmBarToXiBach ], keepEvent[kSigmaCPPK ], keepEvent[kSigmaC0K0 ], keepEvent[kSigmaCPr ], keepEvent[kPhotonCharm2P ], keepEvent[kPhotonCharm3P ], keepEvent[kSingleCharm2P ], keepEvent[kSingleCharm3P ], keepEvent[kSingleNonPromptCharm2P ], keepEvent[kSingleNonPromptCharm3P ], keepEvent[kCharmBarToXi2Bach ], keepEvent[kPrCharm2P ], keepEvent[kBtoJPsiKa ], keepEvent[kBtoJPsiKstar ], keepEvent[kBtoJPsiPhi ], keepEvent[kBtoJPsiPrKa ], keepEvent[kBtoJPsiPi ]);
484483 continue ;
485484 }
486485
@@ -1601,61 +1600,61 @@ struct HfFilter { // Main struct for HF triggers
16011600
16021601 // check the charge for SigmaC++K- candidates
16031602
1604- if (!keepEvent[kSigmaCPPK ] && (std::abs (chargeSc + track.sign ()) == 1 && std::abs (chargeSc) == 2 )) {
1605- // check the invariant mass
1606- float massSigmaCPKPi{-999 .}, massSigmaCPiKP{-999 .}, deltaMassXicResoPKPi{-999 .}, deltaMassXicResoPiKP{-999 .};
1607- float ptSigmaCKaon = RecoDecay::pt (pVecSigmaC, pVecFourth);
1603+ if (!keepEvent[kSigmaCPPK ] && (std::abs (chargeSc + track.sign ()) == 1 && std::abs (chargeSc) == 2 )) {
1604+ // check the invariant mass
1605+ float massSigmaCPKPi{-999 .}, massSigmaCPiKP{-999 .}, deltaMassXicResoPKPi{-999 .}, deltaMassXicResoPiKP{-999 .};
1606+ float ptSigmaCKaon = RecoDecay::pt (pVecSigmaC, pVecFourth);
16081607
1609- if (ptSigmaCKaon > cutsPtDeltaMassCharmReso->get (2u , 10u )) {
1610- if (TESTBIT (whichSigmaC, 0 )) {
1611- massSigmaCPKPi = RecoDecay::m (std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi}, std::array{massProton, massKa, massPi, massPi});
1612- deltaMassXicResoPKPi = RecoDecay::m (std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi, pVecFourth}, std::array{massProton, massKa, massPi, massPi, massKa}) - massSigmaCPKPi;
1613- }
1614- if (TESTBIT (whichSigmaC, 1 )) {
1615- massSigmaCPiKP = RecoDecay::m (std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi}, std::array{massPi, massKa, massProton, massPi});
1616- deltaMassXicResoPiKP = RecoDecay::m (std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi, pVecFourth}, std::array{massPi, massKa, massProton, massPi, massKa}) - massSigmaCPiKP;
1617- }
1618- bool isPKPiOk = (cutsPtDeltaMassCharmReso->get (0u , 10u ) < deltaMassXicResoPKPi && deltaMassXicResoPKPi < cutsPtDeltaMassCharmReso->get (1u , 10u ));
1619- bool isPiKPOk = (cutsPtDeltaMassCharmReso->get (0u , 10u ) < deltaMassXicResoPiKP && deltaMassXicResoPiKP < cutsPtDeltaMassCharmReso->get (1u , 10u ));
1620- if ((isPKPiOk || isPiKPOk) && isTrackKaon) {
1621- // / This is a good SigmaC++K- event
1622- keepEvent[kSigmaCPPK ] = true ;
1608+ if (ptSigmaCKaon > cutsPtDeltaMassCharmReso->get (2u , 10u )) {
1609+ if (TESTBIT (whichSigmaC, 0 )) {
1610+ massSigmaCPKPi = RecoDecay::m (std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi}, std::array{massProton, massKa, massPi, massPi});
1611+ deltaMassXicResoPKPi = RecoDecay::m (std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi, pVecFourth}, std::array{massProton, massKa, massPi, massPi, massKa}) - massSigmaCPKPi;
1612+ }
1613+ if (TESTBIT (whichSigmaC, 1 )) {
1614+ massSigmaCPiKP = RecoDecay::m (std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi}, std::array{massPi, massKa, massProton, massPi});
1615+ deltaMassXicResoPiKP = RecoDecay::m (std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi, pVecFourth}, std::array{massPi, massKa, massProton, massPi, massKa}) - massSigmaCPiKP;
1616+ }
1617+ bool isPKPiOk = (cutsPtDeltaMassCharmReso->get (0u , 10u ) < deltaMassXicResoPKPi && deltaMassXicResoPKPi < cutsPtDeltaMassCharmReso->get (1u , 10u ));
1618+ bool isPiKPOk = (cutsPtDeltaMassCharmReso->get (0u , 10u ) < deltaMassXicResoPiKP && deltaMassXicResoPiKP < cutsPtDeltaMassCharmReso->get (1u , 10u ));
1619+ if ((isPKPiOk || isPiKPOk) && isTrackKaon) {
1620+ // / This is a good SigmaC++K- event
1621+ keepEvent[kSigmaCPPK ] = true ;
16231622
1624- // / QA plot
1625- if (activateQA) {
1626- if (isPKPiOk) {
1627- if (TESTBIT (whichSigmaC, 2 )) {
1628- hMassVsPtC[kNCharmParticles + 11 ]->Fill (ptSigmaCKaon, deltaMassXicResoPKPi);
1629- }
1630- if (TESTBIT (whichSigmaC, 3 )) {
1631- hMassVsPtC[kNCharmParticles + 12 ]->Fill (ptSigmaCKaon, deltaMassXicResoPKPi);
1632- }
1633- }
1634- if (isPiKPOk) {
1635- if (TESTBIT (whichSigmaC, 2 )) {
1636- hMassVsPtC[kNCharmParticles + 11 ]->Fill (ptSigmaCKaon, deltaMassXicResoPiKP);
1623+ // / QA plot
1624+ if (activateQA) {
1625+ if (isPKPiOk) {
1626+ if (TESTBIT (whichSigmaC, 2 )) {
1627+ hMassVsPtC[kNCharmParticles + 11 ]->Fill (ptSigmaCKaon, deltaMassXicResoPKPi);
1628+ }
1629+ if (TESTBIT (whichSigmaC, 3 )) {
1630+ hMassVsPtC[kNCharmParticles + 12 ]->Fill (ptSigmaCKaon, deltaMassXicResoPKPi);
1631+ }
16371632 }
1638- if (TESTBIT (whichSigmaC, 3 )) {
1639- hMassVsPtC[kNCharmParticles + 12 ]->Fill (ptSigmaCKaon, deltaMassXicResoPiKP);
1633+ if (isPiKPOk) {
1634+ if (TESTBIT (whichSigmaC, 2 )) {
1635+ hMassVsPtC[kNCharmParticles + 11 ]->Fill (ptSigmaCKaon, deltaMassXicResoPiKP);
1636+ }
1637+ if (TESTBIT (whichSigmaC, 3 )) {
1638+ hMassVsPtC[kNCharmParticles + 12 ]->Fill (ptSigmaCKaon, deltaMassXicResoPiKP);
1639+ }
16401640 }
16411641 }
16421642 }
16431643 }
16441644 }
1645- }
16461645 }
16471646 float deltaEta = std::abs (RecoDecay::eta (pVecSigmaC) - track.eta ());
16481647 if (!keepEvent[kSigmaCPr ] && (isTrackProton && deltaEta < 1.0 )) {
1649- auto tagBDT = helper.isBDTSelected (scores[2 ], thresholdBDTScoreScLcToPiKP.value );
1650- int8_t whichSigmaC = helper.isSelectedSigmaCInDeltaMassRange <-1 >(pVecFirst, pVecThird, pVecSecond, pVecSoftPi, ptSigmaC, is3Prong[2 ], hMassVsPtC[kNCharmParticles + 23 ], activateQA);
1651- if (TESTBIT (whichSigmaC, 4 )){
1652- if (TESTBIT (tagBDT, RecoDecay::OriginType::Prompt)){
1648+ auto tagBDT = helper.isBDTSelected (scores[2 ], thresholdBDTScoreScLcToPiKP.value );
1649+ int8_t whichSigmaC = helper.isSelectedSigmaCInDeltaMassRange <-1 >(pVecFirst, pVecThird, pVecSecond, pVecSoftPi, ptSigmaC, is3Prong[2 ], hMassVsPtC[kNCharmParticles + 23 ], activateQA);
1650+ if (TESTBIT (whichSigmaC, 4 )) {
1651+ if (TESTBIT (tagBDT, RecoDecay::OriginType::Prompt)) {
1652+ }
16531653 }
1654- }
1655- // helper.selectionSigmaCForScPCorr(pVecFirst, pVecThird, pVecSecond, pVecSoftPi, ptSigmaC, is3Prong[2], hMassVsPtC[kNCharmParticles + 23], activateQA, configSigmaC.minMassSigmaCCorr, configSigmaC.maxMassSigmaCCorr, configSigmaC.minPtSigmaC, configSigmaC.maxPtSigmaC)
1656- if (TESTBIT (whichSigmaC, 4 ) && TESTBIT (tagBDT, RecoDecay::OriginType::Prompt)) {
1654+ // helper.selectionSigmaCForScPCorr(pVecFirst, pVecThird, pVecSecond, pVecSoftPi, ptSigmaC, is3Prong[2], hMassVsPtC[kNCharmParticles + 23], activateQA, configSigmaC.minMassSigmaCCorr, configSigmaC.maxMassSigmaCCorr, configSigmaC.minPtSigmaC, configSigmaC.maxPtSigmaC)
1655+ if (TESTBIT (whichSigmaC, 4 ) && TESTBIT (tagBDT, RecoDecay::OriginType::Prompt)) {
16571656 keepEvent[kSigmaCPr ] = true ;
1658- }
1657+ }
16591658 }
16601659 } // end SigmaC++ candidate
16611660 } // end loop over tracks (soft pi)
@@ -2053,7 +2052,7 @@ struct HfFilter { // Main struct for HF triggers
20532052 }
20542053 }
20552054
2056- tags (keepEvent[kHighPt2P ], keepEvent[kHighPt3P ], keepEvent[kBeauty3P ], keepEvent[kBeauty4P ], keepEvent[kFemto2P ], keepEvent[kFemto3P ], keepEvent[kDoubleCharm2P ], keepEvent[kDoubleCharm3P ], keepEvent[kDoubleCharmMix ], keepEvent[kV0Charm2P ], keepEvent[kV0Charm3P ], keepEvent[kCharmBarToXiBach ], keepEvent[kSigmaCPPK ], keepEvent[kSigmaC0K0 ], keepEvent[kSigmaCPr ], keepEvent[kPhotonCharm2P ], keepEvent[kPhotonCharm3P ], keepEvent[kSingleCharm2P ], keepEvent[kSingleCharm3P ], keepEvent[kSingleNonPromptCharm2P ], keepEvent[kSingleNonPromptCharm3P ], keepEvent[kCharmBarToXi2Bach ], keepEvent[kPrCharm2P ], keepEvent[kBtoJPsiKa ], keepEvent[kBtoJPsiKstar ], keepEvent[kBtoJPsiPhi ], keepEvent[kBtoJPsiPrKa ], keepEvent[kBtoJPsiPi ]);
2055+ tags (keepEvent[kHighPt2P ], keepEvent[kHighPt3P ], keepEvent[kBeauty3P ], keepEvent[kBeauty4P ], keepEvent[kFemto2P ], keepEvent[kFemto3P ], keepEvent[kDoubleCharm2P ], keepEvent[kDoubleCharm3P ], keepEvent[kDoubleCharmMix ], keepEvent[kV0Charm2P ], keepEvent[kV0Charm3P ], keepEvent[kCharmBarToXiBach ], keepEvent[kSigmaCPPK ], keepEvent[kSigmaC0K0 ], keepEvent[kSigmaCPr ], keepEvent[kPhotonCharm2P ], keepEvent[kPhotonCharm3P ], keepEvent[kSingleCharm2P ], keepEvent[kSingleCharm3P ], keepEvent[kSingleNonPromptCharm2P ], keepEvent[kSingleNonPromptCharm3P ], keepEvent[kCharmBarToXi2Bach ], keepEvent[kPrCharm2P ], keepEvent[kBtoJPsiKa ], keepEvent[kBtoJPsiKstar ], keepEvent[kBtoJPsiPhi ], keepEvent[kBtoJPsiPrKa ], keepEvent[kBtoJPsiPi ]);
20572056
20582057 if (!std::accumulate (keepEvent, keepEvent + kNtriggersHF , 0 )) {
20592058 hProcessedEvents->Fill (1 );
0 commit comments