From b26c70a45ba6b2f8ada49f18a5aa9dd7c7da3b53 Mon Sep 17 00:00:00 2001 From: David Dobrigkeit Chinellato Date: Sun, 31 Aug 2025 12:20:16 -0300 Subject: [PATCH 1/5] [Common] Improving locations, naming, organizing --- Common/TableProducer/PID/pidTPCService.cxx | 2 +- Common/TableProducer/eventSelectionService.cxx | 2 +- Common/TableProducer/multCentTable.cxx | 2 +- Common/Tools/{EventSelectionTools.h => EventSelectionModule.h} | 0 Common/Tools/{ => Multiplicity}/MultModule.h | 0 Common/{TableProducer => Tools}/PID/pidTPCModule.h | 1 - 6 files changed, 3 insertions(+), 4 deletions(-) rename Common/Tools/{EventSelectionTools.h => EventSelectionModule.h} (100%) rename Common/Tools/{ => Multiplicity}/MultModule.h (100%) rename Common/{TableProducer => Tools}/PID/pidTPCModule.h (99%) diff --git a/Common/TableProducer/PID/pidTPCService.cxx b/Common/TableProducer/PID/pidTPCService.cxx index cff700fca1c..d1c230955f5 100644 --- a/Common/TableProducer/PID/pidTPCService.cxx +++ b/Common/TableProducer/PID/pidTPCService.cxx @@ -33,7 +33,7 @@ #include "MetadataHelper.h" #include "TableHelper.h" #include "pidTPCBase.h" -#include "pidTPCModule.h" +#include "Common/Tools/PID/pidTPCModule.h" #include "Common/Core/PID/TPCPIDResponse.h" #include "Common/DataModel/EventSelection.h" diff --git a/Common/TableProducer/eventSelectionService.cxx b/Common/TableProducer/eventSelectionService.cxx index fd713773c86..58d529e5df4 100644 --- a/Common/TableProducer/eventSelectionService.cxx +++ b/Common/TableProducer/eventSelectionService.cxx @@ -23,7 +23,7 @@ #include "Common/Core/trackUtilities.h" #include "Common/DataModel/TrackSelectionTables.h" -#include "Common/Tools/EventSelectionTools.h" +#include "Common/Tools/EventSelectionModule.h" #include "Common/Tools/timestampModule.h" #include "CCDB/BasicCCDBManager.h" diff --git a/Common/TableProducer/multCentTable.cxx b/Common/TableProducer/multCentTable.cxx index 5b0e2c16d55..06a96a0170f 100644 --- a/Common/TableProducer/multCentTable.cxx +++ b/Common/TableProducer/multCentTable.cxx @@ -40,7 +40,7 @@ #include "Common/Tools/StandardCCDBLoader.h" #include "Framework/O2DatabasePDGPlugin.h" #include "MetadataHelper.h" -#include "Common/Tools/MultModule.h" +#include "Common/Tools/Multiplicity/MultModule.h" using namespace o2; using namespace o2::framework; diff --git a/Common/Tools/EventSelectionTools.h b/Common/Tools/EventSelectionModule.h similarity index 100% rename from Common/Tools/EventSelectionTools.h rename to Common/Tools/EventSelectionModule.h diff --git a/Common/Tools/MultModule.h b/Common/Tools/Multiplicity/MultModule.h similarity index 100% rename from Common/Tools/MultModule.h rename to Common/Tools/Multiplicity/MultModule.h diff --git a/Common/TableProducer/PID/pidTPCModule.h b/Common/Tools/PID/pidTPCModule.h similarity index 99% rename from Common/TableProducer/PID/pidTPCModule.h rename to Common/Tools/PID/pidTPCModule.h index 321b6e39329..d929ddf73f3 100644 --- a/Common/TableProducer/PID/pidTPCModule.h +++ b/Common/Tools/PID/pidTPCModule.h @@ -34,7 +34,6 @@ // O2 includes #include "MetadataHelper.h" #include "TableHelper.h" -#include "pidTPCBase.h" #include "Common/CCDB/ctpRateFetcher.h" #include "Common/Core/PID/TPCPIDResponse.h" From a725d39ac4b51a2f450351dedf876eedc2ae8712 Mon Sep 17 00:00:00 2001 From: David Dobrigkeit Chinellato Date: Sun, 31 Aug 2025 12:30:42 -0300 Subject: [PATCH 2/5] Adjustments --- Common/TableProducer/PID/CMakeLists.txt | 10 ++ Common/TableProducer/PID/pidTPCService.cxx | 8 +- .../TableProducer/PID/pidTPCServiceRun2.cxx | 112 ++++++++++++++++++ .../TableProducer/PID/pidTPCServiceRun3.cxx | 108 +++++++++++++++++ 4 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 Common/TableProducer/PID/pidTPCServiceRun2.cxx create mode 100644 Common/TableProducer/PID/pidTPCServiceRun3.cxx diff --git a/Common/TableProducer/PID/CMakeLists.txt b/Common/TableProducer/PID/CMakeLists.txt index 86787fd13b7..ab502d138b0 100644 --- a/Common/TableProducer/PID/CMakeLists.txt +++ b/Common/TableProducer/PID/CMakeLists.txt @@ -48,6 +48,16 @@ o2physics_add_dpl_workflow(pid-tpc-service PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::MLCore O2Physics::AnalysisCCDB COMPONENT_NAME Analysis) +o2physics_add_dpl_workflow(pid-tpc-service-run2 + SOURCES pidTPCServiceRun2.cxx + PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::MLCore O2Physics::AnalysisCCDB + COMPONENT_NAME Analysis) + +o2physics_add_dpl_workflow(pid-tpc-service-run3 + SOURCES pidTPCServiceRun3.cxx + PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::MLCore O2Physics::AnalysisCCDB + COMPONENT_NAME Analysis) + o2physics_add_dpl_workflow(pid-tpc-base SOURCES pidTPCBase.cxx PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::AnalysisCCDB diff --git a/Common/TableProducer/PID/pidTPCService.cxx b/Common/TableProducer/PID/pidTPCService.cxx index d1c230955f5..47000252155 100644 --- a/Common/TableProducer/PID/pidTPCService.cxx +++ b/Common/TableProducer/PID/pidTPCService.cxx @@ -98,9 +98,15 @@ struct pidTpcService { pidTPC.process(ccdb, ccdbApi, bcs, collisions, tracks, static_cast(nullptr), products); } + void processTracksMCIU(soa::Join const& collisions, soa::Join const& tracks, aod::BCsWithTimestamps const& bcs, aod::McParticles const&) + { + pidTPC.process(ccdb, ccdbApi, bcs, collisions, tracks, static_cast(nullptr), products); + } + PROCESS_SWITCH(pidTpcService, processTracks, "Process Tracks", false); PROCESS_SWITCH(pidTpcService, processTracksMC, "Process Tracks in MC (enables tune-on-data)", false); - PROCESS_SWITCH(pidTpcService, processTracksIU, "Process TracksIU (experimental)", true); + PROCESS_SWITCH(pidTpcService, processTracksIU, "Process TracksIU (Run 3)", true); + PROCESS_SWITCH(pidTpcService, processTracksMCIU, "Process TracksIUMC (Run 3)", false); }; //**************************************************************************************** diff --git a/Common/TableProducer/PID/pidTPCServiceRun2.cxx b/Common/TableProducer/PID/pidTPCServiceRun2.cxx new file mode 100644 index 00000000000..6a3ed2a42bd --- /dev/null +++ b/Common/TableProducer/PID/pidTPCServiceRun2.cxx @@ -0,0 +1,112 @@ +// 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. + +/// \file trackPropagationTester.cxx +/// \brief testing ground for track propagation +/// \author ALICE + +//=============================================================== +// +// Modularized version of TPC PID task +// +//=============================================================== + +#include +#include +#include +#include +#include +// ROOT includes +#include "TFile.h" +#include "TRandom.h" +#include "TSystem.h" + +// O2 includes +#include "MetadataHelper.h" +#include "TableHelper.h" +#include "pidTPCBase.h" +#include "Common/Tools/PID/pidTPCModule.h" + +#include "Common/Core/PID/TPCPIDResponse.h" +#include "Common/DataModel/EventSelection.h" +#include "Common/DataModel/Multiplicity.h" +#include "Common/DataModel/PIDResponseTPC.h" +#include "Tools/ML/model.h" + +#include "CCDB/BasicCCDBManager.h" +#include "CCDB/CcdbApi.h" +#include "Framework/ASoAHelpers.h" +#include "Framework/AnalysisDataModel.h" +#include "Framework/AnalysisTask.h" +#include "Framework/runDataProcessing.h" +#include "ReconstructionDataFormats/Track.h" + +using namespace o2; +using namespace o2::framework; + +o2::common::core::MetadataHelper metadataInfo; // Metadata helper + +struct pidTpcServiceRun2 { + + // CCDB boilerplate declarations + o2::framework::Configurable ccdburl{"ccdburl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + Service ccdb; + o2::ccdb::CcdbApi ccdbApi; + + o2::aod::pid::pidTPCProducts products; + o2::aod::pid::pidTPCConfigurables pidTPCopts; + o2::aod::pid::pidTPCModule pidTPC; + + void init(o2::framework::InitContext& initContext) + { + // CCDB boilerplate init + ccdb->setURL(ccdburl.value); + ccdb->setFatalWhenNull(false); // manual fallback in case ccdb entry empty + ccdb->setCaching(true); + ccdb->setLocalObjectValidityChecking(); + ccdb->setCreatedNotAfter(std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()); + ccdbApi.init(ccdburl.value); + + // task-specific + pidTPC.init(ccdb, ccdbApi, initContext, pidTPCopts, metadataInfo); + } + + void processTracks(soa::Join const& collisions, soa::Join const& tracks, aod::BCsWithTimestamps const& bcs) + { + pidTPC.process(ccdb, ccdbApi, bcs, collisions, tracks, static_cast(nullptr), products); + } + void processTracksWithTracksQA(soa::Join const& collisions, soa::Join const& tracks, aod::BCsWithTimestamps const& bcs, aod::TracksQA const& tracksQA) + { + pidTPC.process(ccdb, ccdbApi, bcs, collisions, tracks, tracksQA, products); + } + + void processTracksMC(soa::Join const& collisions, soa::Join const& tracks, aod::BCsWithTimestamps const& bcs, aod::McParticles const&) + { + pidTPC.process(ccdb, ccdbApi, bcs, collisions, tracks, static_cast(nullptr), products); + } + + PROCESS_SWITCH(pidTpcServiceRun2, processTracks, "Process Tracks", true); + PROCESS_SWITCH(pidTpcServiceRun2, processTracksMC, "Process Tracks in MC (enables tune-on-data)", false); +}; + +//**************************************************************************************** +/** + * Workflow definition. + */ +//**************************************************************************************** +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ + // Parse the metadata for later too + metadataInfo.initMetadata(cfgc); + + WorkflowSpec workflow{adaptAnalysisTask(cfgc)}; + return workflow; +} diff --git a/Common/TableProducer/PID/pidTPCServiceRun3.cxx b/Common/TableProducer/PID/pidTPCServiceRun3.cxx new file mode 100644 index 00000000000..b2c9af3db96 --- /dev/null +++ b/Common/TableProducer/PID/pidTPCServiceRun3.cxx @@ -0,0 +1,108 @@ +// 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. + +/// \file trackPropagationTester.cxx +/// \brief testing ground for track propagation +/// \author ALICE + +//=============================================================== +// +// Modularized version of TPC PID task +// +//=============================================================== + +#include +#include +#include +#include +#include +// ROOT includes +#include "TFile.h" +#include "TRandom.h" +#include "TSystem.h" + +// O2 includes +#include "MetadataHelper.h" +#include "TableHelper.h" +#include "pidTPCBase.h" +#include "Common/Tools/PID/pidTPCModule.h" + +#include "Common/Core/PID/TPCPIDResponse.h" +#include "Common/DataModel/EventSelection.h" +#include "Common/DataModel/Multiplicity.h" +#include "Common/DataModel/PIDResponseTPC.h" +#include "Tools/ML/model.h" + +#include "CCDB/BasicCCDBManager.h" +#include "CCDB/CcdbApi.h" +#include "Framework/ASoAHelpers.h" +#include "Framework/AnalysisDataModel.h" +#include "Framework/AnalysisTask.h" +#include "Framework/runDataProcessing.h" +#include "ReconstructionDataFormats/Track.h" + +using namespace o2; +using namespace o2::framework; + +o2::common::core::MetadataHelper metadataInfo; // Metadata helper + +struct pidTpcServiceRun3 { + + // CCDB boilerplate declarations + o2::framework::Configurable ccdburl{"ccdburl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + Service ccdb; + o2::ccdb::CcdbApi ccdbApi; + + o2::aod::pid::pidTPCProducts products; + o2::aod::pid::pidTPCConfigurables pidTPCopts; + o2::aod::pid::pidTPCModule pidTPC; + + void init(o2::framework::InitContext& initContext) + { + // CCDB boilerplate init + ccdb->setURL(ccdburl.value); + ccdb->setFatalWhenNull(false); // manual fallback in case ccdb entry empty + ccdb->setCaching(true); + ccdb->setLocalObjectValidityChecking(); + ccdb->setCreatedNotAfter(std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()); + ccdbApi.init(ccdburl.value); + + // task-specific + pidTPC.init(ccdb, ccdbApi, initContext, pidTPCopts, metadataInfo); + } + + void processTracksIU(soa::Join const& collisions, soa::Join const& tracks, aod::BCsWithTimestamps const& bcs) + { + pidTPC.process(ccdb, ccdbApi, bcs, collisions, tracks, static_cast(nullptr), products); + } + + void processTracksMCIU(soa::Join const& collisions, soa::Join const& tracks, aod::BCsWithTimestamps const& bcs, aod::McParticles const&) + { + pidTPC.process(ccdb, ccdbApi, bcs, collisions, tracks, static_cast(nullptr), products); + } + + PROCESS_SWITCH(pidTpcServiceRun3, processTracksIU, "Process TracksIU (Run 3)", true); + PROCESS_SWITCH(pidTpcServiceRun3, processTracksMCIU, "Process TracksIUMC (Run 3)", false); +}; + +//**************************************************************************************** +/** + * Workflow definition. + */ +//**************************************************************************************** +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ + // Parse the metadata for later too + metadataInfo.initMetadata(cfgc); + + WorkflowSpec workflow{adaptAnalysisTask(cfgc)}; + return workflow; +} From 974fd4bfc37f16d0b4eaa543522762e4c7cb1f29 Mon Sep 17 00:00:00 2001 From: ALICE Builder Date: Sun, 31 Aug 2025 17:34:00 +0200 Subject: [PATCH 3/5] Please consider the following formatting changes (#468) --- Common/TableProducer/PID/pidTPCService.cxx | 2 +- .../TableProducer/PID/pidTPCServiceRun2.cxx | 2 +- .../TableProducer/PID/pidTPCServiceRun3.cxx | 2 +- Common/TableProducer/multCentTable.cxx | 34 ++++++++++--------- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/Common/TableProducer/PID/pidTPCService.cxx b/Common/TableProducer/PID/pidTPCService.cxx index 47000252155..7350b9e9fa5 100644 --- a/Common/TableProducer/PID/pidTPCService.cxx +++ b/Common/TableProducer/PID/pidTPCService.cxx @@ -33,12 +33,12 @@ #include "MetadataHelper.h" #include "TableHelper.h" #include "pidTPCBase.h" -#include "Common/Tools/PID/pidTPCModule.h" #include "Common/Core/PID/TPCPIDResponse.h" #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/Multiplicity.h" #include "Common/DataModel/PIDResponseTPC.h" +#include "Common/Tools/PID/pidTPCModule.h" #include "Tools/ML/model.h" #include "CCDB/BasicCCDBManager.h" diff --git a/Common/TableProducer/PID/pidTPCServiceRun2.cxx b/Common/TableProducer/PID/pidTPCServiceRun2.cxx index 6a3ed2a42bd..e13908cd715 100644 --- a/Common/TableProducer/PID/pidTPCServiceRun2.cxx +++ b/Common/TableProducer/PID/pidTPCServiceRun2.cxx @@ -33,12 +33,12 @@ #include "MetadataHelper.h" #include "TableHelper.h" #include "pidTPCBase.h" -#include "Common/Tools/PID/pidTPCModule.h" #include "Common/Core/PID/TPCPIDResponse.h" #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/Multiplicity.h" #include "Common/DataModel/PIDResponseTPC.h" +#include "Common/Tools/PID/pidTPCModule.h" #include "Tools/ML/model.h" #include "CCDB/BasicCCDBManager.h" diff --git a/Common/TableProducer/PID/pidTPCServiceRun3.cxx b/Common/TableProducer/PID/pidTPCServiceRun3.cxx index b2c9af3db96..1415ecee6bf 100644 --- a/Common/TableProducer/PID/pidTPCServiceRun3.cxx +++ b/Common/TableProducer/PID/pidTPCServiceRun3.cxx @@ -33,12 +33,12 @@ #include "MetadataHelper.h" #include "TableHelper.h" #include "pidTPCBase.h" -#include "Common/Tools/PID/pidTPCModule.h" #include "Common/Core/PID/TPCPIDResponse.h" #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/Multiplicity.h" #include "Common/DataModel/PIDResponseTPC.h" +#include "Common/Tools/PID/pidTPCModule.h" #include "Tools/ML/model.h" #include "CCDB/BasicCCDBManager.h" diff --git a/Common/TableProducer/multCentTable.cxx b/Common/TableProducer/multCentTable.cxx index 06a96a0170f..1bbf3dcd48d 100644 --- a/Common/TableProducer/multCentTable.cxx +++ b/Common/TableProducer/multCentTable.cxx @@ -20,27 +20,29 @@ // //=============================================================== -#include "Framework/AnalysisDataModel.h" -#include "Framework/AnalysisTask.h" -#include "Framework/runDataProcessing.h" -#include "Framework/RunningWorkflowInfo.h" -#include "Common/DataModel/TrackSelectionTables.h" +#include "MetadataHelper.h" + #include "Common/Core/trackUtilities.h" -#include "ReconstructionDataFormats/DCA.h" -#include "DetectorsBase/Propagator.h" -#include "DetectorsBase/GeometryManager.h" -#include "CommonUtils/NameConf.h" +#include "Common/DataModel/TrackSelectionTables.h" +#include "Common/Tools/Multiplicity/MultModule.h" +#include "Common/Tools/StandardCCDBLoader.h" +#include "Common/Tools/TrackPropagationModule.h" + +#include "CCDB/BasicCCDBManager.h" #include "CCDB/CcdbApi.h" +#include "CommonConstants/GeomConstants.h" +#include "CommonUtils/NameConf.h" +#include "DataFormatsCalibration/MeanVertexObject.h" #include "DataFormatsParameters/GRPMagField.h" -#include "CCDB/BasicCCDBManager.h" +#include "DetectorsBase/GeometryManager.h" +#include "DetectorsBase/Propagator.h" +#include "Framework/AnalysisDataModel.h" +#include "Framework/AnalysisTask.h" #include "Framework/HistogramRegistry.h" -#include "DataFormatsCalibration/MeanVertexObject.h" -#include "CommonConstants/GeomConstants.h" -#include "Common/Tools/TrackPropagationModule.h" -#include "Common/Tools/StandardCCDBLoader.h" #include "Framework/O2DatabasePDGPlugin.h" -#include "MetadataHelper.h" -#include "Common/Tools/Multiplicity/MultModule.h" +#include "Framework/RunningWorkflowInfo.h" +#include "Framework/runDataProcessing.h" +#include "ReconstructionDataFormats/DCA.h" using namespace o2; using namespace o2::framework; From aba55b1666f93dd3ff615691dc5d4a00c62d2029 Mon Sep 17 00:00:00 2001 From: ddobrigk Date: Sun, 31 Aug 2025 20:39:07 +0200 Subject: [PATCH 4/5] Fix compilation / headers --- Common/Tools/Multiplicity/MultModule.h | 1 + Common/Tools/PID/pidTPCModule.h | 1 + 2 files changed, 2 insertions(+) diff --git a/Common/Tools/Multiplicity/MultModule.h b/Common/Tools/Multiplicity/MultModule.h index 3623543a54d..bed8817c124 100644 --- a/Common/Tools/Multiplicity/MultModule.h +++ b/Common/Tools/Multiplicity/MultModule.h @@ -24,6 +24,7 @@ #include "Common/DataModel/Multiplicity.h" #include +#include #include #include diff --git a/Common/Tools/PID/pidTPCModule.h b/Common/Tools/PID/pidTPCModule.h index d929ddf73f3..fc27f8a800c 100644 --- a/Common/Tools/PID/pidTPCModule.h +++ b/Common/Tools/PID/pidTPCModule.h @@ -47,6 +47,7 @@ #include "Framework/ASoAHelpers.h" #include "Framework/AnalysisDataModel.h" #include "Framework/AnalysisTask.h" +#include #include "Framework/runDataProcessing.h" #include "ReconstructionDataFormats/Track.h" From 2f1d8bc2fa1187ddee1fc5a7e3b402c752642e11 Mon Sep 17 00:00:00 2001 From: ALICE Builder Date: Sun, 31 Aug 2025 20:40:08 +0200 Subject: [PATCH 5/5] Please consider the following formatting changes (#469) --- Common/Tools/PID/pidTPCModule.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Tools/PID/pidTPCModule.h b/Common/Tools/PID/pidTPCModule.h index fc27f8a800c..47ad5d5a01c 100644 --- a/Common/Tools/PID/pidTPCModule.h +++ b/Common/Tools/PID/pidTPCModule.h @@ -47,9 +47,9 @@ #include "Framework/ASoAHelpers.h" #include "Framework/AnalysisDataModel.h" #include "Framework/AnalysisTask.h" -#include #include "Framework/runDataProcessing.h" #include "ReconstructionDataFormats/Track.h" +#include namespace o2::aod {