From be1aea37517e42973b8abbd75dcd96e0cb9bf2f7 Mon Sep 17 00:00:00 2001 From: Daiki Sekihata Date: Wed, 13 May 2026 17:11:00 +0200 Subject: [PATCH] [PWGEM/Dilepton] add more variables in taggineHFE.cxx --- PWGEM/Dilepton/DataModel/lmeeMLTables.h | 72 +++++++++++++++--------- PWGEM/Dilepton/Tasks/taggingHFE.cxx | 74 ++++++++++++------------- PWGEM/Dilepton/Utils/SemiCharmTag.h | 9 ++- 3 files changed, 90 insertions(+), 65 deletions(-) diff --git a/PWGEM/Dilepton/DataModel/lmeeMLTables.h b/PWGEM/Dilepton/DataModel/lmeeMLTables.h index b332f509bb1..84ba7db9e85 100644 --- a/PWGEM/Dilepton/DataModel/lmeeMLTables.h +++ b/PWGEM/Dilepton/DataModel/lmeeMLTables.h @@ -202,39 +202,57 @@ DECLARE_SOA_COLUMN(SubGeneratorId, subGeneratorId, int); //! sub generator Id of namespace emmltrack { DECLARE_SOA_COLUMN(IsMotherFromBeauty, isMotherFromBeauty, bool); //! is b quark included in decay history +DECLARE_SOA_COLUMN(Signed1PtL, signedPtL, float); //! sign/pT of lepton +DECLARE_SOA_COLUMN(EtaL, etaL, float); //! eta of lepton +DECLARE_SOA_COLUMN(PhiL, phiL, float); //! phi of lepton +DECLARE_SOA_COLUMN(ImpParXYL, impParXYL, float); //! impact parameter for lepton in XY plane +DECLARE_SOA_COLUMN(ImpParZL, impParZL, float); //! impact parameter for lepton in Z plane +DECLARE_SOA_COLUMN(ImpParCYYL, impParCYYL, float); //! sigma of impact parameter for lepton in XY +DECLARE_SOA_COLUMN(ImpParCZYL, impParCZYL, float); //! sigma of impact parameter for lepton, correlaion term +DECLARE_SOA_COLUMN(ImpParCZZL, impParCZZL, float); //! sigma of impact parameter for lepton in Z DECLARE_SOA_COLUMN(PdgCodeMother, pdgCodeMother, int); //! pdg code of mother of lepton } // namespace emmltrack DECLARE_SOA_TABLE(EMMLLeptons, "AOD", "EMMLLEPTON", //! o2::soa::Index<>, collision::NumContrib, evsel::NumTracksInTimeRange, evsel::SumAmpFT0CInTimeRange, emmlevent::SubGeneratorId, - track::Signed1Pt, track::Eta, - track::DcaXY, track::DcaZ, o2::aod::track::CYY, o2::aod::track::CZY, o2::aod::track::CZZ, + emmltrack::Signed1PtL, emmltrack::EtaL, + emmltrack::ImpParXYL, emmltrack::ImpParZL, emmltrack::ImpParCYYL, emmltrack::ImpParCZYL, emmltrack::ImpParCZZL, emmltrack::IsMotherFromBeauty, emmltrack::PdgCodeMother); // iterators using EMMLLepton = EMMLLeptons::iterator; namespace emmllhpair { -DECLARE_SOA_INDEX_COLUMN(EMMLLepton, emmllepton); //! most propable emeventId +DECLARE_SOA_INDEX_COLUMN(EMMLLepton, emmllepton); //! most propable emeventId + +DECLARE_SOA_COLUMN(Signed1PtH, signedPtH, float); //! sign/pT of associated hadron +DECLARE_SOA_COLUMN(PtH, ptH, float); //! pT of associated hadron +DECLARE_SOA_COLUMN(EtaH, etaH, float); //! eta of associated hadron +DECLARE_SOA_COLUMN(PhiH, phiH, float); //! phi of associated hadron DECLARE_SOA_COLUMN(RapidityV0, rapidityV0, float); //! rapidity of associated V0 DECLARE_SOA_COLUMN(RapidityC, rapidityC, float); //! rapidity of associated Cascade -DECLARE_SOA_COLUMN(ImpParHXY, impParHXY, float); //! impact parameter for V0/Cascade in XY plane -DECLARE_SOA_COLUMN(ImpParHZ, impParHZ, float); //! impact parameter for V0/Cascade in Z plane -DECLARE_SOA_COLUMN(ImpParHCYY, impParHCYY, float); //! sigma of impact parameter for V0/Cascade in XY -DECLARE_SOA_COLUMN(ImpParHCZY, impParHCZY, float); //! sigma of impact parameter for V0/Cascade, correlaion term -DECLARE_SOA_COLUMN(ImpParHCZZ, impParHCZZ, float); //! sigma of impact parameter for V0/Cascade in Z +DECLARE_SOA_COLUMN(ImpParXYH, impParXYH, float); //! impact parameter for V0/Cascade in XY plane +DECLARE_SOA_COLUMN(ImpParZH, impParZH, float); //! impact parameter for V0/Cascade in Z plane +DECLARE_SOA_COLUMN(ImpParCYYH, impParCYYH, float); //! sigma of impact parameter for V0/Cascade in XY +DECLARE_SOA_COLUMN(ImpParCZYH, impParCZYH, float); //! sigma of impact parameter for V0/Cascade, correlaion term +DECLARE_SOA_COLUMN(ImpParCZZH, impParCZZH, float); //! sigma of impact parameter for V0/Cascade in Z -DECLARE_SOA_COLUMN(V0CosPA, v0copa, float); //! cosPA of V0 -DECLARE_SOA_COLUMN(V0CosPAXY, v0copaXY, float); //! cosPA of V0 in XY plane +DECLARE_SOA_COLUMN(V0CPA, v0cpa, float); //! cosPA of V0 +DECLARE_SOA_COLUMN(V0CPAXY, v0cpaXY, float); //! cosPA of V0 in XY plane +DECLARE_SOA_COLUMN(V0CPARZ, v0cpaRZ, float); //! cosPA of V0 in XY plane -DECLARE_SOA_COLUMN(CascCosPA, casccopa, float); //! cosPA of Cascade -DECLARE_SOA_COLUMN(CascCosPAXY, casccopaXY, float); //! cosPA of Cascade in XY plane +DECLARE_SOA_COLUMN(CascCPA, casccpa, float); //! cosPA of Cascade +DECLARE_SOA_COLUMN(CascCPAXY, casccpaXY, float); //! cosPA of Cascade in XY plane +DECLARE_SOA_COLUMN(CascCPARZ, casccpaRZ, float); //! cosPA of Cascade in RZ plane -DECLARE_SOA_COLUMN(Mass, mass, float); //! invariant mass of LH assuming kaon -DECLARE_SOA_COLUMN(DcaLH, dcalh, float); //! DCA between lepton and hadron -DECLARE_SOA_COLUMN(CosPA, cospa, float); //! flight direction of LH pair -DECLARE_SOA_COLUMN(CosPAXY, cospaXY, float); //! flight direction of LH pair in XY +// LH pair variables +DECLARE_SOA_COLUMN(MassLH, massLH, float); //! invariant mass of LH assuming pion +DECLARE_SOA_COLUMN(PtLH, ptLH, float); //! pT of LH pair +DECLARE_SOA_COLUMN(DcaLH, dcalh, float); //! DCA between lepton and hadron +DECLARE_SOA_COLUMN(CPA, cpa, float); //! cosine of pointing angle of LH pair +DECLARE_SOA_COLUMN(CPAXY, cpaXY, float); //! cosine of pointing angle of LH pair in XY +DECLARE_SOA_COLUMN(CPARZ, cpaRZ, float); //! cosine of pointing angle of LH pair in RZ DECLARE_SOA_COLUMN(Lxy, lxy, float); //! decay length of LH pair DECLARE_SOA_COLUMN(Lz, lz, float); //! decay length of LH pair @@ -256,12 +274,12 @@ DECLARE_SOA_COLUMN(FoundCommonMother, foundCommonMother, bool); //! decay length DECLARE_SOA_TABLE(EMMLLHPairs, "AOD", "EMMLLHPAIR", //! emmllhpair::EMMLLeptonId, - track::Signed1Pt, track::Eta, - track::DcaXY, track::DcaZ, o2::aod::track::CYY, o2::aod::track::CZY, o2::aod::track::CZZ, + emmllhpair::Signed1PtH, emmllhpair::EtaH, + emmllhpair::ImpParXYH, emmllhpair::ImpParZH, emmllhpair::ImpParCYYH, emmllhpair::ImpParCZYH, emmllhpair::ImpParCZZH, pidtpc::TPCNSigmaPi, pidtof::TOFNSigmaPi, pidtpc::TPCNSigmaKa, pidtof::TOFNSigmaKa, pidtpc::TPCNSigmaPr, pidtof::TOFNSigmaPr, - emmllhpair::Mass, emmllhpair::DcaLH, emmllhpair::CosPA, emmllhpair::CosPAXY, + emmllhpair::MassLH, emmllhpair::PtLH, emmllhpair::DcaLH, emmllhpair::CPA, emmllhpair::CPAXY, emmllhpair::CPARZ, emmllhpair::Lxy, emmllhpair::Lz, emmllhpair::Lxyz, emmllhpair::LxyErr, emmllhpair::LzErr, emmllhpair::LxyzErr, emmllhpair::ImpParXY, emmllhpair::ImpParZ, emmllhpair::ImpParCYY, emmllhpair::ImpParCZY, emmllhpair::ImpParCZZ, emmllhpair::PdgCodeH, emmllhpair::PdgCodeIM, emmllhpair::FoundCommonMother); @@ -270,10 +288,10 @@ using EMMLLHPair = EMMLLHPairs::iterator; DECLARE_SOA_TABLE(EMMLLV0Pairs, "AOD", "EMMLLV0PAIR", //! emmllhpair::EMMLLeptonId, - track::Pt, emmllhpair::RapidityV0, - emmllhpair::V0CosPA, emmllhpair::V0CosPAXY, - emmllhpair::ImpParHXY, emmllhpair::ImpParHZ, emmllhpair::ImpParHCYY, emmllhpair::ImpParHCZY, emmllhpair::ImpParHCZZ, - emmllhpair::Mass, emmllhpair::DcaLH, emmllhpair::CosPA, emmllhpair::CosPAXY, + emmllhpair::PtH, emmllhpair::RapidityV0, + emmllhpair::V0CPA, emmllhpair::V0CPAXY, emmllhpair::V0CPARZ, + emmllhpair::ImpParXYH, emmllhpair::ImpParZH, emmllhpair::ImpParCYYH, emmllhpair::ImpParCZYH, emmllhpair::ImpParCZZH, + emmllhpair::MassLH, emmllhpair::PtLH, emmllhpair::DcaLH, emmllhpair::CPA, emmllhpair::CPAXY, emmllhpair::CPARZ, emmllhpair::Lxy, emmllhpair::Lz, emmllhpair::Lxyz, emmllhpair::LxyErr, emmllhpair::LzErr, emmllhpair::LxyzErr, emmllhpair::ImpParXY, emmllhpair::ImpParZ, emmllhpair::ImpParCYY, emmllhpair::ImpParCZY, emmllhpair::ImpParCZZ, emmllhpair::PdgCodeH, emmllhpair::PdgCodeIM, emmllhpair::FoundCommonMother); @@ -282,10 +300,10 @@ using EMMLLV0Pair = EMMLLV0Pairs::iterator; DECLARE_SOA_TABLE(EMMLLCascPairs, "AOD", "EMMLLCAPAIR", //! emmllhpair::EMMLLeptonId, - track::Pt, emmllhpair::RapidityC, - emmllhpair::CascCosPA, emmllhpair::CascCosPAXY, - emmllhpair::ImpParHXY, emmllhpair::ImpParHZ, emmllhpair::ImpParHCYY, emmllhpair::ImpParHCZY, emmllhpair::ImpParHCZZ, - emmllhpair::Mass, emmllhpair::DcaLH, emmllhpair::CosPA, emmllhpair::CosPAXY, + emmllhpair::PtH, emmllhpair::RapidityC, + emmllhpair::CascCPA, emmllhpair::CascCPAXY, emmllhpair::CascCPARZ, + emmllhpair::ImpParXYH, emmllhpair::ImpParZH, emmllhpair::ImpParCYYH, emmllhpair::ImpParCZYH, emmllhpair::ImpParCZZH, + emmllhpair::MassLH, emmllhpair::PtLH, emmllhpair::DcaLH, emmllhpair::CPA, emmllhpair::CPAXY, emmllhpair::CPARZ, emmllhpair::Lxy, emmllhpair::Lz, emmllhpair::Lxyz, emmllhpair::LxyErr, emmllhpair::LzErr, emmllhpair::LxyzErr, emmllhpair::ImpParXY, emmllhpair::ImpParZ, emmllhpair::ImpParCYY, emmllhpair::ImpParCZY, emmllhpair::ImpParCZZ, emmllhpair::PdgCodeH, emmllhpair::PdgCodeIM, emmllhpair::FoundCommonMother); diff --git a/PWGEM/Dilepton/Tasks/taggingHFE.cxx b/PWGEM/Dilepton/Tasks/taggingHFE.cxx index fc3e540fd07..147b73d609b 100644 --- a/PWGEM/Dilepton/Tasks/taggingHFE.cxx +++ b/PWGEM/Dilepton/Tasks/taggingHFE.cxx @@ -83,8 +83,6 @@ struct taggingHFE { aod::pidTOFFullEl, aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr, aod::pidTOFbeta, aod::TOFSignal, aod::TOFEvTime>; using MyTracksWithMCLabel = soa::Join; - // using MyV0s = soa::Join; - // using MyCascades = soa::Join; using MyV0s = soa::Join; using MyCascades = soa::Join; @@ -265,29 +263,23 @@ struct taggingHFE { struct : ConfigurableGroup { std::string prefix = "lKPairCut"; - Configurable cfg_min_mass{"cfg_min_mass", 0, "min mass at SV"}; - Configurable cfg_max_mass{"cfg_max_mass", 1e+10, "max mass at SV"}; Configurable cfg_min_cospa{"cfg_min_cospa", -1e+10, "min cospa"}; Configurable cfg_max_lxyz{"cfg_max_lxyz", 1e+10, "min rxy for v0hadron"}; - Configurable cfg_max_dca2legs{"cfg_max_dca2legs", 0.1, "max distance between 2 legs"}; + Configurable cfg_max_dca2legs{"cfg_max_dca2legs", 1.0, "max distance between 2 legs"}; } lKPairCut; struct : ConfigurableGroup { std::string prefix = "lV0PairCut"; - Configurable cfg_min_mass{"cfg_min_mass", 0, "min mass at SV"}; - Configurable cfg_max_mass{"cfg_max_mass", 1e+10, "max mass at SV"}; Configurable cfg_min_cospa{"cfg_min_cospa", -1e+10, "min cospa"}; Configurable cfg_max_lxyz{"cfg_max_lxyz", 1e+10, "min rxy for v0hadron"}; - Configurable cfg_max_dca2legs{"cfg_max_dca2legs", 1e+10, "max distance between 2 legs"}; + Configurable cfg_max_dca2legs{"cfg_max_dca2legs", 1.0, "max distance between 2 legs"}; } lV0PairCut; struct : ConfigurableGroup { std::string prefix = "lCPairCut"; - Configurable cfg_min_mass{"cfg_min_mass", 0, "min mass at SV"}; - Configurable cfg_max_mass{"cfg_max_mass", 1e+10, "max mass at SV"}; Configurable cfg_min_cospa{"cfg_min_cospa", -1e+10, "min cospa"}; Configurable cfg_max_lxyz{"cfg_max_lxyz", 1e+10, "min rxy for v0hadron"}; - Configurable cfg_max_dca2legs{"cfg_max_dca2legs", 1e+10, "max distance between 2 legs"}; + Configurable cfg_max_dca2legs{"cfg_max_dca2legs", 1.0, "max distance between 2 legs"}; } lCPairCut; o2::aod::rctsel::RCTFlagsChecker rctChecker; @@ -469,8 +461,8 @@ struct taggingHFE { fRegistry.add("V0/hMassAntiLambda_misid", "Anti-Lambda mass;m_{#bar{p}#pi^{+}} (GeV/c^{2})", kTH1F, {{100, 1.08, 1.18}}, false); // for cascade - fRegistry.add("Cascade/hPt", "pT of V0;p_{T} (GeV/c)", kTH1F, {{100, 0, 10}}, false); - fRegistry.add("Cascade/hYPhi", "rapidity vs. #varphi of V0;#varphi (rad.);rapidity_{#Lambda}", kTH2F, {{90, 0, 2 * M_PI}, {80, -2, +2}}, false); + fRegistry.add("Cascade/hPt", "pT of cascade;p_{T} (GeV/c)", kTH1F, {{100, 0, 10}}, false); + fRegistry.add("Cascade/hYPhi", "rapidity vs. #varphi of cascade;#varphi (rad.);rapidity_{#Lambda}", kTH2F, {{90, 0, 2 * M_PI}, {80, -2, +2}}, false); fRegistry.add("Cascade/hCosPA", "cosPA;cosine of pointing angle", kTH1F, {{100, 0.9, 1}}, false); fRegistry.add("Cascade/hDCA2Legs", "distance between 2 legs at PCA;distance between 2 legs (cm)", kTH1F, {{100, 0, 1}}, false); fRegistry.add("Cascade/hV0CosPA", "cosPA of V0 in cascade;cosine of pointing angle", kTH1F, {{100, 0.9, 1}}, false); @@ -1670,7 +1662,7 @@ struct taggingHFE { continue; } - if (!(lKPairCut.cfg_min_mass < eKpair.mass && eKpair.mass < lKPairCut.cfg_max_mass) || eKpair.cospa < lKPairCut.cfg_min_cospa || lKPairCut.cfg_max_lxyz < eKpair.lxyz || lKPairCut.cfg_max_dca2legs < eKpair.dca2legs) { + if (eKpair.cospa < lKPairCut.cfg_min_cospa || lKPairCut.cfg_max_lxyz < eKpair.lxyz || lKPairCut.cfg_max_dca2legs < eKpair.dca2legs) { continue; } @@ -1709,7 +1701,7 @@ struct taggingHFE { kaon.tpcNSigmaPi(), tofNSigmaPi, kaon.tpcNSigmaKa(), tofNSigmaKa, kaon.tpcNSigmaPr(), tofNSigmaPr, - eKpair.mass, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, + eKpair.mass, eKpair.pt, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, eKpair.cospaRZ, eKpair.lxy, eKpair.lz, eKpair.lxyz, eKpair.lxyErr, eKpair.lzErr, eKpair.lxyzErr, eKpair.impParXY, eKpair.impParZ, eKpair.impParCYY, eKpair.impParCZY, eKpair.impParCZZ, mckaon.pdgCode(), pdgCodeIM, foundCommonMother); @@ -1733,7 +1725,7 @@ struct taggingHFE { if (!eKpair.isOK) { continue; } - if (!(lKPairCut.cfg_min_mass < eKpair.mass && eKpair.mass < lKPairCut.cfg_max_mass) || eKpair.cospa < lKPairCut.cfg_min_cospa || lKPairCut.cfg_max_lxyz < eKpair.lxyz || lKPairCut.cfg_max_dca2legs < eKpair.dca2legs) { + if (eKpair.cospa < lKPairCut.cfg_min_cospa || lKPairCut.cfg_max_lxyz < eKpair.lxyz || lKPairCut.cfg_max_dca2legs < eKpair.dca2legs) { continue; } @@ -1772,7 +1764,7 @@ struct taggingHFE { kaon.tpcNSigmaPi(), tofNSigmaPi, kaon.tpcNSigmaKa(), tofNSigmaKa, kaon.tpcNSigmaPr(), tofNSigmaPr, - eKpair.mass, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, + eKpair.mass, eKpair.pt, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, eKpair.cospaRZ, eKpair.lxy, eKpair.lz, eKpair.lxyz, eKpair.lxyErr, eKpair.lzErr, eKpair.lxyzErr, eKpair.impParXY, eKpair.impParZ, eKpair.impParCYY, eKpair.impParCZY, eKpair.impParCZZ, mckaon.pdgCode(), pdgCodeIM, foundCommonMother); @@ -1805,7 +1797,7 @@ struct taggingHFE { if (!eV0pair.isOK) { continue; } - if (!(lV0PairCut.cfg_min_mass < eV0pair.mass && eV0pair.mass < lV0PairCut.cfg_max_mass) || eV0pair.cospa < lV0PairCut.cfg_min_cospa || lV0PairCut.cfg_max_lxyz < eV0pair.lxyz || lV0PairCut.cfg_max_dca2legs < eV0pair.dca2legs) { + if (eV0pair.cospa < lV0PairCut.cfg_min_cospa || lV0PairCut.cfg_max_lxyz < eV0pair.lxyz || lV0PairCut.cfg_max_dca2legs < eV0pair.dca2legs) { continue; } @@ -1847,8 +1839,9 @@ struct taggingHFE { v0.pt(), v0.rapidity(0), RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), RecoDecay::cpaXY(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), + RecoDecay::cpaRZ(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), impactParameterV0.getY(), impactParameterV0.getZ(), impactParameterV0.getSigmaY2(), impactParameterV0.getSigmaYZ(), impactParameterV0.getSigmaZ2(), - eV0pair.mass, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, + eV0pair.mass, eV0pair.pt, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, eV0pair.cospaRZ, eV0pair.lxy, eV0pair.lz, eV0pair.lxyz, eV0pair.lxyErr, eV0pair.lzErr, eV0pair.lxyzErr, eV0pair.impParXY, eV0pair.impParZ, eV0pair.impParCYY, eV0pair.impParCZY, eV0pair.impParCZZ, pdgCodeV0, pdgCodeIM, foundCommonMother); @@ -1881,7 +1874,7 @@ struct taggingHFE { if (!eV0pair.isOK) { continue; } - if (!(lV0PairCut.cfg_min_mass < eV0pair.mass && eV0pair.mass < lV0PairCut.cfg_max_mass) || eV0pair.cospa < lV0PairCut.cfg_min_cospa || lV0PairCut.cfg_max_lxyz < eV0pair.lxyz || lV0PairCut.cfg_max_dca2legs < eV0pair.dca2legs) { + if (eV0pair.cospa < lV0PairCut.cfg_min_cospa || lV0PairCut.cfg_max_lxyz < eV0pair.lxyz || lV0PairCut.cfg_max_dca2legs < eV0pair.dca2legs) { continue; } @@ -1907,8 +1900,9 @@ struct taggingHFE { v0.pt(), v0.rapidity(1), RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), RecoDecay::cpaXY(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), + RecoDecay::cpaRZ(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), impactParameterV0.getY(), impactParameterV0.getZ(), impactParameterV0.getSigmaY2(), impactParameterV0.getSigmaYZ(), impactParameterV0.getSigmaZ2(), - eV0pair.mass, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, + eV0pair.mass, eV0pair.pt, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, eV0pair.cospaRZ, eV0pair.lxy, eV0pair.lz, eV0pair.lxyz, eV0pair.lxyErr, eV0pair.lzErr, eV0pair.lxyzErr, eV0pair.impParXY, eV0pair.impParZ, eV0pair.impParCYY, eV0pair.impParCZY, eV0pair.impParCZZ, pdgCodeV0, pdgCodeIM, foundCommonMother); @@ -1940,7 +1934,7 @@ struct taggingHFE { if (!eCpair.isOK) { continue; } - if (!(lCPairCut.cfg_min_mass < eCpair.mass && eCpair.mass < lCPairCut.cfg_max_mass) || eCpair.cospa < lCPairCut.cfg_min_cospa || lCPairCut.cfg_max_lxyz < eCpair.lxyz || lCPairCut.cfg_max_dca2legs < eCpair.dca2legs) { + if (eCpair.cospa < lCPairCut.cfg_min_cospa || lCPairCut.cfg_max_lxyz < eCpair.lxyz || lCPairCut.cfg_max_dca2legs < eCpair.dca2legs) { continue; } @@ -1972,8 +1966,9 @@ struct taggingHFE { cascade.pt(), cascade.rapidity(0), RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), RecoDecay::cpaXY(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), + RecoDecay::cpaRZ(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), impactParameterCasc.getY(), impactParameterCasc.getZ(), impactParameterCasc.getSigmaY2(), impactParameterCasc.getSigmaYZ(), impactParameterCasc.getSigmaZ2(), - eCpair.mass, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, + eCpair.mass, eCpair.pt, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, eCpair.cospaRZ, eCpair.lxy, eCpair.lz, eCpair.lxyz, eCpair.lxyErr, eCpair.lzErr, eCpair.lxyzErr, eCpair.impParXY, eCpair.impParZ, eCpair.impParCYY, eCpair.impParCZY, eCpair.impParCZZ, pdgCodeCascade, pdgCodeIM, foundCommonMother); @@ -2005,7 +2000,7 @@ struct taggingHFE { if (!eCpair.isOK) { continue; } - if (!(lCPairCut.cfg_min_mass < eCpair.mass && eCpair.mass < lCPairCut.cfg_max_mass) || eCpair.cospa < lCPairCut.cfg_min_cospa || lCPairCut.cfg_max_lxyz < eCpair.lxyz || lCPairCut.cfg_max_dca2legs < eCpair.dca2legs) { + if (eCpair.cospa < lCPairCut.cfg_min_cospa || lCPairCut.cfg_max_lxyz < eCpair.lxyz || lCPairCut.cfg_max_dca2legs < eCpair.dca2legs) { continue; } @@ -2037,8 +2032,9 @@ struct taggingHFE { cascade.pt(), cascade.rapidity(2), RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), RecoDecay::cpaXY(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), + RecoDecay::cpaRZ(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), impactParameterCasc.getY(), impactParameterCasc.getZ(), impactParameterCasc.getSigmaY2(), impactParameterCasc.getSigmaYZ(), impactParameterCasc.getSigmaZ2(), - eCpair.mass, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, + eCpair.mass, eCpair.pt, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, eCpair.cospaRZ, eCpair.lxy, eCpair.lz, eCpair.lxyz, eCpair.lxyErr, eCpair.lzErr, eCpair.lxyzErr, eCpair.impParXY, eCpair.impParZ, eCpair.impParCYY, eCpair.impParCZY, eCpair.impParCZZ, pdgCodeCascade, pdgCodeIM, foundCommonMother); @@ -2091,7 +2087,7 @@ struct taggingHFE { continue; } - if (!(lKPairCut.cfg_min_mass < eKpair.mass && eKpair.mass < lKPairCut.cfg_max_mass) || eKpair.cospa < lKPairCut.cfg_min_cospa || lKPairCut.cfg_max_lxyz < eKpair.lxyz || lKPairCut.cfg_max_dca2legs < eKpair.dca2legs) { + if (eKpair.cospa < lKPairCut.cfg_min_cospa || lKPairCut.cfg_max_lxyz < eKpair.lxyz || lKPairCut.cfg_max_dca2legs < eKpair.dca2legs) { continue; } @@ -2130,7 +2126,7 @@ struct taggingHFE { kaon.tpcNSigmaPi(), tofNSigmaPi, kaon.tpcNSigmaKa(), tofNSigmaKa, kaon.tpcNSigmaPr(), tofNSigmaPr, - eKpair.mass, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, + eKpair.mass, eKpair.pt, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, eKpair.cospaRZ, eKpair.lxy, eKpair.lz, eKpair.lxyz, eKpair.lxyErr, eKpair.lzErr, eKpair.lxyzErr, eKpair.impParXY, eKpair.impParZ, eKpair.impParCYY, eKpair.impParCZY, eKpair.impParCZZ, mckaon.pdgCode(), pdgCodeIM, foundCommonMother); @@ -2155,7 +2151,7 @@ struct taggingHFE { if (!eKpair.isOK) { continue; } - if (!(lKPairCut.cfg_min_mass < eKpair.mass && eKpair.mass < lKPairCut.cfg_max_mass) || eKpair.cospa < lKPairCut.cfg_min_cospa || lKPairCut.cfg_max_lxyz < eKpair.lxyz || lKPairCut.cfg_max_dca2legs < eKpair.dca2legs) { + if (eKpair.cospa < lKPairCut.cfg_min_cospa || lKPairCut.cfg_max_lxyz < eKpair.lxyz || lKPairCut.cfg_max_dca2legs < eKpair.dca2legs) { continue; } @@ -2194,7 +2190,7 @@ struct taggingHFE { kaon.tpcNSigmaPi(), tofNSigmaPi, kaon.tpcNSigmaKa(), tofNSigmaKa, kaon.tpcNSigmaPr(), tofNSigmaPr, - eKpair.mass, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, + eKpair.mass, eKpair.pt, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, eKpair.cospaRZ, eKpair.lxy, eKpair.lz, eKpair.lxyz, eKpair.lxyErr, eKpair.lzErr, eKpair.lxyzErr, eKpair.impParXY, eKpair.impParZ, eKpair.impParCYY, eKpair.impParCZY, eKpair.impParCZZ, mckaon.pdgCode(), pdgCodeIM, foundCommonMother); @@ -2227,7 +2223,7 @@ struct taggingHFE { if (!eV0pair.isOK) { continue; } - if (!(lV0PairCut.cfg_min_mass < eV0pair.mass && eV0pair.mass < lV0PairCut.cfg_max_mass) || eV0pair.cospa < lV0PairCut.cfg_min_cospa || lV0PairCut.cfg_max_lxyz < eV0pair.lxyz || lV0PairCut.cfg_max_dca2legs < eV0pair.dca2legs) { + if (eV0pair.cospa < lV0PairCut.cfg_min_cospa || lV0PairCut.cfg_max_lxyz < eV0pair.lxyz || lV0PairCut.cfg_max_dca2legs < eV0pair.dca2legs) { continue; } @@ -2268,8 +2264,9 @@ struct taggingHFE { v0.pt(), v0.rapidity(0), RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), RecoDecay::cpaXY(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), + RecoDecay::cpaRZ(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), impactParameterV0.getY(), impactParameterV0.getZ(), impactParameterV0.getSigmaY2(), impactParameterV0.getSigmaYZ(), impactParameterV0.getSigmaZ2(), - eV0pair.mass, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, + eV0pair.mass, eV0pair.pt, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, eV0pair.cospaRZ, eV0pair.lxy, eV0pair.lz, eV0pair.lxyz, eV0pair.lxyErr, eV0pair.lzErr, eV0pair.lxyzErr, eV0pair.impParXY, eV0pair.impParZ, eV0pair.impParCYY, eV0pair.impParCZY, eV0pair.impParCZZ, pdgCodeV0, pdgCodeIM, foundCommonMother); @@ -2302,7 +2299,7 @@ struct taggingHFE { if (!eV0pair.isOK) { continue; } - if (!(lV0PairCut.cfg_min_mass < eV0pair.mass && eV0pair.mass < lV0PairCut.cfg_max_mass) || eV0pair.cospa < lV0PairCut.cfg_min_cospa || lV0PairCut.cfg_max_lxyz < eV0pair.lxyz || lV0PairCut.cfg_max_dca2legs < eV0pair.dca2legs) { + if (eV0pair.cospa < lV0PairCut.cfg_min_cospa || lV0PairCut.cfg_max_lxyz < eV0pair.lxyz || lV0PairCut.cfg_max_dca2legs < eV0pair.dca2legs) { continue; } @@ -2328,8 +2325,9 @@ struct taggingHFE { v0.pt(), v0.rapidity(1), RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), RecoDecay::cpaXY(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), + RecoDecay::cpaRZ(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{v0.x(), v0.y(), v0.z()}, std::array{v0.px(), v0.py(), v0.pz()}), impactParameterV0.getY(), impactParameterV0.getZ(), impactParameterV0.getSigmaY2(), impactParameterV0.getSigmaYZ(), impactParameterV0.getSigmaZ2(), - eV0pair.mass, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, + eV0pair.mass, eV0pair.pt, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, eV0pair.cospaRZ, eV0pair.lxy, eV0pair.lz, eV0pair.lxyz, eV0pair.lxyErr, eV0pair.lzErr, eV0pair.lxyzErr, eV0pair.impParXY, eV0pair.impParZ, eV0pair.impParCYY, eV0pair.impParCZY, eV0pair.impParCZZ, pdgCodeV0, pdgCodeIM, foundCommonMother); @@ -2361,7 +2359,7 @@ struct taggingHFE { if (!eCpair.isOK) { continue; } - if (!(lCPairCut.cfg_min_mass < eCpair.mass && eCpair.mass < lCPairCut.cfg_max_mass) || eCpair.cospa < lCPairCut.cfg_min_cospa || lCPairCut.cfg_max_lxyz < eCpair.lxyz || lCPairCut.cfg_max_dca2legs < eCpair.dca2legs) { + if (eCpair.cospa < lCPairCut.cfg_min_cospa || lCPairCut.cfg_max_lxyz < eCpair.lxyz || lCPairCut.cfg_max_dca2legs < eCpair.dca2legs) { continue; } @@ -2393,8 +2391,9 @@ struct taggingHFE { cascade.pt(), cascade.rapidity(0), RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), RecoDecay::cpaXY(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), + RecoDecay::cpaRZ(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), impactParameterCasc.getY(), impactParameterCasc.getZ(), impactParameterCasc.getSigmaY2(), impactParameterCasc.getSigmaYZ(), impactParameterCasc.getSigmaZ2(), - eCpair.mass, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, + eCpair.mass, eCpair.pt, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, eCpair.cospaRZ, eCpair.lxy, eCpair.lz, eCpair.lxyz, eCpair.lxyErr, eCpair.lzErr, eCpair.lxyzErr, eCpair.impParXY, eCpair.impParZ, eCpair.impParCYY, eCpair.impParCZY, eCpair.impParCZZ, pdgCodeCascade, pdgCodeIM, foundCommonMother); @@ -2426,7 +2425,7 @@ struct taggingHFE { if (!eCpair.isOK) { continue; } - if (!(lCPairCut.cfg_min_mass < eCpair.mass && eCpair.mass < lCPairCut.cfg_max_mass) || eCpair.cospa < lCPairCut.cfg_min_cospa || lCPairCut.cfg_max_lxyz < eCpair.lxyz || lCPairCut.cfg_max_dca2legs < eCpair.dca2legs) { + if (eCpair.cospa < lCPairCut.cfg_min_cospa || lCPairCut.cfg_max_lxyz < eCpair.lxyz || lCPairCut.cfg_max_dca2legs < eCpair.dca2legs) { continue; } @@ -2458,8 +2457,9 @@ struct taggingHFE { cascade.pt(), cascade.rapidity(2), RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), RecoDecay::cpaXY(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), + RecoDecay::cpaRZ(std::array{collision.posX(), collision.posY(), collision.posZ()}, std::array{cascade.x(), cascade.y(), cascade.z()}, std::array{cascade.px(), cascade.py(), cascade.pz()}), impactParameterCasc.getY(), impactParameterCasc.getZ(), impactParameterCasc.getSigmaY2(), impactParameterCasc.getSigmaYZ(), impactParameterCasc.getSigmaZ2(), - eCpair.mass, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, + eCpair.mass, eCpair.pt, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, eCpair.cospaRZ, eCpair.lxy, eCpair.lz, eCpair.lxyz, eCpair.lxyErr, eCpair.lzErr, eCpair.lxyzErr, eCpair.impParXY, eCpair.impParZ, eCpair.impParCYY, eCpair.impParCZY, eCpair.impParCZZ, pdgCodeCascade, pdgCodeIM, foundCommonMother); diff --git a/PWGEM/Dilepton/Utils/SemiCharmTag.h b/PWGEM/Dilepton/Utils/SemiCharmTag.h index b8bfaffb118..75607042ca6 100644 --- a/PWGEM/Dilepton/Utils/SemiCharmTag.h +++ b/PWGEM/Dilepton/Utils/SemiCharmTag.h @@ -37,9 +37,11 @@ namespace o2::aod::pwgem::dilepton::utils struct LHPair { // struct to store electron-hadron pair information float mass{-999.f}; + float pt{-999.f}; float dca2legs{-999.f}; float cospa{-999.f}; float cospaXY{-999.f}; + float cospaRZ{-999.f}; float lxy{-999.f}; float lz{-999.f}; float lxyz{-999.f}; @@ -95,6 +97,7 @@ LHPair makePairLeptonTrack(TFitter& fitter, TCollision const& collision, TLepton pair.cospa = RecoDecay::cpa(vertex, svpos, pvecSum); pair.cospaXY = RecoDecay::cpaXY(vertex, svpos, pvecSum); + pair.cospaRZ = RecoDecay::cpaRZ(vertex, svpos, pvecSum); pair.dca2legs = std::sqrt(fitter.getChi2AtPCACandidate()); pair.lxy = std::sqrt(std::pow(svpos[0] - collision.posX(), 2) + std::pow(svpos[1] - collision.posY(), 2)); pair.lz = svpos[2] - collision.posZ(); @@ -139,6 +142,7 @@ LHPair makePairLeptonTrack(TFitter& fitter, TCollision const& collision, TLepton ROOT::Math::PxPyPzMVector v2(pvec1[0], pvec1[1], pvec1[2], o2::constants::physics::MassPionCharged); ROOT::Math::PxPyPzMVector v12 = v1 + v2; pair.mass = v12.M(); + pair.pt = v12.Pt(); pair.isOK = true; return pair; @@ -195,6 +199,7 @@ LHPair makePairLeptonV0(TFitter& fitter, TCollision const& collision, TLepton co pair.cospa = RecoDecay::cpa(vertex, svpos, pvecSum); pair.cospaXY = RecoDecay::cpaXY(vertex, svpos, pvecSum); + pair.cospaRZ = RecoDecay::cpaRZ(vertex, svpos, pvecSum); pair.dca2legs = std::sqrt(fitter.getChi2AtPCACandidate()); pair.lxy = std::sqrt(std::pow(svpos[0] - collision.posX(), 2) + std::pow(svpos[1] - collision.posY(), 2)); pair.lz = svpos[2] - collision.posZ(); @@ -246,8 +251,8 @@ LHPair makePairLeptonV0(TFitter& fitter, TCollision const& collision, TLepton co } ROOT::Math::PxPyPzMVector v12 = v1 + v2; - pair.mass = v12.M(); + pair.pt = v12.Pt(); pair.isOK = true; return pair; @@ -308,6 +313,7 @@ LHPair makePairLeptonCascade(TFitter& fitter, TCollision const& collision, TLept pair.cospa = RecoDecay::cpa(vertex, svpos, pvecSum); pair.cospaXY = RecoDecay::cpaXY(vertex, svpos, pvecSum); + pair.cospaRZ = RecoDecay::cpaRZ(vertex, svpos, pvecSum); pair.dca2legs = std::sqrt(fitter.getChi2AtPCACandidate()); pair.lxy = std::sqrt(std::pow(svpos[0] - collision.posX(), 2) + std::pow(svpos[1] - collision.posY(), 2)); pair.lz = svpos[2] - collision.posZ(); @@ -361,6 +367,7 @@ LHPair makePairLeptonCascade(TFitter& fitter, TCollision const& collision, TLept ROOT::Math::PxPyPzMVector v12 = v1 + v2; pair.mass = v12.M(); + pair.pt = v12.Pt(); pair.isOK = true; return pair;