diff --git a/EventFiltering/PWGHF/HFFilter.cxx b/EventFiltering/PWGHF/HFFilter.cxx index b36ff27e3aa..cc58932c603 100644 --- a/EventFiltering/PWGHF/HFFilter.cxx +++ b/EventFiltering/PWGHF/HFFilter.cxx @@ -149,14 +149,13 @@ struct HfFilter { // Main struct for HF triggers // parameters for Sigma_C proton trigger Configurable> cutsSigmaCPr{ - "cutsSigmaCPr", - {cutsSigmaCPrDefault[0], - static_cast(labelsRowsSigmaCPr.size()), - static_cast(labelsColumnsSigmaCPr.size()), - labelsRowsSigmaCPr, - labelsColumnsSigmaCPr}, - "Cuts for SigmaCPr trigger (proton pT and TOF threshold pT)" -}; + "cutsSigmaCPr", + {cutsSigmaCPrDefault[0], + static_cast(labelsRowsSigmaCPr.size()), + static_cast(labelsColumnsSigmaCPr.size()), + labelsRowsSigmaCPr, + labelsColumnsSigmaCPr}, + "Cuts for SigmaCPr trigger (proton pT and TOF threshold pT)"}; Configurable forceTofProtonForSigmaCPr{"forceTofProtonForSigmaCPr", true, "flag to force TOF PID for protons in SigmaCPr trigger"}; // parameters for charm baryons to Xi bachelor @@ -301,10 +300,10 @@ struct HfFilter { // Main struct for HF triggers cutsPtDeltaMassCharmReso->get(0u, 13u), // min ΔM cutsPtDeltaMassCharmReso->get(1u, 13u), // max ΔM cutsPtDeltaMassCharmReso->get(2u, 13u), // min pT SigmaC - cutsSigmaCPr->get(0u, 0u), // min pT proton - cutsSigmaCPr->get(1u, 0u), // max pT proton - cutsSigmaCPr->get(2u, 2u), // TOF pT threshold - forceTofProtonForSigmaCPr //set True for force TOF on proton candidate after threshold + cutsSigmaCPr->get(0u, 0u), // min pT proton + cutsSigmaCPr->get(1u, 0u), // max pT proton + cutsSigmaCPr->get(2u, 2u), // TOF pT threshold + forceTofProtonForSigmaCPr // set True for force TOF on proton candidate after threshold ); dfStrangeness.setMatCorrType(matCorr); dfStrangeness3.setMatCorrType(matCorr); @@ -392,7 +391,7 @@ struct HfFilter { // Main struct for HF triggers // ThetaC hMassVsPtC[kNCharmParticles + 21] = registry.add("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]}); hMassVsPtC[kNCharmParticles + 22] = registry.add("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]}); - //SigmaC-p + // SigmaC-p hMassVsPtC[kNCharmParticles + 23] = registry.add("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]}); for (int iBeautyPart{0}; iBeautyPart < kNBeautyParticles; ++iBeautyPart) { @@ -482,7 +481,7 @@ struct HfFilter { // Main struct for HF triggers bool isSelectedITSROFBorder = evSel.applyITSROFBorderCut ? collision.selection_bit(o2::aod::evsel::kNoITSROFrameBorder) : true; bool isSelectedPvZ = (std::fabs(collision.posZ()) < evSel.maxPvZ); if (!isSelectedTVX || !isSelectedTFBorder || !isSelectedITSROFBorder || !isSelectedPvZ) { - 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]); + 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]); continue; } @@ -1594,65 +1593,65 @@ struct HfFilter { // Main struct for HF triggers // check the mass of the SigmaC++ candidate auto pVecSigmaC = RecoDecay::pVec(pVecFirst, pVecSecond, pVecThird, pVecSoftPi); auto ptSigmaC = RecoDecay::pt(pVecSigmaC); - 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 + 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 if (whichSigmaC > 0) { /// let's build a candidate SigmaC++K- pair /// and keep it only if: /// - it has the correct charge (±1) /// - it is in the correct mass range // check the charge for SigmaC++K- candidates - if(!keepEvent[kSigmaCPPK] && (std::abs(chargeSc + track.sign()) == 1 && std::abs(chargeSc) == 2 )){ - // check the invariant mass - float massSigmaCPKPi{-999.}, massSigmaCPiKP{-999.}, deltaMassXicResoPKPi{-999.}, deltaMassXicResoPiKP{-999.}; - float ptSigmaCKaon = RecoDecay::pt(pVecSigmaC, pVecFourth); - - if (ptSigmaCKaon > cutsPtDeltaMassCharmReso->get(2u, 10u)) { - if (TESTBIT(whichSigmaC, 0)) { - massSigmaCPKPi = RecoDecay::m(std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi}, std::array{massProton, massKa, massPi, massPi}); - deltaMassXicResoPKPi = RecoDecay::m(std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi, pVecFourth}, std::array{massProton, massKa, massPi, massPi, massKa}) - massSigmaCPKPi; - } - if (TESTBIT(whichSigmaC, 1)) { - massSigmaCPiKP = RecoDecay::m(std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi}, std::array{massPi, massKa, massProton, massPi}); - deltaMassXicResoPiKP = RecoDecay::m(std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi, pVecFourth}, std::array{massPi, massKa, massProton, massPi, massKa}) - massSigmaCPiKP; - } - bool isPKPiOk = (cutsPtDeltaMassCharmReso->get(0u, 10u) < deltaMassXicResoPKPi && deltaMassXicResoPKPi < cutsPtDeltaMassCharmReso->get(1u, 10u)); - bool isPiKPOk = (cutsPtDeltaMassCharmReso->get(0u, 10u) < deltaMassXicResoPiKP && deltaMassXicResoPiKP < cutsPtDeltaMassCharmReso->get(1u, 10u)); - if ((isPKPiOk || isPiKPOk) && isTrackKaon) { - /// This is a good SigmaC++K- event - keepEvent[kSigmaCPPK] = true; + if (!keepEvent[kSigmaCPPK] && (std::abs(chargeSc + track.sign()) == 1 && std::abs(chargeSc) == 2)) { + // check the invariant mass + float massSigmaCPKPi{-999.}, massSigmaCPiKP{-999.}, deltaMassXicResoPKPi{-999.}, deltaMassXicResoPiKP{-999.}; + float ptSigmaCKaon = RecoDecay::pt(pVecSigmaC, pVecFourth); - /// QA plot - if (activateQA) { - if (isPKPiOk) { - if (TESTBIT(whichSigmaC, 2)) { - hMassVsPtC[kNCharmParticles + 11]->Fill(ptSigmaCKaon, deltaMassXicResoPKPi); - } - if (TESTBIT(whichSigmaC, 3)) { - hMassVsPtC[kNCharmParticles + 12]->Fill(ptSigmaCKaon, deltaMassXicResoPKPi); - } - } - if (isPiKPOk) { - if (TESTBIT(whichSigmaC, 2)) { - hMassVsPtC[kNCharmParticles + 11]->Fill(ptSigmaCKaon, deltaMassXicResoPiKP); + if (ptSigmaCKaon > cutsPtDeltaMassCharmReso->get(2u, 10u)) { + if (TESTBIT(whichSigmaC, 0)) { + massSigmaCPKPi = RecoDecay::m(std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi}, std::array{massProton, massKa, massPi, massPi}); + deltaMassXicResoPKPi = RecoDecay::m(std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi, pVecFourth}, std::array{massProton, massKa, massPi, massPi, massKa}) - massSigmaCPKPi; + } + if (TESTBIT(whichSigmaC, 1)) { + massSigmaCPiKP = RecoDecay::m(std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi}, std::array{massPi, massKa, massProton, massPi}); + deltaMassXicResoPiKP = RecoDecay::m(std::array{pVecFirst, pVecSecond, pVecThird, pVecSoftPi, pVecFourth}, std::array{massPi, massKa, massProton, massPi, massKa}) - massSigmaCPiKP; + } + bool isPKPiOk = (cutsPtDeltaMassCharmReso->get(0u, 10u) < deltaMassXicResoPKPi && deltaMassXicResoPKPi < cutsPtDeltaMassCharmReso->get(1u, 10u)); + bool isPiKPOk = (cutsPtDeltaMassCharmReso->get(0u, 10u) < deltaMassXicResoPiKP && deltaMassXicResoPiKP < cutsPtDeltaMassCharmReso->get(1u, 10u)); + if ((isPKPiOk || isPiKPOk) && isTrackKaon) { + /// This is a good SigmaC++K- event + keepEvent[kSigmaCPPK] = true; + + /// QA plot + if (activateQA) { + if (isPKPiOk) { + if (TESTBIT(whichSigmaC, 2)) { + hMassVsPtC[kNCharmParticles + 11]->Fill(ptSigmaCKaon, deltaMassXicResoPKPi); + } + if (TESTBIT(whichSigmaC, 3)) { + hMassVsPtC[kNCharmParticles + 12]->Fill(ptSigmaCKaon, deltaMassXicResoPKPi); + } } - if (TESTBIT(whichSigmaC, 3)) { - hMassVsPtC[kNCharmParticles + 12]->Fill(ptSigmaCKaon, deltaMassXicResoPiKP); + if (isPiKPOk) { + if (TESTBIT(whichSigmaC, 2)) { + hMassVsPtC[kNCharmParticles + 11]->Fill(ptSigmaCKaon, deltaMassXicResoPiKP); + } + if (TESTBIT(whichSigmaC, 3)) { + hMassVsPtC[kNCharmParticles + 12]->Fill(ptSigmaCKaon, deltaMassXicResoPiKP); + } } } } } } - } } - //now from here we are looking for SigmaC-proton trigger - //DeltaEta is the difference in Eta between SigmaC candiate and proton + // now from here we are looking for SigmaC-proton trigger + // DeltaEta is the difference in Eta between SigmaC candiate and proton float deltaEta = std::abs(RecoDecay::eta(pVecSigmaC) - track.eta()); if (!keepEvent[kSigmaCPr] && (isTrackProton && deltaEta < 1.0)) { - auto tagBDT = helper.isBDTSelected(scores[2], thresholdBDTScoreScForSigmaCPr.value); - 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 - if (TESTBIT(whichSigmaC, 4) && TESTBIT(tagBDT, RecoDecay::OriginType::Prompt)) { + auto tagBDT = helper.isBDTSelected(scores[2], thresholdBDTScoreScForSigmaCPr.value); + 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 + if (TESTBIT(whichSigmaC, 4) && TESTBIT(tagBDT, RecoDecay::OriginType::Prompt)) { keepEvent[kSigmaCPr] = true; - } + } } } // end SigmaC++ candidate } // end loop over tracks (soft pi) diff --git a/EventFiltering/PWGHF/HFFilterHelpers.h b/EventFiltering/PWGHF/HFFilterHelpers.h index 01732d84deb..e92e92f83b6 100644 --- a/EventFiltering/PWGHF/HFFilterHelpers.h +++ b/EventFiltering/PWGHF/HFFilterHelpers.h @@ -315,9 +315,9 @@ static const std::vector labelsRowsCutsPt = {"Minimum", "Maximum"}; // PID cuts constexpr float cutsNsigma[4][9] = { - {3., 3., 3., 5., 3., 3., 5., 3., 3.}, // TPC proton from Lc, pi/K from D0, K from 3-prong, femto selected proton, pi/K from Xic/Omegac, K from Xic*->SigmaC-Kaon, femto selected deuteron, K/p from beauty->JPsiX, proton from SigmaC-Pr correaltion - {3., 3., 3., 2.5, 3., 3., 5., 3., 3.}, // TOF proton from Lc, pi/K from D0, K from 3-prong, femto selected proton, pi/K from Xic/Omegac, K from Xic*->SigmaC-Kaon, femto selected deuteron, K/p from beauty->JPsiX, proton from SigmaC-Pr correaltion - {999., 999., 999., 2.5, 999., 999., 5., 999., 3.}, // Sum in quadrature of TPC and TOF (used only for femto selected proton and deuteron for pT < 4 GeV/c) + {3., 3., 3., 5., 3., 3., 5., 3., 3.}, // TPC proton from Lc, pi/K from D0, K from 3-prong, femto selected proton, pi/K from Xic/Omegac, K from Xic*->SigmaC-Kaon, femto selected deuteron, K/p from beauty->JPsiX, proton from SigmaC-Pr correaltion + {3., 3., 3., 2.5, 3., 3., 5., 3., 3.}, // TOF proton from Lc, pi/K from D0, K from 3-prong, femto selected proton, pi/K from Xic/Omegac, K from Xic*->SigmaC-Kaon, femto selected deuteron, K/p from beauty->JPsiX, proton from SigmaC-Pr correaltion + {999., 999., 999., 2.5, 999., 999., 5., 999., 3.}, // Sum in quadrature of TPC and TOF (used only for femto selected proton and deuteron for pT < 4 GeV/c) {999., 999., 999., 999., 999., 999., -4., 999., 999.} // ITS used only for femto selected deuteron for less than pt threshold }; static const std::vector labelsColumnsNsigma = {"PrFromLc", "PiKaFromDZero", "KaFrom3Prong", "PrForFemto", "PiKaFromCharmBaryon", "SoftKaonFromXicResoToSigmaC", "DeForFemto", "KaPrFromBeautyToJPsi", "PrFromSigmaCPr"}; @@ -381,20 +381,18 @@ static const std::vector labelsColumnsCascades = {"PtBachelor", "Pt constexpr float cutsCharmBaryons[1][15] = {{5., 5., 1000., 2.35, 2.60, 2.35, 3., 3., 2.7, -2., -2., 1.e6, 1.e6, -1., -1.}}; // MinPtXiPi, MinPtXiKa, MinPtXiPiPi, MinMassXiPi, MinMassXiKa, MinMassXiPiPi, MaxMassXiPi, MaxMassXiKa, MaxMassXiPiPi, CosPaXiBach, CosPaXiBachBach, Chi2PcaXiBach, Chi2PcaXiBachBach, DecLenXiBach, DecLenBachBach static const std::vector labelsColumnsCharmBarCuts = {"MinPtXiPi", "MinPtXiKa", "MinPtXiPiPi", "MinMassXiPi", "MinMassXiKa", "MinMassXiPiPi", "MaxMassXiPi", "MaxMassXiKa", "MaxMassXiPiPi", "CosPaXiBach", "CosPaXiBachBach", "Chi2PcaXiBach", "Chi2PcaXiBachBach", "DecLenXiBach", "DecLenBachBach"}; -//proton for SigmaC-pr trigger +// proton for SigmaC-pr trigger constexpr float cutsSigmaCPrDefault[3][1] = { - {0.399}, // ptPrMin - {4.501}, // ptPrMax - {1.0} // ptTOFThreshold + {0.399}, // ptPrMin + {4.501}, // ptPrMax + {1.0} // ptTOFThreshold }; static const std::vector labelsRowsSigmaCPr = { "ptPrMin", "ptPrMax", - "ptTOFThreshold" -}; + "ptTOFThreshold"}; static const std::vector labelsColumnsSigmaCPr = { - "SigmaCPr" -}; + "SigmaCPr"}; constexpr int requireStrangenessTrackedXi[1][2] = {{1, 0}}; static const std::vector labelsColumnsCharmBaryons = {"CharmBarToXiBach", "CharmBarToXiBachBach"}; @@ -496,7 +494,7 @@ class HfFilterHelper mPtMinSigmaCPlusPlus = minPtSigmaCPlusPlus; mPtMinSigmaC2520PlusPlus = minPtSigmaC2520PlusPlus; } - void setParSigmaCPr(float minDeltaMassSigmaC, float maxDeltaMassSigmaC, float minPtSigmaC, float minPtProton, float maxPtProton, float minPtForTOF, bool forceTOF) + void setParSigmaCPr(float minDeltaMassSigmaC, float maxDeltaMassSigmaC, float minPtSigmaC, float minPtProton, float maxPtProton, float minPtForTOF, bool forceTOF) { mMinDeltaMassScSigmaCPr = minDeltaMassSigmaC; mMaxDeltaMassScSigmaCPr = maxDeltaMassSigmaC; @@ -531,7 +529,7 @@ class HfFilterHelper } void setNsigmaProtonCutsForFemto(std::array nSigmaCuts) { mNSigmaPrCutsForFemto = nSigmaCuts; } - void setNsigmaDeuteronCutsForFemto(std::array nSigmaCuts) { mNSigmaDeCutsForFemto = nSigmaCuts;} + void setNsigmaDeuteronCutsForFemto(std::array nSigmaCuts) { mNSigmaDeCutsForFemto = nSigmaCuts; } void setNsigmaProtonCutsForSigmaCPr(std::array nSigmaCuts) { mNSigmaPrCutsForSigmaCPr = nSigmaCuts; } void setDeuteronTrackSelectionForFemto(float minTpcCluster, float minTpcRow, float minTpcCrossedOverFound, float maxTpcShared, float maxTpcFracShared, float minItsCluster, float minItsIbCluster) @@ -839,14 +837,14 @@ class HfFilterHelper float mMaxTpcFracShared{1.}; // Maximum allowed fraction of shared TPC clusters relative to total clusters float mMinItsCluster{1.}; // Minimum required number of ITS clusters float mMinItsIbCluster{1.}; // Minimum required number of ITS clusters for IB -// SigmaC–p (ScPr) trigger -float mMinDeltaMassScSigmaCPr{0.15f}; // min Delta mass (SigmaC) for SigmaC-Proton trigger -float mMaxDeltaMassScSigmaCPr{0.19f}; // max Delta mass (SigmaC) for SigmaC-Proton trigger -float mMinPtScSigmaPr{4.99f}; // min pT(SigmaC) for SigmaC-Proton trigger -float mMinPtPrSigmaCPr{0.399f}; // min pT(proton) for SigmaC-Proton trigger -float mMaxPtPrSigmaCPr{4.501f}; // max pT(proton) for SigmaC-Proton trigger -bool mForceTOFForPrSigmaCPr{true}; // force TOF for protonfor SigmaC-Proton trigger -float mThresholdPtTOFForPrSigmaCPr{1.0f}; // pT threshold above which TOF is required for SigmaC-Proton trigger + // SigmaC–p (ScPr) trigger + float mMinDeltaMassScSigmaCPr{0.15f}; // min Delta mass (SigmaC) for SigmaC-Proton trigger + float mMaxDeltaMassScSigmaCPr{0.19f}; // max Delta mass (SigmaC) for SigmaC-Proton trigger + float mMinPtScSigmaPr{4.99f}; // min pT(SigmaC) for SigmaC-Proton trigger + float mMinPtPrSigmaCPr{0.399f}; // min pT(proton) for SigmaC-Proton trigger + float mMaxPtPrSigmaCPr{4.501f}; // max pT(proton) for SigmaC-Proton trigger + bool mForceTOFForPrSigmaCPr{true}; // force TOF for protonfor SigmaC-Proton trigger + float mThresholdPtTOFForPrSigmaCPr{1.0f}; // pT threshold above which TOF is required for SigmaC-Proton trigger // PID recalibrations int mTpcPidCalibrationOption{0}; // Option for TPC PID calibration (0 -> AO2D, 1 -> postcalibrations, 2 -> alternative bethe bloch parametrisation) @@ -1385,12 +1383,12 @@ inline int8_t HfFilterHelper::isSelectedSigmaCInDeltaMassRange(const T& pTrackSa } else if constexpr (charge == 2) { isSigmaC2455 = (mDeltaMassMinSigmaCPlusPlus < deltaMassPKPi && deltaMassPKPi < mDeltaMassMaxSigmaCPlusPlus && ptSigmaC > mPtMinSigmaCPlusPlus); isSigmaC2520 = (mDeltaMassMinSigmaC2520PlusPlus < deltaMassPKPi && deltaMassPKPi < mDeltaMassMaxSigmaC2520PlusPlus && ptSigmaC > mPtMinSigmaC2520PlusPlus); - } else if constexpr (charge == -1){ - if (deltaMassPKPi > mMinDeltaMassScSigmaCPr && deltaMassPKPi < mMaxDeltaMassScSigmaCPr && ptSigmaC > mMinPtScSigmaPr){ // sigmaC charge independent for SigmaCPr - SETBIT(retValue, 4); // SigmaCPr bit - if (activateQA) { - hMassVsPt->Fill(ptSigmaC, deltaMassPKPi); - } + } else if constexpr (charge == -1) { + if (deltaMassPKPi > mMinDeltaMassScSigmaCPr && deltaMassPKPi < mMaxDeltaMassScSigmaCPr && ptSigmaC > mMinPtScSigmaPr) { // sigmaC charge independent for SigmaCPr + SETBIT(retValue, 4); // SigmaCPr bit + if (activateQA) { + hMassVsPt->Fill(ptSigmaC, deltaMassPKPi); + } } } @@ -1408,7 +1406,7 @@ inline int8_t HfFilterHelper::isSelectedSigmaCInDeltaMassRange(const T& pTrackSa } } } - + if (TESTBIT(isSelectedLc, 1)) { /// Lc->piKp case auto invMassLcToPiKP = RecoDecay::m(std::array{pTrackSameChargeFirst, pTrackOppositeCharge, pTrackSameChargeSecond}, std::array{massPi, massKa, massProton}); @@ -1423,12 +1421,12 @@ inline int8_t HfFilterHelper::isSelectedSigmaCInDeltaMassRange(const T& pTrackSa } else if constexpr (charge == 2) { isSigmaC2455 = (mDeltaMassMinSigmaCPlusPlus < deltaMassPiKP && deltaMassPiKP < mDeltaMassMaxSigmaCPlusPlus && ptSigmaC > mPtMinSigmaCPlusPlus); isSigmaC2520 = (mDeltaMassMinSigmaC2520PlusPlus < deltaMassPiKP && deltaMassPiKP < mDeltaMassMaxSigmaC2520PlusPlus && ptSigmaC > mPtMinSigmaC2520PlusPlus); - } else if constexpr (charge == -1){ - if (deltaMassPiKP > mMinDeltaMassScSigmaCPr && deltaMassPiKP < mMaxDeltaMassScSigmaCPr && ptSigmaC > mMinPtScSigmaPr){ // sigmaC charge independent for SigmaCPr - SETBIT(retValue, 4); // SigmaCPr bit - if (activateQA) { - hMassVsPt->Fill(ptSigmaC, deltaMassPiKP); - } + } else if constexpr (charge == -1) { + if (deltaMassPiKP > mMinDeltaMassScSigmaCPr && deltaMassPiKP < mMaxDeltaMassScSigmaCPr && ptSigmaC > mMinPtScSigmaPr) { // sigmaC charge independent for SigmaCPr + SETBIT(retValue, 4); // SigmaCPr bit + if (activateQA) { + hMassVsPt->Fill(ptSigmaC, deltaMassPiKP); + } } } if (isSigmaC2455 || isSigmaC2520) {