diff --git a/PWGEM/Dilepton/DataModel/lmeeMLTables.h b/PWGEM/Dilepton/DataModel/lmeeMLTables.h index e8eb1a58458..b332f509bb1 100644 --- a/PWGEM/Dilepton/DataModel/lmeeMLTables.h +++ b/PWGEM/Dilepton/DataModel/lmeeMLTables.h @@ -219,11 +219,11 @@ DECLARE_SOA_INDEX_COLUMN(EMMLLepton, emmllepton); //! most propable emeventId DECLARE_SOA_COLUMN(RapidityV0, rapidityV0, float); //! rapidity of associated V0 DECLARE_SOA_COLUMN(RapidityC, rapidityC, float); //! rapidity of associated Cascade -DECLARE_SOA_COLUMN(ImpParXY, impParXY, float); //! impact parameter for V0/Cascade in XY plane -DECLARE_SOA_COLUMN(ImpParZ, impParZ, float); //! impact parameter for V0/Cascade in XY plane -DECLARE_SOA_COLUMN(ImpParCYY, impParCYY, float); //! sigma of impact parameter for V0/Cascade in XY plane -DECLARE_SOA_COLUMN(ImpParCZY, impParCZY, float); //! sigma of impact parameter for V0/Cascade in XY plane -DECLARE_SOA_COLUMN(ImpParCZZ, impParCZZ, float); //! sigma of impact parameter for V0/Cascade in XY plane +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(V0CosPA, v0copa, float); //! cosPA of V0 DECLARE_SOA_COLUMN(V0CosPAXY, v0copaXY, float); //! cosPA of V0 in XY plane @@ -236,12 +236,18 @@ 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 -DECLARE_SOA_COLUMN(Lxyz, lxyz, float); //! decay length of LH pair -DECLARE_SOA_COLUMN(LxyzSigma, lxyzSigma, float); //! decay length resolution of LH pair -DECLARE_SOA_COLUMN(Lxy, lxy, float); //! decay length of LH pair -DECLARE_SOA_COLUMN(LxySigma, lxySigma, float); //! decay length resolution of LH pair -DECLARE_SOA_COLUMN(Lz, lz, float); //! decay length of LH pair -DECLARE_SOA_COLUMN(LzSigma, lzSigma, float); //! decay length resolution of LH pair +DECLARE_SOA_COLUMN(Lxy, lxy, float); //! decay length of LH pair +DECLARE_SOA_COLUMN(Lz, lz, float); //! decay length of LH pair +DECLARE_SOA_COLUMN(Lxyz, lxyz, float); //! decay length of LH pair +DECLARE_SOA_COLUMN(LxyErr, lxyErr, float); //! decay length resolution of LH pair +DECLARE_SOA_COLUMN(LzErr, lzErr, float); //! decay length resolution of LH pair +DECLARE_SOA_COLUMN(LxyzErr, lxyzErr, float); //! decay length resolution of LH pair + +DECLARE_SOA_COLUMN(ImpParXY, impParXY, float); //! impact parameter for LH in XY plane +DECLARE_SOA_COLUMN(ImpParZ, impParZ, float); //! impact parameter for LH in Z plane +DECLARE_SOA_COLUMN(ImpParCYY, impParCYY, float); //! sigma of impact parameter for LH in XY +DECLARE_SOA_COLUMN(ImpParCZY, impParCZY, float); //! sigma of impact parameter for LH, correlation term +DECLARE_SOA_COLUMN(ImpParCZZ, impParCZZ, float); //! sigma of impact parameter for LH in Z DECLARE_SOA_COLUMN(PdgCodeH, pdgCodeH, int); //! pdg code of associated hadron DECLARE_SOA_COLUMN(PdgCodeIM, pdgCodeIM, int); //! pdg code of intermediate hadron from HF hadrons. e.g K*, D* @@ -256,9 +262,8 @@ DECLARE_SOA_TABLE(EMMLLHPairs, "AOD", "EMMLLHPAIR", //! pidtpc::TPCNSigmaKa, pidtof::TOFNSigmaKa, pidtpc::TPCNSigmaPr, pidtof::TOFNSigmaPr, emmllhpair::Mass, emmllhpair::DcaLH, emmllhpair::CosPA, emmllhpair::CosPAXY, - emmllhpair::Lxyz, emmllhpair::LxyzSigma, - emmllhpair::Lxy, emmllhpair::LxySigma, - emmllhpair::Lz, emmllhpair::LzSigma, + 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); // iterators using EMMLLHPair = EMMLLHPairs::iterator; @@ -267,11 +272,10 @@ DECLARE_SOA_TABLE(EMMLLV0Pairs, "AOD", "EMMLLV0PAIR", //! emmllhpair::EMMLLeptonId, track::Pt, emmllhpair::RapidityV0, emmllhpair::V0CosPA, emmllhpair::V0CosPAXY, - emmllhpair::ImpParXY, emmllhpair::ImpParZ, emmllhpair::ImpParCYY, emmllhpair::ImpParCZY, emmllhpair::ImpParCZZ, + emmllhpair::ImpParHXY, emmllhpair::ImpParHZ, emmllhpair::ImpParHCYY, emmllhpair::ImpParHCZY, emmllhpair::ImpParHCZZ, emmllhpair::Mass, emmllhpair::DcaLH, emmllhpair::CosPA, emmllhpair::CosPAXY, - emmllhpair::Lxyz, emmllhpair::LxyzSigma, - emmllhpair::Lxy, emmllhpair::LxySigma, - emmllhpair::Lz, emmllhpair::LzSigma, + 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); // iterators using EMMLLV0Pair = EMMLLV0Pairs::iterator; @@ -280,11 +284,10 @@ DECLARE_SOA_TABLE(EMMLLCascPairs, "AOD", "EMMLLCAPAIR", //! emmllhpair::EMMLLeptonId, track::Pt, emmllhpair::RapidityC, emmllhpair::CascCosPA, emmllhpair::CascCosPAXY, - emmllhpair::ImpParXY, emmllhpair::ImpParZ, emmllhpair::ImpParCYY, emmllhpair::ImpParCZY, emmllhpair::ImpParCZZ, + emmllhpair::ImpParHXY, emmllhpair::ImpParHZ, emmllhpair::ImpParHCYY, emmllhpair::ImpParHCZY, emmllhpair::ImpParHCZZ, emmllhpair::Mass, emmllhpair::DcaLH, emmllhpair::CosPA, emmllhpair::CosPAXY, - emmllhpair::Lxyz, emmllhpair::LxyzSigma, - emmllhpair::Lxy, emmllhpair::LxySigma, - emmllhpair::Lz, emmllhpair::LzSigma, + 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); // iterators using EMMLLCascPair = EMMLLCascPairs::iterator; diff --git a/PWGEM/Dilepton/Tasks/taggingHFE.cxx b/PWGEM/Dilepton/Tasks/taggingHFE.cxx index 0e9e92ffe4b..fc3e540fd07 100644 --- a/PWGEM/Dilepton/Tasks/taggingHFE.cxx +++ b/PWGEM/Dilepton/Tasks/taggingHFE.cxx @@ -1710,9 +1710,8 @@ struct taggingHFE { kaon.tpcNSigmaKa(), tofNSigmaKa, kaon.tpcNSigmaPr(), tofNSigmaPr, eKpair.mass, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, - eKpair.lxyz, eKpair.lxyzErr, - eKpair.lxy, eKpair.lxyErr, - eKpair.lz, eKpair.lzErr, + 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); } // end of kaon loop @@ -1774,9 +1773,8 @@ struct taggingHFE { kaon.tpcNSigmaKa(), tofNSigmaKa, kaon.tpcNSigmaPr(), tofNSigmaPr, eKpair.mass, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, - eKpair.lxyz, eKpair.lxyzErr, - eKpair.lxy, eKpair.lxyErr, - eKpair.lz, eKpair.lzErr, + 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); } // end of kaon loop @@ -1851,9 +1849,8 @@ struct taggingHFE { 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()}), impactParameterV0.getY(), impactParameterV0.getZ(), impactParameterV0.getSigmaY2(), impactParameterV0.getSigmaYZ(), impactParameterV0.getSigmaZ2(), eV0pair.mass, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, - eV0pair.lxyz, eV0pair.lxyzErr, - eV0pair.lxy, eV0pair.lxyErr, - eV0pair.lz, eV0pair.lzErr, + 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); } // end of K0S loop @@ -1912,9 +1909,8 @@ struct taggingHFE { 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()}), impactParameterV0.getY(), impactParameterV0.getZ(), impactParameterV0.getSigmaY2(), impactParameterV0.getSigmaYZ(), impactParameterV0.getSigmaZ2(), eV0pair.mass, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, - eV0pair.lxyz, eV0pair.lxyzErr, - eV0pair.lxy, eV0pair.lxyErr, - eV0pair.lz, eV0pair.lzErr, + 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); } // end of Lambda loop @@ -1978,9 +1974,8 @@ struct taggingHFE { 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()}), impactParameterCasc.getY(), impactParameterCasc.getZ(), impactParameterCasc.getSigmaY2(), impactParameterCasc.getSigmaYZ(), impactParameterCasc.getSigmaZ2(), eCpair.mass, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, - eCpair.lxyz, eCpair.lxyzErr, - eCpair.lxy, eCpair.lxyErr, - eCpair.lz, eCpair.lzErr, + 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); } // end of Xi- loop @@ -2044,9 +2039,8 @@ struct taggingHFE { 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()}), impactParameterCasc.getY(), impactParameterCasc.getZ(), impactParameterCasc.getSigmaY2(), impactParameterCasc.getSigmaYZ(), impactParameterCasc.getSigmaZ2(), eCpair.mass, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, - eCpair.lxyz, eCpair.lxyzErr, - eCpair.lxy, eCpair.lxyErr, - eCpair.lz, eCpair.lzErr, + 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); } // end of Omega- loop @@ -2137,9 +2131,8 @@ struct taggingHFE { kaon.tpcNSigmaKa(), tofNSigmaKa, kaon.tpcNSigmaPr(), tofNSigmaPr, eKpair.mass, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, - eKpair.lxyz, eKpair.lxyzErr, - eKpair.lxy, eKpair.lxyErr, - eKpair.lz, eKpair.lzErr, + 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); } // end of kaon loop @@ -2202,9 +2195,8 @@ struct taggingHFE { kaon.tpcNSigmaKa(), tofNSigmaKa, kaon.tpcNSigmaPr(), tofNSigmaPr, eKpair.mass, eKpair.dca2legs, eKpair.cospa, eKpair.cospaXY, - eKpair.lxyz, eKpair.lxyzErr, - eKpair.lxy, eKpair.lxyErr, - eKpair.lz, eKpair.lzErr, + 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); } // end of kaon loop @@ -2278,9 +2270,8 @@ struct taggingHFE { 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()}), impactParameterV0.getY(), impactParameterV0.getZ(), impactParameterV0.getSigmaY2(), impactParameterV0.getSigmaYZ(), impactParameterV0.getSigmaZ2(), eV0pair.mass, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, - eV0pair.lxyz, eV0pair.lxyzErr, - eV0pair.lxy, eV0pair.lxyErr, - eV0pair.lz, eV0pair.lzErr, + 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); } // end of K0S loop @@ -2339,9 +2330,8 @@ struct taggingHFE { 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()}), impactParameterV0.getY(), impactParameterV0.getZ(), impactParameterV0.getSigmaY2(), impactParameterV0.getSigmaYZ(), impactParameterV0.getSigmaZ2(), eV0pair.mass, eV0pair.dca2legs, eV0pair.cospa, eV0pair.cospaXY, - eV0pair.lxyz, eV0pair.lxyzErr, - eV0pair.lxy, eV0pair.lxyErr, - eV0pair.lz, eV0pair.lzErr, + 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); } // end of Anti-Lambda loop @@ -2405,9 +2395,8 @@ struct taggingHFE { 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()}), impactParameterCasc.getY(), impactParameterCasc.getZ(), impactParameterCasc.getSigmaY2(), impactParameterCasc.getSigmaYZ(), impactParameterCasc.getSigmaZ2(), eCpair.mass, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, - eCpair.lxyz, eCpair.lxyzErr, - eCpair.lxy, eCpair.lxyErr, - eCpair.lz, eCpair.lzErr, + 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); } // end of Xi+ loop @@ -2471,9 +2460,8 @@ struct taggingHFE { 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()}), impactParameterCasc.getY(), impactParameterCasc.getZ(), impactParameterCasc.getSigmaY2(), impactParameterCasc.getSigmaYZ(), impactParameterCasc.getSigmaZ2(), eCpair.mass, eCpair.dca2legs, eCpair.cospa, eCpair.cospaXY, - eCpair.lxyz, eCpair.lxyzErr, - eCpair.lxy, eCpair.lxyErr, - eCpair.lz, eCpair.lzErr, + 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); } // end of Omega+ loop diff --git a/PWGEM/Dilepton/Utils/SemiCharmTag.h b/PWGEM/Dilepton/Utils/SemiCharmTag.h index ebfa9162c56..b8bfaffb118 100644 --- a/PWGEM/Dilepton/Utils/SemiCharmTag.h +++ b/PWGEM/Dilepton/Utils/SemiCharmTag.h @@ -21,9 +21,11 @@ #include #include +#include #include -#include -#include +// #include +// #include +#include #include // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h) #include @@ -39,11 +41,16 @@ struct LHPair { // struct to store electron-hadron pair information float cospa{-999.f}; float cospaXY{-999.f}; float lxy{-999.f}; - float lxyErr{-999.f}; float lz{-999.f}; - float lzErr{-999.f}; float lxyz{-999.f}; + float lxyErr{-999.f}; + float lzErr{-999.f}; float lxyzErr{-999.f}; + float impParXY{-999.f}; + float impParZ{-999.f}; + float impParCYY{-999.f}; + float impParCZY{-999.f}; + float impParCZZ{-999.f}; bool isOK{false}; }; @@ -95,12 +102,29 @@ LHPair makePairLeptonTrack(TFitter& fitter, TCollision const& collision, TLepton auto primaryVertex = getPrimaryVertex(collision); std::array covVtxLK = fitter.calcPCACovMatrixFlat(); - double phiLK{}, thetaLK{}; - getPointDirection(std::array{primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ()}, svpos, phiLK, thetaLK); - pair.lxyzErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), phiLK, thetaLK) + getRotatedCovMatrixXX(covVtxLK, phiLK, thetaLK)); - pair.lxyErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), phiLK, 0.) + getRotatedCovMatrixXX(covVtxLK, phiLK, 0.)); + double phiLH{}, thetaLK{}; + getPointDirection(std::array{primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ()}, svpos, phiLH, thetaLK); + pair.lxyzErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), phiLH, thetaLK) + getRotatedCovMatrixXX(covVtxLK, phiLH, thetaLK)); + pair.lxyErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), phiLH, 0.) + getRotatedCovMatrixXX(covVtxLK, phiLH, 0.)); pair.lzErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), 0, thetaLK) + getRotatedCovMatrixXX(covVtxLK, 0, thetaLK)); + // propagate the 2 prongs to the secondary vertex + leptonParCov.propagateTo(vtx[0], fitter.getBz()); + trackParCov.propagateTo(vtx[0], fitter.getBz()); + + // calculate impact parameter + o2::dataformats::DCA dcaLH; + auto trackParCovLH = o2::dataformats::V0(fitter.getPCACandidatePos(), pvecSum, fitter.calcPCACovMatrixFlat(), leptonParCov, trackParCov); + trackParCovLH.propagateToDCA(primaryVertex, fitter.getBz(), &dcaLH); + + pair.impParXY = dcaLH.getY(); + pair.impParZ = dcaLH.getZ(); + pair.impParCYY = dcaLH.getSigmaY2(); + pair.impParCZY = dcaLH.getSigmaYZ(); + pair.impParCZZ = dcaLH.getSigmaZ2(); + + // LOGF(info, "fitter.getBz() = %f, dcaLH.getY() = %f, dcaLH.getZ() = %f", fitter.getBz(), dcaLH.getY(), dcaLH.getZ()); + ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], o2::constants::physics::MassElectron); if (leptonId == o2::track::PID::Electron) { v1.SetM(o2::constants::physics::MassElectron); @@ -113,23 +137,10 @@ LHPair makePairLeptonTrack(TFitter& fitter, TCollision const& collision, TLepton } ROOT::Math::PxPyPzMVector v2(pvec1[0], pvec1[1], pvec1[2], o2::constants::physics::MassPionCharged); - // if (strHadId == o2::track::PID::Kaon) { - // v2.SetM(o2::constants::physics::MassPionCharged); - // } else { - // LOGF(info, "strHadId supports only Kaon."); - // pair.isOK = false; - // return pair; - // } - ROOT::Math::PxPyPzMVector v12 = v1 + v2; - pair.mass = v12.M(); - // pair.dca2legs = dca2legs; - // pair.cospa = cospa; - // pair.lxy = lxy; - // pair.lz = lz; - pair.isOK = true; + pair.isOK = true; return pair; } @@ -197,6 +208,21 @@ LHPair makePairLeptonV0(TFitter& fitter, TCollision const& collision, TLepton co pair.lxyErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), phiLV0, 0.) + getRotatedCovMatrixXX(covVtxLV0, phiLV0, 0.)); pair.lzErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), 0, thetaLV0) + getRotatedCovMatrixXX(covVtxLV0, 0, thetaLV0)); + // propagate the 2 prongs to the secondary vertex + leptonParCov.propagateTo(vtx[0], fitter.getBz()); + v0ParCov.propagateTo(vtx[0], fitter.getBz()); + + // calculate impact parameter + o2::dataformats::DCA dcaLH; + auto trackParCovLH = o2::dataformats::V0(fitter.getPCACandidatePos(), pvecSum, fitter.calcPCACovMatrixFlat(), leptonParCov, v0ParCov); + trackParCovLH.propagateToDCA(primaryVertex, fitter.getBz(), &dcaLH); + + pair.impParXY = dcaLH.getY(); + pair.impParZ = dcaLH.getZ(); + pair.impParCYY = dcaLH.getSigmaY2(); + pair.impParCZY = dcaLH.getSigmaYZ(); + pair.impParCZZ = dcaLH.getSigmaZ2(); + ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], o2::constants::physics::MassElectron); if (leptonId == o2::track::PID::Electron) { v1.SetM(o2::constants::physics::MassElectron); @@ -222,10 +248,6 @@ LHPair makePairLeptonV0(TFitter& fitter, TCollision const& collision, TLepton co ROOT::Math::PxPyPzMVector v12 = v1 + v2; pair.mass = v12.M(); - // pair.dca2legs = dca2legs; - // pair.cospa = cospa; - // pair.lxy = lxy; - // pair.lz = lz; pair.isOK = true; return pair; @@ -299,6 +321,21 @@ LHPair makePairLeptonCascade(TFitter& fitter, TCollision const& collision, TLept pair.lzErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), 0, thetaLC) + getRotatedCovMatrixXX(covVtxLC, 0, thetaLC)); pair.lxyzErr = std::sqrt(getRotatedCovMatrixXX(primaryVertex.getCov(), phiLC, thetaLC) + getRotatedCovMatrixXX(covVtxLC, phiLC, thetaLC)); + // propagate the 2 prongs to the secondary vertex + leptonParCov.propagateTo(vtx[0], fitter.getBz()); + cascParCov.propagateTo(vtx[0], fitter.getBz()); + + // calculate impact parameter + o2::dataformats::DCA dcaLH; + auto trackParCovLH = o2::dataformats::V0(fitter.getPCACandidatePos(), pvecSum, fitter.calcPCACovMatrixFlat(), leptonParCov, cascParCov); + trackParCovLH.propagateToDCA(primaryVertex, fitter.getBz(), &dcaLH); + + pair.impParXY = dcaLH.getY(); + pair.impParZ = dcaLH.getZ(); + pair.impParCYY = dcaLH.getSigmaY2(); + pair.impParCZY = dcaLH.getSigmaYZ(); + pair.impParCZZ = dcaLH.getSigmaZ2(); + ROOT::Math::PxPyPzMVector v1(pvec0[0], pvec0[1], pvec0[2], o2::constants::physics::MassElectron); if (leptonId == o2::track::PID::Electron) { v1.SetM(o2::constants::physics::MassElectron); @@ -324,10 +361,6 @@ LHPair makePairLeptonCascade(TFitter& fitter, TCollision const& collision, TLept ROOT::Math::PxPyPzMVector v12 = v1 + v2; pair.mass = v12.M(); - // pair.dca2legs = dca2legs; - // pair.cospa = cospa; - // pair.lxy = lxy; - // pair.lz = lz; pair.isOK = true; return pair;