Skip to content

Commit 6cfddc4

Browse files
authored
Refactor SigmaCPr trigger parameters and logic
Updated configurable parameters for SigmaCPr trigger and added logic for SigmaC-proton correlation. Enhanced event tagging and BDT score handling for SigmaC candidates.
1 parent f30d426 commit 6cfddc4

File tree

1 file changed

+65
-67
lines changed

1 file changed

+65
-67
lines changed

EventFiltering/PWGHF/HFFilter.cxx

Lines changed: 65 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,16 @@ 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)"};
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 and TOF threshold pT)"
159+
};
160+
Configurable<bool> forceTofProtonForSigmaCPr{"forceTofProtonForSigmaCPr", true, "flag to force TOF PID for protons in SigmaCPr trigger"};
161+
159162
// parameters for charm baryons to Xi bachelor
160163
Configurable<LabeledArray<float>> cutsXiCascades{"cutsXiCascades", {cutsCascades[0], 1, 8, labelsEmpty, labelsColumnsCascades}, "Selections for cascades (Xi) for Xi+bachelor triggers"};
161164
Configurable<LabeledArray<float>> cutsXiBachelor{"cutsXiBachelor", {cutsCharmBaryons[0], 1, 15, labelsEmpty, labelsColumnsCharmBarCuts}, "Selections for charm baryons (Xi+Pi, Xi+Ka, Xi+Pi+Pi)"};
@@ -170,7 +173,7 @@ struct HfFilter { // Main struct for HF triggers
170173
Configurable<LabeledArray<double>> thresholdBDTScoreDSToPiKK{"thresholdBDTScoreDSToPiKK", {hf_cuts_bdt_multiclass::Cuts[0], hf_cuts_bdt_multiclass::NBinsPt, hf_cuts_bdt_multiclass::NCutBdtScores, hf_cuts_bdt_multiclass::labelsPt, hf_cuts_bdt_multiclass::labelsCutBdt}, "Threshold values for BDT output scores of Ds+ candidates"};
171174
Configurable<LabeledArray<double>> thresholdBDTScoreLcToPiKP{"thresholdBDTScoreLcToPiKP", {hf_cuts_bdt_multiclass::Cuts[0], hf_cuts_bdt_multiclass::NBinsPt, hf_cuts_bdt_multiclass::NCutBdtScores, hf_cuts_bdt_multiclass::labelsPt, hf_cuts_bdt_multiclass::labelsCutBdt}, "Threshold values for BDT output scores of Lc+ candidates"};
172175
Configurable<LabeledArray<double>> thresholdBDTScoreXicToPiKP{"thresholdBDTScoreXicToPiKP", {hf_cuts_bdt_multiclass::Cuts[0], hf_cuts_bdt_multiclass::NBinsPt, hf_cuts_bdt_multiclass::NCutBdtScores, hf_cuts_bdt_multiclass::labelsPt, hf_cuts_bdt_multiclass::labelsCutBdt}, "Threshold values for BDT output scores of Xic+ candidates"};
173-
Configurable<LabeledArray<double>> thresholdBDTScoreScLcToPiKP{"thresholdBDTScoreScLcToPiKP", {hf_cuts_bdt_multiclass::Cuts[0], hf_cuts_bdt_multiclass::NBinsPt, hf_cuts_bdt_multiclass::NCutBdtScores, hf_cuts_bdt_multiclass::labelsPt, hf_cuts_bdt_multiclass::labelsCutBdt}, "Threshold values for BDT output scores of Lc<--Sc candidates"};
176+
Configurable<LabeledArray<double>> thresholdBDTScoreScForSigmaCPr{"thresholdBDTScoreScForSigmaCPr", {hf_cuts_bdt_multiclass::Cuts[0], hf_cuts_bdt_multiclass::NBinsPt, hf_cuts_bdt_multiclass::NCutBdtScores, hf_cuts_bdt_multiclass::labelsPt, hf_cuts_bdt_multiclass::labelsCutBdt}, "Threshold values for BDT output scores of Lc<--Sc candidates for sigmaC-pr trigger"};
174177

175178
Configurable<bool> acceptBdtBkgOnly{"acceptBdtBkgOnly", true, "Enable / disable selection based on BDT bkg score only"};
176179

@@ -234,7 +237,7 @@ struct HfFilter { // Main struct for HF triggers
234237
std::array<std::shared_ptr<TH1>, kNCharmParticles> hCharmProtonKstarDistr{};
235238
std::array<std::shared_ptr<TH1>, kNCharmParticles> hCharmDeuteronKstarDistr{};
236239
std::array<std::shared_ptr<TH2>, nTotBeautyParts> hMassVsPtB{};
237-
std::array<std::shared_ptr<TH2>, kNCharmParticles + 24> hMassVsPtC{}; // +9 for resonances (D*+, D*0, Ds*+, Ds1+, Ds2*+, Xic+* right sign, Xic+* wrong sign, Xic0* right sign, Xic0* wrong sign) +2 for SigmaC (SigmaC++, SigmaC0) +2 for SigmaCK pairs (SigmaC++K-, SigmaC0K0s) +3 for charm baryons (Xi+Pi, Xi+Ka, Xi+Pi+Pi) + JPsi + 4 for charm baryons (D0+p, D0+pWrongSign, D*0p, D*0+pWrongSign)
240+
std::array<std::shared_ptr<TH2>, kNCharmParticles + 24> hMassVsPtC{}; // +9 for resonances (D*+, D*0, Ds*+, Ds1+, Ds2*+, Xic+* right sign, Xic+* wrong sign, Xic0* right sign, Xic0* wrong sign) +2 for SigmaC (SigmaC++, SigmaC0) +2 for SigmaCK pairs (SigmaC++K-, SigmaC0K0s) +3 for charm baryons (Xi+Pi, Xi+Ka, Xi+Pi+Pi) + JPsi + 4 for charm baryons (D0+p, D0+pWrongSign, D*0p, D*0+pWrongSign) +1 for SigmaCPr correlation
238241
std::array<std::shared_ptr<TH2>, 4> hPrDePID; // proton TPC, proton TOF, deuteron TPC, deuteron TOF
239242
std::array<std::shared_ptr<TH1>, kNCharmParticles> hBDTScoreBkg{};
240243
std::array<std::shared_ptr<TH1>, kNCharmParticles> hBDTScorePrompt{};
@@ -295,13 +298,13 @@ struct HfFilter { // Main struct for HF triggers
295298
helper.setVtxConfiguration(dfStrangeness, true); // (DCAFitterN, useAbsDCA)
296299
helper.setVtxConfiguration(dfStrangeness3, true); // (DCAFitterN, useAbsDCA)
297300
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
301+
cutsPtDeltaMassCharmReso->get(0u, 13u), // min ΔM
302+
cutsPtDeltaMassCharmReso->get(1u, 13u), // max ΔM
303+
cutsPtDeltaMassCharmReso->get(2u, 13u), // min pT SigmaC
304+
cutsSigmaCPr->get(0u, 0u), // min pT proton
305+
cutsSigmaCPr->get(1u, 0u), // max pT proton
306+
cutsSigmaCPr->get(2u, 2u), // TOF pT threshold
307+
forceTofProtonForSigmaCPr //set True for force TOF on proton candidate after threshold
305308
);
306309
dfStrangeness.setMatCorrType(matCorr);
307310
dfStrangeness3.setMatCorrType(matCorr);
@@ -389,7 +392,7 @@ struct HfFilter { // Main struct for HF triggers
389392
// ThetaC
390393
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]});
391394
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]});
392-
// SigmaC-p
395+
//SigmaC-p
393396
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]});
394397

