diff --git a/PWGEM/Dilepton/DataModel/lmeeMLTables.h b/PWGEM/Dilepton/DataModel/lmeeMLTables.h index 17eef48afa7..a215928dfb7 100644 --- a/PWGEM/Dilepton/DataModel/lmeeMLTables.h +++ b/PWGEM/Dilepton/DataModel/lmeeMLTables.h @@ -128,13 +128,21 @@ namespace emmlfwdtrack // DECLARE_SOA_COLUMN(PhiMCHMIDatPV, phiMCHMIDatPV, float); //! phi of MCH-MID track in MFT-MCH-MID track at PV DECLARE_SOA_COLUMN(Signed1PtMCHMIDatMP, signed1PtMCHMIDatMP, float); //! pt of MCH-MID track in MFT-MCH-MID track at MP -DECLARE_SOA_COLUMN(EtaMCHMIDatMP, etaMCHMIDatMP, float); //! eta of MCH-MID track in MFT-MCH-MID track at MP +DECLARE_SOA_COLUMN(TglMCHMIDatMP, tglMCHMIDatMP, float); //! tgl of MCH-MID track in MFT-MCH-MID track at MP DECLARE_SOA_COLUMN(PhiMCHMIDatMP, phiMCHMIDatMP, float); //! phi of MCH-MID track in MFT-MCH-MID track at MP +DECLARE_SOA_COLUMN(Signed1PtErrMCHMIDatMP, signed1PtErrMCHMIDatMP, float); //! pt of MCH-MID track in MFT-MCH-MID track at MP +DECLARE_SOA_COLUMN(TglErrMCHMIDatMP, tglErrMCHMIDatMP, float); //! tgl of MCH-MID track in MFT-MCH-MID track at MP +DECLARE_SOA_COLUMN(PhiErrMCHMIDatMP, phiErrMCHMIDatMP, float); //! phi of MCH-MID track in MFT-MCH-MID track at MP + DECLARE_SOA_COLUMN(Signed1PtMFTatMP, signed1PtMFTatMP, float); //! pt of MCH-MID track in MFT-MCH-MID track at MP -DECLARE_SOA_COLUMN(EtaMFTatMP, etaMFTatMP, float); //! eta of MCH-MID track in MFT-MCH-MID track at MP +DECLARE_SOA_COLUMN(TglMFTatMP, tglMFTatMP, float); //! tgl of MCH-MID track in MFT-MCH-MID track at MP DECLARE_SOA_COLUMN(PhiMFTatMP, phiMFTatMP, float); //! phi of MCH-MID track in MFT-MCH-MID track at MP +DECLARE_SOA_COLUMN(Signed1PtErrMFTatMP, signed1PtErrMFTatMP, float); //! pt of MCH-MID track in MFT-MCH-MID track at MP +DECLARE_SOA_COLUMN(TglErrMFTatMP, tglErrMFTatMP, float); //! tgl of MCH-MID track in MFT-MCH-MID track at MP +DECLARE_SOA_COLUMN(PhiErrMFTatMP, phiErrMFTatMP, float); //! phi of MCH-MID track in MFT-MCH-MID track at MP + DECLARE_SOA_COLUMN(XMCHMIDatMP, xMCHMIDatMP, float); //! x of MCH-MID track in MFT-MCH-MID track at matching plane DECLARE_SOA_COLUMN(YMCHMIDatMP, yMCHMIDatMP, float); //! y of MCH-MID track in MFT-MCH-MID track at matching plane DECLARE_SOA_COLUMN(XErrMCHMIDatMP, xErrMCHMIDatMP, float); //! x error of MCH-MID track in MFT-MCH-MID track at matching plane @@ -145,35 +153,34 @@ DECLARE_SOA_COLUMN(YMFTatMP, yMFTatMP, float); //! y of MFT track in MFT-M DECLARE_SOA_COLUMN(XErrMFTatMP, xErrMFTatMP, float); //! x error of MFT track in MFT-MCH-MID track at matching plane DECLARE_SOA_COLUMN(YErrMFTatMP, yErrMFTatMP, float); //! y error of MFT track in MFT-MCH-MID track at matching plane -// DECLARE_SOA_COLUMN(Sign, sign, int8_t); //! -DECLARE_SOA_COLUMN(Chi2MFT, chi2MFT, float); //! chi2/ndf of MFT track -DECLARE_SOA_COLUMN(Chi2MCHMID, chi2MCHMID, float); //! chi2/ndf of MCH-MID track -DECLARE_SOA_COLUMN(Chi2MFTMCHMID, chi2MFTMCHMID, float); //! chi2/ndf of MFT-MCH-MID track -DECLARE_SOA_COLUMN(NClustersMFT, nClustersMFT, uint8_t); //! -DECLARE_SOA_COLUMN(IsPrimary, isPrimary, bool); //! -DECLARE_SOA_COLUMN(IsCorrectMatchMFTMCH, isCorrectMatchMFTMCH, bool); //! +DECLARE_SOA_COLUMN(Chi2MFT, chi2MFT, float); //! chi2/ndf of MFT track +DECLARE_SOA_COLUMN(Chi2MCHMID, chi2MCHMID, float); //! chi2/ndf of MCH-MID track +DECLARE_SOA_COLUMN(Chi2MFTMCHMID, chi2MFTMCHMID, float); //! chi2/ndf of MFT-MCH-MID track +DECLARE_SOA_COLUMN(NClustersMFT, nClustersMFT, uint8_t); //! +DECLARE_SOA_COLUMN(IsPrimary, isPrimary, bool); //! +DECLARE_SOA_COLUMN(IsCorrectMatch, isCorrectMatch, bool); //! } // namespace emmlfwdtrack -DECLARE_SOA_TABLE_VERSIONED(EMFwdTracksForML_000, "AOD", "EMFWDTRKML", 0, //! - o2::soa::Index<>, collision::NumContrib, mult::MultFT0C, evsel::NumTracksInTimeRange, evsel::SumAmpFT0CInTimeRange, emmltrack::HadronicRate, - fwdtrack::TrackType, - // emmlfwdtrack::Signed1PtMFTMCHMIDatPV, emmlfwdtrack::EtaMFTMCHMIDatPV, emmlfwdtrack::PhiMFTMCHMIDatPV, - // emmlfwdtrack::Signed1PtMCHMIDatPV, emmlfwdtrack::EtaMCHMIDatPV, emmlfwdtrack::PhiMCHMIDatPV, - - emmlfwdtrack::Signed1PtMCHMIDatMP, emmlfwdtrack::EtaMCHMIDatMP, emmlfwdtrack::PhiMCHMIDatMP, - emmlfwdtrack::Signed1PtMFTatMP, emmlfwdtrack::EtaMFTatMP, emmlfwdtrack::PhiMFTatMP, - emmlfwdtrack::XMCHMIDatMP, emmlfwdtrack::YMCHMIDatMP, - emmlfwdtrack::XErrMCHMIDatMP, emmlfwdtrack::YErrMCHMIDatMP, - emmlfwdtrack::XMFTatMP, emmlfwdtrack::YMFTatMP, - emmlfwdtrack::XErrMFTatMP, emmlfwdtrack::YErrMFTatMP, - - fwdtrack::FwdDcaX, fwdtrack::FwdDcaY, - fwdtrack::NClusters, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd, - fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT, - fwdtrack::MFTClusterSizesAndTrackFlags, emmlfwdtrack::Chi2MFTMCHMID, emmlfwdtrack::Chi2MCHMID, emmlfwdtrack::Chi2MFT, emmlfwdtrack::NClustersMFT, - mcparticle::PdgCode, emmlfwdtrack::IsPrimary, emmlfwdtrack::IsCorrectMatchMFTMCH, mcparticle::Pt, mcparticle::Eta, mcparticle::Phi); - -using EMFwdTracksForML = EMFwdTracksForML_000; +DECLARE_SOA_TABLE(EMFwdTracksForML, "AOD", "EMFWDTRKML", //! + o2::soa::Index<>, collision::PosZ, collision::NumContrib, mult::MultFT0C, evsel::NumTracksInTimeRange, evsel::SumAmpFT0CInTimeRange, emmltrack::HadronicRate, + fwdtrack::TrackType, + + emmlfwdtrack::Signed1PtMFTatMP, emmlfwdtrack::TglMFTatMP, emmlfwdtrack::PhiMFTatMP, + emmlfwdtrack::Signed1PtErrMFTatMP, emmlfwdtrack::TglErrMFTatMP, emmlfwdtrack::PhiErrMFTatMP, + emmlfwdtrack::XMFTatMP, emmlfwdtrack::YMFTatMP, + emmlfwdtrack::XErrMFTatMP, emmlfwdtrack::YErrMFTatMP, + + emmlfwdtrack::Signed1PtMCHMIDatMP, emmlfwdtrack::TglMCHMIDatMP, emmlfwdtrack::PhiMCHMIDatMP, + emmlfwdtrack::Signed1PtErrMCHMIDatMP, emmlfwdtrack::TglErrMCHMIDatMP, emmlfwdtrack::PhiErrMCHMIDatMP, + emmlfwdtrack::XMCHMIDatMP, emmlfwdtrack::YMCHMIDatMP, + emmlfwdtrack::XErrMCHMIDatMP, emmlfwdtrack::YErrMCHMIDatMP, + + // fwdtrack::FwdDcaX, fwdtrack::FwdDcaY, + fwdtrack::NClusters, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd, + fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT, + fwdtrack::MFTClusterSizesAndTrackFlags, emmlfwdtrack::Chi2MFTMCHMID, emmlfwdtrack::Chi2MCHMID, emmlfwdtrack::Chi2MFT, emmlfwdtrack::NClustersMFT, + mcparticle::PdgCode, emmlfwdtrack::IsPrimary, emmlfwdtrack::IsCorrectMatch, mcparticle::Pt, mcparticle::Eta, mcparticle::Phi); + // iterators using EMFwdTrackForML = EMFwdTracksForML::iterator; diff --git a/PWGEM/Dilepton/TableProducer/treeCreatorMuonML.cxx b/PWGEM/Dilepton/TableProducer/treeCreatorMuonML.cxx index 0d04d7834d6..6baf82a8c35 100644 --- a/PWGEM/Dilepton/TableProducer/treeCreatorMuonML.cxx +++ b/PWGEM/Dilepton/TableProducer/treeCreatorMuonML.cxx @@ -347,8 +347,11 @@ struct TreeCreatorMuonML { float xErrMFTatMP = 999.f, yErrMFTatMP = 999.f; float xErrMCHMIDatMP = 999.f, yErrMCHMIDatMP = 999.f; - float signed1PtMFTatMP = 999.f, etaMFTatMP = 999.f, phiMFTatMP = 999.f; - float signed1PtMCHMIDatMP = 999.f, etaMCHMIDatMP = 999.f, phiMCHMIDatMP = 999.f; + float signed1PtMFTatMP = 999.f, tglMFTatMP = 999.f, phiMFTatMP = 999.f; + float signed1PtMCHMIDatMP = 999.f, tglMCHMIDatMP = 999.f, phiMCHMIDatMP = 999.f; + + float signed1PtErrMFTatMP = 999.f, tglErrMFTatMP = 999.f, phiErrMFTatMP = 999.f; + float signed1PtErrMCHMIDatMP = 999.f, tglErrMCHMIDatMP = 999.f, phiErrMCHMIDatMP = 999.f; if constexpr (withMFTCov) { auto mfttrackcov = mftCovs.rawIteratorAt(map_mfttrackcovs[mfttrack.globalIndex()]); @@ -358,33 +361,46 @@ struct TreeCreatorMuonML { yMFTatMP = mftsaAtMP.getY(); xErrMFTatMP = std::sqrt(mftsaAtMP.getSigma2X()); yErrMFTatMP = std::sqrt(mftsaAtMP.getSigma2Y()); + signed1PtMFTatMP = mftsaAtMP.getInvQPt(); - etaMFTatMP = mftsaAtMP.getEta(); + tglMFTatMP = mftsaAtMP.getTanl(); phiMFTatMP = RecoDecay::constrainAngle(mftsaAtMP.getPhi(), 0, 1U); + signed1PtErrMFTatMP = std::sqrt(mftsaAtMP.getSigma2InvQPt()); + tglErrMFTatMP = std::sqrt(mftsaAtMP.getSigma2Tanl()); + phiErrMFTatMP = std::sqrt(mftsaAtMP.getSigma2Phi()); auto muonAtMP = propagateMuon(mchtrack, mchtrack, collision, propagationPoint::kToMatchingPlane, glMuonCutGroup.matchingZ, mBz, mZShift); // propagated to matching plane xMCHMIDatMP = muonAtMP.getX(); yMCHMIDatMP = muonAtMP.getY(); xErrMCHMIDatMP = std::sqrt(muonAtMP.getSigma2X()); yErrMCHMIDatMP = std::sqrt(muonAtMP.getSigma2Y()); + signed1PtMCHMIDatMP = muonAtMP.getInvQPt(); - etaMCHMIDatMP = muonAtMP.getEta(); + tglMCHMIDatMP = muonAtMP.getTanl(); phiMCHMIDatMP = RecoDecay::constrainAngle(muonAtMP.getPhi(), 0, 1U); + signed1PtErrMCHMIDatMP = std::sqrt(muonAtMP.getSigma2InvQPt()); + tglErrMCHMIDatMP = std::sqrt(muonAtMP.getSigma2Tanl()); + phiErrMCHMIDatMP = std::sqrt(muonAtMP.getSigma2Phi()); } float deta = etaMatchedMCHMID - eta; float dphi = phiMatchedMCHMID - phi; o2::math_utils::bringToPMPi(dphi); - mltable(collision.numContrib(), collision.multFT0C(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), hadronicRate, + mltable(collision.posZ(), collision.numContrib(), collision.multFT0C(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), hadronicRate, fwdtrack.trackType(), - signed1PtMFTatMP, etaMFTatMP, phiMFTatMP, - signed1PtMCHMIDatMP, etaMCHMIDatMP, phiMCHMIDatMP, - xMCHMIDatMP, yMCHMIDatMP, - xErrMCHMIDatMP, yErrMCHMIDatMP, + + signed1PtMFTatMP, tglMFTatMP, phiMFTatMP, + signed1PtErrMFTatMP, tglErrMFTatMP, phiErrMFTatMP, xMFTatMP, yMFTatMP, xErrMFTatMP, yErrMFTatMP, - dcaX, dcaY, + + signed1PtMCHMIDatMP, tglMCHMIDatMP, phiMCHMIDatMP, + signed1PtErrMCHMIDatMP, tglErrMCHMIDatMP, phiErrMCHMIDatMP, + xMCHMIDatMP, yMCHMIDatMP, + xErrMCHMIDatMP, yErrMCHMIDatMP, + + // dcaX, dcaY, fwdtrack.nClusters(), pDCA, rAtAbsorberEnd, fwdtrack.chi2MatchMCHMID(), fwdtrack.chi2MatchMCHMFT(), mfttrack.mftClusterSizesAndTrackFlags(), chi2, mchtrack.chi2(), chi2mft, mfttrack.nClusters(), pdgCode, isPrimary, isMatched,