diff --git a/PWGLF/DataModel/LFEbyeTables.h b/PWGLF/DataModel/LFEbyeTables.h index 541bcbe5f50..e8549d6025f 100644 --- a/PWGLF/DataModel/LFEbyeTables.h +++ b/PWGLF/DataModel/LFEbyeTables.h @@ -160,6 +160,25 @@ DECLARE_SOA_TABLE(McMiniTrkTables, "AOD", "MCMINITRKTABLE", LFEbyeTable::GenEtaMask, LFEbyeTable::IsReco); using McMiniTrkTable = McMiniTrkTables::iterator; + +DECLARE_SOA_TABLE(MiniChTables, "AOD", "MINICHTABLE", + o2::soa::Index<>, + LFEbyeTable::MiniCollTableId, + LFEbyeTable::Pt, + LFEbyeTable::EtaMask, + LFEbyeTable::SelMask); +using MiniChTable = MiniChTables::iterator; + +DECLARE_SOA_TABLE(McMiniChTables, "AOD", "MCMINICHTABLE", + o2::soa::Index<>, + LFEbyeTable::MiniCollTableId, + LFEbyeTable::Pt, + LFEbyeTable::EtaMask, + LFEbyeTable::SelMask, + LFEbyeTable::GenPt, + LFEbyeTable::GenEtaMask, + LFEbyeTable::IsReco); +using McMiniChTable = McMiniChTables::iterator; } // namespace o2::aod #endif // PWGLF_DATAMODEL_LFEBYETABLES_H_ diff --git a/PWGLF/TableProducer/Nuspex/ebyeMaker.cxx b/PWGLF/TableProducer/Nuspex/ebyeMaker.cxx index c363d84e3f3..61a6eb70cad 100644 --- a/PWGLF/TableProducer/Nuspex/ebyeMaker.cxx +++ b/PWGLF/TableProducer/Nuspex/ebyeMaker.cxx @@ -214,6 +214,8 @@ struct EbyeMaker { Produces mcNucleiEbyeTable; Produces mcLambdaEbyeTable; Produces mcMiniTrkTable; + Produces miniChTable; + Produces mcMiniChTable; std::mt19937 gen32; std::vector candidateV0s; std::array, 2> candidateTracks; @@ -221,12 +223,12 @@ struct EbyeMaker { o2::vertexing::DCAFitterN<2> fitter; std::vector classIds; - int mRunNumber; - float dBz; - uint8_t nTrackletsColl; - uint8_t nTracksColl; - uint8_t nChPartGen; - int nTracksCollFull; + int mRunNumber{-999}; + float dBz{-999.f}; + uint8_t nTrackletsColl{0u}; + uint8_t nTracksColl{0u}; + uint8_t nChPartGen{0u}; + int nTracksCollFull{-999}; Configurable cfgMaterialCorrection{"cfgMaterialCorrection", static_cast(o2::base::Propagator::MatCorrType::USEMatCorrNONE), "Type of material correction"}; Configurable> cfgBetheBlochParams{"cfgBetheBlochParams", {kBetheBlochDefault[0], 2, 6, particleNamesPar, betheBlochParNames}, "TPC Bethe-Bloch parameterisation for deuteron"}; @@ -306,11 +308,11 @@ struct EbyeMaker { Configurable> cfgTrackSels{"cfgTrackSels", {kTrackSels, 1, 12, particleName, trackSelsNames}, "Track selections"}; Configurable> cfgDcaSelsParam{"cfgDcaSelsParam", {kDcaSelsParam[0], 3, 3, dcaSelsNames, dcaParNames}, "DCA threshold settings"}; - std::array ptMin; - std::array ptTof; - std::array ptMax; - std::array nSigmaTpcCutLow; - std::array nSigmaTpcCutUp; + std::array ptMin{0}; + std::array ptTof{0}; + std::array ptMax{0}; + std::array nSigmaTpcCutLow{0}; + std::array nSigmaTpcCutUp{0}; HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; @@ -498,6 +500,14 @@ struct EbyeMaker { candidateTrack.pdgcode > 0 ? candidateTrack.genpt : -candidateTrack.genpt, static_cast(candidateTrack.geneta * 100), candidateTrack.isreco); + mcMiniChTable( + miniCollTable.lastIndex(), + candidateTrack.pt, + static_cast(candidateTrack.eta * 100), + selMask, + candidateTrack.pdgcode > 0 ? candidateTrack.genpt : -candidateTrack.genpt, + static_cast(candidateTrack.geneta * 100), + candidateTrack.isreco); } else if (!isMc) { miniTrkTable( miniCollTable.lastIndex(), @@ -505,6 +515,11 @@ struct EbyeMaker { static_cast(candidateTrack.eta * 100), selMask, candidateTrack.outerPID); + miniChTable( + miniCollTable.lastIndex(), + candidateTrack.pt, + static_cast(candidateTrack.eta * 100), + selMask); } } @@ -663,7 +678,7 @@ struct EbyeMaker { continue; } - if (trackPt <= ptTof[iP] || (trackPt > ptTof[iP] && hasTof)) { + if (trackPt <= ptTof[iP] || hasTof) { CandidateTrack candTrack; candTrack.pt = track.sign() > 0. ? trackPt : -trackPt; candTrack.eta = trackEta; @@ -683,7 +698,6 @@ struct EbyeMaker { } if (lambdaPtMax > lambdaPtMin) { - std::vector trkId; for (const auto& v0 : V0s) { auto posTrack = v0.posTrack_as(); auto negTrack = v0.negTrack_as(); @@ -931,7 +945,7 @@ struct EbyeMaker { candV0.genpt = genPt; candV0.geneta = mcPart.eta(); candV0.pdgcode = pdgCode; - auto it = find_if(candidateV0s.begin(), candidateV0s.end(), [&](CandidateV0 v0) { return v0.mcIndex == mcPart.globalIndex(); }); + auto it = find_if(candidateV0s.begin(), candidateV0s.end(), [&](const CandidateV0& v0) { return v0.mcIndex == mcPart.globalIndex(); }); if (it != candidateV0s.end()) { continue; } else { @@ -945,7 +959,6 @@ struct EbyeMaker { } if ((!mcPart.isPhysicalPrimary() && !doprocessMiniMcRun2)) continue; - auto genPt = std::hypot(mcPart.px(), mcPart.py()); CandidateTrack candTrack; candTrack.genpt = genPt; candTrack.geneta = mcPart.eta(); @@ -955,7 +968,7 @@ struct EbyeMaker { else if (mcPart.has_mothers() && iP == 0 && kUsePID) candTrack.pdgcodemoth = getPartTypeMother(mcPart); - auto it = find_if(candidateTracks[iP].begin(), candidateTracks[iP].end(), [&](CandidateTrack trk) { return trk.mcIndex == mcPart.globalIndex(); }); + auto it = find_if(candidateTracks[iP].begin(), candidateTracks[iP].end(), [&](const CandidateTrack& trk) { return trk.mcIndex == mcPart.globalIndex(); }); if (it != candidateTracks[iP].end()) { continue; } else { @@ -1013,7 +1026,7 @@ struct EbyeMaker { float centrality = collision.centRun2V0M(); const float centTriggerEdges[]{10.f, 30.f, 50.f}; - if (!(collision.sel7() && collision.alias_bit(kINT7)) && (!kINT7Intervals || (kINT7Intervals && ((centrality >= centTriggerEdges[0] && centrality < centTriggerEdges[1]) || centrality > centTriggerEdges[2])))) + if (!(collision.sel7() && collision.alias_bit(kINT7)) && (!kINT7Intervals || ((centrality >= centTriggerEdges[0] && centrality < centTriggerEdges[1]) || centrality > centTriggerEdges[2]))) continue; float centralityCl0 = collision.centRun2CL0();