From 68f1778868db639cfb92e144094389968ff22dfd Mon Sep 17 00:00:00 2001 From: fmazzasc Date: Fri, 6 Oct 2023 15:18:40 +0200 Subject: [PATCH 1/4] Add track extra converter --- ALICE3/TableProducer/OTF/onTheFlyTracker.cxx | 4 +- Common/TableProducer/CMakeLists.txt | 5 ++ Common/TableProducer/tracksextraConverter.cxx | 57 +++++++++++++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 Common/TableProducer/tracksextraConverter.cxx diff --git a/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx b/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx index 531d1d088cb..1b3ffbfa23b 100644 --- a/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx +++ b/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx @@ -480,7 +480,7 @@ struct OnTheFlyTracker { // populate extra tables if required to do so if (populateTracksExtra) { - tracksExtra(0.0f, (uint32_t)0, (uint8_t)0, (uint8_t)0, + tracksExtra(0.0f, (uint32_t)0, (uint8_t)0, (uint32_t)0, (uint8_t)0, (int8_t)0, (int8_t)0, (uint8_t)0, (uint8_t)0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); @@ -524,7 +524,7 @@ struct OnTheFlyTracker { // populate extra tables if required to do so if (populateTracksExtra) { - tracksExtra(0.0f, (uint32_t)0, (uint8_t)0, (uint8_t)0, + tracksExtra(0.0f, (uint32_t)0, (uint8_t)0, (uint32_t)0, (uint8_t)0, (int8_t)0, (int8_t)0, (uint8_t)0, (uint8_t)0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); diff --git a/Common/TableProducer/CMakeLists.txt b/Common/TableProducer/CMakeLists.txt index d4917f90eab..d1f2e37388e 100644 --- a/Common/TableProducer/CMakeLists.txt +++ b/Common/TableProducer/CMakeLists.txt @@ -66,6 +66,11 @@ o2physics_add_dpl_workflow(mc-converter PUBLIC_LINK_LIBRARIES COMPONENT_NAME Analysis) +o2physics_add_dpl_workflow(tracksextra-converter + SOURCES tracksextraConverter.cxx + PUBLIC_LINK_LIBRARIES + COMPONENT_NAME Analysis) + o2physics_add_dpl_workflow(fdd-converter SOURCES fddConverter.cxx PUBLIC_LINK_LIBRARIES diff --git a/Common/TableProducer/tracksextraConverter.cxx b/Common/TableProducer/tracksextraConverter.cxx new file mode 100644 index 00000000000..c59bccccaf9 --- /dev/null +++ b/Common/TableProducer/tracksextraConverter.cxx @@ -0,0 +1,57 @@ +// Copyright 2019-2020 CERN and copyright holders of ALICE O2. +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. +// All rights not expressly granted are reserved. +// +// This software is distributed under the terms of the GNU General Public +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". +// +// In applying this license CERN does not waive the privileges and immunities +// granted to it by virtue of its status as an Intergovernmental Organization +// or submit itself to any jurisdiction. +#include "Framework/runDataProcessing.h" +#include "Framework/AnalysisTask.h" +#include "Framework/AnalysisDataModel.h" + +using namespace o2; +using namespace o2::framework; + +// Converts TracksExtra table from version 000 to 001 +struct tracksextraConverter { + Produces tracksExtra_001; + void process(aod::TracksExtra_000 const& tracksExtra_000) + { + // dummy itsClusterSizes, table filled with maximum uint32_t value + uint32_t itsClusterSizes = 0xFFFFFFFF; + + for (auto& track0 : tracksExtra_000) { + tracksExtra_001(track0.tpcInnerParam(), + track0.flags(), + track0.itsClusterMap(), + itsClusterSizes, + track0.tpcNClsFindable(), + track0.tpcNClsFindableMinusFound(), + track0.tpcNClsFindableMinusCrossedRows(), + track0.tpcNClsShared(), + track0.trdPattern(), + track0.itsChi2NCl(), + track0.tpcChi2NCl(), + track0.trdChi2(), + track0.tofChi2(), + track0.tpcSignal(), + track0.trdSignal(), + track0.length(), + track0.tofExpMom(), + track0.trackEtaEmcal(), + track0.trackPhiEmcal(), + track0.trackTime(), + track0.trackTimeRes()); + } + } +}; + +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ + return WorkflowSpec{ + adaptAnalysisTask(cfgc), + }; +} From 9a8db08375f930b7341606433b54dd4df678d81b Mon Sep 17 00:00:00 2001 From: fmazzasc Date: Mon, 9 Oct 2023 12:25:44 +0200 Subject: [PATCH 2/4] Update converter and remove cluster map from trackExtra_001 --- ALICE3/TableProducer/OTF/onTheFlyTracker.cxx | 4 ++-- Common/TableProducer/tracksextraConverter.cxx | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx b/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx index 1b3ffbfa23b..12795adb4d8 100644 --- a/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx +++ b/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx @@ -480,7 +480,7 @@ struct OnTheFlyTracker { // populate extra tables if required to do so if (populateTracksExtra) { - tracksExtra(0.0f, (uint32_t)0, (uint8_t)0, (uint32_t)0, (uint8_t)0, + tracksExtra(0.0f, (uint32_t)0, (uint32_t)0, (uint8_t)0, (int8_t)0, (int8_t)0, (uint8_t)0, (uint8_t)0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); @@ -524,7 +524,7 @@ struct OnTheFlyTracker { // populate extra tables if required to do so if (populateTracksExtra) { - tracksExtra(0.0f, (uint32_t)0, (uint8_t)0, (uint32_t)0, (uint8_t)0, + tracksExtra(0.0f, (uint32_t)0, (uint32_t)0, (uint8_t)0, (int8_t)0, (int8_t)0, (uint8_t)0, (uint8_t)0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); diff --git a/Common/TableProducer/tracksextraConverter.cxx b/Common/TableProducer/tracksextraConverter.cxx index c59bccccaf9..0f128c77168 100644 --- a/Common/TableProducer/tracksextraConverter.cxx +++ b/Common/TableProducer/tracksextraConverter.cxx @@ -20,13 +20,19 @@ struct tracksextraConverter { Produces tracksExtra_001; void process(aod::TracksExtra_000 const& tracksExtra_000) { - // dummy itsClusterSizes, table filled with maximum uint32_t value - uint32_t itsClusterSizes = 0xFFFFFFFF; + // dummy itsClusterSizes, fill with overflows if a hit in the layer is present for (auto& track0 : tracksExtra_000) { + + uint32_t itsClusterSizes = 0; + for (int layer = 0; layer < 7; layer++) { + if (track0.itsClusterMap() & (1 << layer)) { + itsClusterSizes |= (0xf << (layer * 4)); + } + } + tracksExtra_001(track0.tpcInnerParam(), track0.flags(), - track0.itsClusterMap(), itsClusterSizes, track0.tpcNClsFindable(), track0.tpcNClsFindableMinusFound(), From f9d845aa7ec5a0bc3b43b910ffb4b35650ebbe13 Mon Sep 17 00:00:00 2001 From: fmazzasc Date: Tue, 10 Oct 2023 17:57:22 +0200 Subject: [PATCH 3/4] Spawn the extended table in the converter --- Common/TableProducer/tracksextraConverter.cxx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Common/TableProducer/tracksextraConverter.cxx b/Common/TableProducer/tracksextraConverter.cxx index 0f128c77168..a8ea107b442 100644 --- a/Common/TableProducer/tracksextraConverter.cxx +++ b/Common/TableProducer/tracksextraConverter.cxx @@ -20,6 +20,7 @@ struct tracksextraConverter { Produces tracksExtra_001; void process(aod::TracksExtra_000 const& tracksExtra_000) { + // dummy itsClusterSizes, fill with overflows if a hit in the layer is present for (auto& track0 : tracksExtra_000) { @@ -55,9 +56,15 @@ struct tracksextraConverter { } }; +struct trackExtraSpawner { + // spawn the extended table for TracksExtra001 to avoid the call to the internal spawner and the circular dependency + Spawns tracksExtra_001; +}; + WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), }; } From c0d8461759b82b3ad378de8bcca7208f7be6a5f8 Mon Sep 17 00:00:00 2001 From: fmazzasc Date: Thu, 19 Oct 2023 10:49:30 +0200 Subject: [PATCH 4/4] Restore ontheflytracker --- ALICE3/TableProducer/OTF/onTheFlyTracker.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx b/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx index 12795adb4d8..531d1d088cb 100644 --- a/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx +++ b/ALICE3/TableProducer/OTF/onTheFlyTracker.cxx @@ -480,7 +480,7 @@ struct OnTheFlyTracker { // populate extra tables if required to do so if (populateTracksExtra) { - tracksExtra(0.0f, (uint32_t)0, (uint32_t)0, (uint8_t)0, + tracksExtra(0.0f, (uint32_t)0, (uint8_t)0, (uint8_t)0, (int8_t)0, (int8_t)0, (uint8_t)0, (uint8_t)0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); @@ -524,7 +524,7 @@ struct OnTheFlyTracker { // populate extra tables if required to do so if (populateTracksExtra) { - tracksExtra(0.0f, (uint32_t)0, (uint32_t)0, (uint8_t)0, + tracksExtra(0.0f, (uint32_t)0, (uint8_t)0, (uint8_t)0, (int8_t)0, (int8_t)0, (uint8_t)0, (uint8_t)0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);