diff --git a/PWGHF/D2H/DataModel/ReducedDataModel.h b/PWGHF/D2H/DataModel/ReducedDataModel.h index 7ddb58baad4..62e52032538 100644 --- a/PWGHF/D2H/DataModel/ReducedDataModel.h +++ b/PWGHF/D2H/DataModel/ReducedDataModel.h @@ -247,6 +247,14 @@ DECLARE_SOA_COLUMN(TOFNSigmaKaProng2, tofNSigmaKaProng2, float); //! NsigmaTOFKa DECLARE_SOA_COLUMN(TOFNSigmaPrProng0, tofNSigmaPrProng0, float); //! NsigmaTOFPr for prong0, o2-linter: disable=name/o2-column (written to disk) DECLARE_SOA_COLUMN(TOFNSigmaPrProng1, tofNSigmaPrProng1, float); //! NsigmaTOFPr for prong1, o2-linter: disable=name/o2-column (written to disk) DECLARE_SOA_COLUMN(TOFNSigmaPrProng2, tofNSigmaPrProng2, float); //! NsigmaTOFPr for prong2, o2-linter: disable=name/o2-column (written to disk) +DECLARE_SOA_COLUMN(TPCNSigmaMuPos, tpcNSigmaMuPos, float); //! NsigmaTPCMu for positive J/psi daughter, o2-linter: disable=name/o2-column (written to disk) +DECLARE_SOA_COLUMN(TPCNSigmaMuNeg, tpcNSigmaMuNeg, float); //! NsigmaTPCMu for negative J/psi daughter, o2-linter: disable=name/o2-column (written to disk) +DECLARE_SOA_COLUMN(TPCNSigmaElPos, tpcNSigmaElPos, float); //! NsigmaTPCEl for positive J/psi daughter, o2-linter: disable=name/o2-column (written to disk) +DECLARE_SOA_COLUMN(TPCNSigmaElNeg, tpcNSigmaElNeg, float); //! NsigmaTPCEl for negative J/psi daughter, o2-linter: disable=name/o2-column (written to disk) +DECLARE_SOA_COLUMN(TOFNSigmaMuPos, tofNSigmaMuPos, float); //! NsigmaTPCMu for positive J/psi daughter, o2-linter: disable=name/o2-column (written to disk) +DECLARE_SOA_COLUMN(TOFNSigmaMuNeg, tofNSigmaMuNeg, float); //! NsigmaTPCMu for negative J/psi daughter, o2-linter: disable=name/o2-column (written to disk) +DECLARE_SOA_COLUMN(TOFNSigmaElPos, tofNSigmaElPos, float); //! NsigmaTPCEl for positive J/psi daughter, o2-linter: disable=name/o2-column (written to disk) +DECLARE_SOA_COLUMN(TOFNSigmaElNeg, tofNSigmaElNeg, float); //! NsigmaTPCEl for negative J/psi daughter, o2-linter: disable=name/o2-column (written to disk) // dynamic columns DECLARE_SOA_DYNAMIC_COLUMN(TPCTOFNSigmaPi, tpcTofNSigmaPi, //! Combination of NsigmaTPC and NsigmaTOF, o2-linter: disable=name/o2-column (written to disk) [](float tpcNSigmaPi, float tofNSigmaPi) -> float { return pid_tpc_tof_utils::combineNSigma(tpcNSigmaPi, tofNSigmaPi); }); @@ -272,6 +280,14 @@ DECLARE_SOA_DYNAMIC_COLUMN(TPCTOFNSigmaPrProng1, tpcTofNSigmaPrProng1, //! Combi [](float tpcNSigmaPr, float tofNSigmaPr) -> float { return pid_tpc_tof_utils::combineNSigma(tpcNSigmaPr, tofNSigmaPr); }); DECLARE_SOA_DYNAMIC_COLUMN(TPCTOFNSigmaPrProng2, tpcTofNSigmaPrProng2, //! Combination of NsigmaTPC and NsigmaTOF, o2-linter: disable=name/o2-column (written to disk) [](float tpcNSigmaPr, float tofNSigmaPr) -> float { return pid_tpc_tof_utils::combineNSigma(tpcNSigmaPr, tofNSigmaPr); }); +DECLARE_SOA_DYNAMIC_COLUMN(TPCTOFNSigmaMuPos, tpcTofNSigmaMuPos, //! Combination of NsigmaTPC and NsigmaTOF, o2-linter: disable=name/o2-column (written to disk) + [](float tpcNSigmaMu, float tofNSigmaMu) -> float { return pid_tpc_tof_utils::combineNSigma(tpcNSigmaMu, tofNSigmaMu); }); +DECLARE_SOA_DYNAMIC_COLUMN(TPCTOFNSigmaMuNeg, tpcTofNSigmaMuNeg, //! Combination of NsigmaTPC and NsigmaTOF, o2-linter: disable=name/o2-column (written to disk) + [](float tpcNSigmaMu, float tofNSigmaMu) -> float { return pid_tpc_tof_utils::combineNSigma(tpcNSigmaMu, tofNSigmaMu); }); +DECLARE_SOA_DYNAMIC_COLUMN(TPCTOFNSigmaElPos, tpcTofNSigmaElPos, //! Combination of NsigmaTPC and NsigmaTOF, o2-linter: disable=name/o2-column (written to disk) + [](float tpcNSigmaEl, float tofNSigmaEl) -> float { return pid_tpc_tof_utils::combineNSigma(tpcNSigmaEl, tofNSigmaEl); }); +DECLARE_SOA_DYNAMIC_COLUMN(TPCTOFNSigmaElNeg, tpcTofNSigmaElNeg, //! Combination of NsigmaTPC and NsigmaTOF, o2-linter: disable=name/o2-column (written to disk) + [](float tpcNSigmaEl, float tofNSigmaEl) -> float { return pid_tpc_tof_utils::combineNSigma(tpcNSigmaEl, tofNSigmaEl); }); } // namespace hf_track_pid_reduced // CAREFUL: need to follow convention [Name = Description + 's'] in DECLARE_SOA_TABLE(Name, "AOD", Description) @@ -668,6 +684,20 @@ DECLARE_SOA_TABLE(HfRedJpsiCov, "AOD", "HFREDJPSICOV", //! Table with J/Psi cand hf_jpsi_cand_reduced::C1PtTglDauPos, hf_jpsi_cand_reduced::C1PtTglDauNeg, hf_jpsi_cand_reduced::C1Pt21Pt2DauPos, hf_jpsi_cand_reduced::C1Pt21Pt2DauNeg); +DECLARE_SOA_TABLE(HfRedJpsiDauPid, "AOD", "HFREDJPSIDAUPID", //! Table with J/Psi daughter PID information (muon, electron) for reduced workflow + hf_track_pid_reduced::TPCNSigmaMuPos, + hf_track_pid_reduced::TPCNSigmaMuNeg, + hf_track_pid_reduced::TPCNSigmaElPos, + hf_track_pid_reduced::TPCNSigmaElNeg, + hf_track_pid_reduced::TOFNSigmaMuPos, + hf_track_pid_reduced::TOFNSigmaMuNeg, + hf_track_pid_reduced::TOFNSigmaElPos, + hf_track_pid_reduced::TOFNSigmaElNeg, + hf_track_pid_reduced::TPCTOFNSigmaMuPos, + hf_track_pid_reduced::TPCTOFNSigmaMuNeg, + hf_track_pid_reduced::TPCTOFNSigmaElPos, + hf_track_pid_reduced::TPCTOFNSigmaElNeg); + DECLARE_SOA_TABLE(HfRedPidDau0s_000, "AOD", "HFREDPIDDAU0", //! hf_track_pid_reduced::TPCNSigmaPiProng0, hf_track_pid_reduced::TOFNSigmaPiProng0, diff --git a/PWGHF/D2H/TableProducer/candidateCreatorBToJpsiReduced.cxx b/PWGHF/D2H/TableProducer/candidateCreatorBToJpsiReduced.cxx index 7d2b84ddf8a..ba5527cfcab 100644 --- a/PWGHF/D2H/TableProducer/candidateCreatorBToJpsiReduced.cxx +++ b/PWGHF/D2H/TableProducer/candidateCreatorBToJpsiReduced.cxx @@ -75,6 +75,8 @@ struct HfCandidateCreatorBToJpsiReduced { Configurable maxDZIni{"maxDZIni", 4., "reject (if>0) PCA candidate if tracks DZ exceeds threshold"}; Configurable minParamChange{"minParamChange", 1.e-3, "stop iterations if largest change of any B+ is smaller than this"}; Configurable minRelChi2Change{"minRelChi2Change", 0.9, "stop iterations is chi2/chi2old > this"}; + Configurable maxChi2JPsiVtx{"maxChi2JPsiVtx", 1e9, "maximum value of chi2 for JPsi vertex computed with DCAFitter"}; + Configurable maxChi2BhadVtx{"maxChi2BhadVtx", 0.9, "maximum value of chi2 for B-hadron vertex computed with DCAFitter"}; // selection Configurable invMassWindowJpsiHadTolerance{"invMassWindowJpsiHadTolerance", 0.01, "invariant-mass window tolerance for J/Psi K pair preselections (GeV/c2)"}; @@ -82,7 +84,7 @@ struct HfCandidateCreatorBToJpsiReduced { float myInvMassWindowJpsiK{1.}, myInvMassWindowJpsiK0Star{1.}, myInvMassWindowJpsiPhi{1.}; // variable that will store the value of invMassWindowJpsiK (defined in dataCreatorJpsiKReduced.cxx) double massBplus{o2::constants::physics::MassBPlus}, massB0{o2::constants::physics::MassB0}, massBs{o2::constants::physics::MassBS}; double bz{0.}; - o2::vertexing::DCAFitterN<2> df2; // fitter for B vertex (2-prong vertex fitter) + o2::vertexing::DCAFitterN<2> df2; // fitter for JPsi vertex (2-prong vertex fitter) o2::vertexing::DCAFitterN<3> df3; // fitter for B vertex (3-prong vertex fitter) o2::vertexing::DCAFitterN<4> df4; // fitter for B vertex (4-prong vertex fitter) @@ -104,6 +106,7 @@ struct HfCandidateCreatorBToJpsiReduced { df2.setMaxDZIni(maxDZIni); df2.setMinParamChange(minParamChange); df2.setMinRelChi2Change(minRelChi2Change); + df2.setMaxChi2(maxChi2JPsiVtx); df2.setUseAbsDCA(useAbsDCA); df2.setWeightedFinalPCA(useWeightedFinalPCA); df2.setMatCorrType(noMatCorr); @@ -114,6 +117,7 @@ struct HfCandidateCreatorBToJpsiReduced { df3.setMaxDZIni(maxDZIni); df3.setMinParamChange(minParamChange); df3.setMinRelChi2Change(minRelChi2Change); + df3.setMaxChi2(maxChi2BhadVtx); df3.setUseAbsDCA(useAbsDCA); df3.setWeightedFinalPCA(useWeightedFinalPCA); df3.setMatCorrType(noMatCorr); @@ -123,6 +127,7 @@ struct HfCandidateCreatorBToJpsiReduced { df4.setMaxDZIni(maxDZIni); df4.setMinParamChange(minParamChange); df4.setMinRelChi2Change(minRelChi2Change); + df3.setMaxChi2(maxChi2BhadVtx); df4.setUseAbsDCA(useAbsDCA); df4.setWeightedFinalPCA(useWeightedFinalPCA); df4.setMatCorrType(noMatCorr); diff --git a/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx b/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx index 11e4515893c..f4cfcaaa40c 100644 --- a/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx +++ b/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx @@ -130,6 +130,7 @@ struct HfDataCreatorJpsiHadReduced { // J/Psi related tables Produces hfJpsi; Produces hfRedJpsiCov; + Produces hfRedJpsiDauPid; // Ka bachelor related tables Produces hfTrackLfDau0; Produces hfTrackCovLfDau0; @@ -155,6 +156,8 @@ struct HfDataCreatorJpsiHadReduced { Configurable maxDZIni{"maxDZIni", 4., "reject (if>0) PCA candidate if tracks DZ exceeds threshold"}; Configurable minParamChange{"minParamChange", 1.e-3, "stop iterations if largest change of any B0 is smaller than this"}; Configurable minRelChi2Change{"minRelChi2Change", 0.9, "stop iterations is chi2/chi2old > this"}; + Configurable maxChi2JPsiVtx{"maxChi2JPsiVtx", 1e9, "maximum value of chi2 for JPsi vertex computed with DCAFitter"}; + Configurable maxChi2BhadVtx{"maxChi2BhadVtx", 0.9, "maximum value of chi2 for B-hadron vertex computed with DCAFitter"}; struct : o2::framework::ConfigurableGroup { // TPC PID @@ -191,7 +194,7 @@ struct HfDataCreatorJpsiHadReduced { // O2DatabasePDG service Service pdg{}; - using TracksPid = soa::Join; + using TracksPid = soa::Join; using TracksPidWithSel = soa::Join; using TracksPidWithSelAndMc = soa::Join; using CollisionsWCMcLabels = soa::Join; @@ -298,6 +301,7 @@ struct HfDataCreatorJpsiHadReduced { df2.setMaxDZIni(maxDZIni); df2.setMinParamChange(minParamChange); df2.setMinRelChi2Change(minRelChi2Change); + df2.setMaxChi2(maxChi2JPsiVtx); df2.setUseAbsDCA(useAbsDCA); df2.setWeightedFinalPCA(useWeightedFinalPCA); df2.setMatCorrType(noMatCorr); @@ -308,6 +312,7 @@ struct HfDataCreatorJpsiHadReduced { df3.setMaxDZIni(maxDZIni); df3.setMinParamChange(minParamChange); df3.setMinRelChi2Change(minRelChi2Change); + df3.setMaxChi2(maxChi2BhadVtx); df3.setUseAbsDCA(useAbsDCA); df3.setWeightedFinalPCA(useWeightedFinalPCA); df3.setMatCorrType(noMatCorr); @@ -317,6 +322,7 @@ struct HfDataCreatorJpsiHadReduced { df4.setMaxDZIni(maxDZIni); df4.setMinParamChange(minParamChange); df4.setMinRelChi2Change(minRelChi2Change); + df4.setMaxChi2(maxChi2BhadVtx); df4.setUseAbsDCA(useAbsDCA); df4.setWeightedFinalPCA(useWeightedFinalPCA); df4.setMatCorrType(noMatCorr); @@ -1458,6 +1464,10 @@ struct HfDataCreatorJpsiHadReduced { trackPosParCov.getSigma1PtSnp(), trackNegParCov.getSigma1PtSnp(), trackPosParCov.getSigma1PtTgl(), trackNegParCov.getSigma1PtTgl(), trackPosParCov.getSigma1Pt2(), trackNegParCov.getSigma1Pt2()); + hfRedJpsiDauPid(trackPos.tpcNSigmaMu(), trackNeg.tpcNSigmaMu(), + trackPos.tpcNSigmaEl(), trackNeg.tpcNSigmaEl(), + trackPos.tofNSigmaMu(), trackNeg.tofNSigmaMu(), + trackPos.tofNSigmaEl(), trackNeg.tofNSigmaEl()); fillHfReducedCollision = true; } } // candsJpsi loop diff --git a/PWGHF/D2H/Tasks/taskB0ToJpsiK0StarReduced.cxx b/PWGHF/D2H/Tasks/taskB0ToJpsiK0StarReduced.cxx index 47b1ef9a158..3870a9387c7 100644 --- a/PWGHF/D2H/Tasks/taskB0ToJpsiK0StarReduced.cxx +++ b/PWGHF/D2H/Tasks/taskB0ToJpsiK0StarReduced.cxx @@ -65,6 +65,8 @@ namespace o2::aod namespace hf_cand_b0tojpsik0star_lite { DECLARE_SOA_COLUMN(PtJpsi, ptJpsi, float); //! Transverse momentum of Jpsi daughter candidate (GeV/c) +DECLARE_SOA_COLUMN(PtJpsiDauPos, ptJpsiDauPos, float); //! Transverse momentum of Jpsi positive daughter candidate (GeV/c) +DECLARE_SOA_COLUMN(PtJpsiDauNeg, ptJpsiDauNeg, float); //! Transverse momentum of Jpsi negative daughter candidate (GeV/c) DECLARE_SOA_COLUMN(PtBach0, ptBach0, float); //! Transverse momentum of bachelor kaon(<- K*0) (GeV/c) DECLARE_SOA_COLUMN(PtBach1, ptBach1, float); //! Transverse momentum of bachelor kaon(<- K*0) (GeV/c) DECLARE_SOA_COLUMN(ItsNClsJpsiDauPos, itsNClsJpsiDauPos, int); //! Number of clusters in ITS @@ -115,6 +117,12 @@ DECLARE_SOA_COLUMN(NSigTpcTofMuJpsiDauPos, nSigTpcTofMuJpsiDauPos, float); DECLARE_SOA_COLUMN(NSigTpcMuJpsiDauNeg, nSigTpcMuJpsiDauNeg, float); //! TPC Nsigma separation for Jpsi DauNeg with muon mass hypothesis DECLARE_SOA_COLUMN(NSigTofMuJpsiDauNeg, nSigTofMuJpsiDauNeg, float); //! TOF Nsigma separation for Jpsi DauNeg with muon mass hypothesis DECLARE_SOA_COLUMN(NSigTpcTofMuJpsiDauNeg, nSigTpcTofMuJpsiDauNeg, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong1 with muon mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcElJpsiDauPos, nSigTpcElJpsiDauPos, float); //! TPC Nsigma separation for Jpsi DauPos with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTofElJpsiDauPos, nSigTofElJpsiDauPos, float); //! TOF Nsigma separation for Jpsi DauPos with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcTofElJpsiDauPos, nSigTpcTofElJpsiDauPos, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong0 with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcElJpsiDauNeg, nSigTpcElJpsiDauNeg, float); //! TPC Nsigma separation for Jpsi DauNeg with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTofElJpsiDauNeg, nSigTofElJpsiDauNeg, float); //! TOF Nsigma separation for Jpsi DauNeg with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcTofElJpsiDauNeg, nSigTpcTofElJpsiDauNeg, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong1 with electron mass hypothesis DECLARE_SOA_COLUMN(DecayLength, decayLength, float); //! Decay length of candidate (cm) DECLARE_SOA_COLUMN(DecayLengthXY, decayLengthXY, float); //! Transverse decay length of candidate (cm) DECLARE_SOA_COLUMN(DecayLengthNormalised, decayLengthNormalised, float); //! Normalised decay length of candidate @@ -168,16 +176,30 @@ DECLARE_SOA_TABLE(HfRedCandB0Lites, "AOD", "HFREDCANDB0LITE", //! Table with som hf_cand_b0tojpsik0star_lite::ImpactParameterLfTrack0, hf_cand_b0tojpsik0star_lite::ImpactParameterLfTrack1, // Jpsi daughter features + hf_cand_b0tojpsik0star_lite::PtJpsiDauPos, hf_cand_b0tojpsik0star_lite::ItsNClsJpsiDauPos, hf_cand_b0tojpsik0star_lite::TpcNClsCrossedRowsJpsiDauPos, hf_cand_b0tojpsik0star_lite::ItsChi2NClJpsiDauPos, hf_cand_b0tojpsik0star_lite::TpcChi2NClJpsiDauPos, hf_cand_b0tojpsik0star_lite::AbsEtaJpsiDauPos, + hf_cand_b0tojpsik0star_lite::PtJpsiDauNeg, hf_cand_b0tojpsik0star_lite::ItsNClsJpsiDauNeg, hf_cand_b0tojpsik0star_lite::TpcNClsCrossedRowsJpsiDauNeg, hf_cand_b0tojpsik0star_lite::ItsChi2NClJpsiDauNeg, hf_cand_b0tojpsik0star_lite::TpcChi2NClJpsiDauNeg, hf_cand_b0tojpsik0star_lite::AbsEtaJpsiDauNeg, + hf_cand_b0tojpsik0star_lite::NSigTpcMuJpsiDauPos, + hf_cand_b0tojpsik0star_lite::NSigTofMuJpsiDauPos, + hf_cand_b0tojpsik0star_lite::NSigTpcTofMuJpsiDauPos, + hf_cand_b0tojpsik0star_lite::NSigTpcMuJpsiDauNeg, + hf_cand_b0tojpsik0star_lite::NSigTofMuJpsiDauNeg, + hf_cand_b0tojpsik0star_lite::NSigTpcTofMuJpsiDauNeg, + hf_cand_b0tojpsik0star_lite::NSigTpcElJpsiDauPos, + hf_cand_b0tojpsik0star_lite::NSigTofElJpsiDauPos, + hf_cand_b0tojpsik0star_lite::NSigTpcTofElJpsiDauPos, + hf_cand_b0tojpsik0star_lite::NSigTpcElJpsiDauNeg, + hf_cand_b0tojpsik0star_lite::NSigTofElJpsiDauNeg, + hf_cand_b0tojpsik0star_lite::NSigTpcTofElJpsiDauNeg, // K0* features hf_cand_b0tojpsik0star_lite::PtBach0, hf_cand_b0tojpsik0star_lite::ItsNClsLfTrack0, @@ -272,6 +294,7 @@ struct HfTaskB0ToJpsiK0StarReduced { o2::ccdb::CcdbApi ccdbApi; using TracksKaon = soa::Join; + using JPsis = soa::Join; std::vector outputMl; // Filter filterSelectCandidates = (aod::hf_sel_candidate_bplus::isSelBsToJpsiPi >= selectionFlagBs); @@ -376,14 +399,14 @@ struct HfTaskB0ToJpsiK0StarReduced { /// \param candidatesJpsi is the table with Jpsi candidates template void fillCand(Cand const& candidate, - aod::HfRedJpsis const& /*candidatesJpsi*/, + JPsis const& /*candidatesJpsi*/, aod::HfRedBach0Tracks const&, aod::HfRedBach1Tracks const&) { auto ptCandB0 = candidate.pt(); auto invMassB0KPi = HfHelper::invMassB0ToJpsiK0Star(candidate, useJpsiPdgMass, useK0StarPdgMass, true); auto invMassB0PiK = HfHelper::invMassB0ToJpsiK0Star(candidate, useJpsiPdgMass, useK0StarPdgMass, false); - auto candJpsi = candidate.template jpsi_as(); + auto candJpsi = candidate.template jpsi_as(); auto candLfDau0 = candidate.template prong0K0Star_as(); auto candLfDau1 = candidate.template prong1K0Star_as(); auto const pVecMu0 = candidate.pVectorProng0(); @@ -391,6 +414,8 @@ struct HfTaskB0ToJpsiK0StarReduced { auto const pVecLfDau0 = candidate.pVectorProng2(); auto const pVecLfDau1 = candidate.pVectorProng3(); auto ptJpsi = RecoDecay::pt(pVecMu0, pVecMu1); + auto ptMuPos = RecoDecay::pt(pVecMu0); + auto ptMuNeg = RecoDecay::pt(pVecMu1); auto ptK0Star = RecoDecay::pt(pVecLfDau0, pVecLfDau1); auto invMassJpsi = RecoDecay::m(std::array{pVecMu0, pVecMu1}, std::array{o2::constants::physics::MassMuonPlus, o2::constants::physics::MassMuonMinus}); auto invMassK0StarKPi = RecoDecay::m(std::array{pVecLfDau0, pVecLfDau1}, std::array{o2::constants::physics::MassKPlus, o2::constants::physics::MassPiPlus}); @@ -575,16 +600,30 @@ struct HfTaskB0ToJpsiK0StarReduced { candidate.impactParameter1(), candidate.impactParameter2(), candidate.impactParameter3(), + ptMuPos, candJpsi.itsNClsDauPos(), candJpsi.tpcNClsCrossedRowsDauPos(), candJpsi.itsChi2NClDauPos(), candJpsi.tpcChi2NClDauPos(), absEta(candJpsi.tglDauPos()), + ptMuNeg, candJpsi.itsNClsDauNeg(), candJpsi.tpcNClsCrossedRowsDauNeg(), candJpsi.itsChi2NClDauNeg(), candJpsi.tpcChi2NClDauNeg(), absEta(candJpsi.tglDauNeg()), + candJpsi.tpcNSigmaMuPos(), + candJpsi.tofNSigmaMuPos(), + candJpsi.tpcTofNSigmaMuPos(), + candJpsi.tpcNSigmaMuNeg(), + candJpsi.tofNSigmaMuNeg(), + candJpsi.tpcTofNSigmaMuNeg(), + candJpsi.tpcNSigmaElPos(), + candJpsi.tofNSigmaElPos(), + candJpsi.tpcTofNSigmaElPos(), + candJpsi.tpcNSigmaElNeg(), + candJpsi.tofNSigmaElNeg(), + candJpsi.tpcTofNSigmaElNeg(), // K*0 daughter features candLfDau0.pt(), candLfDau0.itsNCls(), @@ -649,7 +688,7 @@ struct HfTaskB0ToJpsiK0StarReduced { // Process functions void processData(aod::HfRedCandB0ToJpsiK0Star const& candidates, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaon0Tracks, aod::HfRedBach1Tracks const& kaon1Tracks) { @@ -663,7 +702,7 @@ struct HfTaskB0ToJpsiK0StarReduced { PROCESS_SWITCH(HfTaskB0ToJpsiK0StarReduced, processData, "Process data without ML for B0", true); void processDataWithB0Ml(aod::HfRedCandB0ToJpsiK0Star const& candidates, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaon0Tracks, aod::HfRedBach1Tracks const& kaon1Tracks) { @@ -678,7 +717,7 @@ struct HfTaskB0ToJpsiK0StarReduced { void processMc(soa::Join const& candidates, aod::HfMcGenRedB0s const& mcParticles, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaon0Tracks, aod::HfRedBach1Tracks const& kaon1Tracks) { @@ -699,7 +738,7 @@ struct HfTaskB0ToJpsiK0StarReduced { void processMcWithB0Ml(soa::Join const& candidates, aod::HfMcGenRedB0s const& mcParticles, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaon0Tracks, aod::HfRedBach1Tracks const& kaon1Tracks) { diff --git a/PWGHF/D2H/Tasks/taskBplusToJpsiKReduced.cxx b/PWGHF/D2H/Tasks/taskBplusToJpsiKReduced.cxx index 9c40de7de92..d685a6decc9 100644 --- a/PWGHF/D2H/Tasks/taskBplusToJpsiKReduced.cxx +++ b/PWGHF/D2H/Tasks/taskBplusToJpsiKReduced.cxx @@ -65,6 +65,8 @@ namespace o2::aod namespace hf_cand_bplustojpsik_lite { DECLARE_SOA_COLUMN(PtJpsi, ptJpsi, float); //! Transverse momentum of Jpsi daughter candidate (GeV/c) +DECLARE_SOA_COLUMN(PtJpsiDauPos, ptJpsiDauPos, float); //! Transverse momentum of Jpsi positive daughter candidate (GeV/c) +DECLARE_SOA_COLUMN(PtJpsiDauNeg, ptJpsiDauNeg, float); //! Transverse momentum of Jpsi negative daughter candidate (GeV/c) DECLARE_SOA_COLUMN(PtBach, ptBach, float); //! Transverse momentum of bachelor kaon (GeV/c) DECLARE_SOA_COLUMN(ItsNClsJpsiDauPos, itsNClsJpsiDauPos, int); //! Number of clusters in ITS DECLARE_SOA_COLUMN(TpcNClsCrossedRowsJpsiDauPos, tpcNClsCrossedRowsJpsiDauPos, int); //! Number of TPC crossed rows @@ -99,6 +101,12 @@ DECLARE_SOA_COLUMN(NSigTpcTofMuJpsiDauPos, nSigTpcTofMuJpsiDauPos, float); DECLARE_SOA_COLUMN(NSigTpcMuJpsiDauNeg, nSigTpcMuJpsiDauNeg, float); //! TPC Nsigma separation for Jpsi DauNeg with muon mass hypothesis DECLARE_SOA_COLUMN(NSigTofMuJpsiDauNeg, nSigTofMuJpsiDauNeg, float); //! TOF Nsigma separation for Jpsi DauNeg with muon mass hypothesis DECLARE_SOA_COLUMN(NSigTpcTofMuJpsiDauNeg, nSigTpcTofMuJpsiDauNeg, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong1 with muon mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcElJpsiDauPos, nSigTpcElJpsiDauPos, float); //! TPC Nsigma separation for Jpsi DauPos with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTofElJpsiDauPos, nSigTofElJpsiDauPos, float); //! TOF Nsigma separation for Jpsi DauPos with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcTofElJpsiDauPos, nSigTpcTofElJpsiDauPos, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong0 with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcElJpsiDauNeg, nSigTpcElJpsiDauNeg, float); //! TPC Nsigma separation for Jpsi DauNeg with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTofElJpsiDauNeg, nSigTofElJpsiDauNeg, float); //! TOF Nsigma separation for Jpsi DauNeg with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcTofElJpsiDauNeg, nSigTpcTofElJpsiDauNeg, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong1 with electron mass hypothesis DECLARE_SOA_COLUMN(DecayLength, decayLength, float); //! Decay length of candidate (cm) DECLARE_SOA_COLUMN(DecayLengthXY, decayLengthXY, float); //! Transverse decay length of candidate (cm) DECLARE_SOA_COLUMN(DecayLengthNormalised, decayLengthNormalised, float); //! Normalised decay length of candidate @@ -143,16 +151,30 @@ DECLARE_SOA_TABLE(HfRedCandBpLites, "AOD", "HFREDCANDBPLITE", //! Table with som hf_cand_bplustojpsik_lite::ImpactParameterJpsiDauPos, hf_cand_bplustojpsik_lite::ImpactParameterJpsiDauNeg, // Jpsi daughter features + hf_cand_bplustojpsik_lite::PtJpsiDauPos, hf_cand_bplustojpsik_lite::ItsNClsJpsiDauPos, hf_cand_bplustojpsik_lite::TpcNClsCrossedRowsJpsiDauPos, hf_cand_bplustojpsik_lite::ItsChi2NClJpsiDauPos, hf_cand_bplustojpsik_lite::TpcChi2NClJpsiDauPos, hf_cand_bplustojpsik_lite::AbsEtaJpsiDauPos, + hf_cand_bplustojpsik_lite::PtJpsiDauNeg, hf_cand_bplustojpsik_lite::ItsNClsJpsiDauNeg, hf_cand_bplustojpsik_lite::TpcNClsCrossedRowsJpsiDauNeg, hf_cand_bplustojpsik_lite::ItsChi2NClJpsiDauNeg, hf_cand_bplustojpsik_lite::TpcChi2NClJpsiDauNeg, hf_cand_bplustojpsik_lite::AbsEtaJpsiDauNeg, + hf_cand_bplustojpsik_lite::NSigTpcMuJpsiDauPos, + hf_cand_bplustojpsik_lite::NSigTofMuJpsiDauPos, + hf_cand_bplustojpsik_lite::NSigTpcTofMuJpsiDauPos, + hf_cand_bplustojpsik_lite::NSigTpcMuJpsiDauNeg, + hf_cand_bplustojpsik_lite::NSigTofMuJpsiDauNeg, + hf_cand_bplustojpsik_lite::NSigTpcTofMuJpsiDauNeg, + hf_cand_bplustojpsik_lite::NSigTpcElJpsiDauPos, + hf_cand_bplustojpsik_lite::NSigTofElJpsiDauPos, + hf_cand_bplustojpsik_lite::NSigTpcTofElJpsiDauPos, + hf_cand_bplustojpsik_lite::NSigTpcElJpsiDauNeg, + hf_cand_bplustojpsik_lite::NSigTofElJpsiDauNeg, + hf_cand_bplustojpsik_lite::NSigTpcTofElJpsiDauNeg, // kaon features hf_cand_bplustojpsik_lite::PtBach, hf_cand_bplustojpsik_lite::ImpactParameterLfTrack0, @@ -243,6 +265,7 @@ struct HfTaskBplusToJpsiKReduced { o2::ccdb::CcdbApi ccdbApi; using TracksKaon = soa::Join; + using JPsis = soa::Join; std::vector outputMl; // Filter filterSelectCandidates = (aod::hf_sel_candidate_bplus::isSelBplusToJpsiPi >= selectionFlagBplus); @@ -337,16 +360,18 @@ struct HfTaskBplusToJpsiKReduced { /// \param candidatesJpsi is the table with Jpsi candidates template void fillCand(Cand const& candidate, - aod::HfRedJpsis const& /*candidatesJpsi*/, + JPsis const& /*candidatesJpsi*/, aod::HfRedBach0Tracks const&) { auto ptCandBplus = candidate.pt(); auto invMassBplus = HfHelper::invMassBplusToJpsiK(candidate, useJpsiPdgMass); - auto candJpsi = candidate.template jpsi_as(); + auto candJpsi = candidate.template jpsi_as(); auto candKa = candidate.template bachKa_as(); auto const pVecMu0 = candidate.pVectorProng0(); auto const pVecMu1 = candidate.pVectorProng1(); auto ptJpsi = RecoDecay::pt(pVecMu0, pVecMu1); + auto ptMuPos = RecoDecay::pt(pVecMu0); + auto ptMuNeg = RecoDecay::pt(pVecMu1); auto invMassJpsi = RecoDecay::m(std::array{pVecMu0, pVecMu1}, std::array{o2::constants::physics::MassMuonPlus, o2::constants::physics::MassMuonMinus}); uint8_t statusBplus = 0; @@ -440,16 +465,30 @@ struct HfTaskBplusToJpsiKReduced { ptJpsi, candidate.impactParameter0(), candidate.impactParameter1(), + ptMuPos, candJpsi.itsNClsDauPos(), candJpsi.tpcNClsCrossedRowsDauPos(), candJpsi.itsChi2NClDauPos(), candJpsi.tpcChi2NClDauPos(), absEta(candJpsi.tglDauPos()), + ptMuNeg, candJpsi.itsNClsDauNeg(), candJpsi.tpcNClsCrossedRowsDauNeg(), candJpsi.itsChi2NClDauNeg(), candJpsi.tpcChi2NClDauNeg(), absEta(candJpsi.tglDauNeg()), + candJpsi.tpcNSigmaMuPos(), + candJpsi.tofNSigmaMuPos(), + candJpsi.tpcTofNSigmaMuPos(), + candJpsi.tpcNSigmaMuNeg(), + candJpsi.tofNSigmaMuNeg(), + candJpsi.tpcTofNSigmaMuNeg(), + candJpsi.tpcNSigmaElPos(), + candJpsi.tofNSigmaElPos(), + candJpsi.tpcTofNSigmaElPos(), + candJpsi.tpcNSigmaElNeg(), + candJpsi.tofNSigmaElNeg(), + candJpsi.tpcTofNSigmaElNeg(), // kaon features candidate.ptProng2(), candidate.impactParameter2(), @@ -493,7 +532,7 @@ struct HfTaskBplusToJpsiKReduced { // Process functions void processData(aod::HfRedCandBplusToJpsiK const& candidates, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaonTracks) { for (const auto& candidate : candidates) { @@ -506,7 +545,7 @@ struct HfTaskBplusToJpsiKReduced { PROCESS_SWITCH(HfTaskBplusToJpsiKReduced, processData, "Process data without ML for B+", true); void processDataWithBplusMl(aod::HfRedCandBplusToJpsiK const& candidates, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaonTracks) { for (const auto& candidate : candidates) { @@ -520,7 +559,7 @@ struct HfTaskBplusToJpsiKReduced { void processMc(soa::Join const& candidates, aod::HfMcGenRedBps const& mcParticles, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaonTracks) { // MC rec @@ -540,7 +579,7 @@ struct HfTaskBplusToJpsiKReduced { void processMcWithBplusMl(soa::Join const& candidates, aod::HfMcGenRedBps const& mcParticles, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaonTracks) { // MC rec diff --git a/PWGHF/D2H/Tasks/taskBsToJpsiPhiReduced.cxx b/PWGHF/D2H/Tasks/taskBsToJpsiPhiReduced.cxx index 1a67cee437c..51016464d08 100644 --- a/PWGHF/D2H/Tasks/taskBsToJpsiPhiReduced.cxx +++ b/PWGHF/D2H/Tasks/taskBsToJpsiPhiReduced.cxx @@ -65,6 +65,8 @@ namespace o2::aod namespace hf_cand_bstojpsiphi_lite { DECLARE_SOA_COLUMN(PtJpsi, ptJpsi, float); //! Transverse momentum of Jpsi daughter candidate (GeV/c) +DECLARE_SOA_COLUMN(PtJpsiDauPos, ptJpsiDauPos, float); //! Transverse momentum of Jpsi positive daughter candidate (GeV/c) +DECLARE_SOA_COLUMN(PtJpsiDauNeg, ptJpsiDauNeg, float); //! Transverse momentum of Jpsi negative daughter candidate (GeV/c) DECLARE_SOA_COLUMN(PtBach0, ptBach0, float); //! Transverse momentum of bachelor kaon(<- phi) (GeV/c) DECLARE_SOA_COLUMN(PtBach1, ptBach1, float); //! Transverse momentum of bachelor kaon(<- phi) (GeV/c) DECLARE_SOA_COLUMN(ItsNClsJpsiDauPos, itsNClsJpsiDauPos, int); //! Number of clusters in ITS @@ -109,6 +111,12 @@ DECLARE_SOA_COLUMN(NSigTpcTofMuJpsiDauPos, nSigTpcTofMuJpsiDauPos, float); DECLARE_SOA_COLUMN(NSigTpcMuJpsiDauNeg, nSigTpcMuJpsiDauNeg, float); //! TPC Nsigma separation for Jpsi DauNeg with muon mass hypothesis DECLARE_SOA_COLUMN(NSigTofMuJpsiDauNeg, nSigTofMuJpsiDauNeg, float); //! TOF Nsigma separation for Jpsi DauNeg with muon mass hypothesis DECLARE_SOA_COLUMN(NSigTpcTofMuJpsiDauNeg, nSigTpcTofMuJpsiDauNeg, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong1 with muon mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcElJpsiDauPos, nSigTpcElJpsiDauPos, float); //! TPC Nsigma separation for Jpsi DauPos with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTofElJpsiDauPos, nSigTofElJpsiDauPos, float); //! TOF Nsigma separation for Jpsi DauPos with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcTofElJpsiDauPos, nSigTpcTofElJpsiDauPos, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong0 with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcElJpsiDauNeg, nSigTpcElJpsiDauNeg, float); //! TPC Nsigma separation for Jpsi DauNeg with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTofElJpsiDauNeg, nSigTofElJpsiDauNeg, float); //! TOF Nsigma separation for Jpsi DauNeg with electron mass hypothesis +DECLARE_SOA_COLUMN(NSigTpcTofElJpsiDauNeg, nSigTpcTofElJpsiDauNeg, float); //! Combined TPC and TOF Nsigma separation for Jpsi prong1 with electron mass hypothesis DECLARE_SOA_COLUMN(DecayLength, decayLength, float); //! Decay length of candidate (cm) DECLARE_SOA_COLUMN(DecayLengthXY, decayLengthXY, float); //! Transverse decay length of candidate (cm) DECLARE_SOA_COLUMN(DecayLengthNormalised, decayLengthNormalised, float); //! Normalised decay length of candidate @@ -159,16 +167,30 @@ DECLARE_SOA_TABLE(HfRedCandBsLites, "AOD", "HFREDCANDBSLITE", //! Table with som hf_cand_bstojpsiphi_lite::ImpactParameterLfTrack0, hf_cand_bstojpsiphi_lite::ImpactParameterLfTrack1, // Jpsi daughter features + hf_cand_bstojpsiphi_lite::PtJpsiDauPos, hf_cand_bstojpsiphi_lite::ItsNClsJpsiDauPos, hf_cand_bstojpsiphi_lite::TpcNClsCrossedRowsJpsiDauPos, hf_cand_bstojpsiphi_lite::ItsChi2NClJpsiDauPos, hf_cand_bstojpsiphi_lite::TpcChi2NClJpsiDauPos, hf_cand_bstojpsiphi_lite::AbsEtaJpsiDauPos, + hf_cand_bstojpsiphi_lite::PtJpsiDauNeg, hf_cand_bstojpsiphi_lite::ItsNClsJpsiDauNeg, hf_cand_bstojpsiphi_lite::TpcNClsCrossedRowsJpsiDauNeg, hf_cand_bstojpsiphi_lite::ItsChi2NClJpsiDauNeg, hf_cand_bstojpsiphi_lite::TpcChi2NClJpsiDauNeg, hf_cand_bstojpsiphi_lite::AbsEtaJpsiDauNeg, + hf_cand_bstojpsiphi_lite::NSigTpcMuJpsiDauPos, + hf_cand_bstojpsiphi_lite::NSigTofMuJpsiDauPos, + hf_cand_bstojpsiphi_lite::NSigTpcTofMuJpsiDauPos, + hf_cand_bstojpsiphi_lite::NSigTpcMuJpsiDauNeg, + hf_cand_bstojpsiphi_lite::NSigTofMuJpsiDauNeg, + hf_cand_bstojpsiphi_lite::NSigTpcTofMuJpsiDauNeg, + hf_cand_bstojpsiphi_lite::NSigTpcElJpsiDauPos, + hf_cand_bstojpsiphi_lite::NSigTofElJpsiDauPos, + hf_cand_bstojpsiphi_lite::NSigTpcTofElJpsiDauPos, + hf_cand_bstojpsiphi_lite::NSigTpcElJpsiDauNeg, + hf_cand_bstojpsiphi_lite::NSigTofElJpsiDauNeg, + hf_cand_bstojpsiphi_lite::NSigTpcTofElJpsiDauNeg, // phi features hf_cand_bstojpsiphi_lite::PtBach0, hf_cand_bstojpsiphi_lite::ItsNClsLfTrack0, @@ -268,6 +290,7 @@ struct HfTaskBsToJpsiPhiReduced { o2::ccdb::CcdbApi ccdbApi; using TracksKaon = soa::Join; + using JPsis = soa::Join; std::vector outputMl; // Filter filterSelectCandidates = (aod::hf_sel_candidate_bplus::isSelBsToJpsiPi >= selectionFlagBs); @@ -364,13 +387,13 @@ struct HfTaskBsToJpsiPhiReduced { /// \param candidatesJpsi is the table with Jpsi candidates template void fillCand(Cand const& candidate, - aod::HfRedJpsis const& /*candidatesJpsi*/, + JPsis const& /*candidatesJpsi*/, aod::HfRedBach0Tracks const&, aod::HfRedBach1Tracks const&) { auto ptCandBs = candidate.pt(); auto invMassBs = HfHelper::invMassBsToJpsiPhi(candidate, useJpsiPdgMass, usePhiPdgMass); - auto candJpsi = candidate.template jpsi_as(); + auto candJpsi = candidate.template jpsi_as(); auto candKa0 = candidate.template prong0Phi_as(); auto candKa1 = candidate.template prong1Phi_as(); auto const pVecMu0 = candidate.pVectorProng0(); @@ -378,6 +401,8 @@ struct HfTaskBsToJpsiPhiReduced { auto const pVecKa0 = candidate.pVectorProng2(); auto const pVecKa1 = candidate.pVectorProng3(); auto ptJpsi = RecoDecay::pt(pVecMu0, pVecMu1); + auto ptMuPos = RecoDecay::pt(pVecMu0); + auto ptMuNeg = RecoDecay::pt(pVecMu1); auto ptPhi = RecoDecay::pt(pVecKa0, pVecKa1); auto invMassJpsi = RecoDecay::m(std::array{pVecMu0, pVecMu1}, std::array{o2::constants::physics::MassMuonPlus, o2::constants::physics::MassMuonMinus}); auto invMassPhi = RecoDecay::m(std::array{pVecKa0, pVecKa1}, std::array{o2::constants::physics::MassKPlus, o2::constants::physics::MassKPlus}); @@ -480,16 +505,30 @@ struct HfTaskBsToJpsiPhiReduced { candidate.impactParameter1(), candidate.impactParameter2(), candidate.impactParameter3(), + ptMuPos, candJpsi.itsNClsDauPos(), candJpsi.tpcNClsCrossedRowsDauPos(), candJpsi.itsChi2NClDauPos(), candJpsi.tpcChi2NClDauPos(), absEta(candJpsi.tglDauPos()), + ptMuNeg, candJpsi.itsNClsDauNeg(), candJpsi.tpcNClsCrossedRowsDauNeg(), candJpsi.itsChi2NClDauNeg(), candJpsi.tpcChi2NClDauNeg(), absEta(candJpsi.tglDauNeg()), + candJpsi.tpcNSigmaMuPos(), + candJpsi.tofNSigmaMuPos(), + candJpsi.tpcTofNSigmaMuPos(), + candJpsi.tpcNSigmaMuNeg(), + candJpsi.tofNSigmaMuNeg(), + candJpsi.tpcTofNSigmaMuNeg(), + candJpsi.tpcNSigmaElPos(), + candJpsi.tofNSigmaElPos(), + candJpsi.tpcTofNSigmaElPos(), + candJpsi.tpcNSigmaElNeg(), + candJpsi.tofNSigmaElNeg(), + candJpsi.tpcTofNSigmaElNeg(), // kaon features candKa0.pt(), candKa0.itsNCls(), @@ -542,7 +581,7 @@ struct HfTaskBsToJpsiPhiReduced { // Process functions void processData(aod::HfRedCandBsToJpsiPhi const& candidates, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaon0Tracks, aod::HfRedBach1Tracks const& kaon1Tracks) { @@ -556,7 +595,7 @@ struct HfTaskBsToJpsiPhiReduced { PROCESS_SWITCH(HfTaskBsToJpsiPhiReduced, processData, "Process data without ML for Bs", true); void processDataWithBsMl(aod::HfRedCandBsToJpsiPhi const& candidates, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaon0Tracks, aod::HfRedBach1Tracks const& kaon1Tracks) { @@ -571,7 +610,7 @@ struct HfTaskBsToJpsiPhiReduced { void processMc(soa::Join const& candidates, aod::HfMcGenRedBss const& mcParticles, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaon0Tracks, aod::HfRedBach1Tracks const& kaon1Tracks) { @@ -592,7 +631,7 @@ struct HfTaskBsToJpsiPhiReduced { void processMcWithBsMl(soa::Join const& candidates, aod::HfMcGenRedBss const& mcParticles, - aod::HfRedJpsis const& candidatesJpsi, + JPsis const& candidatesJpsi, aod::HfRedBach0Tracks const& kaon0Tracks, aod::HfRedBach1Tracks const& kaon1Tracks) {