Skip to content

Commit 1c82aa5

Browse files
f3schmiranov25
authored andcommitted
AOD: TrackQA_002
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent 452c2ea commit 1c82aa5

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

Detectors/AOD/src/AODProducerWorkflowSpec.cxx

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -381,9 +381,7 @@ void AODProducerWorkflowDPL::addToTracksQATable(TracksQACursorType& tracksQACurs
381381
trackQAInfoHolder.dRefGloZ,
382382
trackQAInfoHolder.dRefGloSnp,
383383
trackQAInfoHolder.dRefGloTgl,
384-
trackQAInfoHolder.dRefGloQ2Pt,
385-
trackQAInfoHolder.dTofdY,
386-
trackQAInfoHolder.dTofdZ);
384+
trackQAInfoHolder.dRefGloQ2Pt)
387385
}
388386

389387
template <typename mftTracksCursorType, typename AmbigMFTTracksCursorType>
@@ -2569,6 +2567,12 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int
25692567
trackQAHolder.tpcdcaR = 100. * dcaInfo[0] / sqrt(1. + trackPar.getQ2Pt() * trackPar.getQ2Pt());
25702568
trackQAHolder.tpcdcaZ = 100. * dcaInfo[1] / sqrt(1. + trackPar.getQ2Pt() * trackPar.getQ2Pt());
25712569
}
2570+
// This allows to safely clamp any float to one byte, using the
2571+
// minmal/maximum values as under-/overflow borders and rounding to the nearest integer
2572+
auto safeInt8Clamp = [](auto value) -> int8_t {
2573+
using ValType = decltype(value);
2574+
return static_cast<int8_t>(TMath::Nint(std::clamp(value, static_cast<ValType>(std::numeric_limits<int8_t>::min()), static_cast<ValType>(std::numeric_limits<int8_t>::max()))));
2575+
};
25722576
/// get tracklet byteMask
25732577
uint8_t clusterCounters[8] = {0};
25742578
{
@@ -2600,10 +2604,10 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int
26002604
trackQAHolder.tpcdEdxTot2R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC2 * dEdxNorm);
26012605
trackQAHolder.tpcdEdxTot3R = uint8_t(tpcOrig.getdEdx().dEdxTotOROC3 * dEdxNorm);
26022606
///
2603-
float_t scaleTOF = 0;
2607+
float scaleTOF{0};
26042608
if (contributorsGID[GIndex::Source::TOF].isIndexSet()) { // ITS-TPC-TRD-TOF, ITS-TPC-TOF, TPC-TRD-TOF, TPC-TOF
26052609
const auto& tofMatch = data.getTOFMatch(trackIndex);
2606-
const float qpt = gloCopy.getQ2Pt();
2610+
const float qpt = trackPar.getQ2Pt();
26072611
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);
26082612
trackQAHolder.dTofdX = safeInt8Clamp(tofMatch.getDXatTOF() / scaleTOF);
26092613
trackQAHolder.dTofdZ = safeInt8Clamp(tofMatch.getDZatTOF() / scaleTOF);
@@ -2633,13 +2637,6 @@ AODProducerWorkflowDPL::TrackQA AODProducerWorkflowDPL::processBarrelTrackQA(int
26332637
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));
26342638
};
26352639

2636-
// This allows to safely clamp any float to one byte, using the
2637-
// minmal/maximum values as under-/overflow borders and rounding to the nearest integer
2638-
auto safeInt8Clamp = [](auto value) -> int8_t {
2639-
using ValType = decltype(value);
2640-
return static_cast<int8_t>(TMath::Nint(std::clamp(value, static_cast<ValType>(std::numeric_limits<int8_t>::min()), static_cast<ValType>(std::numeric_limits<int8_t>::max()))));
2641-
};
2642-
26432640
// Calculate deltas for contributors
26442641
trackQAHolder.dRefContY = safeInt8Clamp((itsCopy.getY() - tpcCopy.getY()) * scaleCont(0));
26452642
trackQAHolder.dRefContZ = safeInt8Clamp((itsCopy.getZ() - tpcCopy.getZ()) * scaleCont(1));

Framework/Core/include/Framework/AnalysisDataModel.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,8 @@ DECLARE_SOA_COLUMN(DeltaRefGloParamZ, deltaRefGloParamZ, int8_t); //! No
686686
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
687687
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
688688
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
689+
DECLARE_SOA_COLUMN(DeltaTOFdX, deltaTOFdX, int8_t); //!
690+
DECLARE_SOA_COLUMN(DeltaTOFdZ, deltaTOFdZ, int8_t); //!
689691

690692
DECLARE_SOA_DYNAMIC_COLUMN(IsDummy, isDummy, //! indicates if the propagation of the contrib. tracks was successful and residuals are available
691693
[](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
709711
trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
710712
trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
711713

714+
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
715+
o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
716+
trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
717+
trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
718+
trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
719+
trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
720+
trackqa::DeltaTOFdX, trackqa::DeltaTOFdZ,
721+
trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
722+
trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
723+
712724
using TracksQAVersion = TracksQA_001;
713725
using TracksQA = TracksQAVersion::iterator;
714726

@@ -1651,7 +1663,7 @@ using Tracked3body = Tracked3Bodys::iterator;
16511663
namespace origins
16521664
{
16531665
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)
1654-
} // namespace origin
1666+
} // namespace origins
16551667

16561668
DECLARE_SOA_TABLE(Origins, "AOD", "ORIGIN", //! Table which contains the IDs of all dataframes merged into this dataframe
16571669
o2::soa::Index<>, origins::DataframeID);

0 commit comments

Comments
 (0)