395398
for (int iBeautyPart{0}; iBeautyPart < kNBeautyParticles; ++iBeautyPart) {
@@ -479,7 +482,7 @@ struct HfFilter { // Main struct for HF triggers
479482
bool isSelectedITSROFBorder = evSel.applyITSROFBorderCut ? collision.selection_bit(o2::aod::evsel::kNoITSROFrameBorder) : true;
480483
bool isSelectedPvZ = (std::fabs(collision.posZ()) < evSel.maxPvZ);
481484
if (!isSelectedTVX || !isSelectedTFBorder || !isSelectedITSROFBorder || !isSelectedPvZ) {
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]);
485+
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[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], keepEvent[kSigmaCPr]);
483486
continue;
484487
}
485488

@@ -1552,7 +1555,7 @@ struct HfFilter { // Main struct for HF triggers
15521555
bool isTrackProton = helper.isSelectedTrack4Corr(track, trackParFourth, activateQA, hPrDePID[4], hPrDePID[5], kProtonForScPrCorr);
15531556

15541557
if ((!keepEvent[kSigmaCPPK] || !keepEvent[kSigmaCPr]) && is3Prong[2] > 0 && is3ProngInMass[2] > 0 && isSignalTagged[2] > 0 && (isTrackKaon || isTrackProton)) {
1555-
// we need a candidate Lc->pKpi and a candidate soft kaon
1558+
// we need a candidate Lc->pKpi and a candidate soft kaon, and also need a candidate of proton for sigmaC correlation
15561559

15571560
// look for SigmaC++ candidates
15581561
for (const auto& trackSoftPiId : trackIdsThisCollision) { // start loop over tracks (soft pi)
@@ -1591,70 +1594,65 @@ struct HfFilter { // Main struct for HF triggers
15911594
// check the mass of the SigmaC++ candidate
15921595
auto pVecSigmaC = RecoDecay::pVec(pVecFirst, pVecSecond, pVecThird, pVecSoftPi);
15931596
auto ptSigmaC = RecoDecay::pt(pVecSigmaC);
1594-
int8_t whichSigmaC = helper.isSelectedSigmaCInDeltaMassRange<2>(pVecFirst, pVecThird, pVecSecond, pVecSoftPi, ptSigmaC, is3Prong[2], hMassVsPtC[kNCharmParticles + 9], activateQA);
1597+
int8_t whichSigmaC = helper.isSelectedSigmaCInDeltaMassRange<2>(pVecFirst, pVecThird, pVecSecond, pVecSoftPi, ptSigmaC, is3Prong[2], hMassVsPtC[kNCharmParticles + 9], activateQA); //put charge = -1, it ensure the function is not looking charge and calculate the bit for ground state of SigmaC in the specified mass range
15951598
if (whichSigmaC > 0) {
15961599
/// let's build a candidate SigmaC++K- pair
15971600
/// and keep it only if:
15981601
/// - it has the correct charge (±1)
15991602
/// - it is in the correct mass range
1600-
16011603
// check the charge for SigmaC++K- candidates
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);
1608+
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;
16021623

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);
1607-
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;
1622-
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-
}
1624+
/// QA plot
1625+
if (activateQA) {
1626+
if (isPKPiOk) {
1627+
if (TESTBIT(whichSigmaC, 2)) {
1628+
hMassVsPtC[kNCharmParticles + 11]->Fill(ptSigmaCKaon, deltaMassXicResoPKPi);
16321629
}
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-
}
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);
1637+
}
1638+
if (TESTBIT(whichSigmaC, 3)) {
1639+
hMassVsPtC[kNCharmParticles + 12]->Fill(ptSigmaCKaon, deltaMassXicResoPiKP);
16401640
}
16411641
}
16421642
}
16431643
}
16441644
}
1645+
}
16451646
}
1647+
//now from here we are looking for SigmaC-proton trigger
1648+
//DeltaEta is the difference in Eta between SigmaC candiate and proton
16461649
float deltaEta = std::abs(RecoDecay::eta(pVecSigmaC) - track.eta());
16471650
if (!keepEvent[kSigmaCPr] && (isTrackProton && deltaEta < 1.0)) {
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-
}
1653-
}
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)) {
1651+
auto tagBDT = helper.isBDTSelected(scores[2], thresholdBDTScoreScForSigmaCPr.value);
1652+
int8_t whichSigmaC = helper.isSelectedSigmaCInDeltaMassRange<-1>(pVecFirst, pVecThird, pVecSecond, pVecSoftPi, ptSigmaC, is3Prong[2], hMassVsPtC[kNCharmParticles + 23], activateQA); //put charge {-1} for not looking charge specific SigmaC ground state, it will return bit 4 corresponding to it
1653+
if (TESTBIT(whichSigmaC, 4) && TESTBIT(tagBDT, RecoDecay::OriginType::Prompt)) {
16561654
keepEvent[kSigmaCPr] = true;
1657-
}
1655+
}
16581656
}
16591657
} // end SigmaC++ candidate
16601658
} // end loop over tracks (soft pi)
@@ -2052,7 +2050,7 @@ struct HfFilter { // Main struct for HF triggers
20522050
}
20532051
}
20542052

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]);
2053+
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[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], keepEvent[kSigmaCPr]);
20562054

20572055
if (!std::accumulate(keepEvent, keepEvent + kNtriggersHF, 0)) {
20582056
hProcessedEvents->Fill(1);

0 commit comments

Comments
 (0)