From 60622421a4c5f56bb6995fe349a4240316de0960 Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Tue, 24 Jun 2025 15:47:04 +0200 Subject: [PATCH 1/3] Improve D0 calibration data producer --- DPG/Tasks/AOTTrack/D0CalibTables.h | 50 ++- .../derivedDataCreatorD0Calibration.cxx | 406 ++++++++++++++++-- 2 files changed, 401 insertions(+), 55 deletions(-) diff --git a/DPG/Tasks/AOTTrack/D0CalibTables.h b/DPG/Tasks/AOTTrack/D0CalibTables.h index ce8683d716d..e0fc39bbed9 100644 --- a/DPG/Tasks/AOTTrack/D0CalibTables.h +++ b/DPG/Tasks/AOTTrack/D0CalibTables.h @@ -13,18 +13,20 @@ /// \brief Definitions of derived tables produced by data creator for D0 calibration studies /// \author Fabrizio Grosa , CERN -#ifndef D0CALIBTABLES_H_ -#define D0CALIBTABLES_H_ +#ifndef DPG_TASKS_AOTTRACK_D0CALIBTABLES_H_ +#define DPG_TASKS_AOTTRACK_D0CALIBTABLES_H_ -#include -#include -#include +#include "Common/DataModel/EventSelection.h" +#include "Common/DataModel/TrackSelectionTables.h" #include #include -#include "Common/DataModel/EventSelection.h" -#include "Common/DataModel/TrackSelectionTables.h" +#include +#include +#include +#include +#include namespace o2 { @@ -386,7 +388,32 @@ DECLARE_SOA_TABLE(D0CalibTrack, "AOD", "D0CALIBTRACKS", track::TOFExpMom, track::TrackTime, track::TrackTimeRes, - /// *** track QA --> FIXME: info not present for each track in normal AO2Ds, check how to do + /// *** track QA + trackqa::TPCTime0, + trackqa::TPCdEdxNorm, + 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, /// *** DCA, Nsigma track::DcaXY, track::DcaZ, @@ -394,6 +421,7 @@ DECLARE_SOA_TABLE(D0CalibTrack, "AOD", "D0CALIBTRACKS", hf_calib::TpcNumSigmaKa, hf_calib::TofNumSigmaPi, hf_calib::TofNumSigmaKa, + /// *** Occupancy variables hf_calib::CmoPrimUnfm80, hf_calib::CmoFV0AUnfm80, hf_calib::CmoFT0AUnfm80, @@ -407,8 +435,8 @@ DECLARE_SOA_TABLE(D0CalibTrack, "AOD", "D0CALIBTRACKS", namespace hf_calib { -DECLARE_SOA_INDEX_COLUMN_FULL(TrackPos, trackPos, int, D0CalibTrack, ""); //! Index of positive track -DECLARE_SOA_INDEX_COLUMN_FULL(TrackNeg, trackNeg, int, D0CalibTrack, ""); //! Index of negative track +DECLARE_SOA_INDEX_COLUMN_FULL(TrackPos, trackPos, int, D0CalibTrack, "_0"); //! Index of positive track +DECLARE_SOA_INDEX_COLUMN_FULL(TrackNeg, trackNeg, int, D0CalibTrack, "_1"); //! Index of negative track DECLARE_SOA_COLUMN(MassHypo, massHypo, uint8_t); //! mass hypothesis for D0 (D0, D0bar, or both) DECLARE_SOA_COLUMN(Pt, pt, float); //! D0-candidate pT DECLARE_SOA_COLUMN(Eta, eta, float); //! D0-candidate eta @@ -460,4 +488,4 @@ DECLARE_SOA_TABLE(D0CalibCand, "AOD", "D0CALIBCANDS", hf_calib::BdtScoreNonpromptD0bar); } // namespace aod } // namespace o2 -#endif // D0CALIBTABLES_H_ +#endif // DPG_TASKS_AOTTRACK_D0CALIBTABLES_H_ diff --git a/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx b/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx index 7e28f0b01fb..a746ae8aa53 100644 --- a/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx +++ b/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx @@ -35,6 +35,7 @@ #include "CommonDataFormat/InteractionRecord.h" #include #include +#include #include #include #include @@ -48,6 +49,7 @@ #include #include #include +#include using namespace o2; using namespace o2::analysis; @@ -102,7 +104,7 @@ struct DerivedDataCreatorD0Calibration { std::string prefix = "ml"; } cfgMl; - using TracksWCovExtraPid = soa::Join; + using TracksWCovExtraPid = soa::Join; using CollisionsWEvSel = soa::Join; using TrackMeanOccs = soa::Join; @@ -122,6 +124,8 @@ struct DerivedDataCreatorD0Calibration { // tolerances for preselections before vertex reconstruction const float ptTolerance{0.1f}; const float invMassTolerance{0.05f}; + uint32_t precisionCovMask{0xFFFFE000}; // 10 bits + uint32_t precisionDcaMask{0xFFFFFC00}; // 13 bits OutputObj histDownSampl{"histDownSampl"}; @@ -167,7 +171,9 @@ struct DerivedDataCreatorD0Calibration { void process(CollisionsWEvSel const& collisions, aod::TrackAssoc const& trackIndices, TracksWCovExtraPid const&, - aod::BCsWithTimestamps const&) + aod::BCsWithTimestamps const&, + TrackMeanOccs const&, + aod::TracksQAVersion const&) { std::map selectedCollisions; // map with indices of selected collisions (key: original AOD Collision table index, value: D0 collision index) std::map selectedTracks; // map with indices of selected tracks (key: original AOD Track table index, value: D0 daughter track index) @@ -441,64 +447,376 @@ struct DerivedDataCreatorD0Calibration { // collision if (!selectedCollisions.count(collision.globalIndex())) { // fill collision table if not yet present - collTable(collision.posX(), collision.posY(), collision.posZ(), - collision.covXX(), collision.covXY(), collision.covXZ(), collision.covYY(), collision.covYZ(), collision.covZZ(), - collision.numContrib(), uint8_t(std::round(collision.centFT0C())), getCompressedOccupancy(collision.trackOccupancyInTimeRange()), getCompressedOccupancy(collision.ft0cOccupancyInTimeRange()), - eventIR.orbit, runNumber); + collTable(collision.posX(), + collision.posY(), + collision.posZ(), + collision.covXX(), + collision.covXY(), + collision.covXZ(), + collision.covYY(), + collision.covYZ(), + collision.covZZ(), + collision.numContrib(), + uint8_t(std::round(collision.centFT0C())), + getCompressedOccupancy(collision.trackOccupancyInTimeRange()), + getCompressedOccupancy(collision.ft0cOccupancyInTimeRange()), + eventIR.orbit, + runNumber); selectedCollisions[collision.globalIndex()] = collTable.lastIndex(); } // tracks if (!selectedTracks.count(trackPos.globalIndex())) { // fill track table with positive track if not yet present - if (trackPos.tmoId() != -1) { + uint8_t tmoPrimUnfm80{0u}; + uint8_t tmoFV0AUnfm80{0u}; + uint8_t tmoFT0AUnfm80{0u}; + uint8_t tmoFT0CUnfm80{0u}; + uint8_t twmoPrimUnfm80{0u}; + uint8_t twmoFV0AUnfm80{0u}; + uint8_t twmoFT0AUnfm80{0u}; + uint8_t twmoFT0CUnfm80{0u}; + uint8_t tmoRobustT0V0PrimUnfm80{0u}; + uint8_t twmoRobustT0V0PrimUnfm80{0u}; + if (trackPos.has_tmo()) { auto tmoFromTrack = trackPos.tmo_as(); // obtain track mean occupancies - trackTable(selectedCollisions[collision.globalIndex()], - trackPos.x(), trackPos.alpha(), trackPos.y(), trackPos.z(), trackPos.snp(), trackPos.tgl(), trackPos.signed1Pt(), // stored at PV - trackPos.cYY(), trackPos.cZY(), trackPos.cZZ(), trackPos.cSnpY(), trackPos.cSnpZ(), trackPos.cSnpSnp(), trackPos.cTglY(), trackPos.cTglZ(), trackPos.cTglSnp(), trackPos.cTglTgl(), trackPos.c1PtY(), trackPos.c1PtZ(), trackPos.c1PtSnp(), trackPos.c1PtTgl(), trackPos.c1Pt21Pt2(), - trackPos.tpcInnerParam(), trackPos.flags(), trackPos.itsClusterSizes(), trackPos.tpcNClsFindable(), trackPos.tpcNClsFindableMinusFound(), trackPos.tpcNClsFindableMinusCrossedRows(), trackPos.tpcNClsShared(), trackPos.trdPattern(), getCompressedChi2(trackPos.itsChi2NCl()), getCompressedChi2(trackPos.tpcChi2NCl()), getCompressedChi2(trackPos.trdChi2()), getCompressedChi2(trackPos.tofChi2()), trackPos.tpcSignal(), trackPos.trdSignal(), trackPos.length(), trackPos.tofExpMom(), trackPos.trackTime(), trackPos.trackTimeRes(), - dcaPos.getY(), dcaPos.getZ(), getCompressedNumSigmaPid(trackPos.tpcNSigmaPi()), getCompressedNumSigmaPid(trackPos.tpcNSigmaKa()), getCompressedNumSigmaPid(trackPos.tofNSigmaPi()), getCompressedNumSigmaPid(trackPos.tofNSigmaKa()), - getCompressedOccupancy(tmoFromTrack.tmoPrimUnfm80()), getCompressedOccupancy(tmoFromTrack.tmoFV0AUnfm80()), getCompressedOccupancy(tmoFromTrack.tmoFT0AUnfm80()), getCompressedOccupancy(tmoFromTrack.tmoFT0CUnfm80()), - getCompressedOccupancy(tmoFromTrack.twmoPrimUnfm80()), getCompressedOccupancy(tmoFromTrack.twmoFV0AUnfm80()), getCompressedOccupancy(tmoFromTrack.twmoFT0AUnfm80()), getCompressedOccupancy(tmoFromTrack.twmoFT0CUnfm80()), - getCompressedOccupancy(tmoFromTrack.tmoRobustT0V0PrimUnfm80()), getCompressedOccupancy(tmoFromTrack.twmoRobustT0V0PrimUnfm80())); - } else { - // if track doesn't have occupancies stored for it - trackTable(selectedCollisions[collision.globalIndex()], - trackPos.x(), trackPos.alpha(), trackPos.y(), trackPos.z(), trackPos.snp(), trackPos.tgl(), trackPos.signed1Pt(), // stored at PV - trackPos.cYY(), trackPos.cZY(), trackPos.cZZ(), trackPos.cSnpY(), trackPos.cSnpZ(), trackPos.cSnpSnp(), trackPos.cTglY(), trackPos.cTglZ(), trackPos.cTglSnp(), trackPos.cTglTgl(), trackPos.c1PtY(), trackPos.c1PtZ(), trackPos.c1PtSnp(), trackPos.c1PtTgl(), trackPos.c1Pt21Pt2(), - trackPos.tpcInnerParam(), trackPos.flags(), trackPos.itsClusterSizes(), trackPos.tpcNClsFindable(), trackPos.tpcNClsFindableMinusFound(), trackPos.tpcNClsFindableMinusCrossedRows(), trackPos.tpcNClsShared(), trackPos.trdPattern(), getCompressedChi2(trackPos.itsChi2NCl()), getCompressedChi2(trackPos.tpcChi2NCl()), getCompressedChi2(trackPos.trdChi2()), getCompressedChi2(trackPos.tofChi2()), trackPos.tpcSignal(), trackPos.trdSignal(), trackPos.length(), trackPos.tofExpMom(), trackPos.trackTime(), trackPos.trackTimeRes(), - dcaPos.getY(), dcaPos.getZ(), getCompressedNumSigmaPid(trackPos.tpcNSigmaPi()), getCompressedNumSigmaPid(trackPos.tpcNSigmaKa()), getCompressedNumSigmaPid(trackPos.tofNSigmaPi()), getCompressedNumSigmaPid(trackPos.tofNSigmaKa()), - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + tmoPrimUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoPrimUnfm80()); + tmoFV0AUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoFV0AUnfm80()); + tmoFT0AUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoFT0AUnfm80()); + tmoFT0CUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoFT0CUnfm80()); + twmoPrimUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoPrimUnfm80()); + twmoFV0AUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoFV0AUnfm80()); + twmoFT0AUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoFT0AUnfm80()); + twmoFT0CUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoFT0CUnfm80()); + tmoRobustT0V0PrimUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoRobustT0V0PrimUnfm80()); + twmoRobustT0V0PrimUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoRobustT0V0PrimUnfm80()); + } + float tpcTime0{0.f}; + float tpcdEdxNorm{0.f}; + int16_t tpcDcaR{0}; + int16_t tpcDcaZ{0}; + uint8_t tpcClusterByteMask{0u}; + uint8_t tpcdEdxMax0R{0u}; + uint8_t tpcdEdxMax1R{0u}; + uint8_t tpcdEdxMax2R{0u}; + uint8_t tpcdEdxMax3R{0u}; + uint8_t tpcdEdxTot0R{0u}; + uint8_t tpcdEdxTot1R{0u}; + uint8_t tpcdEdxTot2R{0u}; + uint8_t tpcdEdxTot3R{0u}; + int8_t deltaRefContParamY{0}; + int8_t deltaRefITSParamZ{0}; + int8_t deltaRefContParamSnp{0}; + int8_t deltaRefContParamTgl{0}; + int8_t deltaRefContParamQ2Pt{0}; + int8_t deltaRefGloParamY{0}; + int8_t deltaRefGloParamZ{0}; + int8_t deltaRefGloParamSnp{0}; + int8_t deltaRefGloParamTgl{0}; + int8_t deltaRefGloParamQ2Pt{0}; + int8_t deltaTOFdX{0}; + int8_t deltaTOFdZ{0}; + if (trackPos.has_trackQA()) { + auto trackQA = trackPos.trackQA_as(); // obtain track QA + tpcTime0 = trackQA.tpcTime0(); + tpcdEdxNorm = trackQA.tpcdEdxNorm(); + tpcDcaR = trackQA.tpcdcaR(); + tpcDcaZ = trackQA.tpcdcaZ(); + tpcClusterByteMask = trackQA.tpcClusterByteMask(); + tpcdEdxMax0R = trackQA.tpcdEdxMax0R(); + tpcdEdxMax1R = trackQA.tpcdEdxMax1R(); + tpcdEdxMax2R = trackQA.tpcdEdxMax2R(); + tpcdEdxMax3R = trackQA.tpcdEdxMax3R(); + tpcdEdxTot0R = trackQA.tpcdEdxTot0R(); + tpcdEdxTot1R = trackQA.tpcdEdxTot1R(); + tpcdEdxTot2R = trackQA.tpcdEdxTot2R(); + tpcdEdxTot3R = trackQA.tpcdEdxTot3R(); + deltaRefContParamY = trackQA.deltaRefContParamY(); + deltaRefITSParamZ = trackQA.deltaRefITSParamZ(); + deltaRefContParamSnp = trackQA.deltaRefContParamSnp(); + deltaRefContParamTgl = trackQA.deltaRefContParamTgl(); + deltaRefContParamQ2Pt = trackQA.deltaRefContParamQ2Pt(); + deltaRefGloParamY = trackQA.deltaRefGloParamY(); + deltaRefGloParamZ = trackQA.deltaRefGloParamZ(); + deltaRefGloParamSnp = trackQA.deltaRefGloParamSnp(); + deltaRefGloParamTgl = trackQA.deltaRefGloParamTgl(); + deltaRefGloParamQ2Pt = trackQA.deltaRefGloParamQ2Pt(); + deltaTOFdX = trackQA.deltaTOFdX(); + deltaTOFdZ = trackQA.deltaTOFdZ(); } + + trackTable(selectedCollisions[collision.globalIndex()], // stored at PV + trackPos.x(), + trackPos.alpha(), + trackPos.y(), + trackPos.z(), + trackPos.snp(), + trackPos.tgl(), + trackPos.signed1Pt(), + o2::math_utils::detail::truncateFloatFraction(trackPos.cYY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cZY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cZZ(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cSnpY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cSnpZ(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cSnpSnp(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cTglY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cTglZ(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cTglSnp(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.cTglTgl(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.c1PtY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.c1PtZ(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.c1PtSnp(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.c1PtTgl(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackPos.c1Pt21Pt2(), precisionCovMask), + trackPos.tpcInnerParam(), + trackPos.flags(), + trackPos.itsClusterSizes(), + trackPos.tpcNClsFindable(), + trackPos.tpcNClsFindableMinusFound(), + trackPos.tpcNClsFindableMinusCrossedRows(), + trackPos.tpcNClsShared(), + trackPos.trdPattern(), + getCompressedChi2(trackPos.itsChi2NCl()), + getCompressedChi2(trackPos.tpcChi2NCl()), + getCompressedChi2(trackPos.trdChi2()), + getCompressedChi2(trackPos.tofChi2()), + trackPos.tpcSignal(), + trackPos.trdSignal(), + trackPos.length(), + trackPos.tofExpMom(), + trackPos.trackTime(), + trackPos.trackTimeRes(), + tpcTime0, + tpcdEdxNorm, + tpcDcaR, + tpcDcaZ, + tpcClusterByteMask, + tpcdEdxMax0R, + tpcdEdxMax1R, + tpcdEdxMax2R, + tpcdEdxMax3R, + tpcdEdxTot0R, + tpcdEdxTot1R, + tpcdEdxTot2R, + tpcdEdxTot3R, + deltaRefContParamY, + deltaRefITSParamZ, + deltaRefContParamSnp, + deltaRefContParamTgl, + deltaRefContParamQ2Pt, + deltaRefGloParamY, + deltaRefGloParamZ, + deltaRefGloParamSnp, + deltaRefGloParamTgl, + deltaRefGloParamQ2Pt, + deltaTOFdX, + deltaTOFdZ, + o2::math_utils::detail::truncateFloatFraction(dcaPos.getY(), precisionDcaMask), + o2::math_utils::detail::truncateFloatFraction(dcaPos.getZ(), precisionDcaMask), + getCompressedNumSigmaPid(trackPos.tpcNSigmaPi()), + getCompressedNumSigmaPid(trackPos.tpcNSigmaKa()), + getCompressedNumSigmaPid(trackPos.tofNSigmaPi()), + getCompressedNumSigmaPid(trackPos.tofNSigmaKa()), + tmoPrimUnfm80, + tmoFV0AUnfm80, + tmoFT0AUnfm80, + tmoFT0CUnfm80, + twmoPrimUnfm80, + twmoFV0AUnfm80, + twmoFT0AUnfm80, + twmoFT0CUnfm80, + tmoRobustT0V0PrimUnfm80, + twmoRobustT0V0PrimUnfm80); selectedTracks[trackPos.globalIndex()] = trackTable.lastIndex(); } if (!selectedTracks.count(trackNeg.globalIndex())) { // fill track table with negative track if not yet present - if (trackNeg.tmoId() != -1) { - auto tmoFromTrack = trackNeg.tmo_as(); - trackTable(selectedCollisions[collision.globalIndex()], - trackNeg.x(), trackNeg.alpha(), trackNeg.y(), trackNeg.z(), trackNeg.snp(), trackNeg.tgl(), trackNeg.signed1Pt(), // stored at PV - trackNeg.cYY(), trackNeg.cZY(), trackNeg.cZZ(), trackNeg.cSnpY(), trackNeg.cSnpZ(), trackNeg.cSnpSnp(), trackNeg.cTglY(), trackNeg.cTglZ(), trackNeg.cTglSnp(), trackNeg.cTglTgl(), trackNeg.c1PtY(), trackNeg.c1PtZ(), trackNeg.c1PtSnp(), trackNeg.c1PtTgl(), trackNeg.c1Pt21Pt2(), - trackNeg.tpcInnerParam(), trackNeg.flags(), trackNeg.itsClusterSizes(), trackNeg.tpcNClsFindable(), trackNeg.tpcNClsFindableMinusFound(), trackNeg.tpcNClsFindableMinusCrossedRows(), trackNeg.tpcNClsShared(), trackNeg.trdPattern(), getCompressedChi2(trackNeg.itsChi2NCl()), getCompressedChi2(trackNeg.tpcChi2NCl()), getCompressedChi2(trackNeg.trdChi2()), getCompressedChi2(trackNeg.tofChi2()), trackNeg.tpcSignal(), trackNeg.trdSignal(), trackNeg.length(), trackNeg.tofExpMom(), trackNeg.trackTime(), trackNeg.trackTimeRes(), - dcaNeg.getY(), dcaNeg.getZ(), getCompressedNumSigmaPid(trackNeg.tpcNSigmaPi()), getCompressedNumSigmaPid(trackNeg.tpcNSigmaKa()), getCompressedNumSigmaPid(trackNeg.tofNSigmaPi()), getCompressedNumSigmaPid(trackNeg.tofNSigmaKa()), - getCompressedOccupancy(tmoFromTrack.tmoPrimUnfm80()), getCompressedOccupancy(tmoFromTrack.tmoFV0AUnfm80()), getCompressedOccupancy(tmoFromTrack.tmoFT0AUnfm80()), getCompressedOccupancy(tmoFromTrack.tmoFT0CUnfm80()), - getCompressedOccupancy(tmoFromTrack.twmoPrimUnfm80()), getCompressedOccupancy(tmoFromTrack.twmoFV0AUnfm80()), getCompressedOccupancy(tmoFromTrack.twmoFT0AUnfm80()), getCompressedOccupancy(tmoFromTrack.twmoFT0CUnfm80()), - getCompressedOccupancy(tmoFromTrack.tmoRobustT0V0PrimUnfm80()), getCompressedOccupancy(tmoFromTrack.twmoRobustT0V0PrimUnfm80())); - } else { - // if track doesn't have occupancies stored for it - trackTable(selectedCollisions[collision.globalIndex()], - trackNeg.x(), trackNeg.alpha(), trackNeg.y(), trackNeg.z(), trackNeg.snp(), trackNeg.tgl(), trackNeg.signed1Pt(), // stored at PV - trackNeg.cYY(), trackNeg.cZY(), trackNeg.cZZ(), trackNeg.cSnpY(), trackNeg.cSnpZ(), trackNeg.cSnpSnp(), trackNeg.cTglY(), trackNeg.cTglZ(), trackNeg.cTglSnp(), trackNeg.cTglTgl(), trackNeg.c1PtY(), trackNeg.c1PtZ(), trackNeg.c1PtSnp(), trackNeg.c1PtTgl(), trackNeg.c1Pt21Pt2(), - trackNeg.tpcInnerParam(), trackNeg.flags(), trackNeg.itsClusterSizes(), trackNeg.tpcNClsFindable(), trackNeg.tpcNClsFindableMinusFound(), trackNeg.tpcNClsFindableMinusCrossedRows(), trackNeg.tpcNClsShared(), trackNeg.trdPattern(), getCompressedChi2(trackNeg.itsChi2NCl()), getCompressedChi2(trackNeg.tpcChi2NCl()), getCompressedChi2(trackNeg.trdChi2()), getCompressedChi2(trackNeg.tofChi2()), trackNeg.tpcSignal(), trackNeg.trdSignal(), trackNeg.length(), trackNeg.tofExpMom(), trackNeg.trackTime(), trackNeg.trackTimeRes(), - dcaNeg.getY(), dcaNeg.getZ(), getCompressedNumSigmaPid(trackNeg.tpcNSigmaPi()), getCompressedNumSigmaPid(trackNeg.tpcNSigmaKa()), getCompressedNumSigmaPid(trackNeg.tofNSigmaPi()), getCompressedNumSigmaPid(trackNeg.tofNSigmaKa()), - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + uint8_t tmoPrimUnfm80{0u}; + uint8_t tmoFV0AUnfm80{0u}; + uint8_t tmoFT0AUnfm80{0u}; + uint8_t tmoFT0CUnfm80{0u}; + uint8_t twmoPrimUnfm80{0u}; + uint8_t twmoFV0AUnfm80{0u}; + uint8_t twmoFT0AUnfm80{0u}; + uint8_t twmoFT0CUnfm80{0u}; + uint8_t tmoRobustT0V0PrimUnfm80{0u}; + uint8_t twmoRobustT0V0PrimUnfm80{0u}; + if (trackNeg.has_tmo()) { + auto tmoFromTrack = trackNeg.tmo_as(); // obtain track mean occupancies + tmoPrimUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoPrimUnfm80()); + tmoFV0AUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoFV0AUnfm80()); + tmoFT0AUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoFT0AUnfm80()); + tmoFT0CUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoFT0CUnfm80()); + twmoPrimUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoPrimUnfm80()); + twmoFV0AUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoFV0AUnfm80()); + twmoFT0AUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoFT0AUnfm80()); + twmoFT0CUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoFT0CUnfm80()); + tmoRobustT0V0PrimUnfm80 = getCompressedOccupancy(tmoFromTrack.tmoRobustT0V0PrimUnfm80()); + twmoRobustT0V0PrimUnfm80 = getCompressedOccupancy(tmoFromTrack.twmoRobustT0V0PrimUnfm80()); + } + float tpcTime0{0.f}; + float tpcdEdxNorm{0.f}; + int16_t tpcDcaR{0}; + int16_t tpcDcaZ{0}; + uint8_t tpcClusterByteMask{0u}; + uint8_t tpcdEdxMax0R{0u}; + uint8_t tpcdEdxMax1R{0u}; + uint8_t tpcdEdxMax2R{0u}; + uint8_t tpcdEdxMax3R{0u}; + uint8_t tpcdEdxTot0R{0u}; + uint8_t tpcdEdxTot1R{0u}; + uint8_t tpcdEdxTot2R{0u}; + uint8_t tpcdEdxTot3R{0u}; + int8_t deltaRefContParamY{0}; + int8_t deltaRefITSParamZ{0}; + int8_t deltaRefContParamSnp{0}; + int8_t deltaRefContParamTgl{0}; + int8_t deltaRefContParamQ2Pt{0}; + int8_t deltaRefGloParamY{0}; + int8_t deltaRefGloParamZ{0}; + int8_t deltaRefGloParamSnp{0}; + int8_t deltaRefGloParamTgl{0}; + int8_t deltaRefGloParamQ2Pt{0}; + int8_t deltaTOFdX{0}; + int8_t deltaTOFdZ{0}; + if (trackNeg.has_trackQA()) { + auto trackQA = trackNeg.trackQA_as(); // obtain track QA + tpcTime0 = trackQA.tpcTime0(); + tpcdEdxNorm = trackQA.tpcdEdxNorm(); + tpcDcaR = trackQA.tpcdcaR(); + tpcDcaZ = trackQA.tpcdcaZ(); + tpcClusterByteMask = trackQA.tpcClusterByteMask(); + tpcdEdxMax0R = trackQA.tpcdEdxMax0R(); + tpcdEdxMax1R = trackQA.tpcdEdxMax1R(); + tpcdEdxMax2R = trackQA.tpcdEdxMax2R(); + tpcdEdxMax3R = trackQA.tpcdEdxMax3R(); + tpcdEdxTot0R = trackQA.tpcdEdxTot0R(); + tpcdEdxTot1R = trackQA.tpcdEdxTot1R(); + tpcdEdxTot2R = trackQA.tpcdEdxTot2R(); + tpcdEdxTot3R = trackQA.tpcdEdxTot3R(); + deltaRefContParamY = trackQA.deltaRefContParamY(); + deltaRefITSParamZ = trackQA.deltaRefITSParamZ(); + deltaRefContParamSnp = trackQA.deltaRefContParamSnp(); + deltaRefContParamTgl = trackQA.deltaRefContParamTgl(); + deltaRefContParamQ2Pt = trackQA.deltaRefContParamQ2Pt(); + deltaRefGloParamY = trackQA.deltaRefGloParamY(); + deltaRefGloParamZ = trackQA.deltaRefGloParamZ(); + deltaRefGloParamSnp = trackQA.deltaRefGloParamSnp(); + deltaRefGloParamTgl = trackQA.deltaRefGloParamTgl(); + deltaRefGloParamQ2Pt = trackQA.deltaRefGloParamQ2Pt(); + deltaTOFdX = trackQA.deltaTOFdX(); + deltaTOFdZ = trackQA.deltaTOFdZ(); } + + trackTable(selectedCollisions[collision.globalIndex()], // stored at PV + trackNeg.x(), + trackNeg.alpha(), + trackNeg.y(), + trackNeg.z(), + trackNeg.snp(), + trackNeg.tgl(), + trackNeg.signed1Pt(), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cYY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cZY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cZZ(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cSnpY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cSnpZ(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cSnpSnp(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cTglY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cTglZ(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cTglSnp(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.cTglTgl(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.c1PtY(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.c1PtZ(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.c1PtSnp(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.c1PtTgl(), precisionCovMask), + o2::math_utils::detail::truncateFloatFraction(trackNeg.c1Pt21Pt2(), precisionCovMask), + trackNeg.tpcInnerParam(), + trackNeg.flags(), + trackNeg.itsClusterSizes(), + trackNeg.tpcNClsFindable(), + trackNeg.tpcNClsFindableMinusFound(), + trackNeg.tpcNClsFindableMinusCrossedRows(), + trackNeg.tpcNClsShared(), + trackNeg.trdPattern(), + getCompressedChi2(trackNeg.itsChi2NCl()), + getCompressedChi2(trackNeg.tpcChi2NCl()), + getCompressedChi2(trackNeg.trdChi2()), + getCompressedChi2(trackNeg.tofChi2()), + trackNeg.tpcSignal(), + trackNeg.trdSignal(), + trackNeg.length(), + trackNeg.tofExpMom(), + trackNeg.trackTime(), + trackNeg.trackTimeRes(), + tpcTime0, + tpcdEdxNorm, + tpcDcaR, + tpcDcaZ, + tpcClusterByteMask, + tpcdEdxMax0R, + tpcdEdxMax1R, + tpcdEdxMax2R, + tpcdEdxMax3R, + tpcdEdxTot0R, + tpcdEdxTot1R, + tpcdEdxTot2R, + tpcdEdxTot3R, + deltaRefContParamY, + deltaRefITSParamZ, + deltaRefContParamSnp, + deltaRefContParamTgl, + deltaRefContParamQ2Pt, + deltaRefGloParamY, + deltaRefGloParamZ, + deltaRefGloParamSnp, + deltaRefGloParamTgl, + deltaRefGloParamQ2Pt, + deltaTOFdX, + deltaTOFdZ, + o2::math_utils::detail::truncateFloatFraction(dcaNeg.getY(), precisionDcaMask), + o2::math_utils::detail::truncateFloatFraction(dcaNeg.getZ(), precisionDcaMask), + getCompressedNumSigmaPid(trackNeg.tpcNSigmaPi()), + getCompressedNumSigmaPid(trackNeg.tpcNSigmaKa()), + getCompressedNumSigmaPid(trackNeg.tofNSigmaPi()), + getCompressedNumSigmaPid(trackNeg.tofNSigmaKa()), + tmoPrimUnfm80, + tmoFV0AUnfm80, + tmoFT0AUnfm80, + tmoFT0CUnfm80, + twmoPrimUnfm80, + twmoFV0AUnfm80, + twmoFT0AUnfm80, + twmoFT0CUnfm80, + tmoRobustT0V0PrimUnfm80, + twmoRobustT0V0PrimUnfm80); selectedTracks[trackNeg.globalIndex()] = trackTable.lastIndex(); } // candidate - candTable(selectedCollisions[collision.globalIndex()], selectedTracks[trackPos.globalIndex()], selectedTracks[trackNeg.globalIndex()], massHypo, ptD0, etaD0, phiD0, invMassD0, invMassD0bar, - getCompressedDecayLength(decLenD0), getCompressedDecayLength(decLenXYD0), getCompressedNormDecayLength(decLenD0 / errorDecayLengthD0), getCompressedNormDecayLength(decLenXYD0 / errorDecayLengthXYD0), - getCompressedCosPa(cosPaD0), getCompressedCosPa(cosPaXYD0), getCompressedPointingAngle(paD0), getCompressedPointingAngle(paXYD0), getCompressedChi2(chi2PCA), getCompressedBdtScoreBkg(bdtScoresD0[0]), getCompressedBdtScoreSgn(bdtScoresD0[1]), getCompressedBdtScoreSgn(bdtScoresD0[2]), getCompressedBdtScoreBkg(bdtScoresD0bar[0]), getCompressedBdtScoreSgn(bdtScoresD0bar[1]), getCompressedBdtScoreSgn(bdtScoresD0bar[2])); + candTable(selectedCollisions[collision.globalIndex()], + selectedTracks[trackPos.globalIndex()], + selectedTracks[trackNeg.globalIndex()], + massHypo, + ptD0, + etaD0, + phiD0, + invMassD0, + invMassD0bar, + getCompressedDecayLength(decLenD0), + getCompressedDecayLength(decLenXYD0), + getCompressedNormDecayLength(decLenD0 / errorDecayLengthD0), + getCompressedNormDecayLength(decLenXYD0 / errorDecayLengthXYD0), + getCompressedCosPa(cosPaD0), + getCompressedCosPa(cosPaXYD0), + getCompressedPointingAngle(paD0), + getCompressedPointingAngle(paXYD0), + getCompressedChi2(chi2PCA), + getCompressedBdtScoreBkg(bdtScoresD0[0]), + getCompressedBdtScoreSgn(bdtScoresD0[1]), + getCompressedBdtScoreSgn(bdtScoresD0[2]), + getCompressedBdtScoreBkg(bdtScoresD0bar[0]), + getCompressedBdtScoreSgn(bdtScoresD0bar[1]), + getCompressedBdtScoreSgn(bdtScoresD0bar[2])); } // end loop over negative tracks } // end loop over positive tracks } // end loop over collisions tracks From 875e0780b61948da0cf7ce9d8418f47a413e843b Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Tue, 24 Jun 2025 18:10:54 +0200 Subject: [PATCH 2/3] Fix unbound indices --- DPG/Tasks/AOTTrack/D0CalibTables.h | 70 +++++++++---------- .../derivedDataCreatorD0Calibration.cxx | 6 +- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/DPG/Tasks/AOTTrack/D0CalibTables.h b/DPG/Tasks/AOTTrack/D0CalibTables.h index e0fc39bbed9..4568c8ce99a 100644 --- a/DPG/Tasks/AOTTrack/D0CalibTables.h +++ b/DPG/Tasks/AOTTrack/D0CalibTables.h @@ -300,7 +300,7 @@ DECLARE_SOA_COLUMN(OccupancyTracks, occupancyTracks, uint8_t); //! FT0 occupancy DECLARE_SOA_COLUMN(OccupancyFT0C, occupancyFT0C, uint8_t); //! FT0 occupancy } // namespace hf_calib -DECLARE_SOA_TABLE(D0CalibColl, "AOD", "D0CALIBCOLLS", +DECLARE_SOA_TABLE(D0CalibColls, "AOD", "D0CALIBCOLL", o2::soa::Index<>, collision::PosX, collision::PosY, @@ -320,15 +320,15 @@ DECLARE_SOA_TABLE(D0CalibColl, "AOD", "D0CALIBCOLLS", namespace hf_calib { -DECLARE_SOA_INDEX_COLUMN_FULL(Collision, collision, int, D0CalibColl, ""); //! Index of collision -DECLARE_SOA_COLUMN(TpcNumSigmaPi, tpcNumSigmaPi, int8_t); //! compressed NsigmaTPC for pions -DECLARE_SOA_COLUMN(TpcNumSigmaKa, tpcNumSigmaKa, int8_t); //! compressed NsigmaTPC for kaons -DECLARE_SOA_COLUMN(TofNumSigmaPi, tofNumSigmaPi, int8_t); //! compressed NsigmaTOF for pions -DECLARE_SOA_COLUMN(TofNumSigmaKa, tofNumSigmaKa, int8_t); //! compressed NsigmaTOF for kaons -DECLARE_SOA_COLUMN(ITSChi2NCl, itsChi2NCl, uint8_t); //! compressed NsigmaTOF for kaons // o2-linter: disable=name/o2-column -DECLARE_SOA_COLUMN(TPCChi2NCl, tpcChi2NCl, uint8_t); //! compressed NsigmaTOF for kaons // o2-linter: disable=name/o2-column -DECLARE_SOA_COLUMN(TRDChi2, trdChi2, uint8_t); //! compressed NsigmaTOF for kaons // o2-linter: disable=name/o2-column -DECLARE_SOA_COLUMN(TOFChi2, tofChi2, uint8_t); //! compressed NsigmaTOF for kaons // o2-linter: disable=name/o2-column +DECLARE_SOA_INDEX_COLUMN_FULL(Collision, collision, int, D0CalibColls, ""); //! Index of collision +DECLARE_SOA_COLUMN(TpcNumSigmaPi, tpcNumSigmaPi, int8_t); //! compressed NsigmaTPC for pions +DECLARE_SOA_COLUMN(TpcNumSigmaKa, tpcNumSigmaKa, int8_t); //! compressed NsigmaTPC for kaons +DECLARE_SOA_COLUMN(TofNumSigmaPi, tofNumSigmaPi, int8_t); //! compressed NsigmaTOF for pions +DECLARE_SOA_COLUMN(TofNumSigmaKa, tofNumSigmaKa, int8_t); //! compressed NsigmaTOF for kaons +DECLARE_SOA_COLUMN(ITSChi2NCl, itsChi2NCl, uint8_t); //! compressed NsigmaTOF for kaons // o2-linter: disable=name/o2-column +DECLARE_SOA_COLUMN(TPCChi2NCl, tpcChi2NCl, uint8_t); //! compressed NsigmaTOF for kaons // o2-linter: disable=name/o2-column +DECLARE_SOA_COLUMN(TRDChi2, trdChi2, uint8_t); //! compressed NsigmaTOF for kaons // o2-linter: disable=name/o2-column +DECLARE_SOA_COLUMN(TOFChi2, tofChi2, uint8_t); //! compressed NsigmaTOF for kaons // o2-linter: disable=name/o2-column DECLARE_SOA_COLUMN(CmoPrimUnfm80, cmoPrimUnfm80, uint8_t); DECLARE_SOA_COLUMN(CmoFV0AUnfm80, cmoFV0AUnfm80, uint8_t); DECLARE_SOA_COLUMN(CmoFT0AUnfm80, cmoFT0AUnfm80, uint8_t); @@ -341,7 +341,7 @@ DECLARE_SOA_COLUMN(CmoRobustT0V0PrimUnfm80, cmoRobustT0V0PrimUnfm80, uint8_t); DECLARE_SOA_COLUMN(CwmoRobustT0V0PrimUnfm80, cwmoRobustT0V0PrimUnfm80, uint8_t); } // namespace hf_calib -DECLARE_SOA_TABLE(D0CalibTrack, "AOD", "D0CALIBTRACKS", +DECLARE_SOA_TABLE(D0CalibTracks, "AOD", "D0CALIBTRACK", o2::soa::Index<>, /// *** collision index hf_calib::CollisionId, @@ -435,32 +435,32 @@ DECLARE_SOA_TABLE(D0CalibTrack, "AOD", "D0CALIBTRACKS", namespace hf_calib { -DECLARE_SOA_INDEX_COLUMN_FULL(TrackPos, trackPos, int, D0CalibTrack, "_0"); //! Index of positive track -DECLARE_SOA_INDEX_COLUMN_FULL(TrackNeg, trackNeg, int, D0CalibTrack, "_1"); //! Index of negative track -DECLARE_SOA_COLUMN(MassHypo, massHypo, uint8_t); //! mass hypothesis for D0 (D0, D0bar, or both) -DECLARE_SOA_COLUMN(Pt, pt, float); //! D0-candidate pT -DECLARE_SOA_COLUMN(Eta, eta, float); //! D0-candidate eta -DECLARE_SOA_COLUMN(Phi, phi, float); //! D0-candidate phi -DECLARE_SOA_COLUMN(InvMassD0, invMassD0, float); //! invariant mass (D0 hypothesis) -DECLARE_SOA_COLUMN(InvMassD0bar, invMassD0bar, float); //! invariant mass (D0bar hypothesis) -DECLARE_SOA_COLUMN(DecLength, decLength, uint8_t); //! compressed decay length -DECLARE_SOA_COLUMN(DecLengthXY, decLengthXY, uint8_t); //! compressed decay length XY -DECLARE_SOA_COLUMN(NormDecLength, normDecLength, uint8_t); //! compressed normalised decay length -DECLARE_SOA_COLUMN(NormDecLengthXY, normDecLengthXY, uint8_t); //! compressed normalised decay length XY -DECLARE_SOA_COLUMN(CosPa, cosPa, uint8_t); //! compressed cosine of pointing angle -DECLARE_SOA_COLUMN(CosPaXY, cosPaXY, uint8_t); //! compressed cosine of pointing angle XY -DECLARE_SOA_COLUMN(PointingAngle, pointingAngle, uint8_t); //! compressed pointing angle -DECLARE_SOA_COLUMN(PointingAngleXY, pointingAngleXY, uint8_t); //! compressed pointing angle XY -DECLARE_SOA_COLUMN(DecVtxChi2, decVtxChi2, uint8_t); //! compressed decay vertex chi2 -DECLARE_SOA_COLUMN(BdtScoreBkgD0, bdtScoreBkgD0, uint16_t); //! compressed BDT score (bkg, D0 mass hypo) -DECLARE_SOA_COLUMN(BdtScorePromptD0, bdtScorePromptD0, uint8_t); //! compressed BDT score (prompt, D0 mass hypo) -DECLARE_SOA_COLUMN(BdtScoreNonpromptD0, bdtScoreNonpromptD0, uint8_t); //! compressed BDT score (non-prompt, D0 mass hypo) -DECLARE_SOA_COLUMN(BdtScoreBkgD0bar, bdtScoreBkgD0bar, uint16_t); //! compressed BDT score (bkg, D0bar mass hypo) -DECLARE_SOA_COLUMN(BdtScorePromptD0bar, bdtScorePromptD0bar, uint8_t); //! compressed BDT score (prompt, D0bar mass hypo) -DECLARE_SOA_COLUMN(BdtScoreNonpromptD0bar, bdtScoreNonpromptD0bar, uint8_t); //! compressed BDT score (non-prompt, D0bar mass hypo) +DECLARE_SOA_INDEX_COLUMN_FULL(TrackPos, trackPos, int, D0CalibTracks, "_Pos"); //! Index of positive track +DECLARE_SOA_INDEX_COLUMN_FULL(TrackNeg, trackNeg, int, D0CalibTracks, "_Neg"); //! Index of negative track +DECLARE_SOA_COLUMN(MassHypo, massHypo, uint8_t); //! mass hypothesis for D0 (D0, D0bar, or both) +DECLARE_SOA_COLUMN(Pt, pt, float); //! D0-candidate pT +DECLARE_SOA_COLUMN(Eta, eta, float); //! D0-candidate eta +DECLARE_SOA_COLUMN(Phi, phi, float); //! D0-candidate phi +DECLARE_SOA_COLUMN(InvMassD0, invMassD0, float); //! invariant mass (D0 hypothesis) +DECLARE_SOA_COLUMN(InvMassD0bar, invMassD0bar, float); //! invariant mass (D0bar hypothesis) +DECLARE_SOA_COLUMN(DecLength, decLength, uint8_t); //! compressed decay length +DECLARE_SOA_COLUMN(DecLengthXY, decLengthXY, uint8_t); //! compressed decay length XY +DECLARE_SOA_COLUMN(NormDecLength, normDecLength, uint8_t); //! compressed normalised decay length +DECLARE_SOA_COLUMN(NormDecLengthXY, normDecLengthXY, uint8_t); //! compressed normalised decay length XY +DECLARE_SOA_COLUMN(CosPa, cosPa, uint8_t); //! compressed cosine of pointing angle +DECLARE_SOA_COLUMN(CosPaXY, cosPaXY, uint8_t); //! compressed cosine of pointing angle XY +DECLARE_SOA_COLUMN(PointingAngle, pointingAngle, uint8_t); //! compressed pointing angle +DECLARE_SOA_COLUMN(PointingAngleXY, pointingAngleXY, uint8_t); //! compressed pointing angle XY +DECLARE_SOA_COLUMN(DecVtxChi2, decVtxChi2, uint8_t); //! compressed decay vertex chi2 +DECLARE_SOA_COLUMN(BdtScoreBkgD0, bdtScoreBkgD0, uint16_t); //! compressed BDT score (bkg, D0 mass hypo) +DECLARE_SOA_COLUMN(BdtScorePromptD0, bdtScorePromptD0, uint8_t); //! compressed BDT score (prompt, D0 mass hypo) +DECLARE_SOA_COLUMN(BdtScoreNonpromptD0, bdtScoreNonpromptD0, uint8_t); //! compressed BDT score (non-prompt, D0 mass hypo) +DECLARE_SOA_COLUMN(BdtScoreBkgD0bar, bdtScoreBkgD0bar, uint16_t); //! compressed BDT score (bkg, D0bar mass hypo) +DECLARE_SOA_COLUMN(BdtScorePromptD0bar, bdtScorePromptD0bar, uint8_t); //! compressed BDT score (prompt, D0bar mass hypo) +DECLARE_SOA_COLUMN(BdtScoreNonpromptD0bar, bdtScoreNonpromptD0bar, uint8_t); //! compressed BDT score (non-prompt, D0bar mass hypo) } // namespace hf_calib -DECLARE_SOA_TABLE(D0CalibCand, "AOD", "D0CALIBCANDS", +DECLARE_SOA_TABLE(D0CalibCands, "AOD", "D0CALIBCAND", o2::soa::Index<>, hf_calib::CollisionId, hf_calib::TrackPosId, diff --git a/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx b/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx index a746ae8aa53..7c82becd36d 100644 --- a/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx +++ b/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx @@ -60,9 +60,9 @@ using namespace o2::hf_calib; struct DerivedDataCreatorD0Calibration { - Produces collTable; - Produces trackTable; - Produces candTable; + Produces collTable; + Produces trackTable; + Produces candTable; struct : ConfigurableGroup { Configurable ptMin{"ptMin", 0.4, "min. track pT"}; From 5d800cbebe49b7caedf621faecc1407d4afe2067 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Tue, 24 Jun 2025 16:13:14 +0000 Subject: [PATCH 3/3] Please consider the following formatting changes --- DPG/Tasks/AOTTrack/D0CalibTables.h | 49 ++++++++++--------- .../derivedDataCreatorD0Calibration.cxx | 2 +- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/DPG/Tasks/AOTTrack/D0CalibTables.h b/DPG/Tasks/AOTTrack/D0CalibTables.h index 4568c8ce99a..1564b6cebdf 100644 --- a/DPG/Tasks/AOTTrack/D0CalibTables.h +++ b/DPG/Tasks/AOTTrack/D0CalibTables.h @@ -19,10 +19,11 @@ #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/TrackSelectionTables.h" -#include #include +#include #include + #include #include #include @@ -435,29 +436,29 @@ DECLARE_SOA_TABLE(D0CalibTracks, "AOD", "D0CALIBTRACK", namespace hf_calib { -DECLARE_SOA_INDEX_COLUMN_FULL(TrackPos, trackPos, int, D0CalibTracks, "_Pos"); //! Index of positive track -DECLARE_SOA_INDEX_COLUMN_FULL(TrackNeg, trackNeg, int, D0CalibTracks, "_Neg"); //! Index of negative track -DECLARE_SOA_COLUMN(MassHypo, massHypo, uint8_t); //! mass hypothesis for D0 (D0, D0bar, or both) -DECLARE_SOA_COLUMN(Pt, pt, float); //! D0-candidate pT -DECLARE_SOA_COLUMN(Eta, eta, float); //! D0-candidate eta -DECLARE_SOA_COLUMN(Phi, phi, float); //! D0-candidate phi -DECLARE_SOA_COLUMN(InvMassD0, invMassD0, float); //! invariant mass (D0 hypothesis) -DECLARE_SOA_COLUMN(InvMassD0bar, invMassD0bar, float); //! invariant mass (D0bar hypothesis) -DECLARE_SOA_COLUMN(DecLength, decLength, uint8_t); //! compressed decay length -DECLARE_SOA_COLUMN(DecLengthXY, decLengthXY, uint8_t); //! compressed decay length XY -DECLARE_SOA_COLUMN(NormDecLength, normDecLength, uint8_t); //! compressed normalised decay length -DECLARE_SOA_COLUMN(NormDecLengthXY, normDecLengthXY, uint8_t); //! compressed normalised decay length XY -DECLARE_SOA_COLUMN(CosPa, cosPa, uint8_t); //! compressed cosine of pointing angle -DECLARE_SOA_COLUMN(CosPaXY, cosPaXY, uint8_t); //! compressed cosine of pointing angle XY -DECLARE_SOA_COLUMN(PointingAngle, pointingAngle, uint8_t); //! compressed pointing angle -DECLARE_SOA_COLUMN(PointingAngleXY, pointingAngleXY, uint8_t); //! compressed pointing angle XY -DECLARE_SOA_COLUMN(DecVtxChi2, decVtxChi2, uint8_t); //! compressed decay vertex chi2 -DECLARE_SOA_COLUMN(BdtScoreBkgD0, bdtScoreBkgD0, uint16_t); //! compressed BDT score (bkg, D0 mass hypo) -DECLARE_SOA_COLUMN(BdtScorePromptD0, bdtScorePromptD0, uint8_t); //! compressed BDT score (prompt, D0 mass hypo) -DECLARE_SOA_COLUMN(BdtScoreNonpromptD0, bdtScoreNonpromptD0, uint8_t); //! compressed BDT score (non-prompt, D0 mass hypo) -DECLARE_SOA_COLUMN(BdtScoreBkgD0bar, bdtScoreBkgD0bar, uint16_t); //! compressed BDT score (bkg, D0bar mass hypo) -DECLARE_SOA_COLUMN(BdtScorePromptD0bar, bdtScorePromptD0bar, uint8_t); //! compressed BDT score (prompt, D0bar mass hypo) -DECLARE_SOA_COLUMN(BdtScoreNonpromptD0bar, bdtScoreNonpromptD0bar, uint8_t); //! compressed BDT score (non-prompt, D0bar mass hypo) +DECLARE_SOA_INDEX_COLUMN_FULL(TrackPos, trackPos, int, D0CalibTracks, "_Pos"); //! Index of positive track +DECLARE_SOA_INDEX_COLUMN_FULL(TrackNeg, trackNeg, int, D0CalibTracks, "_Neg"); //! Index of negative track +DECLARE_SOA_COLUMN(MassHypo, massHypo, uint8_t); //! mass hypothesis for D0 (D0, D0bar, or both) +DECLARE_SOA_COLUMN(Pt, pt, float); //! D0-candidate pT +DECLARE_SOA_COLUMN(Eta, eta, float); //! D0-candidate eta +DECLARE_SOA_COLUMN(Phi, phi, float); //! D0-candidate phi +DECLARE_SOA_COLUMN(InvMassD0, invMassD0, float); //! invariant mass (D0 hypothesis) +DECLARE_SOA_COLUMN(InvMassD0bar, invMassD0bar, float); //! invariant mass (D0bar hypothesis) +DECLARE_SOA_COLUMN(DecLength, decLength, uint8_t); //! compressed decay length +DECLARE_SOA_COLUMN(DecLengthXY, decLengthXY, uint8_t); //! compressed decay length XY +DECLARE_SOA_COLUMN(NormDecLength, normDecLength, uint8_t); //! compressed normalised decay length +DECLARE_SOA_COLUMN(NormDecLengthXY, normDecLengthXY, uint8_t); //! compressed normalised decay length XY +DECLARE_SOA_COLUMN(CosPa, cosPa, uint8_t); //! compressed cosine of pointing angle +DECLARE_SOA_COLUMN(CosPaXY, cosPaXY, uint8_t); //! compressed cosine of pointing angle XY +DECLARE_SOA_COLUMN(PointingAngle, pointingAngle, uint8_t); //! compressed pointing angle +DECLARE_SOA_COLUMN(PointingAngleXY, pointingAngleXY, uint8_t); //! compressed pointing angle XY +DECLARE_SOA_COLUMN(DecVtxChi2, decVtxChi2, uint8_t); //! compressed decay vertex chi2 +DECLARE_SOA_COLUMN(BdtScoreBkgD0, bdtScoreBkgD0, uint16_t); //! compressed BDT score (bkg, D0 mass hypo) +DECLARE_SOA_COLUMN(BdtScorePromptD0, bdtScorePromptD0, uint8_t); //! compressed BDT score (prompt, D0 mass hypo) +DECLARE_SOA_COLUMN(BdtScoreNonpromptD0, bdtScoreNonpromptD0, uint8_t); //! compressed BDT score (non-prompt, D0 mass hypo) +DECLARE_SOA_COLUMN(BdtScoreBkgD0bar, bdtScoreBkgD0bar, uint16_t); //! compressed BDT score (bkg, D0bar mass hypo) +DECLARE_SOA_COLUMN(BdtScorePromptD0bar, bdtScorePromptD0bar, uint8_t); //! compressed BDT score (prompt, D0bar mass hypo) +DECLARE_SOA_COLUMN(BdtScoreNonpromptD0bar, bdtScoreNonpromptD0bar, uint8_t); //! compressed BDT score (non-prompt, D0bar mass hypo) } // namespace hf_calib DECLARE_SOA_TABLE(D0CalibCands, "AOD", "D0CALIBCAND", diff --git a/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx b/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx index 7c82becd36d..20b50370644 100644 --- a/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx +++ b/DPG/Tasks/AOTTrack/derivedDataCreatorD0Calibration.cxx @@ -35,10 +35,10 @@ #include "CommonDataFormat/InteractionRecord.h" #include #include -#include #include #include #include +#include #include #include