diff --git a/PWGEM/Dilepton/DataModel/lmeeMLTables.h b/PWGEM/Dilepton/DataModel/lmeeMLTables.h index dd9001ab964..77245cee69d 100644 --- a/PWGEM/Dilepton/DataModel/lmeeMLTables.h +++ b/PWGEM/Dilepton/DataModel/lmeeMLTables.h @@ -199,8 +199,15 @@ namespace emmlevent { DECLARE_SOA_COLUMN(SubGeneratorId, subGeneratorId, int); //! sub generator Id of mc collision } // namespace emmlevent + +DECLARE_SOA_TABLE(EMMLEvents, "AOD", "EMMLEVENT", //! + o2::soa::Index<>, collision::NumContrib, evsel::NumTracksInTimeRange, evsel::SumAmpFT0CInTimeRange); +// iterators +using EMMLEvent = EMMLEvents::iterator; + namespace emmltrack { +DECLARE_SOA_INDEX_COLUMN(EMMLEvent, emmlevent); //! index to event table 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 @@ -215,8 +222,8 @@ DECLARE_SOA_COLUMN(IsCorrectCollision, isCorrectCollision, bool); //! LH pair is } // namespace emmltrack DECLARE_SOA_TABLE(EMMLLeptons, "AOD", "EMMLLEPTON", //! - o2::soa::Index<>, collision::NumContrib, evsel::NumTracksInTimeRange, evsel::SumAmpFT0CInTimeRange, emmlevent::SubGeneratorId, - emmltrack::Signed1PtL, emmltrack::EtaL, + o2::soa::Index<>, emmltrack::EMMLEventId, emmlevent::SubGeneratorId, + emmltrack::Signed1PtL, emmltrack::EtaL, emmltrack::PhiL, emmltrack::ImpParXYL, emmltrack::ImpParZL, emmltrack::ImpParCYYL, emmltrack::ImpParCZYL, emmltrack::ImpParCZZL, emmltrack::IsMotherFromBeauty, emmltrack::PdgCodeMother, emmltrack::IsCorrectCollision); // iterators @@ -224,7 +231,7 @@ using EMMLLepton = EMMLLeptons::iterator; namespace emmllhpair { -DECLARE_SOA_INDEX_COLUMN(EMMLLepton, emmllepton); //! most propable emeventId +DECLARE_SOA_INDEX_COLUMN(EMMLLepton, emmllepton); //! index to lepton table DECLARE_SOA_COLUMN(Signed1PtH, signedPtH, float); //! sign/pT of associated hadron DECLARE_SOA_COLUMN(PtH, ptH, float); //! pT of associated hadron @@ -276,7 +283,7 @@ DECLARE_SOA_COLUMN(PdgCodeIM, pdgCodeIM, int); //! pdg code of DECLARE_SOA_COLUMN(FoundCommonMother, foundCommonMother, bool); //! decay length resolution of LH pair } // namespace emmllhpair -DECLARE_SOA_TABLE(EMMLLHPairs, "AOD", "EMMLLHPAIR", //! +DECLARE_SOA_TABLE(EMMLLTPairs, "AOD", "EMMLLTPAIR", //! emmllhpair::EMMLLeptonId, emmllhpair::Signed1PtH, emmllhpair::EtaH, emmllhpair::ImpParXYH, emmllhpair::ImpParZH, emmllhpair::ImpParCYYH, emmllhpair::ImpParCZYH, emmllhpair::ImpParCZZH, @@ -288,7 +295,7 @@ DECLARE_SOA_TABLE(EMMLLHPairs, "AOD", "EMMLLHPAIR", //! emmllhpair::ImpParXY, emmllhpair::ImpParZ, emmllhpair::ImpParCYY, emmllhpair::ImpParCZY, emmllhpair::ImpParCZZ, emmllhpair::PdgCodeH, emmllhpair::PdgCodeIM, emmllhpair::FoundCommonMother); // iterators -using EMMLLHPair = EMMLLHPairs::iterator; +using EMMLLTPair = EMMLLTPairs::iterator; DECLARE_SOA_TABLE(EMMLLV0Pairs, "AOD", "EMMLLV0PAIR", //! emmllhpair::EMMLLeptonId, emmllhpair::V0Type, @@ -302,7 +309,7 @@ DECLARE_SOA_TABLE(EMMLLV0Pairs, "AOD", "EMMLLV0PAIR", //! // iterators using EMMLLV0Pair = EMMLLV0Pairs::iterator; -DECLARE_SOA_TABLE(EMMLLCascPairs, "AOD", "EMMLLCAPAIR", //! +DECLARE_SOA_TABLE(EMMLLCascPairs, "AOD", "EMMLLCPAIR", //! emmllhpair::EMMLLeptonId, emmllhpair::CascadeType, emmllhpair::Signed1PtH, emmllhpair::RapidityC, emmllhpair::CascCPA, emmllhpair::CascCPAXY, emmllhpair::CascCPARZ, diff --git a/PWGEM/Dilepton/Tasks/taggingHFE.cxx b/PWGEM/Dilepton/Tasks/taggingHFE.cxx index 28b186210c1..ac395fbe2fc 100644 --- a/PWGEM/Dilepton/Tasks/taggingHFE.cxx +++ b/PWGEM/Dilepton/Tasks/taggingHFE.cxx @@ -87,8 +87,9 @@ struct taggingHFE { using MyV0s = soa::Join; using MyCascades = soa::Join; + Produces eventTable; Produces leptonTable; - Produces emmllhpair; + Produces emmlltpair; Produces emmllv0pair; Produces emmllcascpair; @@ -1621,6 +1622,7 @@ struct taggingHFE { } } // end of cascade loop + int npos = 0; for (const auto& positronId : positronIds) { auto pos = tracks.rawIteratorAt(positronId); mDcaInfoCov.set(999, 999, 999, 999, 999); @@ -1648,8 +1650,9 @@ struct taggingHFE { continue; } - leptonTable(collision.numContrib(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), mcCollision_mcpos.getSubGeneratorId(), - leptonParCov.getQ2Pt(), leptonParCov.getEta(), dcaXY_lepton, dcaZ_lepton, leptonParCov.getSigmaY2(), leptonParCov.getSigmaZY(), leptonParCov.getSigmaZ2(), + npos++; + leptonTable(eventTable.lastIndex() + 1, mcCollision_mcpos.getSubGeneratorId(), + leptonParCov.getQ2Pt(), leptonParCov.getEta(), RecoDecay::constrainAngle(leptonParCov.getPhi(), 0, 1U), dcaXY_lepton, dcaZ_lepton, leptonParCov.getSigmaY2(), leptonParCov.getSigmaZY(), leptonParCov.getSigmaZ2(), isMotherFromB, mcMother.pdgCode(), isCorrectCollision); // D0 -> e+ nu_e K-, br = 0.03538, ctau = 123.01 um, m = 1864 MeV/c2 @@ -1701,7 +1704,7 @@ struct taggingHFE { float tofNSigmaKa = mapTOFNsigmaKaReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())]; float tofNSigmaPr = mapTOFNsigmaPrReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())]; - emmllhpair(leptonTable.lastIndex(), + emmlltpair(leptonTable.lastIndex(), trackParCov.getQ2Pt(), trackParCov.getEta(), dcaXY_kaon, dcaZ_kaon, trackParCov.getSigmaY2(), trackParCov.getSigmaZY(), trackParCov.getSigmaZ2(), kaon.tpcNSigmaPi(), tofNSigmaPi, kaon.tpcNSigmaKa(), tofNSigmaKa, @@ -1760,7 +1763,7 @@ struct taggingHFE { float tofNSigmaKa = mapTOFNsigmaKaReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())]; float tofNSigmaPr = mapTOFNsigmaPrReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())]; - emmllhpair(leptonTable.lastIndex(), + emmlltpair(leptonTable.lastIndex(), trackParCov.getQ2Pt(), trackParCov.getEta(), dcaXY_kaon, dcaZ_kaon, trackParCov.getSigmaY2(), trackParCov.getSigmaZY(), trackParCov.getSigmaZ2(), kaon.tpcNSigmaPi(), tofNSigmaPi, kaon.tpcNSigmaKa(), tofNSigmaKa, @@ -2044,6 +2047,7 @@ struct taggingHFE { } // end of main positron sample + int nele = 0; for (const auto& electronId : electronIds) { auto ele = tracks.rawIteratorAt(electronId); mDcaInfoCov.set(999, 999, 999, 999, 999); @@ -2071,8 +2075,9 @@ struct taggingHFE { continue; } - leptonTable(collision.numContrib(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange(), mcCollision_mcele.getSubGeneratorId(), - leptonParCov.getQ2Pt(), leptonParCov.getEta(), dcaXY_lepton, dcaZ_lepton, leptonParCov.getSigmaY2(), leptonParCov.getSigmaZY(), leptonParCov.getSigmaZ2(), + nele++; + leptonTable(eventTable.lastIndex() + 1, mcCollision_mcele.getSubGeneratorId(), + leptonParCov.getQ2Pt(), leptonParCov.getEta(), RecoDecay::constrainAngle(leptonParCov.getPhi(), 0, 1U), dcaXY_lepton, dcaZ_lepton, leptonParCov.getSigmaY2(), leptonParCov.getSigmaZY(), leptonParCov.getSigmaZ2(), isMotherFromB, mcMother.pdgCode(), isCorrectCollision); for (const auto& kaonId : kaonMinusIds) { @@ -2123,7 +2128,7 @@ struct taggingHFE { float tofNSigmaKa = mapTOFNsigmaKaReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())]; float tofNSigmaPr = mapTOFNsigmaPrReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())]; - emmllhpair(leptonTable.lastIndex(), + emmlltpair(leptonTable.lastIndex(), trackParCov.getQ2Pt(), trackParCov.getEta(), dcaXY_kaon, dcaZ_kaon, trackParCov.getSigmaY2(), trackParCov.getSigmaZY(), trackParCov.getSigmaZ2(), kaon.tpcNSigmaPi(), tofNSigmaPi, kaon.tpcNSigmaKa(), tofNSigmaKa, @@ -2183,7 +2188,7 @@ struct taggingHFE { float tofNSigmaKa = mapTOFNsigmaKaReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())]; float tofNSigmaPr = mapTOFNsigmaPrReassociated[std::make_pair(collision.globalIndex(), kaon.globalIndex())]; - emmllhpair(leptonTable.lastIndex(), + emmlltpair(leptonTable.lastIndex(), trackParCov.getQ2Pt(), trackParCov.getEta(), dcaXY_kaon, dcaZ_kaon, trackParCov.getSigmaY2(), trackParCov.getSigmaZY(), trackParCov.getSigmaZ2(), kaon.tpcNSigmaPi(), tofNSigmaPi, kaon.tpcNSigmaKa(), tofNSigmaKa, @@ -2466,6 +2471,10 @@ struct taggingHFE { } // end of main electron sample + if (npos + nele > 0) { // fill eventTable only if at least 1 electron or positron exists. + eventTable(collision.numContrib(), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange()); + } + electronIds.clear(); electronIds.shrink_to_fit(); positronIds.clear();