From 02b17da24b426344287d0a26848d1df487920647 Mon Sep 17 00:00:00 2001 From: Ana Marin Date: Fri, 3 Oct 2025 00:46:22 +0200 Subject: [PATCH 1/3] Changes for testing TPC PID NN v3 --- Common/Tools/PID/pidTPCModule.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Common/Tools/PID/pidTPCModule.h b/Common/Tools/PID/pidTPCModule.h index 36b3c54df00..37031e819ab 100644 --- a/Common/Tools/PID/pidTPCModule.h +++ b/Common/Tools/PID/pidTPCModule.h @@ -127,6 +127,7 @@ struct pidTPCConfigurables : o2::framework::ConfigurableGroup { o2::framework::Configurable useNetworkHe{"useNetworkHe", 1, {"Switch for applying neural network on the helium3 mass hypothesis (if network enabled) (set to 0 to disable)"}}; o2::framework::Configurable useNetworkAl{"useNetworkAl", 1, {"Switch for applying neural network on the alpha mass hypothesis (if network enabled) (set to 0 to disable)"}}; o2::framework::Configurable networkBetaGammaCutoff{"networkBetaGammaCutoff", 0.45, {"Lower value of beta-gamma to override the NN application"}}; + o2::framework::Configurable irSource{"irSource", "ZNC hadronic", "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> ZNC hadronic)"}; }; // helper getter - FIXME should be separate @@ -432,6 +433,8 @@ class pidTPCModule // Filling a std::vector to be evaluated by the network // Evaluation on single tracks brings huge overhead: Thus evaluation is done on one large vector for (int i = 0; i < 9; i++) { // Loop over particle number for which network correction is used + float hadronicRate = 0.; + uint64_t timeStamp_bcOld = 0; for (auto const& trk : tracks) { if (!trk.hasTPC()) { continue; @@ -450,9 +453,22 @@ class pidTPCModule if (input_dimensions == 7 && networkVersion == "2") { track_properties[counter_track_props + 6] = trk.has_collision() ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.; } + if (input_dimensions == 8 && networkVersion == "3") { + track_properties[counter_track_props + 6] = trk.has_collision() ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.; + if (trk.has_collision()) { + auto trk_bc = (collisions.iteratorAt(trk.collisionId())).template bc_as(); + if (trk_bc.timestamp() != timeStamp_bcOld){ + hadronicRate = mRateFetcher.fetch(ccdb.service, trk_bc.timestamp(), trk_bc.runNumber(), pidTPCopts.irSource.value) * 1.e-3; + } + timeStamp_bcOld=trk_bc.timestamp(); + track_properties[counter_track_props + 7] = hadronicRate / 50.; + } else { + track_properties[counter_track_props + 7] = 1; + } + } counter_track_props += input_dimensions; } - + auto start_network_eval = std::chrono::high_resolution_clock::now(); float* output_network = network.evalModel(track_properties); auto stop_network_eval = std::chrono::high_resolution_clock::now(); From 6cfac36a11f2d3891fdd049faa60f95a6a58017b Mon Sep 17 00:00:00 2001 From: Ana Marin Date: Fri, 3 Oct 2025 01:10:13 +0200 Subject: [PATCH 2/3] Fixing warnings --- Common/Tools/PID/pidTPCModule.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Tools/PID/pidTPCModule.h b/Common/Tools/PID/pidTPCModule.h index 37031e819ab..ffc90d30d0e 100644 --- a/Common/Tools/PID/pidTPCModule.h +++ b/Common/Tools/PID/pidTPCModule.h @@ -457,7 +457,7 @@ class pidTPCModule track_properties[counter_track_props + 6] = trk.has_collision() ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.; if (trk.has_collision()) { auto trk_bc = (collisions.iteratorAt(trk.collisionId())).template bc_as(); - if (trk_bc.timestamp() != timeStamp_bcOld){ + if (trk_bc.timestamp() != timeStamp_bcOld) { hadronicRate = mRateFetcher.fetch(ccdb.service, trk_bc.timestamp(), trk_bc.runNumber(), pidTPCopts.irSource.value) * 1.e-3; } timeStamp_bcOld=trk_bc.timestamp(); @@ -468,7 +468,7 @@ class pidTPCModule } counter_track_props += input_dimensions; } - + auto start_network_eval = std::chrono::high_resolution_clock::now(); float* output_network = network.evalModel(track_properties); auto stop_network_eval = std::chrono::high_resolution_clock::now(); From e32c5699a4389913e06a17d612efb434e0048dfc Mon Sep 17 00:00:00 2001 From: Ana Marin Date: Fri, 3 Oct 2025 01:13:46 +0200 Subject: [PATCH 3/3] Fixing warnings --- Common/Tools/PID/pidTPCModule.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/Tools/PID/pidTPCModule.h b/Common/Tools/PID/pidTPCModule.h index ffc90d30d0e..3c7e555c940 100644 --- a/Common/Tools/PID/pidTPCModule.h +++ b/Common/Tools/PID/pidTPCModule.h @@ -457,10 +457,10 @@ class pidTPCModule track_properties[counter_track_props + 6] = trk.has_collision() ? collisions.iteratorAt(trk.collisionId()).ft0cOccupancyInTimeRange() / 60000. : 1.; if (trk.has_collision()) { auto trk_bc = (collisions.iteratorAt(trk.collisionId())).template bc_as(); - if (trk_bc.timestamp() != timeStamp_bcOld) { + if (trk_bc.timestamp() != timeStamp_bcOld) { hadronicRate = mRateFetcher.fetch(ccdb.service, trk_bc.timestamp(), trk_bc.runNumber(), pidTPCopts.irSource.value) * 1.e-3; } - timeStamp_bcOld=trk_bc.timestamp(); + timeStamp_bcOld = trk_bc.timestamp(); track_properties[counter_track_props + 7] = hadronicRate / 50.; } else { track_properties[counter_track_props + 7] = 1;