From 557473b8f5e033db844846df1fdfbaeebcd07c25 Mon Sep 17 00:00:00 2001 From: ddobrigk Date: Fri, 13 Sep 2024 14:03:39 +0200 Subject: [PATCH 1/3] Common: save only non-empty BCs, add BC flags creator --- .../TableProducer/Converters/CMakeLists.txt | 5 +++ .../Converters/bcFlagsCreator.cxx | 36 +++++++++++++++++++ .../TableProducer/multiplicityExtraTable.cxx | 17 +++++++++ 3 files changed, 58 insertions(+) create mode 100644 Common/TableProducer/Converters/bcFlagsCreator.cxx diff --git a/Common/TableProducer/Converters/CMakeLists.txt b/Common/TableProducer/Converters/CMakeLists.txt index 989b58bdab8..e7b76fd1d42 100644 --- a/Common/TableProducer/Converters/CMakeLists.txt +++ b/Common/TableProducer/Converters/CMakeLists.txt @@ -49,6 +49,11 @@ o2physics_add_dpl_workflow(bc-converter PUBLIC_LINK_LIBRARIES O2::Framework COMPONENT_NAME Analysis) +o2physics_add_dpl_workflow(bc-flags-creator + SOURCES bcFlagsCreator.cxx + PUBLIC_LINK_LIBRARIES O2::Framework + COMPONENT_NAME Analysis) + o2physics_add_dpl_workflow(calo-label-converter SOURCES caloLabelConverter.cxx PUBLIC_LINK_LIBRARIES diff --git a/Common/TableProducer/Converters/bcFlagsCreator.cxx b/Common/TableProducer/Converters/bcFlagsCreator.cxx new file mode 100644 index 00000000000..8ac9d6e1516 --- /dev/null +++ b/Common/TableProducer/Converters/bcFlagsCreator.cxx @@ -0,0 +1,36 @@ +// 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; + +// Creates an empty BCFlags for data that doesn't have it to be used seamlessly +// n.b. this will overwrite existing BCFlags, to be discussed if data in mixed condition +struct bcFlagsCreator { + Produces bcFlags; + + void process(aod::BCs const& bcTable) + { + for (auto& bc : bcTable) { + bcFlags(0); + } + } +}; + +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ + return WorkflowSpec{ + adaptAnalysisTask(cfgc), + }; +} diff --git a/Common/TableProducer/multiplicityExtraTable.cxx b/Common/TableProducer/multiplicityExtraTable.cxx index 7a77faa6784..f382c8beae4 100644 --- a/Common/TableProducer/multiplicityExtraTable.cxx +++ b/Common/TableProducer/multiplicityExtraTable.cxx @@ -39,6 +39,7 @@ struct MultiplicityExtraTable { // Allow for downscaling of BC table for less space use in derived data Configurable bcDownscaleFactor{"bcDownscaleFactor", 2, "Downscale factor for BC table (0: save nothing, 1: save all)"}; Configurable minFT0CforBCTable{"minFT0CforBCTable", 25.0f, "Minimum FT0C amplitude to fill BC table to reduce data"}; + Configurable saveOnlyBCsWithCollisions{"saveOnlyBCsWithCollisions", true, "save only BCs with collisions in them"}; // needed for downscale unsigned int randomSeed = 0; @@ -66,13 +67,24 @@ struct MultiplicityExtraTable { { //+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+ // determine saved BCs and corresponding new BC table index + std::vector bcHasCollision(bcs.size()); std::vector newBCindex(bcs.size()); std::vector bc2multArray(bcs.size()); int atIndex = 0; for (const auto& bc : bcs) { + bcHasCollision[bc.globalIndex()] = false; newBCindex[bc.globalIndex()] = -1; bc2multArray[bc.globalIndex()] = -1; + } + + //+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+ + // tag BCs that have a collision + for (const auto& collision : collisions) { + bcHasCollision[collision.foundBCId()] = true; + } + //+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+ + for (const auto& bc : bcs) { // downscale if requested to do so if (bcDownscaleFactor < 1.f && (static_cast(rand_r(&randomSeed)) / static_cast(RAND_MAX)) > bcDownscaleFactor) { continue; @@ -91,6 +103,11 @@ struct MultiplicityExtraTable { if (multFT0C < minFT0CforBCTable) { continue; // skip this event } + + if (saveOnlyBCsWithCollisions && !bcHasCollision[bc.globalIndex()]){ + continue; // skip if no collision is assigned to this BC (from evSel assignment) + } + newBCindex[bc.globalIndex()] = atIndex++; } //+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+ From 2bfd433e9f3b6ad882549b289dae52fc7d57467e Mon Sep 17 00:00:00 2001 From: ALICE Builder Date: Fri, 13 Sep 2024 14:06:20 +0200 Subject: [PATCH 2/3] Please consider the following formatting changes (#344) --- Common/TableProducer/multiplicityExtraTable.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/TableProducer/multiplicityExtraTable.cxx b/Common/TableProducer/multiplicityExtraTable.cxx index f382c8beae4..57d87b25ca6 100644 --- a/Common/TableProducer/multiplicityExtraTable.cxx +++ b/Common/TableProducer/multiplicityExtraTable.cxx @@ -104,7 +104,7 @@ struct MultiplicityExtraTable { continue; // skip this event } - if (saveOnlyBCsWithCollisions && !bcHasCollision[bc.globalIndex()]){ + if (saveOnlyBCsWithCollisions && !bcHasCollision[bc.globalIndex()]) { continue; // skip if no collision is assigned to this BC (from evSel assignment) } From 5c355cf277a348f3f0e054a9f6543dd4a27c6c02 Mon Sep 17 00:00:00 2001 From: ddobrigk Date: Fri, 13 Sep 2024 22:26:21 +0200 Subject: [PATCH 3/3] Update multiplicityExtraTable.cxx --- Common/TableProducer/multiplicityExtraTable.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/TableProducer/multiplicityExtraTable.cxx b/Common/TableProducer/multiplicityExtraTable.cxx index 57d87b25ca6..6a6bc1a76a8 100644 --- a/Common/TableProducer/multiplicityExtraTable.cxx +++ b/Common/TableProducer/multiplicityExtraTable.cxx @@ -78,7 +78,7 @@ struct MultiplicityExtraTable { } //+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+ - // tag BCs that have a collision + // tag BCs that have a collision (from evsel foundBC) for (const auto& collision : collisions) { bcHasCollision[collision.foundBCId()] = true; }