From 3a2d17dae3c8b7a1d6b09a1d3ce1210075d93304 Mon Sep 17 00:00:00 2001 From: miranov25 Date: Mon, 9 Dec 2024 22:04:51 +0100 Subject: [PATCH 1/7] O2-4592 - adding TOF dX and dZ to the track QA table with relative sigma precision nBins*2 --- .../AODProducerWorkflowSpec.h | 2 ++ Detectors/AOD/src/AODProducerWorkflowSpec.cxx | 18 +++++++++++++++++- Framework/Core/include/Framework/DataTypes.h | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h b/Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h index 2ab7c531be7a8..05c2975d6413a 100644 --- a/Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h +++ b/Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h @@ -433,6 +433,8 @@ class AODProducerWorkflowDPL : public Task int8_t dRefGloSnp{std::numeric_limits::min()}; int8_t dRefGloTgl{std::numeric_limits::min()}; int8_t dRefGloQ2Pt{std::numeric_limits::min()}; + int8_t dTofdX{std::numeric_limits::min()}; + int8_t dTofdZ{std::numeric_limits::min()}; }; // helper struct for addToFwdTracksTable() diff --git a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx index 8ee456634c1e1..6d1023f5e468a 100644 --- a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx +++ b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx @@ -381,7 +381,10 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs trackQAInfoHolder.dRefGloZ, trackQAInfoHolder.dRefGloSnp, trackQAInfoHolder.dRefGloTgl, - trackQAInfoHolder.dRefGloQ2Pt); + trackQAInfoHolder.dRefGloQ2Pt, + trackQAInfoHolder.dTofdY, + trackQAInfoHolder.dTofdZ + ); } template @@ -2597,6 +2600,15 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int trackQAHolder.tpcdEdxTot1R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC1 * dEdxNorm); trackQAHolder.tpcdEdxTot2R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC2 * dEdxNorm); trackQAHolder.tpcdEdxTot3R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC3 * dEdxNorm); + /// + float_t scaleTOF=0; + if (contributorsGID[GIndex::Source::TOF].isIndexSet()) { // ITS-TPC-TRD-TOF, ITS-TPC-TOF, TPC-TRD-TOF, TPC-TOF + const auto& tofMatch = data.getTOFMatch(trackIndex); + const float qpt = gloCopy.getQ2Pt(); + scaleTOF=std::sqrt(o2::aod::track::trackQAScaledTOF[0]*o2::aod::track::trackQAScaledTOF[0]+qpt*qpt*o2::aod::track::trackQAScaledTOF[1]*o2::aod::track::trackQAScaledTOF[1])/(2.*o2::aod::track::trackQAScaleBins); + trackQAHolder.dTofdX = safeInt8Clamp(tofMatch.getDXatTOF()/scaleTOF); + trackQAHolder.dTofdZ = safeInt8Clamp(tofMatch.getDZatTOF()/scaleTOF); + } // Add matching information at a reference point (defined by // o2::aod::track::trackQARefRadius) in the same frame as the global track @@ -2641,6 +2653,7 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int trackQAHolder.dRefGloSnp = safeInt8Clamp(((itsCopy.getSnp() + tpcCopy.getSnp()) * 0.5f - gloCopy.getSnp()) * scaleGlo(2)); trackQAHolder.dRefGloTgl = safeInt8Clamp(((itsCopy.getTgl() + tpcCopy.getTgl()) * 0.5f - gloCopy.getTgl()) * scaleGlo(3)); trackQAHolder.dRefGloQ2Pt = safeInt8Clamp(((itsCopy.getQ2Pt() + tpcCopy.getQ2Pt()) * 0.5f - gloCopy.getQ2Pt()) * scaleGlo(4)); + // if (O2_ENUM_TEST_BIT(mStreamerMask, AODProducerStreamerMask::TrackQA)) { (*mStreamer) << "trackQA" @@ -2684,6 +2697,9 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int << "trackQAHolder.dRefGloSnp=" << trackQAHolder.dRefGloSnp << "trackQAHolder.dRefGloTgl=" << trackQAHolder.dRefGloTgl << "trackQAHolder.dRefGloQ2Pt=" << trackQAHolder.dRefGloQ2Pt + << "trackQAHolder.dTofdY=" << trackQAHolder.dTofdY + << "trackQAHolder.dTofdZ=" << trackQAHolder.dTofdZ + << "scaleTOF=" << scaleTOF << "\n"; } } diff --git a/Framework/Core/include/Framework/DataTypes.h b/Framework/Core/include/Framework/DataTypes.h index 9d829159718d8..fad63a1df7b5c 100644 --- a/Framework/Core/include/Framework/DataTypes.h +++ b/Framework/Core/include/Framework/DataTypes.h @@ -130,6 +130,7 @@ constexpr std::array trackQAScaleContP0{0.257192, 0.0775375, 0.0042428 constexpr std::array trackQAScaleContP1{0.189371, 0.409071, 0.00694444, 0.00720038, 0.0806902}; constexpr std::array trackQAScaleGloP0{0.130985, 0.0775375, 0.00194703, 0.000405458, 0.0160007}; constexpr std::array trackQAScaleGloP1{0.183731, 0.409071, 0.00621802, 0.00624881, 0.0418957}; +constexpr std::array trackQAScaledTOF{1.1,0.33}; } // namespace o2::aod::track namespace o2::aod::fwdtrack From 4599ee75fdf43bb3d6b7bfba660947b06d3968cd Mon Sep 17 00:00:00 2001 From: miranov25 Date: Mon, 9 Dec 2024 22:30:46 +0100 Subject: [PATCH 2/7] O2-4592 - typo fix --- Detectors/AOD/src/AODProducerWorkflowSpec.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx index 6d1023f5e468a..8b81b7862cec2 100644 --- a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx +++ b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx @@ -2697,7 +2697,7 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int << "trackQAHolder.dRefGloSnp=" << trackQAHolder.dRefGloSnp << "trackQAHolder.dRefGloTgl=" << trackQAHolder.dRefGloTgl << "trackQAHolder.dRefGloQ2Pt=" << trackQAHolder.dRefGloQ2Pt - << "trackQAHolder.dTofdY=" << trackQAHolder.dTofdY + << "trackQAHolder.dTofdX=" << trackQAHolder.dTofdX << "trackQAHolder.dTofdZ=" << trackQAHolder.dTofdZ << "scaleTOF=" << scaleTOF << "\n"; From 452c2eae8fbc93bc9441f92b80190284ab6237b9 Mon Sep 17 00:00:00 2001 From: miranov25 Date: Tue, 10 Dec 2024 08:45:56 +0100 Subject: [PATCH 3/7] O2-4592 - clang-format --- Detectors/AOD/src/AODProducerWorkflowSpec.cxx | 11 +++++------ Framework/Core/include/Framework/DataTypes.h | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx index 8b81b7862cec2..4ed0074346325 100644 --- a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx +++ b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx @@ -383,8 +383,7 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs trackQAInfoHolder.dRefGloTgl, trackQAInfoHolder.dRefGloQ2Pt, trackQAInfoHolder.dTofdY, - trackQAInfoHolder.dTofdZ - ); + trackQAInfoHolder.dTofdZ); } template @@ -2601,13 +2600,13 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int trackQAHolder.tpcdEdxTot2R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC2 * dEdxNorm); trackQAHolder.tpcdEdxTot3R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC3 * dEdxNorm); /// - float_t scaleTOF=0; + float_t scaleTOF = 0; if (contributorsGID[GIndex::Source::TOF].isIndexSet()) { // ITS-TPC-TRD-TOF, ITS-TPC-TOF, TPC-TRD-TOF, TPC-TOF const auto& tofMatch = data.getTOFMatch(trackIndex); const float qpt = gloCopy.getQ2Pt(); - scaleTOF=std::sqrt(o2::aod::track::trackQAScaledTOF[0]*o2::aod::track::trackQAScaledTOF[0]+qpt*qpt*o2::aod::track::trackQAScaledTOF[1]*o2::aod::track::trackQAScaledTOF[1])/(2.*o2::aod::track::trackQAScaleBins); - trackQAHolder.dTofdX = safeInt8Clamp(tofMatch.getDXatTOF()/scaleTOF); - trackQAHolder.dTofdZ = safeInt8Clamp(tofMatch.getDZatTOF()/scaleTOF); + scaleTOF = std::sqrt(o2::aod::track::trackQAScaledTOF[0] * o2::aod::track::trackQAScaledTOF[0] + qpt * qpt * o2::aod::track::trackQAScaledTOF[1] * o2::aod::track::trackQAScaledTOF[1]) / (2. * o2::aod::track::trackQAScaleBins); + trackQAHolder.dTofdX = safeInt8Clamp(tofMatch.getDXatTOF() / scaleTOF); + trackQAHolder.dTofdZ = safeInt8Clamp(tofMatch.getDZatTOF() / scaleTOF); } // Add matching information at a reference point (defined by diff --git a/Framework/Core/include/Framework/DataTypes.h b/Framework/Core/include/Framework/DataTypes.h index fad63a1df7b5c..682237c9ae632 100644 --- a/Framework/Core/include/Framework/DataTypes.h +++ b/Framework/Core/include/Framework/DataTypes.h @@ -130,7 +130,7 @@ constexpr std::array trackQAScaleContP0{0.257192, 0.0775375, 0.0042428 constexpr std::array trackQAScaleContP1{0.189371, 0.409071, 0.00694444, 0.00720038, 0.0806902}; constexpr std::array trackQAScaleGloP0{0.130985, 0.0775375, 0.00194703, 0.000405458, 0.0160007}; constexpr std::array trackQAScaleGloP1{0.183731, 0.409071, 0.00621802, 0.00624881, 0.0418957}; -constexpr std::array trackQAScaledTOF{1.1,0.33}; +constexpr std::array trackQAScaledTOF{1.1, 0.33}; } // namespace o2::aod::track namespace o2::aod::fwdtrack From 1c82aa587e9708c6df2f021c6d1ef33b7b40b976 Mon Sep 17 00:00:00 2001 From: Felix Schlepper Date: Tue, 10 Dec 2024 09:22:14 +0100 Subject: [PATCH 4/7] AOD: TrackQA_002 Signed-off-by: Felix Schlepper --- Detectors/AOD/src/AODProducerWorkflowSpec.cxx | 21 ++++++++----------- .../include/Framework/AnalysisDataModel.h | 14 ++++++++++++- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx index 4ed0074346325..291038fcbf247 100644 --- a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx +++ b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx @@ -381,9 +381,7 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs trackQAInfoHolder.dRefGloZ, trackQAInfoHolder.dRefGloSnp, trackQAInfoHolder.dRefGloTgl, - trackQAInfoHolder.dRefGloQ2Pt, - trackQAInfoHolder.dTofdY, - trackQAInfoHolder.dTofdZ); + trackQAInfoHolder.dRefGloQ2Pt) } template @@ -2569,6 +2567,12 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int trackQAHolder.tpcdcaR = 100. * dcaInfo[0] / sqrt(1. + trackPar.getQ2Pt() * trackPar.getQ2Pt()); trackQAHolder.tpcdcaZ = 100. * dcaInfo[1] / sqrt(1. + trackPar.getQ2Pt() * trackPar.getQ2Pt()); } + // This allows to safely clamp any float to one byte, using the + // minmal/maximum values as under-/overflow borders and rounding to the nearest integer + auto safeInt8Clamp = [](auto value) -> int8_t { + using ValType = decltype(value); + return static_cast(TMath::Nint(std::clamp(value, static_cast(std::numeric_limits::min()), static_cast(std::numeric_limits::max())))); + }; /// get tracklet byteMask uint8_t clusterCounters[8] = {0}; { @@ -2600,10 +2604,10 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int trackQAHolder.tpcdEdxTot2R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC2 * dEdxNorm); trackQAHolder.tpcdEdxTot3R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC3 * dEdxNorm); /// - float_t scaleTOF = 0; + float scaleTOF{0}; if (contributorsGID[GIndex::Source::TOF].isIndexSet()) { // ITS-TPC-TRD-TOF, ITS-TPC-TOF, TPC-TRD-TOF, TPC-TOF const auto& tofMatch = data.getTOFMatch(trackIndex); - const float qpt = gloCopy.getQ2Pt(); + const float qpt = trackPar.getQ2Pt(); scaleTOF = std::sqrt(o2::aod::track::trackQAScaledTOF[0] * o2::aod::track::trackQAScaledTOF[0] + qpt * qpt * o2::aod::track::trackQAScaledTOF[1] * o2::aod::track::trackQAScaledTOF[1]) / (2. * o2::aod::track::trackQAScaleBins); trackQAHolder.dTofdX = safeInt8Clamp(tofMatch.getDXatTOF() / scaleTOF); trackQAHolder.dTofdZ = safeInt8Clamp(tofMatch.getDZatTOF() / scaleTOF); @@ -2633,13 +2637,6 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int return o2::aod::track::trackQAScaleBins / std::sqrt(o2::aod::track::trackQAScaleGloP0[i] * o2::aod::track::trackQAScaleGloP0[i] + (o2::aod::track::trackQAScaleGloP1[i] * x) * (o2::aod::track::trackQAScaleGloP1[i] * x)); }; - // This allows to safely clamp any float to one byte, using the - // minmal/maximum values as under-/overflow borders and rounding to the nearest integer - auto safeInt8Clamp = [](auto value) -> int8_t { - using ValType = decltype(value); - return static_cast(TMath::Nint(std::clamp(value, static_cast(std::numeric_limits::min()), static_cast(std::numeric_limits::max())))); - }; - // Calculate deltas for contributors trackQAHolder.dRefContY = safeInt8Clamp((itsCopy.getY() - tpcCopy.getY()) * scaleCont(0)); trackQAHolder.dRefContZ = safeInt8Clamp((itsCopy.getZ() - tpcCopy.getZ()) * scaleCont(1)); diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index 8aba0e3a87ed7..3f320265540e7 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -686,6 +686,8 @@ DECLARE_SOA_COLUMN(DeltaRefGloParamZ, deltaRefGloParamZ, int8_t); //! No DECLARE_SOA_COLUMN(DeltaRefGloParamSnp, deltaRefGloParamSnp, int8_t); //! Normalized delta of global track to average contributors matched tracks at reference point in the same frame Snp DECLARE_SOA_COLUMN(DeltaRefGloParamTgl, deltaRefGloParamTgl, int8_t); //! Normalized delta of global track to average contributors matched tracks at reference point in the same frame Tgl DECLARE_SOA_COLUMN(DeltaRefGloParamQ2Pt, deltaRefGloParamQ2Pt, int8_t); //! Normalized delta of global track to average contributors matched tracks at reference point in the same frame Q2Pt +DECLARE_SOA_COLUMN(DeltaTOFdX, deltaTOFdX, int8_t); //! +DECLARE_SOA_COLUMN(DeltaTOFdZ, deltaTOFdZ, int8_t); //! DECLARE_SOA_DYNAMIC_COLUMN(IsDummy, isDummy, //! indicates if the propagation of the contrib. tracks was successful and residuals are available [](int8_t cY, int8_t cZ, int8_t cSnp, int8_t cTgl, int8_t cQ2Pt, int8_t gY, int8_t gZ, int8_t gSnp, int8_t gTgl, int8_t gQ2Pt) -> bool { @@ -709,6 +711,16 @@ DECLARE_SOA_TABLE_VERSIONED(TracksQA_001, "AOD", "TRACKQA", 1, //! trackQA infor trackqa::IsDummy); +DECLARE_SOA_TABLE_VERSIONED(TracksQA_002, "AOD", "TRACKQA", 2, //! trackQA information - version 2 - including contributor residuals of matched tracks at reference radius + TOF delta information + o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask, + trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R, + trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R, + trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt, + trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt, + trackqa::DeltaTOFdX, trackqa::DeltaTOFdZ, + trackqa::IsDummy); + using TracksQAVersion = TracksQA_001; using TracksQA = TracksQAVersion::iterator; @@ -1651,7 +1663,7 @@ using Tracked3body = Tracked3Bodys::iterator; namespace origins { DECLARE_SOA_COLUMN(DataframeID, dataframeID, uint64_t); //! Data frame ID (what is usually found in directory name in the AO2D.root, i.e. DF_XXX) -} // namespace origin +} // namespace origins DECLARE_SOA_TABLE(Origins, "AOD", "ORIGIN", //! Table which contains the IDs of all dataframes merged into this dataframe o2::soa::Index<>, origins::DataframeID); From 94a607365f914af800da80a18fd871bf1b634487 Mon Sep 17 00:00:00 2001 From: Felix Schlepper Date: Tue, 10 Dec 2024 09:46:32 +0100 Subject: [PATCH 5/7] AOD: Activate TrackQA_002 Signed-off-by: Felix Schlepper --- Detectors/AOD/src/AODProducerWorkflowSpec.cxx | 4 +++- Framework/Core/include/Framework/AnalysisDataModel.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx index 291038fcbf247..e4feca7b07f17 100644 --- a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx +++ b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx @@ -381,7 +381,9 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs trackQAInfoHolder.dRefGloZ, trackQAInfoHolder.dRefGloSnp, trackQAInfoHolder.dRefGloTgl, - trackQAInfoHolder.dRefGloQ2Pt) + trackQAInfoHolder.dRefGloQ2Pt, + trackQAInfoHolder.dTofdX, + trackQAInfoHolder.dTofdZ) } template diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index 3f320265540e7..e73c88f271f1d 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -721,7 +721,7 @@ DECLARE_SOA_TABLE_VERSIONED(TracksQA_002, "AOD", "TRACKQA", 2, //! trackQA infor trackqa::IsDummy); -using TracksQAVersion = TracksQA_001; +using TracksQAVersion = TracksQA_002; using TracksQA = TracksQAVersion::iterator; namespace fwdtrack From 35e0f6455f7afe823b32a6c3b1ffaf77073e121f Mon Sep 17 00:00:00 2001 From: miranov25 Date: Tue, 10 Dec 2024 12:11:08 +0100 Subject: [PATCH 6/7] O2-4592 - patch fix from Felix (not full fix yet) --- Detectors/AOD/src/AODProducerWorkflowSpec.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx index e4feca7b07f17..ae55ec5240f05 100644 --- a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx +++ b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx @@ -383,7 +383,7 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs trackQAInfoHolder.dRefGloTgl, trackQAInfoHolder.dRefGloQ2Pt, trackQAInfoHolder.dTofdX, - trackQAInfoHolder.dTofdZ) + trackQAInfoHolder.dTofdZ); } template From b84615f8318370b265736f67f26a68ab0ac7471b Mon Sep 17 00:00:00 2001 From: miranov25 Date: Tue, 10 Dec 2024 12:31:25 +0100 Subject: [PATCH 7/7] O2-4592 - typ fix - getting TOF source --- Detectors/AOD/src/AODProducerWorkflowSpec.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx index ae55ec5240f05..96ad2459d581c 100644 --- a/Detectors/AOD/src/AODProducerWorkflowSpec.cxx +++ b/Detectors/AOD/src/AODProducerWorkflowSpec.cxx @@ -2607,7 +2607,8 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int trackQAHolder.tpcdEdxTot3R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC3 * dEdxNorm); /// float scaleTOF{0}; - if (contributorsGID[GIndex::Source::TOF].isIndexSet()) { // ITS-TPC-TRD-TOF, ITS-TPC-TOF, TPC-TRD-TOF, TPC-TOF + auto contributorsGIDA = data.getSingleDetectorRefs(trackIndex); + if (contributorsGIDA[GIndex::Source::TOF].isIndexSet()) { // ITS-TPC-TRD-TOF, ITS-TPC-TOF, TPC-TRD-TOF, TPC-TOF const auto& tofMatch = data.getTOFMatch(trackIndex); const float qpt = trackPar.getQ2Pt(); scaleTOF = std::sqrt(o2::aod::track::trackQAScaledTOF[0] * o2::aod::track::trackQAScaledTOF[0] + qpt * qpt * o2::aod::track::trackQAScaledTOF[1] * o2::aod::track::trackQAScaledTOF[1]) / (2. * o2::aod::track::trackQAScaleBins);