From 8b85e393049510a5a4361274b361ef0ba8d11089 Mon Sep 17 00:00:00 2001 From: Oleksii Lubynets Date: Mon, 30 Mar 2026 19:41:14 +0200 Subject: [PATCH 1/7] select events by Run condition table --- DPG/Tasks/TPC/tpcSkimsTableCreator.cxx | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx index c91afe4734f..524bc57a30b 100644 --- a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx +++ b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx @@ -25,6 +25,7 @@ #include "PWGLF/DataModel/LFStrangenessPIDTables.h" #include "PWGLF/DataModel/LFStrangenessTables.h" +#include "Common/CCDB/RCTSelectionFlags.h" #include "Common/CCDB/ctpRateFetcher.h" #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/Multiplicity.h" @@ -101,6 +102,11 @@ struct TreeWriterTpcV0 { Configurable maxPt4dwnsmplTsalisProtons{"maxPt4dwnsmplTsalisProtons", 100., "Maximum Pt for applying downsampling factor of protons"}; Configurable maxPt4dwnsmplTsalisElectrons{"maxPt4dwnsmplTsalisElectrons", 100., "Maximum Pt for applying downsampling factor of electrons"}; Configurable maxPt4dwnsmplTsalisKaons{"maxPt4dwnsmplTsalisKaons", 100., "Maximum Pt for applying downsampling factor of kaons"}; + // Configurables for run condtion table + Configurable rctLabel{"rctLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadronPID, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"}; + Configurable checkZdc{"checkZdc", false, "set ZDC flag for PbPb"}; + Configurable treatLimitedAcceptanceAsBad{"treatLimitedAcceptanceAsBad", false, "reject all events where the detectors relevant for the specified Runlist are flagged as LimitedAcceptance"}; + Configurable requireGoodRct{"requireGoodRct", false, "require good detector flag in run condtion table"}; // an arbitrary value of N sigma TOF assigned by TOF task to tracks which are not matched to TOF hits constexpr static float NSigmaTofUnmatched{o2::aod::v0data::kNoTOFValue}; @@ -149,6 +155,8 @@ struct TreeWriterTpcV0 { ctpRateFetcher mRateFetcher; + o2::aod::rctsel::RCTFlagsChecker rctChecker; + TRandom3* fRndm = new TRandom3(0); using Trks = soa::Join; @@ -171,6 +179,8 @@ struct TreeWriterTpcV0 { ccdb->setURL("http://alice-ccdb.cern.ch"); ccdb->setCaching(true); ccdb->setFatalWhenNull(false); + + rctChecker.init(rctLabel, checkZdc, treatLimitedAcceptanceAsBad); } template @@ -413,6 +423,11 @@ struct TreeWriterTpcV0 { if (!isEventSelected(collision, applyEvSel)) { continue; } + const bool isGoodRctEvent = rctChecker.checkTable(collision); + if (requireGoodRct && !isGoodRctEvent) { + continue; + } + const auto& v0s = myV0s.sliceBy(perCollisionV0s, static_cast(collision.globalIndex())); const auto& cascs = myCascs.sliceBy(perCollisionCascs, static_cast(collision.globalIndex())); const auto& bc = collision.bc_as(); @@ -614,6 +629,11 @@ struct TreeWriterTpcTof { Configurable downsamplingTsalisProtons{"downsamplingTsalisProtons", -1., "Downsampling factor to reduce the number of protons"}; Configurable downsamplingTsalisKaons{"downsamplingTsalisKaons", -1., "Downsampling factor to reduce the number of kaons"}; Configurable downsamplingTsalisPions{"downsamplingTsalisPions", -1., "Downsampling factor to reduce the number of pions"}; + // Configurables for run condtion table + Configurable rctLabel{"rctLabel", "CBT_hadronPID", "select 1 [CBT, CBT_hadronPID, CBT_muon_glo] see O2Physics/Common/CCDB/RCTSelectionFlags.h"}; + Configurable checkZdc{"checkZdc", false, "set ZDC flag for PbPb"}; + Configurable treatLimitedAcceptanceAsBad{"treatLimitedAcceptanceAsBad", false, "reject all events where the detectors relevant for the specified Runlist are flagged as LimitedAcceptance"}; + Configurable requireGoodRct{"requireGoodRct", false, "require good detector flag in run condtion table"}; struct TofTrack { bool isApplyHardCutOnly; @@ -636,6 +656,8 @@ struct TreeWriterTpcTof { ctpRateFetcher mRateFetcher; + o2::aod::rctsel::RCTFlagsChecker rctChecker; + TRandom3* fRndm = new TRandom3(0); using Trks = soa::JoinsetURL("http://alice-ccdb.cern.ch"); ccdb->setCaching(true); ccdb->setFatalWhenNull(false); + + rctChecker.init(rctLabel, checkZdc, treatLimitedAcceptanceAsBad); } template @@ -779,6 +803,11 @@ struct TreeWriterTpcTof { if (!isEventSelected(collision, applyEvSel)) { continue; } + const bool isGoodRctEvent = rctChecker.checkTable(collision); + if (requireGoodRct && !isGoodRctEvent) { + continue; + } + auto tracksWithITSPid = soa::Attach(tracks); From 3799aa5f0400fce6d6cb2d19784975d17df0f356 Mon Sep 17 00:00:00 2001 From: Oleksii Lubynets Date: Wed, 1 Apr 2026 23:16:48 +0200 Subject: [PATCH 2/7] add isGoodRct column to output trees --- DPG/Tasks/TPC/tpcSkimsTableCreator.cxx | 20 ++++++++++++-------- DPG/Tasks/TPC/tpcSkimsTableCreator.h | 4 +++- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx index 524bc57a30b..2fe30e0d8a9 100644 --- a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx +++ b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx @@ -259,7 +259,7 @@ struct TreeWriterTpcV0 { } template - void fillSkimmedV0Table(V0Casc const& v0casc, T const& track, aod::TracksQA const& trackQA, const bool existTrkQA, C const& collision, const float nSigmaTPC, const float nSigmaTOF, const float nSigmaITS, const float dEdxExp, const o2::track::PID::ID id, const int runnumber, const double dwnSmplFactor, const float hadronicRate, const int bcGlobalIndex, const int bcTimeFrameId, const int bcBcInTimeFrame, const OccupancyValues& occValues) + void fillSkimmedV0Table(V0Casc const& v0casc, T const& track, aod::TracksQA const& trackQA, const bool existTrkQA, C const& collision, const float nSigmaTPC, const float nSigmaTOF, const float nSigmaITS, const float dEdxExp, const o2::track::PID::ID id, const int runnumber, const double dwnSmplFactor, const float hadronicRate, const int bcGlobalIndex, const int bcTimeFrameId, const int bcBcInTimeFrame, const OccupancyValues& occValues, const bool isGoodRctEvent) { const double ncl = track.tpcNClsFound(); const double nclPID = track.tpcNClsFindableMinusPID(); @@ -286,7 +286,8 @@ struct TreeWriterTpcV0 { tpcdEdxNorm = existTrkQA ? trackQA.tpcdEdxNorm() : UndefValueFloat; } if constexpr (ModeId == ModeStandard || ModeId == ModeWithdEdxTrkQA) { - rowTPCTree(usedDedx, + rowTPCTree(isGoodRctEvent, + usedDedx, 1. / dEdxExp, track.tpcInnerParam(), track.tgl(), @@ -316,7 +317,8 @@ struct TreeWriterTpcV0 { v0radius, gammapsipair); } else { - rowTPCTreeWithTrkQA(usedDedx, + rowTPCTreeWithTrkQA(isGoodRctEvent, + usedDedx, 1. / dEdxExp, track.tpcInnerParam(), track.tgl(), @@ -477,7 +479,7 @@ struct TreeWriterTpcV0 { if constexpr (ModeId == ModeWithTrkQA) { evaluateOccupancyVariables(dauTrack, occValues); } - fillSkimmedV0Table(mother, dauTrack, trackQAInstance, existTrkQA, collision, daughter.tpcNSigma, daughter.tofNSigma, daughter.itsNSigma, daughter.tpcExpSignal, daughter.id, runnumber, daughter.dwnSmplFactor, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame, occValues); + fillSkimmedV0Table(mother, dauTrack, trackQAInstance, existTrkQA, collision, daughter.tpcNSigma, daughter.tofNSigma, daughter.itsNSigma, daughter.tpcExpSignal, daughter.id, runnumber, daughter.dwnSmplFactor, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame, occValues, isGoodRctEvent); } }; @@ -692,7 +694,7 @@ struct TreeWriterTpcTof { } template - void fillSkimmedTpcTofTable(T const& track, aod::TracksQA const& trackQA, const bool existTrkQA, C const& collision, const float nSigmaTPC, const float nSigmaTOF, const float nSigmaITS, const float dEdxExp, const o2::track::PID::ID id, const int runnumber, const double dwnSmplFactor, const double hadronicRate, const int bcGlobalIndex, const int bcTimeFrameId, const int bcBcInTimeFrame, const OccupancyValues& occValues) + void fillSkimmedTpcTofTable(T const& track, aod::TracksQA const& trackQA, const bool existTrkQA, C const& collision, const float nSigmaTPC, const float nSigmaTOF, const float nSigmaITS, const float dEdxExp, const o2::track::PID::ID id, const int runnumber, const double dwnSmplFactor, const double hadronicRate, const int bcGlobalIndex, const int bcTimeFrameId, const int bcBcInTimeFrame, const OccupancyValues& occValues, const bool isGoodRctEvent) { const double ncl = track.tpcNClsFound(); const double nclPID = track.tpcNClsFindableMinusPID(); @@ -712,7 +714,8 @@ struct TreeWriterTpcTof { tpcdEdxNorm = existTrkQA ? trackQA.tpcdEdxNorm() : UndefValueFloat; } if (ModeId == ModeStandard || ModeId == ModeWithdEdxTrkQA) { - rowTPCTOFTree(usedEdx, + rowTPCTOFTree(isGoodRctEvent, + usedEdx, 1. / dEdxExp, track.tpcInnerParam(), track.tgl(), @@ -736,7 +739,8 @@ struct TreeWriterTpcTof { hadronicRate, tpcdEdxNorm); } else { - rowTPCTOFTreeWithTrkQA(usedEdx, + rowTPCTOFTreeWithTrkQA(isGoodRctEvent, + usedEdx, 1. / dEdxExp, track.tpcInnerParam(), track.tgl(), @@ -864,7 +868,7 @@ struct TreeWriterTpcTof { ((trk.tpcInnerParam() <= tofTrack->maxMomTPCOnly && std::fabs(tofTrack->tpcNSigma) < tofTrack->nSigmaTPCOnly) || (trk.tpcInnerParam() > tofTrack->maxMomTPCOnly && std::fabs(tofTrack->tofNSigma) < tofTrack->nSigmaTofTpctof && std::fabs(tofTrack->tpcNSigma) < tofTrack->nSigmaTpcTpctof)) && downsampleTsalisCharged(fRndm, trk.pt(), tofTrack->downsamplingTsalis, tofTrack->mass, sqrtSNN)) { - fillSkimmedTpcTofTable(trk, trackQA, existTrkQA, collision, tofTrack->tpcNSigma, tofTrack->tofNSigma, tofTrack->itsNSigma, tofTrack->tpcExpSignal, tofTrack->pid, runnumber, tofTrack->dwnSmplFactor, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame, occValues); + fillSkimmedTpcTofTable(trk, trackQA, existTrkQA, collision, tofTrack->tpcNSigma, tofTrack->tofNSigma, tofTrack->itsNSigma, tofTrack->tpcExpSignal, tofTrack->pid, runnumber, tofTrack->dwnSmplFactor, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame, occValues, isGoodRctEvent); } } } /// Loop tracks diff --git a/DPG/Tasks/TPC/tpcSkimsTableCreator.h b/DPG/Tasks/TPC/tpcSkimsTableCreator.h index 0d05ce33348..5d66a8e19fb 100644 --- a/DPG/Tasks/TPC/tpcSkimsTableCreator.h +++ b/DPG/Tasks/TPC/tpcSkimsTableCreator.h @@ -32,6 +32,7 @@ namespace o2::aod { namespace tpcskims { +DECLARE_SOA_COLUMN(IsGoodRct, isGoodRct, bool); DECLARE_SOA_COLUMN(InvDeDxExpTPC, invDeDxExpTPC, float); DECLARE_SOA_COLUMN(Mass, mass, float); DECLARE_SOA_COLUMN(BetaGamma, betaGamma, float); @@ -59,7 +60,8 @@ DECLARE_SOA_COLUMN(BcBcInTimeFrame, bcBcInTimeFrame, int); } // namespace tpcskims #define TPCSKIMS_COLUMNS_BASE \ - o2::aod::track::TPCSignal, \ + tpcskims::IsGoodRct, \ + o2::aod::track::TPCSignal, \ tpcskims::InvDeDxExpTPC, \ o2::aod::track::TPCInnerParam, \ o2::aod::track::Tgl, \ From 8abde21143efa8cb7e70fa8dc60bacd5bec26809 Mon Sep 17 00:00:00 2001 From: Oleksii Lubynets Date: Wed, 1 Apr 2026 23:23:14 +0200 Subject: [PATCH 3/7] fix typo --- DPG/Tasks/TPC/tpcSkimsTableCreator.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx index 2fe30e0d8a9..6255230daad 100644 --- a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx +++ b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx @@ -467,8 +467,8 @@ struct TreeWriterTpcV0 { const auto& dauTrackWithITSPid = tracksWithITSPid.rawIteratorAt(trackId); const auto v0Id = getAddId(v0); const V0Mother v0Mother = createV0Mother(v0Id); - const auto daighterId = isPositive ? v0Mother.posDaughterId : v0Mother.negDaughterId; - const V0Daughter daughter = createV0Daughter(v0, dauTrackWithITSPid, v0Id, daighterId, isPositive); + const auto daughterId = isPositive ? v0Mother.posDaughterId : v0Mother.negDaughterId; + const V0Daughter daughter = createV0Daughter(v0, dauTrackWithITSPid, v0Id, daughterId, isPositive); const bool passTrackSelection = isTrackSelected(dauTrack, trackSelection); const bool passDownsamplig = downsampleTsalisCharged(fRndm, dauTrack.pt(), daughter.downsamplingTsalis, daughter.mass, sqrtSNN, daughter.maxPt4dwnsmplTsalis); From 1604e8ddbf4ae7fa4ea5a4636a6060b24d9f0234 Mon Sep 17 00:00:00 2001 From: Oleksii Lubynets Date: Wed, 1 Apr 2026 23:28:10 +0200 Subject: [PATCH 4/7] do not inline template functions --- DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h b/DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h index e32cee320fc..dad1f3312ed 100644 --- a/DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h +++ b/DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h @@ -47,7 +47,7 @@ enum { /// Event selection template -inline bool isEventSelected(const CollisionType& collision, const int applyEvSel) +bool isEventSelected(const CollisionType& collision, const int applyEvSel) { if ((applyEvSel == EventSelectionRun2 && !collision.sel7()) || (applyEvSel == EventSelectionRun3 && !collision.sel8())) { return false; @@ -86,7 +86,7 @@ inline bool downsampleTsalisCharged(TRandom3* fRndm, const double pt, const doub // Track selection template -inline bool isTrackSelected(const TrackType& track, const int trackSelection) +bool isTrackSelected(const TrackType& track, const int trackSelection) { bool isSelected{false}; isSelected |= trackSelection == TrackSelectionNoCut; @@ -101,7 +101,7 @@ inline bool isTrackSelected(const TrackType& track, const int trackSelection) /// Evaluate tpcSignal with or without dEdx correction template -inline double tpcSignalGeneric(const TrkType& track) +double tpcSignalGeneric(const TrkType& track) { if constexpr (IsCorrectedDeDx) { return track.tpcSignalCorrected(); @@ -127,7 +127,7 @@ using TrackMeanOccs = soa::Join -inline void evaluateOccupancyVariables(const TrkType& track, OccupancyValues& occValues) +void evaluateOccupancyVariables(const TrkType& track, OccupancyValues& occValues) { if (track.tmoId() == -1) { return; From 08a374fb9908d476a6a902cbeeb6b2b44bbf4221 Mon Sep 17 00:00:00 2001 From: Oleksii Lubynets Date: Wed, 1 Apr 2026 23:42:08 +0200 Subject: [PATCH 5/7] decompose if-constituents into booleans --- DPG/Tasks/TPC/tpcSkimsTableCreator.cxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx index 6255230daad..10e1d94abc9 100644 --- a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx +++ b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx @@ -864,10 +864,11 @@ struct TreeWriterTpcTof { } for (const auto& tofTrack : {&tofTriton, &tofDeuteron, &tofProton, &tofKaon, &tofPion}) { - if ((!tofTrack->isApplyHardCutOnly || trk.tpcInnerParam() < tofTrack->maxMomHardCutOnly) && - ((trk.tpcInnerParam() <= tofTrack->maxMomTPCOnly && std::fabs(tofTrack->tpcNSigma) < tofTrack->nSigmaTPCOnly) || - (trk.tpcInnerParam() > tofTrack->maxMomTPCOnly && std::fabs(tofTrack->tofNSigma) < tofTrack->nSigmaTofTpctof && std::fabs(tofTrack->tpcNSigma) < tofTrack->nSigmaTpcTpctof)) && - downsampleTsalisCharged(fRndm, trk.pt(), tofTrack->downsamplingTsalis, tofTrack->mass, sqrtSNN)) { + const bool passMomHardCut = !tofTrack->isApplyHardCutOnly || trk.tpcInnerParam() < tofTrack->maxMomHardCutOnly; + const bool passMomTpcOnly = trk.tpcInnerParam() <= tofTrack->maxMomTPCOnly && std::fabs(tofTrack->tpcNSigma) < tofTrack->nSigmaTPCOnly; + const bool passMomTpcTof = trk.tpcInnerParam() > tofTrack->maxMomTPCOnly && std::fabs(tofTrack->tofNSigma) < tofTrack->nSigmaTofTpctof && std::fabs(tofTrack->tpcNSigma) < tofTrack->nSigmaTpcTpctof; + const bool passDownsamplig = downsampleTsalisCharged(fRndm, trk.pt(), tofTrack->downsamplingTsalis, tofTrack->mass, sqrtSNN); + if (passMomHardCut && (passMomTpcOnly || passMomTpcTof) && passDownsamplig) { fillSkimmedTpcTofTable(trk, trackQA, existTrkQA, collision, tofTrack->tpcNSigma, tofTrack->tofNSigma, tofTrack->itsNSigma, tofTrack->tpcExpSignal, tofTrack->pid, runnumber, tofTrack->dwnSmplFactor, hadronicRate, bcGlobalIndex, bcTimeFrameId, bcBcInTimeFrame, occValues, isGoodRctEvent); } } From 8cd4f03fc3c940257f53474cc8021243af0be790 Mon Sep 17 00:00:00 2001 From: Oleksii Lubynets Date: Thu, 2 Apr 2026 17:47:14 +0200 Subject: [PATCH 6/7] value-initialize uninitialized objects --- DPG/Tasks/TPC/tpcSkimsTableCreator.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx index 10e1d94abc9..4df9cac4117 100644 --- a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx +++ b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx @@ -151,11 +151,11 @@ struct TreeWriterTpcV0 { int negDaughterId{UndefValueInt}; }; - Service ccdb; + Service ccdb{}; - ctpRateFetcher mRateFetcher; + ctpRateFetcher mRateFetcher{}; - o2::aod::rctsel::RCTFlagsChecker rctChecker; + o2::aod::rctsel::RCTFlagsChecker rctChecker{}; TRandom3* fRndm = new TRandom3(0); @@ -654,11 +654,11 @@ struct TreeWriterTpcTof { double nSigmaTpcTpctof; }; - Service ccdb; + Service ccdb{}; - ctpRateFetcher mRateFetcher; + ctpRateFetcher mRateFetcher{}; - o2::aod::rctsel::RCTFlagsChecker rctChecker; + o2::aod::rctsel::RCTFlagsChecker rctChecker{}; TRandom3* fRndm = new TRandom3(0); @@ -858,7 +858,7 @@ struct TreeWriterTpcTof { TofTrack tofPion(false, UndefValueDouble, maxMomTPCOnlyPi, trk.tpcNSigmaPi(), nSigmaTPCOnlyPi, downsamplingTsalisPions, MassPiPlus, trk.tofNSigmaPi(), trk.itsNSigmaPi(), trk.tpcExpSignalPi(tpcSignalGeneric(trk)), PidPion, dwnSmplFactorPi, nSigmaTofTpctofPi, nSigmaTpcTpctofPi); - OccupancyValues occValues; + OccupancyValues occValues{}; if constexpr (ModeId == ModeWithTrkQA) { evaluateOccupancyVariables(trk, occValues); } From 75b6cb47072cc4e6763e959ad2a4cb169231c7ef Mon Sep 17 00:00:00 2001 From: Oleksii Lubynets Date: Thu, 2 Apr 2026 18:26:29 +0200 Subject: [PATCH 7/7] remove & from const auto& = rvalue --- DPG/Tasks/TPC/tpcSkimsTableCreator.cxx | 24 +++++++++++------------ DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx index 4df9cac4117..67ae7bccf23 100644 --- a/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx +++ b/DPG/Tasks/TPC/tpcSkimsTableCreator.cxx @@ -417,9 +417,9 @@ struct TreeWriterTpcV0 { } } - const auto& tracksWithITSPid = soa::Attach(myTracks); + const auto tracksWithITSPid = soa::Attach(myTracks); for (const auto& collision : collisions) { if (!isEventSelected(collision, applyEvSel)) { @@ -430,9 +430,9 @@ struct TreeWriterTpcV0 { continue; } - const auto& v0s = myV0s.sliceBy(perCollisionV0s, static_cast(collision.globalIndex())); - const auto& cascs = myCascs.sliceBy(perCollisionCascs, static_cast(collision.globalIndex())); - const auto& bc = collision.bc_as(); + const auto v0s = myV0s.sliceBy(perCollisionV0s, static_cast(collision.globalIndex())); + const auto cascs = myCascs.sliceBy(perCollisionCascs, static_cast(collision.globalIndex())); + const auto bc = collision.bc_as(); const int runnumber = bc.runNumber(); const auto hadronicRate = mRateFetcher.fetch(ccdb.service, bc.timestamp(), runnumber, irSource) * OneToKilo; const int bcGlobalIndex = bc.globalIndex(); @@ -464,7 +464,7 @@ struct TreeWriterTpcV0 { auto fillDaughterTrack = [&](const auto& mother, const TrksType::iterator& dauTrack, const auto& v0, const bool isPositive) { const auto [trackQAInstance, existTrkQA] = getTrackQA(dauTrack); const auto trackId = dauTrack.globalIndex(); - const auto& dauTrackWithITSPid = tracksWithITSPid.rawIteratorAt(trackId); + const auto dauTrackWithITSPid = tracksWithITSPid.rawIteratorAt(trackId); const auto v0Id = getAddId(v0); const V0Mother v0Mother = createV0Mother(v0Id); const auto daughterId = isPositive ? v0Mother.posDaughterId : v0Mother.negDaughterId; @@ -489,8 +489,8 @@ struct TreeWriterTpcV0 { if (v0Id == MotherUndef) { continue; } - const auto& posTrack = v0.posTrack_as(); - const auto& negTrack = v0.negTrack_as(); + const auto posTrack = v0.posTrack_as(); + const auto negTrack = v0.negTrack_as(); fillDaughterTrack(v0, posTrack, v0, true); fillDaughterTrack(v0, negTrack, v0, false); @@ -502,7 +502,7 @@ struct TreeWriterTpcV0 { if (cascId == MotherUndef) { continue; } - const auto& bachTrack = casc.bachelor_as(); + const auto bachTrack = casc.bachelor_as(); // Omega and antiomega const auto isDaughterPositive = cascId == MotherAntiOmega ? true : false; fillDaughterTrack(casc, bachTrack, casc, isDaughterPositive); @@ -803,7 +803,7 @@ struct TreeWriterTpcTof { } } for (const auto& collision : collisions) { - const auto& tracks = myTracks.sliceBy(perCollisionTracksType, collision.globalIndex()); + const auto tracks = myTracks.sliceBy(perCollisionTracksType, collision.globalIndex()); if (!isEventSelected(collision, applyEvSel)) { continue; } @@ -820,7 +820,7 @@ struct TreeWriterTpcTof { tracksWithITSPid.bindExternalIndices(&trackMeanOccs); } - const auto& bc = collision.bc_as(); + const auto bc = collision.bc_as(); const int runnumber = bc.runNumber(); const auto hadronicRate = mRateFetcher.fetch(ccdb.service, bc.timestamp(), runnumber, irSource) * OneToKilo; const int bcGlobalIndex = bc.globalIndex(); diff --git a/DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h b/DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h index dad1f3312ed..74f6dcb884a 100644 --- a/DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h +++ b/DPG/Tasks/TPC/utilsTpcSkimsTableCreator.h @@ -132,7 +132,7 @@ void evaluateOccupancyVariables(const TrkType& track, OccupancyValues& occValues if (track.tmoId() == -1) { return; } - const auto& tmoFromTrack = track.template tmo_as(); + const auto tmoFromTrack = track.template tmo_as(); occValues.tmoPrimUnfm80 = tmoFromTrack.tmoPrimUnfm80(); occValues.tmoFV0AUnfm80 = tmoFromTrack.tmoFV0AUnfm80(); occValues.tmoFT0AUnfm80 = tmoFromTrack.tmoFT0AUnfm80();