From 9bf6a327712b50358f514dd5196c7c18a3746415 Mon Sep 17 00:00:00 2001 From: Kate Abigail Richardson <kaaricha@tdeb01.lbdaq.cern.ch> Date: Mon, 17 Jul 2023 15:07:46 +0200 Subject: [PATCH 01/18] also update buffer sizes --- .../python/AllenConf/muon_reconstruction.py | 3 + .../PV/beamlinePV/src/pv_beamline_cleanup.cu | 20 ++- .../consolidate/include/ConsolidateSciFi.cuh | 1 - .../include/ConsolidateSciFiSeeding.cuh | 2 +- .../src/ConsolidateSciFiSeeding.cu | 7 +- .../clustering/include/CaloFindClusters.cuh | 17 ++- .../calo/clustering/src/CaloFindClusters.cu | 93 ++++++++++++- .../ParKalman/src/MakeLongTrackParticles.cu | 32 +++-- device/muon/is_muon/include/IsMuon.cuh | 13 +- device/muon/is_muon/src/IsMuon.cu | 129 +++++++++++++++++- .../Hlt1/include/GatherSelections.cuh | 3 + .../selections/Hlt1/src/GatherSelections.cu | 15 ++ .../lines/calibration/include/D2KPiLine.cuh | 2 +- .../lines/charm/include/D2KKLine.cuh | 2 +- .../lines/charm/include/D2PiPiLine.cuh | 2 +- .../include/ConsolidateMatchedTracks.cuh | 2 +- 16 files changed, 298 insertions(+), 45 deletions(-) diff --git a/configuration/python/AllenConf/muon_reconstruction.py b/configuration/python/AllenConf/muon_reconstruction.py index ec2cfc2a3ab..43b3bfbd6f4 100644 --- a/configuration/python/AllenConf/muon_reconstruction.py +++ b/configuration/python/AllenConf/muon_reconstruction.py @@ -123,6 +123,7 @@ def is_muon(decoded_muon, long_tracks): host_number_of_reconstructed_scifi_tracks = long_tracks[ "host_number_of_reconstructed_scifi_tracks"] dev_scifi_states = long_tracks["dev_scifi_states"] + velo_kalman_filter = long_tracks["velo_kalman_filter"] is_muon = make_algorithm( is_muon_t, @@ -135,6 +136,8 @@ def is_muon(decoded_muon, long_tracks): dev_long_tracks_view_t=long_tracks["dev_multi_event_long_tracks_view"], dev_station_ocurrences_offset_t=decoded_muon[ "dev_station_ocurrences_offset"], + dev_velo_states_view_t=velo_kalman_filter[ + "dev_velo_kalman_endvelo_states_view"], dev_muon_hits_t=decoded_muon["dev_muon_hits"]) muon_hit_count_prefix_sum = make_algorithm( diff --git a/device/PV/beamlinePV/src/pv_beamline_cleanup.cu b/device/PV/beamlinePV/src/pv_beamline_cleanup.cu index 45bdf874459..8cbdda7e402 100644 --- a/device/PV/beamlinePV/src/pv_beamline_cleanup.cu +++ b/device/PV/beamlinePV/src/pv_beamline_cleanup.cu @@ -17,9 +17,6 @@ void pv_beamline_cleanup::pv_beamline_cleanup_t::init() #ifndef ALLEN_STANDALONE m_pvs = new Gaudi::Accumulators::AveragingCounter<> {this, "n_PVs"}; histogram_n_pvs = new gaudi_monitoring::Lockable_Histogram<> {{this, "n_pvs_event", "n_pvs_event", {20, 0, 20}}, {}}; - histogram_pv_x = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_x", "pv_x", {100, -2.f, 2.f}}, {}}; - histogram_pv_y = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_y", "pv_y", {100, -2.f, 2.f}}, {}}; - histogram_pv_z = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_z", "pv_z", {100, -200.f, 200.f}}, {}}; histogram_n_smogpvs = new gaudi_monitoring::Lockable_Histogram<> {{this, "n_smog2_PVs", "n_smog2_PVs", {10, -0.5f, 9.5f}}, {}}; @@ -29,6 +26,9 @@ void pv_beamline_cleanup::pv_beamline_cleanup_t::init() "smogpv_z", {property<nbins_histo_smogpvz_t>(), property<min_histo_smogpvz_t>(), property<max_histo_smogpvz_t>()}}, {}}; + histogram_pv_x = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_x", "pv_x", {1000, -2.f, 2.f}}, {}}; + histogram_pv_y = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_y", "pv_y", {1000, -2.f, 2.f}}, {}}; + histogram_pv_z = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_z", "pv_z", {1000, -200.f, 200.f}}, {}}; #endif } @@ -50,12 +50,10 @@ void pv_beamline_cleanup::pv_beamline_cleanup_t::operator()( auto dev_n_pvs_counter = make_device_buffer<unsigned>(arguments, 1u); auto dev_n_pvs_histo = make_device_buffer<unsigned>(arguments, 20u); auto dev_n_smogpvs_histo = make_device_buffer<unsigned>(arguments, 10u); - - auto dev_pv_x_histo = make_device_buffer<unsigned>(arguments, 100u); - auto dev_pv_y_histo = make_device_buffer<unsigned>(arguments, 100u); - auto dev_pv_z_histo = make_device_buffer<unsigned>(arguments, 100u); auto dev_smogpv_z_histo = make_device_buffer<unsigned>(arguments, property<nbins_histo_smogpvz_t>()); - + auto dev_pv_x_histo = make_device_buffer<unsigned>(arguments, 1000u); + auto dev_pv_y_histo = make_device_buffer<unsigned>(arguments, 1000u); + auto dev_pv_z_histo = make_device_buffer<unsigned>(arguments, 1000u); Allen::memset_async(dev_n_pvs_counter.data(), 0, dev_n_pvs_counter.size() * sizeof(unsigned), context); Allen::memset_async(dev_n_pvs_histo.data(), 0, dev_n_pvs_histo.size() * sizeof(unsigned), context); Allen::memset_async(dev_n_smogpvs_histo.data(), 0, dev_n_smogpvs_histo.size() * sizeof(unsigned), context); @@ -139,15 +137,15 @@ __global__ void pv_beamline_cleanup::pv_beamline_cleanup( // monitoring if (-2 < vertex1.position.x && vertex1.position.x < 2 && -200 < vertex1.position.z && vertex1.position.z < 200) { - unsigned x_bin = std::floor(vertex1.position.x / 0.04f) + 50; + unsigned x_bin = std::floor(vertex1.position.x / 0.004f) + 500; atomicAdd(&dev_pv_x_histo[x_bin], 1); } if (-2 < vertex1.position.y && vertex1.position.y < 2 && -200 < vertex1.position.z && vertex1.position.z < 200) { - unsigned y_bin = std::floor(vertex1.position.y / 0.04f) + 50; + unsigned y_bin = std::floor(vertex1.position.y / 0.004f) + 500; atomicAdd(&dev_pv_y_histo[y_bin], 1); } if (-200 < vertex1.position.z && vertex1.position.z < 200) { - unsigned z_bin = std::floor(vertex1.position.z / 4) + 50; + unsigned z_bin = std::floor(vertex1.position.z / 0.4f) + 500; atomicAdd(&dev_pv_z_histo[z_bin], 1); } if (parameters.min_histo_smogpvz < vertex1.position.z && vertex1.position.z < parameters.max_histo_smogpvz) { diff --git a/device/SciFi/consolidate/include/ConsolidateSciFi.cuh b/device/SciFi/consolidate/include/ConsolidateSciFi.cuh index 75163b6d12e..228beab0427 100644 --- a/device/SciFi/consolidate/include/ConsolidateSciFi.cuh +++ b/device/SciFi/consolidate/include/ConsolidateSciFi.cuh @@ -21,7 +21,6 @@ #include "CopyTrackParameters.cuh" #ifndef ALLEN_STANDALONE -#include <Gaudi/Accumulators.h> #include "GaudiMonitoring.h" #endif diff --git a/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh b/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh index fff2ea021ed..0dc464dcdba 100644 --- a/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh +++ b/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh @@ -152,7 +152,7 @@ namespace seed_confirmTracks_consolidate { Property<block_dim_t> m_block_dim {this, {{256, 1, 1}}}; Property<histogram_scifi_track_eta_min_t> m_histogramSciFiEtaMin {this, 0.f}; Property<histogram_scifi_track_eta_max_t> m_histogramSciFiEtaMax {this, 10.f}; - Property<histogram_scifi_track_eta_nbins_t> m_histogramSciFiEtaNBins {this, 40u}; + Property<histogram_scifi_track_eta_nbins_t> m_histogramSciFiEtaNBins {this, 400u}; Property<histogram_scifi_track_phi_min_t> m_histogramSciFiPhiMin {this, -4.f}; Property<histogram_scifi_track_phi_max_t> m_histogramSciFiPhiMax {this, 4.f}; Property<histogram_scifi_track_phi_nbins_t> m_histogramSciFiPhiNBins {this, 16u}; diff --git a/device/SciFi/hybridseeding/consolidate/src/ConsolidateSciFiSeeding.cu b/device/SciFi/hybridseeding/consolidate/src/ConsolidateSciFiSeeding.cu index 61ef2ffa591..43eb941d9c7 100644 --- a/device/SciFi/hybridseeding/consolidate/src/ConsolidateSciFiSeeding.cu +++ b/device/SciFi/hybridseeding/consolidate/src/ConsolidateSciFiSeeding.cu @@ -72,7 +72,7 @@ void seed_confirmTracks_consolidate::seed_confirmTracks_consolidate_t::init() #ifndef ALLEN_STANDALONE m_seed_tracks = new Gaudi::Accumulators::Counter<>(this, "n_seed_tracks"); histogram_n_scifi_seeds = new gaudi_monitoring::Lockable_Histogram<> { - {this, "n_scifi_seeds_event", "n_scifi_seeds_event", {80, 0, 200, {}, {}}}, {}}; + {this, "n_scifi_seeds_event", "n_scifi_seeds_event", {200, 0, 200, {}, {}}}, {}}; histogram_scifi_track_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "scifi_track_eta", @@ -147,7 +147,7 @@ void seed_confirmTracks_consolidate::seed_confirmTracks_consolidate_t::operator( make_device_buffer<unsigned>(arguments, property<histogram_scifi_track_phi_nbins_t>()); auto dev_histogram_scifi_track_nhits = make_device_buffer<unsigned>(arguments, property<histogram_scifi_track_nhits_nbins_t>()); - auto dev_histogram_scifi_n_tracks = make_device_buffer<unsigned>(arguments, 80u); + auto dev_histogram_scifi_n_tracks = make_device_buffer<unsigned>(arguments, 200u); auto dev_scifi_n_tracks_counter = make_device_buffer<unsigned>(arguments, 1u); Allen::memset_async( dev_histogram_scifi_track_eta.data(), 0, dev_histogram_scifi_track_eta.size() * sizeof(unsigned), context); @@ -238,8 +238,7 @@ __global__ void seed_confirmTracks_consolidate::seed_confirmTracks_consolidate( auto used_scifi_hits = parameters.dev_used_scifi_hits.get(); if (number_of_tracks_event < 200) { - unsigned bin = std::floor(number_of_tracks_event / 2.5); - atomicAdd(&dev_histogram_scifi_n_tracks[bin], 1); + atomicAdd(&dev_histogram_scifi_n_tracks[number_of_tracks_event], 1); } dev_scifi_n_tracks_counter[0] += number_of_tracks_event; diff --git a/device/calo/clustering/include/CaloFindClusters.cuh b/device/calo/clustering/include/CaloFindClusters.cuh index 6b4f8df91f4..ce32a2f4285 100755 --- a/device/calo/clustering/include/CaloFindClusters.cuh +++ b/device/calo/clustering/include/CaloFindClusters.cuh @@ -17,6 +17,10 @@ #include "AlgorithmTypes.cuh" #include <cfloat> +#ifndef ALLEN_STANDALONE +#include "GaudiMonitoring.h" +#endif + namespace calo_find_clusters { struct Parameters { HOST_INPUT(host_ecal_number_of_clusters_t, unsigned) host_ecal_number_of_clusters; @@ -33,11 +37,12 @@ namespace calo_find_clusters { }; // Global function - __global__ void calo_find_clusters(Parameters parameters, const char* raw_ecal_geometry, const int16_t min_adc); + __global__ void calo_find_clusters(Parameters parameters, const char* raw_ecal_geometry, const int16_t min_adc, gsl::span<unsigned> histogram_n_clusters, gsl::span<unsigned> histogram_digit_e, gsl::span<unsigned> histogram_cluster_e, gsl::span<unsigned> histogram_cluster_et, gsl::span<unsigned> histogram_cluster_x, gsl::span<unsigned> histogram_cluster_y); // Algorithm struct calo_find_clusters_t : public DeviceAlgorithm, Parameters { void set_arguments_size(ArgumentReferences<Parameters>, const RuntimeOptions&, const Constants&) const; + void init(); __host__ void operator()( const ArgumentReferences<Parameters>& arguments, @@ -49,5 +54,15 @@ namespace calo_find_clusters { Property<block_dim_x_t> m_block_dim_x {this, 64}; Property<block_dim_y_t> m_block_dim_y {this, 16}; Property<ecal_min_adc_t> m_ecal_min_adc {this, 10}; +#ifndef ALLEN_STANDALONE + gaudi_monitoring::Lockable_Histogram<>* histogram_n_clusters; + gaudi_monitoring::Lockable_Histogram<>* histogram_ecal_digit_e; + gaudi_monitoring::Lockable_Histogram<>* histogram_ecal_cluster_e; + gaudi_monitoring::Lockable_Histogram<>* histogram_ecal_cluster_et; + gaudi_monitoring::Lockable_Histogram<>* histogram_ecal_cluster_x; + gaudi_monitoring::Lockable_Histogram<>* histogram_ecal_cluster_y; +#endif + }; } // namespace calo_find_clusters + diff --git a/device/calo/clustering/src/CaloFindClusters.cu b/device/calo/clustering/src/CaloFindClusters.cu index e39a6c44dfd..4171a33ea1d 100755 --- a/device/calo/clustering/src/CaloFindClusters.cu +++ b/device/calo/clustering/src/CaloFindClusters.cu @@ -13,6 +13,19 @@ INSTANTIATE_ALGORITHM(calo_find_clusters::calo_find_clusters_t) +void calo_find_clusters::calo_find_clusters_t::init() +{ +#ifndef ALLEN_STANDALONE + histogram_n_clusters = new gaudi_monitoring::Lockable_Histogram<> { + {this, "n_ecal_clusters", "NClusters", {400, 0, 400}}, {}}; + histogram_ecal_digit_e = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_digit_e", "EcalDigitE", {1000, 0, 10000}}, {}}; + histogram_ecal_cluster_e = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_e", "EcalClusterE", {5000, 0, 50000}}, {}}; + histogram_ecal_cluster_et = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_et", "EcalClusterEt", {500, 0, 5000}}, {}}; + histogram_ecal_cluster_x = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_x", "EcalClusterX", {800, -4000, 4000}}, {}}; + histogram_ecal_cluster_y = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_y", "EcalClusterY", {800, -4000, 4000}}, {}}; +#endif +} + __device__ void simple_clusters( CaloDigit const* digits, CaloSeedCluster const* seed_clusters, @@ -20,7 +33,12 @@ __device__ void simple_clusters( unsigned const num_clusters, const CaloGeometry& calo, const int16_t min_adc, - float const* corrections) + float const* corrections, + gsl::span<unsigned> histogram_digit_e, + gsl::span<unsigned> histogram_cluster_e, + gsl::span<unsigned> histogram_cluster_et, + gsl::span<unsigned> histogram_cluster_x, + gsl::span<unsigned> histogram_cluster_y) { for (unsigned c = threadIdx.x; c < num_clusters; c += blockDim.x) { auto const& seed_cluster = seed_clusters[c]; @@ -35,8 +53,14 @@ __device__ void simple_clusters( } auto const digit = digits[n_id]; if (digit.is_valid() && (digit.adc > min_adc)) { - cluster.e += calo.getE(n_id, digit.adc); + const auto digit_e = calo.getE(n_id, digit.adc); + cluster.e += digit_e; cluster.digits[n] = n_id; + + if (digit_e < 10000) { + const unsigned bin = std::floor(digit_e / 10); + ++histogram_digit_e[bin]; + } } } cluster.e -= corrections[c]; @@ -53,13 +77,37 @@ __device__ void simple_clusters( } cluster.CalcEt(); cluster.CaloNeutralE19 = calo.getE(seed_cluster.id, seed_cluster.adc) / cluster.e; + + // Fill histograms + if (cluster.e < 50000) { + const unsigned bin = std::floor(cluster.e / 10); + ++histogram_cluster_e[bin]; + } + if (cluster.et < 5000) { + const unsigned bin = std::floor(cluster.et / 10); + ++histogram_cluster_et[bin]; + } + if (cluster.x < 4000 && cluster.x > -4000) { + const unsigned bin = std::floor(cluster.x / 10) + 400; + ++histogram_cluster_x[bin]; + } + if (cluster.y < 4000 && cluster.y > -4000) { + const unsigned bin = std::floor(cluster.y / 10) + 400; + ++histogram_cluster_y[bin]; + } } } __global__ void calo_find_clusters::calo_find_clusters( calo_find_clusters::Parameters parameters, const char* raw_ecal_geometry, - const int16_t min_adc) + const int16_t min_adc, + gsl::span<unsigned> histogram_n_clusters, + gsl::span<unsigned> histogram_digit_e, + gsl::span<unsigned> histogram_cluster_e, + gsl::span<unsigned> histogram_cluster_et, + gsl::span<unsigned> histogram_cluster_x, + gsl::span<unsigned> histogram_cluster_y) { // Get proper geometry. auto ecal_geometry = CaloGeometry(raw_ecal_geometry); @@ -70,6 +118,9 @@ __global__ void calo_find_clusters::calo_find_clusters( unsigned const ecal_digits_offset = parameters.dev_ecal_digits_offsets[event_number]; unsigned const ecal_clusters_offset = parameters.dev_ecal_cluster_offsets[event_number]; unsigned const ecal_num_clusters = parameters.dev_ecal_cluster_offsets[event_number + 1] - ecal_clusters_offset; + + if (ecal_num_clusters < 400) histogram_n_clusters[ecal_num_clusters]++; + simple_clusters( parameters.dev_ecal_digits + ecal_digits_offset, parameters.dev_ecal_seed_clusters + Calo::Constants::ecal_max_index / 8 * event_number, @@ -77,7 +128,12 @@ __global__ void calo_find_clusters::calo_find_clusters( ecal_num_clusters, ecal_geometry, min_adc, - parameters.dev_ecal_corrections + ecal_clusters_offset); + parameters.dev_ecal_corrections + ecal_clusters_offset, + histogram_digit_e, + histogram_cluster_e, + histogram_cluster_et, + histogram_cluster_x, + histogram_cluster_y); } void calo_find_clusters::calo_find_clusters_t::set_arguments_size( @@ -94,8 +150,35 @@ __host__ void calo_find_clusters::calo_find_clusters_t::operator()( const Constants& constants, Allen::Context const& context) const { + auto dev_histogram_n_clusters = make_device_buffer<unsigned>(arguments, 400u); + auto dev_histogram_digit_e = make_device_buffer<unsigned>(arguments, 1000u); + auto dev_histogram_cluster_e = make_device_buffer<unsigned>(arguments, 5000u); + auto dev_histogram_cluster_et = make_device_buffer<unsigned>(arguments, 500u); + auto dev_histogram_cluster_x = make_device_buffer<unsigned>(arguments, 800u); + auto dev_histogram_cluster_y = make_device_buffer<unsigned>(arguments, 800u); + Allen::memset_async(dev_histogram_n_clusters.data(), 0, dev_histogram_n_clusters.size() * sizeof(unsigned), context); + Allen::memset_async(dev_histogram_digit_e.data(), 0, dev_histogram_digit_e.size() * sizeof(unsigned), context); + Allen::memset_async(dev_histogram_cluster_e.data(), 0, dev_histogram_cluster_e.size() * sizeof(unsigned), context); + Allen::memset_async(dev_histogram_cluster_et.data(), 0, dev_histogram_cluster_et.size() * sizeof(unsigned), context); + Allen::memset_async(dev_histogram_cluster_x.data(), 0, dev_histogram_cluster_x.size() * sizeof(unsigned), context); + Allen::memset_async(dev_histogram_cluster_y.data(), 0, dev_histogram_cluster_y.size() * sizeof(unsigned), context); + // Find clusters. global_function(calo_find_clusters)( dim3(size<dev_event_list_t>(arguments)), dim3(property<block_dim_x_t>().get()), context)( - arguments, constants.dev_ecal_geometry, property<ecal_min_adc_t>().get()); + arguments, constants.dev_ecal_geometry, property<ecal_min_adc_t>().get(), dev_histogram_n_clusters.get(), dev_histogram_digit_e.get(), dev_histogram_cluster_e.get(), dev_histogram_cluster_et.get(), dev_histogram_cluster_x.get(), dev_histogram_cluster_y.get()); + +#ifndef ALLEN_STANDALONE + gaudi_monitoring::fill( + arguments, + context, + std::tuple {std::tuple {dev_histogram_n_clusters.get(), histogram_n_clusters, 0, 400}, + std::tuple {dev_histogram_digit_e.get(), histogram_ecal_digit_e, 0, 10000}, + std::tuple {dev_histogram_cluster_e.get(), histogram_ecal_cluster_e, 0, 50000}, + std::tuple {dev_histogram_cluster_et.get(), histogram_ecal_cluster_et, 0, 5000}, + std::tuple {dev_histogram_cluster_x.get(), histogram_ecal_cluster_x, -4000.f, 4000.f}, + std::tuple {dev_histogram_cluster_y.get(), histogram_ecal_cluster_y, -4000.f, 4000.f}}); +#endif + } + diff --git a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu index f64b55dfc91..e194dcdc09a 100644 --- a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu +++ b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu @@ -18,10 +18,10 @@ void make_long_track_particles::make_long_track_particles_t::init() #ifndef ALLEN_STANDALONE histogram_n_trks = new gaudi_monitoring::Lockable_Histogram<> { {this, "number_of_trks", "NTrks", {UT::Constants::max_num_tracks, 0, UT::Constants::max_num_tracks}}, {}}; - histogram_trk_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_eta", "etaTrk", {100, 0, 5}}, {}}; - histogram_trk_phi = new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_phi", "phiTrk", {100, -3.2, 3.2}}, {}}; + histogram_trk_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_eta", "etaTrk", {1000, 0, 5}}, {}}; + histogram_trk_phi = new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_phi", "phiTrk", {1000, -3.2, 3.2}}, {}}; histogram_trk_pt = - new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_pt", "ptTrk", {100, 0, (unsigned) 1e4}}, {}}; + new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_pt", "ptTrk", {1000, 0, (unsigned) 1e4}}, {}}; #endif } @@ -44,9 +44,9 @@ void make_long_track_particles::make_long_track_particles_t::operator()( const Allen::Context& context) const { auto dev_histogram_n_trks = make_device_buffer<unsigned>(arguments, UT::Constants::max_num_tracks); - auto dev_histogram_trk_eta = make_device_buffer<unsigned>(arguments, 100u); - auto dev_histogram_trk_phi = make_device_buffer<unsigned>(arguments, 100u); - auto dev_histogram_trk_pt = make_device_buffer<unsigned>(arguments, 100u); + auto dev_histogram_trk_eta = make_device_buffer<unsigned>(arguments, 1000u); + auto dev_histogram_trk_phi = make_device_buffer<unsigned>(arguments, 1000u); + auto dev_histogram_trk_pt = make_device_buffer<unsigned>(arguments, 1000u); Allen::memset_async(dev_histogram_n_trks.data(), 0, dev_histogram_n_trks.size() * sizeof(unsigned), context); Allen::memset_async(dev_histogram_trk_eta.data(), 0, dev_histogram_trk_eta.size() * sizeof(unsigned), context); Allen::memset_async(dev_histogram_trk_phi.data(), 0, dev_histogram_trk_phi.size() * sizeof(unsigned), context); @@ -106,13 +106,19 @@ void __global__ make_long_track_particles::make_particles( parameters.dev_lepton_id[offset + i]}; auto state = (parameters.dev_kalman_states_view + event_number)->state(i); - const unsigned etabin = max(0u, min(99u, static_cast<unsigned>(state.eta() * 20))); - atomicAdd(&dev_histogram_trk_eta[etabin], 1); - const unsigned phibin = - max(0u, min(99u, static_cast<unsigned>(std::atan2(state.ty(), state.tx()) * 15.625f + 50))); - atomicAdd(&dev_histogram_trk_phi[phibin], 1); - const unsigned ptbin = min(99u, static_cast<unsigned>(state.pt() * 0.01f)); - atomicAdd(&dev_histogram_trk_pt[ptbin], 1); + if (state.eta() > 0 && state.eta() < 5) { + unsigned bin = std::floor(state.eta() * 200); + atomicAdd(&dev_histogram_trk_eta[bin], 1); + } + float phi = std::atan2(state.ty(), state.tx()); + if (phi > -3.2f && phi < 3.2f) { + unsigned bin = std::floor((phi + 3.2f) * 1000 / 6.4f); + atomicAdd(&dev_histogram_trk_phi[bin], 1); + } + if (state.pt() > 0 && state.pt() < float(1e4)) { + unsigned bin = std::floor(state.pt() * 0.1f); + atomicAdd(&dev_histogram_trk_pt[bin], 1); + } } } diff --git a/device/muon/is_muon/include/IsMuon.cuh b/device/muon/is_muon/include/IsMuon.cuh index 2519c2bf7dd..ac809216bb8 100644 --- a/device/muon/is_muon/include/IsMuon.cuh +++ b/device/muon/is_muon/include/IsMuon.cuh @@ -16,6 +16,10 @@ #include "SciFiConsolidated.cuh" #include "ParticleTypes.cuh" +#ifndef ALLEN_STANDALONE +#include "GaudiMonitoring.h" +#endif + namespace is_muon { struct Parameters { HOST_INPUT(host_number_of_events_t, unsigned) host_number_of_events; @@ -26,6 +30,7 @@ namespace is_muon { DEVICE_INPUT(dev_scifi_states_t, MiniState) dev_scifi_states; DEVICE_INPUT(dev_station_ocurrences_offset_t, unsigned) dev_station_ocurrences_offset; DEVICE_INPUT(dev_muon_hits_t, char) dev_muon_hits; + DEVICE_INPUT(dev_velo_states_view_t, Allen::Views::Physics::KalmanStates) dev_velo_states_view; DEVICE_OUTPUT(dev_is_muon_t, bool) dev_is_muon; DEVICE_OUTPUT(dev_muon_idxs_t, unsigned) dev_muon_idxs; DEVICE_OUTPUT(dev_muon_hit_counts_t, unsigned) dev_muon_hit_counts; @@ -34,11 +39,12 @@ namespace is_muon { }; __global__ void - is_muon(Parameters, const Muon::Constants::FieldOfInterest* dev_muon_foi, const float* dev_muon_momentum_cuts); + is_muon(Parameters, const Muon::Constants::FieldOfInterest* dev_muon_foi, const float* dev_muon_momentum_cuts, gsl::span<unsigned> dev_histogram_n_muons, gsl::span<unsigned> dev_histogram_muon_n_stations, gsl::span<unsigned> dev_histogram_muon_pt); struct is_muon_t : public DeviceAlgorithm, Parameters { void set_arguments_size(ArgumentReferences<Parameters> arguments, const RuntimeOptions&, const Constants&) const; + void init(); void operator()( const ArgumentReferences<Parameters>& arguments, const RuntimeOptions& runtime_options, @@ -47,5 +53,10 @@ namespace is_muon { private: Property<block_dim_x_t> m_block_dim_x {this, 128}; +#ifndef ALLEN_STANDALONE + gaudi_monitoring::Lockable_Histogram<>* histogram_n_muons; + gaudi_monitoring::Lockable_Histogram<>* histogram_muon_n_stations; + gaudi_monitoring::Lockable_Histogram<>* histogram_muon_pt; +#endif }; } // namespace is_muon diff --git a/device/muon/is_muon/src/IsMuon.cu b/device/muon/is_muon/src/IsMuon.cu index af0c20a16c2..68e905095e9 100644 --- a/device/muon/is_muon/src/IsMuon.cu +++ b/device/muon/is_muon/src/IsMuon.cu @@ -13,6 +13,30 @@ INSTANTIATE_ALGORITHM(is_muon::is_muon_t) +void is_muon::is_muon_t::init() +{ +#ifndef ALLEN_STANDALONE + histogram_n_muons = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "n_muons", + "# muons", + {2, 0, 2}}, + {}}; + histogram_muon_n_stations = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "muon_n_stations", + "# muon stations", + {3, 2, 5}}, + {}}; + histogram_muon_pt = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "muon_pt", + "muon pt", + {1000, 0, (unsigned) 1e4}}, + {}}; +#endif +} + void is_muon::is_muon_t::set_arguments_size( ArgumentReferences<Parameters> arguments, const RuntimeOptions&, @@ -31,12 +55,28 @@ void is_muon::is_muon_t::operator()( const Constants& constants, const Allen::Context& context) const { + auto dev_histogram_n_muons = make_device_buffer<unsigned>(arguments, 2u); + auto dev_histogram_muon_n_stations = make_device_buffer<unsigned>(arguments, 3u); + auto dev_histogram_muon_pt = make_device_buffer<unsigned>(arguments, 1000u); + Allen::memset_async(dev_histogram_n_muons.data(), 0, dev_histogram_n_muons.size() * sizeof(unsigned), context); + Allen::memset_async(dev_histogram_muon_n_stations.data(), 0, dev_histogram_muon_n_stations.size() * sizeof(unsigned), context); + Allen::memset_async(dev_histogram_muon_pt.data(), 0, dev_histogram_muon_pt.size() * sizeof(unsigned), context); + Allen::memset_async<dev_is_muon_t>(arguments, 0, context); Allen::memset_async<dev_lepton_id_t>(arguments, 0, context); Allen::memset_async<dev_muon_hit_counts_t>(arguments, 0, context); global_function(is_muon)(dim3(size<dev_event_list_t>(arguments)), dim3(property<block_dim_x_t>().get()), context)( - arguments, constants.dev_muon_foi, constants.dev_muon_momentum_cuts); + arguments, constants.dev_muon_foi, constants.dev_muon_momentum_cuts, dev_histogram_n_muons.get(), dev_histogram_muon_n_stations.get(), dev_histogram_muon_pt.get()); + +#ifndef ALLEN_STANDALONE + gaudi_monitoring::fill( + arguments, + context, + std::tuple {std::tuple {dev_histogram_n_muons.get(), histogram_n_muons, 0, 2}, + std::tuple {dev_histogram_muon_n_stations.get(), histogram_muon_n_stations, 2, 5}, + std::tuple {dev_histogram_muon_pt.get(), histogram_muon_pt, 0, (unsigned) 1e4}}); +#endif } __device__ float elliptical_foi_window(const float a, const float b, const float c, const float momentum) @@ -83,7 +123,10 @@ __device__ bool is_in_window( __global__ void is_muon::is_muon( is_muon::Parameters parameters, const Muon::Constants::FieldOfInterest* dev_muon_foi, - const float* dev_muon_momentum_cuts) + const float* dev_muon_momentum_cuts, + gsl::span<unsigned> dev_histogram_n_muons, + gsl::span<unsigned> dev_histogram_muon_n_stations, + gsl::span<unsigned> dev_histogram_muon_pt) { // Put foi parameters in shared memory __shared__ int8_t shared_muon_foi_params_content[sizeof(Muon::Constants::FieldOfInterest)]; @@ -124,6 +167,7 @@ __global__ void is_muon::is_muon( const auto& state = parameters.dev_scifi_states[event_offset + track_id]; if (momentum < dev_muon_momentum_cuts[0]) { + ++dev_histogram_n_muons[0]; continue; } @@ -174,14 +218,91 @@ __global__ void is_muon::is_muon( if (occupancies[0] != 0 && occupancies[1] != 0) { if (momentum < dev_muon_momentum_cuts[1]) { parameters.dev_is_muon[event_offset + track_id] = true; - } - else if (momentum < dev_muon_momentum_cuts[2]) { + + // monitoring + ++dev_histogram_n_muons[1]; + unsigned n_stations = 0; + if (occupancies[2] != 0) { + ++n_stations; + } + if (occupancies[3] != 0) { + ++n_stations; + } + ++dev_histogram_muon_n_stations[n_stations]; + const auto long_track = long_tracks.track(track_id); + const auto velo_track = long_track.track_segment<Allen::Views::Physics::Track::segment::velo>(); + const auto velo_track_index = velo_track.track_index(); + const auto endvelo_states = parameters.dev_velo_states_view[event_number]; + const auto velo_state = endvelo_states.state(velo_track_index); + const auto qop = long_track.qop(); + const float tx = velo_state.tx(); + const float ty = velo_state.ty(); + const float slope2 = tx * tx + ty * ty; + const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); + if (pt < unsigned(1e4)) { + const unsigned bin = std::floor(pt / 10.f); + ++dev_histogram_muon_pt[bin]; + } + } else if (momentum < dev_muon_momentum_cuts[2]) { parameters.dev_is_muon[event_offset + track_id] = (occupancies[2] != 0) || (occupancies[3] != 0); + + // monitoring + if ((occupancies[2] != 0) || (occupancies[3] != 0)) { + ++dev_histogram_n_muons[1]; + unsigned n_stations = 0; + if (occupancies[2] != 0) { + ++n_stations; + } + if (occupancies[3] != 0) { + ++n_stations; + } + ++dev_histogram_muon_n_stations[n_stations]; + const auto long_track = long_tracks.track(track_id); + const auto velo_track = long_track.track_segment<Allen::Views::Physics::Track::segment::velo>(); + const auto velo_track_index = velo_track.track_index(); + const auto endvelo_states = parameters.dev_velo_states_view[event_number]; + const auto velo_state = endvelo_states.state(velo_track_index); + const auto qop = long_track.qop(); + const float tx = velo_state.tx(); + const float ty = velo_state.ty(); + const float slope2 = tx * tx + ty * ty; + const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); + if (pt < unsigned(1e4)) { + const unsigned bin = std::floor(pt / 10.f); + ++dev_histogram_muon_pt[bin]; + } + } else { + ++dev_histogram_n_muons[0]; + } } else { parameters.dev_is_muon[event_offset + track_id] = (occupancies[2] != 0) && (occupancies[3] != 0); + + // monitoring + if ((occupancies[2] != 0) && (occupancies[3] != 0)) { + ++dev_histogram_n_muons[1]; + ++dev_histogram_muon_n_stations[2]; + const auto long_track = long_tracks.track(track_id); + const auto velo_track = long_track.track_segment<Allen::Views::Physics::Track::segment::velo>(); + const auto velo_track_index = velo_track.track_index(); + const auto endvelo_states = parameters.dev_velo_states_view[event_number]; + const auto velo_state = endvelo_states.state(velo_track_index); + const auto qop = long_track.qop(); + const float tx = velo_state.tx(); + const float ty = velo_state.ty(); + const float slope2 = tx * tx + ty * ty; + const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); + if (pt < unsigned(1e4)) { + const unsigned bin = std::floor(pt / 10.f); + ++dev_histogram_muon_pt[bin]; + } + } else { + ++dev_histogram_n_muons[0]; + } } parameters.dev_lepton_id[event_offset + track_id] = parameters.dev_is_muon[event_offset + track_id]; + } else { + ++dev_histogram_n_muons[0]; } } } diff --git a/device/selections/Hlt1/include/GatherSelections.cuh b/device/selections/Hlt1/include/GatherSelections.cuh index 2fa0fd5e0ea..50e893f6f6b 100644 --- a/device/selections/Hlt1/include/GatherSelections.cuh +++ b/device/selections/Hlt1/include/GatherSelections.cuh @@ -89,6 +89,9 @@ namespace gather_selections { mutable std::vector<std::unique_ptr<Gaudi::Accumulators::Counter<>>> m_rate_counters; gaudi_monitoring::Lockable_Histogram<>* histogram_line_passes; gaudi_monitoring::Lockable_Histogram<>* histogram_line_rates; + gaudi_monitoring::Lockable_Histogram<>* histogram_line_rates_normalized; + bool rate_ref_line; + unsigned rate_ref_line_index; #endif }; } // namespace gather_selections diff --git a/device/selections/Hlt1/src/GatherSelections.cu b/device/selections/Hlt1/src/GatherSelections.cu index 0b4a292859d..4efbf24a890 100644 --- a/device/selections/Hlt1/src/GatherSelections.cu +++ b/device/selections/Hlt1/src/GatherSelections.cu @@ -156,7 +156,12 @@ void gather_selections::gather_selections_t::init() std::istringstream is(line_names); std::string line_name; std::vector<std::string> line_labels; + rate_ref_line = false; while (std::getline(is, line_name, ',')) { + if (line_name == "Hlt1ODIN1kHzLumi") { + rate_ref_line = true; + rate_ref_line_index = line_labels.size(); + } const std::string pass_counter_name {line_name + "Pass"}; const std::string rate_counter_name {line_name + "Rate"}; m_pass_counters.push_back(std::make_unique<Gaudi::Accumulators::Counter<>>(this, pass_counter_name)); @@ -169,6 +174,8 @@ void gather_selections::gather_selections_t::init() {this, "line_passes", "line passes", {unsigned(n_lines), 0, n_lines, {}, line_labels}}, {}}; histogram_line_rates = new gaudi_monitoring::Lockable_Histogram<> { {this, "line_rates", "line rates", {unsigned(n_lines), 0, n_lines, {}, line_labels}}, {}}; + histogram_line_rates_normalized = new gaudi_monitoring::Lockable_Histogram<> { + {this, "line_rates_normalized", "line rates normalized", {unsigned(n_lines), 0, n_lines, {}, line_labels}}, {}}; #endif } @@ -335,19 +342,27 @@ void gather_selections::gather_selections_t::operator()( // Monitoring auto host_histo_line_passes = make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); auto host_histo_line_rates = make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); + auto host_histo_line_rates_normalized = make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); Allen::copy_async(host_histo_line_passes.get(), dev_histo_line_passes.get(), context, Allen::memcpyDeviceToHost); Allen::copy_async(host_histo_line_rates.get(), dev_histo_line_rates.get(), context, Allen::memcpyDeviceToHost); + Allen::memset_async(host_histo_line_rates_normalized.data(), 0, host_histo_line_rates_normalized.size() * sizeof(unsigned), context); Allen::synchronize(context); + float t = std::numeric_limits<float>::max(); + if (rate_ref_line) t = host_histo_line_rates[rate_ref_line_index]/1000.f; for (unsigned i = 0; i < first<host_number_of_active_lines_t>(arguments); i++) { m_pass_counters[i]->buffer() += host_histo_line_passes[i]; m_rate_counters[i]->buffer() += host_histo_line_rates[i]; + if (rate_ref_line) host_histo_line_rates_normalized[i] = host_histo_line_rates[i] / t; } gaudi_monitoring::details::fill_gaudi_histogram( host_histo_line_passes.get(), histogram_line_passes, 0u, first<host_number_of_active_lines_t>(arguments)); gaudi_monitoring::details::fill_gaudi_histogram( host_histo_line_rates.get(), histogram_line_rates, 0u, first<host_number_of_active_lines_t>(arguments)); + gaudi_monitoring::details::fill_gaudi_histogram( + host_histo_line_rates_normalized.get(), histogram_line_rates_normalized + , 0u, first<host_number_of_active_lines_t>(arguments)); #endif // Reduce output mask to its proper size diff --git a/device/selections/lines/calibration/include/D2KPiLine.cuh b/device/selections/lines/calibration/include/D2KPiLine.cuh index 9d201bd350f..34ab96da75e 100644 --- a/device/selections/lines/calibration/include/D2KPiLine.cuh +++ b/device/selections/lines/calibration/include/D2KPiLine.cuh @@ -116,7 +116,7 @@ namespace d2kpi_line { Property<histogram_d0_mass_min_t> m_histogramD0MassMin {this, 1765.f}; Property<histogram_d0_mass_max_t> m_histogramD0MassMax {this, 1965.f}; Property<histogram_d0_mass_nbins_t> m_histogramD0MassNBins {this, 100u}; - Property<histogram_d0_pt_min_t> m_histogramD0PtMin {this, 0.f}; + Property<histogram_d0_pt_min_t> m_histogramD0PtMin {this, 800.f}; Property<histogram_d0_pt_max_t> m_histogramD0PtMax {this, 1e4}; Property<histogram_d0_pt_nbins_t> m_histogramD0PtNBins {this, 100u}; Property<enable_monitoring_t> m_enable_monitoring {this, false}; diff --git a/device/selections/lines/charm/include/D2KKLine.cuh b/device/selections/lines/charm/include/D2KKLine.cuh index f4b0753f5e5..c8e5e61d816 100644 --- a/device/selections/lines/charm/include/D2KKLine.cuh +++ b/device/selections/lines/charm/include/D2KKLine.cuh @@ -125,7 +125,7 @@ namespace d2kk_line { Property<histogram_d02kk_mass_min_t> m_histogramD0MassMin {this, 1765.f}; Property<histogram_d02kk_mass_max_t> m_histogramD0MassMax {this, 1965.f}; Property<histogram_d02kk_mass_nbins_t> m_histogramD0MassNBins {this, 100u}; - Property<histogram_d02kk_pt_min_t> m_histogramD0PtMin {this, 0.f}; + Property<histogram_d02kk_pt_min_t> m_histogramD0PtMin {this, 800.f}; Property<histogram_d02kk_pt_max_t> m_histogramD0PtMax {this, 1e4}; Property<histogram_d02kk_pt_nbins_t> m_histogramD0PtNBins {this, 100u}; Property<enable_monitoring_t> m_enable_monitoring {this, false}; diff --git a/device/selections/lines/charm/include/D2PiPiLine.cuh b/device/selections/lines/charm/include/D2PiPiLine.cuh index e5e58ee3150..975734d8bb8 100644 --- a/device/selections/lines/charm/include/D2PiPiLine.cuh +++ b/device/selections/lines/charm/include/D2PiPiLine.cuh @@ -133,7 +133,7 @@ namespace d2pipi_line { Property<histogram_d02pipi_mass_min_t> m_histogramD0MassMin {this, 1765.f}; Property<histogram_d02pipi_mass_max_t> m_histogramD0MassMax {this, 1965.f}; Property<histogram_d02pipi_mass_nbins_t> m_histogramD0MassNBins {this, 100u}; - Property<histogram_d02pipi_pt_min_t> m_histogramD0PtMin {this, 0.f}; + Property<histogram_d02pipi_pt_min_t> m_histogramD0PtMin {this, 800.f}; Property<histogram_d02pipi_pt_max_t> m_histogramD0PtMax {this, 1e4}; Property<histogram_d02pipi_pt_nbins_t> m_histogramD0PtNBins {this, 100u}; Property<enable_monitoring_t> m_enable_monitoring {this, false}; diff --git a/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh b/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh index cf8ecbd482c..53903e7b07a 100644 --- a/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh +++ b/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh @@ -167,7 +167,7 @@ namespace matching_consolidate_tracks { Property<block_dim_t> m_block_dim {this, {{256, 1, 1}}}; Property<histogram_long_track_matching_eta_min_t> m_histogramLongEtaMin {this, 0.f}; Property<histogram_long_track_matching_eta_max_t> m_histogramLongEtaMax {this, 10.f}; - Property<histogram_long_track_matching_eta_nbins_t> m_histogramLongEtaNBins {this, 40u}; + Property<histogram_long_track_matching_eta_nbins_t> m_histogramLongEtaNBins {this, 400u}; Property<histogram_long_track_matching_phi_min_t> m_histogramLongPhiMin {this, -4.f}; Property<histogram_long_track_matching_phi_max_t> m_histogramLongPhiMax {this, 4.f}; Property<histogram_long_track_matching_phi_nbins_t> m_histogramLongPhiNBins {this, 16u}; -- GitLab From 8ce84b7da076e2ca7ff3caedf4b49b3ab52be2ac Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Mon, 17 Jul 2023 09:50:04 -0400 Subject: [PATCH 02/18] center int histos --- device/PV/beamlinePV/src/pv_beamline_cleanup.cu | 9 ++++----- device/SciFi/consolidate/include/ConsolidateSciFi.cuh | 6 +++--- device/SciFi/consolidate/src/ConsolidateSciFi.cu | 11 ++++------- .../consolidate/include/ConsolidateSciFiSeeding.cuh | 6 +++--- .../consolidate/src/ConsolidateSciFiSeeding.cu | 8 ++++---- device/kalman/ParKalman/src/MakeLongTrackParticles.cu | 8 ++++---- .../consolidate/include/ConsolidateMatchedTracks.cuh | 6 +++--- .../consolidate/src/ConsolidateMatchedTracks.cu | 11 ++++------- .../consolidate_tracks/src/VeloConsolidateTracks.cu | 11 ++++------- .../include/VeloKalmanFilter.cuh | 6 +++--- device/vertex_fit/vertex_fitter/src/VertexFitter.cu | 8 ++++---- 11 files changed, 40 insertions(+), 50 deletions(-) diff --git a/device/PV/beamlinePV/src/pv_beamline_cleanup.cu b/device/PV/beamlinePV/src/pv_beamline_cleanup.cu index 8cbdda7e402..bbd027bb009 100644 --- a/device/PV/beamlinePV/src/pv_beamline_cleanup.cu +++ b/device/PV/beamlinePV/src/pv_beamline_cleanup.cu @@ -16,7 +16,6 @@ void pv_beamline_cleanup::pv_beamline_cleanup_t::init() { #ifndef ALLEN_STANDALONE m_pvs = new Gaudi::Accumulators::AveragingCounter<> {this, "n_PVs"}; - histogram_n_pvs = new gaudi_monitoring::Lockable_Histogram<> {{this, "n_pvs_event", "n_pvs_event", {20, 0, 20}}, {}}; histogram_n_smogpvs = new gaudi_monitoring::Lockable_Histogram<> {{this, "n_smog2_PVs", "n_smog2_PVs", {10, -0.5f, 9.5f}}, {}}; @@ -26,6 +25,7 @@ void pv_beamline_cleanup::pv_beamline_cleanup_t::init() "smogpv_z", {property<nbins_histo_smogpvz_t>(), property<min_histo_smogpvz_t>(), property<max_histo_smogpvz_t>()}}, {}}; + histogram_n_pvs = new gaudi_monitoring::Lockable_Histogram<> {{this, "n_pvs_event", "n_pvs_event", {21, -0.5, 20.5}}, {}}; histogram_pv_x = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_x", "pv_x", {1000, -2.f, 2.f}}, {}}; histogram_pv_y = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_y", "pv_y", {1000, -2.f, 2.f}}, {}}; histogram_pv_z = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_z", "pv_z", {1000, -200.f, 200.f}}, {}}; @@ -48,9 +48,9 @@ void pv_beamline_cleanup::pv_beamline_cleanup_t::operator()( const Allen::Context& context) const { auto dev_n_pvs_counter = make_device_buffer<unsigned>(arguments, 1u); - auto dev_n_pvs_histo = make_device_buffer<unsigned>(arguments, 20u); auto dev_n_smogpvs_histo = make_device_buffer<unsigned>(arguments, 10u); auto dev_smogpv_z_histo = make_device_buffer<unsigned>(arguments, property<nbins_histo_smogpvz_t>()); + auto dev_n_pvs_histo = make_device_buffer<unsigned>(arguments, 21u); auto dev_pv_x_histo = make_device_buffer<unsigned>(arguments, 1000u); auto dev_pv_y_histo = make_device_buffer<unsigned>(arguments, 1000u); auto dev_pv_z_histo = make_device_buffer<unsigned>(arguments, 1000u); @@ -79,8 +79,8 @@ void pv_beamline_cleanup::pv_beamline_cleanup_t::operator()( arguments, context, std::tuple {std::tuple {dev_n_pvs_counter.get(), m_pvs}, - std::tuple {dev_n_pvs_histo.get(), histogram_n_pvs, 0, 20}, std::tuple {dev_n_smogpvs_histo.get(), histogram_n_smogpvs, -0.5f, 9.5f}, + std::tuple {dev_n_pvs_histo.get(), histogram_n_pvs, -0.5, 20.5}, std::tuple {dev_pv_x_histo.get(), histogram_pv_x, -2, 2}, std::tuple {dev_pv_y_histo.get(), histogram_pv_y, -2, 2}, std::tuple {dev_pv_z_histo.get(), histogram_pv_z, -200, 200}, @@ -161,8 +161,7 @@ __global__ void pv_beamline_cleanup::pv_beamline_cleanup( __syncthreads(); parameters.dev_number_of_multi_final_vertices[event_number] = *tmp_number_vertices; - if (*tmp_number_vertices < 20) atomicAdd(&dev_n_pvs_histo[*tmp_number_vertices], 1); + if (*tmp_number_vertices < 21) atomicAdd(&dev_n_pvs_histo[*tmp_number_vertices], 1); if (*tmp_number_SMOG_vertices < 10) atomicAdd(&dev_n_smogpvs_histo[*tmp_number_SMOG_vertices], 1); - dev_n_pvs_counter[0] += *tmp_number_vertices; } diff --git a/device/SciFi/consolidate/include/ConsolidateSciFi.cuh b/device/SciFi/consolidate/include/ConsolidateSciFi.cuh index 228beab0427..3ef18bcacf1 100644 --- a/device/SciFi/consolidate/include/ConsolidateSciFi.cuh +++ b/device/SciFi/consolidate/include/ConsolidateSciFi.cuh @@ -182,9 +182,9 @@ namespace scifi_consolidate_tracks { Property<histogram_long_track_forward_phi_min_t> m_histogramLongPhiMin {this, -4.f}; Property<histogram_long_track_forward_phi_max_t> m_histogramLongPhiMax {this, 4.f}; Property<histogram_long_track_forward_phi_nbins_t> m_histogramLongPhiNBins {this, 16u}; - Property<histogram_long_track_forward_nhits_min_t> m_histogramLongNhitsMin {this, 0.f}; - Property<histogram_long_track_forward_nhits_max_t> m_histogramLongNhitsMax {this, 50.f}; - Property<histogram_long_track_forward_nhits_nbins_t> m_histogramLongNhitsNBins {this, 50u}; + Property<histogram_long_track_forward_nhits_min_t> m_histogramLongNhitsMin {this, -0.5f}; + Property<histogram_long_track_forward_nhits_max_t> m_histogramLongNhitsMax {this, 50.5f}; + Property<histogram_long_track_forward_nhits_nbins_t> m_histogramLongNhitsNBins {this, 51u}; #ifndef ALLEN_STANDALONE private: diff --git a/device/SciFi/consolidate/src/ConsolidateSciFi.cu b/device/SciFi/consolidate/src/ConsolidateSciFi.cu index efc74b9334f..fdae0e1d099 100644 --- a/device/SciFi/consolidate/src/ConsolidateSciFi.cu +++ b/device/SciFi/consolidate/src/ConsolidateSciFi.cu @@ -155,7 +155,7 @@ void scifi_consolidate_tracks::scifi_consolidate_tracks_t::init() #ifndef ALLEN_STANDALONE m_long_tracks_forward = new Gaudi::Accumulators::Counter<>(this, "n_long_tracks_forward"); histogram_n_long_tracks_forward = new gaudi_monitoring::Lockable_Histogram<> { - {this, "n_long_tracks_forward_event", "n_long_tracks_forward_event", {80, 0, 200, {}, {}}}, {}}; + {this, "n_long_tracks_forward_event", "n_long_tracks_forward_event", {201, -0.5, 200.5, {}, {}}}, {}}; histogram_long_track_forward_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "long_track_forward_eta", @@ -200,7 +200,7 @@ void scifi_consolidate_tracks::scifi_consolidate_tracks_t::operator()( make_device_buffer<unsigned>(arguments, property<histogram_long_track_forward_phi_nbins_t>()); auto dev_histogram_long_track_forward_nhits = make_device_buffer<unsigned>(arguments, property<histogram_long_track_forward_nhits_nbins_t>()); - auto dev_histogram_n_long_tracks_forward = make_device_buffer<unsigned>(arguments, 80u); + auto dev_histogram_n_long_tracks_forward = make_device_buffer<unsigned>(arguments, 201u); auto dev_n_long_tracks_forward_counter = make_device_buffer<unsigned>(arguments, 1u); Allen::memset_async( dev_histogram_long_track_forward_eta.data(), @@ -254,7 +254,7 @@ void scifi_consolidate_tracks::scifi_consolidate_tracks_t::operator()( histogram_long_track_forward_nhits, property<histogram_long_track_forward_nhits_min_t>(), property<histogram_long_track_forward_nhits_max_t>()}, - std::tuple {dev_histogram_n_long_tracks_forward.get(), histogram_n_long_tracks_forward, 0, 200}, + std::tuple {dev_histogram_n_long_tracks_forward.get(), histogram_n_long_tracks_forward, -0.5f, 200.5f}, std::tuple {dev_n_long_tracks_forward_counter.get(), m_long_tracks_forward}}); #endif } @@ -395,10 +395,7 @@ __device__ void scifi_consolidate_tracks_impl( auto used_scifi_hits = parameters.dev_used_scifi_hits.get(); auto accepted_velo_tracks = parameters.dev_accepted_and_unused_velo_tracks.get(); - if (number_of_tracks_event < 200) { - unsigned bin = std::floor(number_of_tracks_event / 2.5); - atomicAdd(&dev_histogram_n_long_tracks_forward[bin], 1); - } + if (number_of_tracks_event < 201) atomicAdd(&dev_histogram_n_long_tracks_forward[number_of_tracks_event], 1); dev_n_long_tracks_forward_counter[0] += number_of_tracks_event; // Loop over tracks. diff --git a/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh b/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh index 0dc464dcdba..df17c94a964 100644 --- a/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh +++ b/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh @@ -156,9 +156,9 @@ namespace seed_confirmTracks_consolidate { Property<histogram_scifi_track_phi_min_t> m_histogramSciFiPhiMin {this, -4.f}; Property<histogram_scifi_track_phi_max_t> m_histogramSciFiPhiMax {this, 4.f}; Property<histogram_scifi_track_phi_nbins_t> m_histogramSciFiPhiNBins {this, 16u}; - Property<histogram_scifi_track_nhits_min_t> m_histogramSciFiNhitsMin {this, 0.f}; - Property<histogram_scifi_track_nhits_max_t> m_histogramSciFiNhitsMax {this, 14.f}; - Property<histogram_scifi_track_nhits_nbins_t> m_histogramSciFiNhitsNBins {this, 14u}; + Property<histogram_scifi_track_nhits_min_t> m_histogramSciFiNhitsMin {this, -0.5f}; + Property<histogram_scifi_track_nhits_max_t> m_histogramSciFiNhitsMax {this, 14.5f}; + Property<histogram_scifi_track_nhits_nbins_t> m_histogramSciFiNhitsNBins {this, 15u}; #ifndef ALLEN_STANDALONE private: Gaudi::Accumulators::Counter<>* m_seed_tracks; diff --git a/device/SciFi/hybridseeding/consolidate/src/ConsolidateSciFiSeeding.cu b/device/SciFi/hybridseeding/consolidate/src/ConsolidateSciFiSeeding.cu index 43eb941d9c7..087c1776bbe 100644 --- a/device/SciFi/hybridseeding/consolidate/src/ConsolidateSciFiSeeding.cu +++ b/device/SciFi/hybridseeding/consolidate/src/ConsolidateSciFiSeeding.cu @@ -72,7 +72,7 @@ void seed_confirmTracks_consolidate::seed_confirmTracks_consolidate_t::init() #ifndef ALLEN_STANDALONE m_seed_tracks = new Gaudi::Accumulators::Counter<>(this, "n_seed_tracks"); histogram_n_scifi_seeds = new gaudi_monitoring::Lockable_Histogram<> { - {this, "n_scifi_seeds_event", "n_scifi_seeds_event", {200, 0, 200, {}, {}}}, {}}; + {this, "n_scifi_seeds_event", "n_scifi_seeds_event", {201, -0.5, 200.5, {}, {}}}, {}}; histogram_scifi_track_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "scifi_track_eta", @@ -147,7 +147,7 @@ void seed_confirmTracks_consolidate::seed_confirmTracks_consolidate_t::operator( make_device_buffer<unsigned>(arguments, property<histogram_scifi_track_phi_nbins_t>()); auto dev_histogram_scifi_track_nhits = make_device_buffer<unsigned>(arguments, property<histogram_scifi_track_nhits_nbins_t>()); - auto dev_histogram_scifi_n_tracks = make_device_buffer<unsigned>(arguments, 200u); + auto dev_histogram_scifi_n_tracks = make_device_buffer<unsigned>(arguments, 201u); auto dev_scifi_n_tracks_counter = make_device_buffer<unsigned>(arguments, 1u); Allen::memset_async( dev_histogram_scifi_track_eta.data(), 0, dev_histogram_scifi_track_eta.size() * sizeof(unsigned), context); @@ -189,7 +189,7 @@ void seed_confirmTracks_consolidate::seed_confirmTracks_consolidate_t::operator( histogram_scifi_track_nhits, property<histogram_scifi_track_nhits_min_t>(), property<histogram_scifi_track_nhits_max_t>()}, - std::tuple {dev_histogram_scifi_n_tracks.get(), histogram_n_scifi_seeds, 0, 200}, + std::tuple {dev_histogram_scifi_n_tracks.get(), histogram_n_scifi_seeds, -0.5, 200.5}, std::tuple {dev_scifi_n_tracks_counter.get(), m_seed_tracks}}); #endif } @@ -237,7 +237,7 @@ __global__ void seed_confirmTracks_consolidate::seed_confirmTracks_consolidate( // int * tracks_nY = parameters.dev_seeding_nY + parameters.dev_atomics_scifi[event_number]; auto used_scifi_hits = parameters.dev_used_scifi_hits.get(); - if (number_of_tracks_event < 200) { + if (number_of_tracks_event < 201) { atomicAdd(&dev_histogram_scifi_n_tracks[number_of_tracks_event], 1); } dev_scifi_n_tracks_counter[0] += number_of_tracks_event; diff --git a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu index e194dcdc09a..d7f798eb9b3 100644 --- a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu +++ b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu @@ -17,7 +17,7 @@ void make_long_track_particles::make_long_track_particles_t::init() { #ifndef ALLEN_STANDALONE histogram_n_trks = new gaudi_monitoring::Lockable_Histogram<> { - {this, "number_of_trks", "NTrks", {UT::Constants::max_num_tracks, 0, UT::Constants::max_num_tracks}}, {}}; + {this, "number_of_trks", "NTrks", {UT::Constants::max_num_tracks+1, -0.5, UT::Constants::max_num_tracks+.5}}, {}}; histogram_trk_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_eta", "etaTrk", {1000, 0, 5}}, {}}; histogram_trk_phi = new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_phi", "phiTrk", {1000, -3.2, 3.2}}, {}}; histogram_trk_pt = @@ -43,7 +43,7 @@ void make_long_track_particles::make_long_track_particles_t::operator()( const Constants&, const Allen::Context& context) const { - auto dev_histogram_n_trks = make_device_buffer<unsigned>(arguments, UT::Constants::max_num_tracks); + auto dev_histogram_n_trks = make_device_buffer<unsigned>(arguments, UT::Constants::max_num_tracks+1); auto dev_histogram_trk_eta = make_device_buffer<unsigned>(arguments, 1000u); auto dev_histogram_trk_phi = make_device_buffer<unsigned>(arguments, 1000u); auto dev_histogram_trk_pt = make_device_buffer<unsigned>(arguments, 1000u); @@ -65,7 +65,7 @@ void make_long_track_particles::make_long_track_particles_t::operator()( gaudi_monitoring::fill( arguments, context, - std::tuple {std::tuple {dev_histogram_n_trks.get(), histogram_n_trks, 0, UT::Constants::max_num_tracks}, + std::tuple {std::tuple {dev_histogram_n_trks.get(), histogram_n_trks, -0.5, UT::Constants::max_num_tracks+.5}, std::tuple {dev_histogram_trk_eta.get(), histogram_trk_eta, 0, 5}, std::tuple {dev_histogram_trk_phi.get(), histogram_trk_phi, -3.2f, 3.2f}, std::tuple {dev_histogram_trk_pt.get(), histogram_trk_pt, 0u, unsigned(1e4)}}); @@ -92,7 +92,7 @@ void __global__ make_long_track_particles::make_particles( const unsigned number_of_tracks = event_long_tracks.size(); const auto pv_table = parameters.dev_kalman_pv_tables[event_number]; - if (number_of_tracks < UT::Constants::max_num_tracks) atomicAdd(&dev_histogram_n_trks[number_of_tracks], 1); + if (number_of_tracks < UT::Constants::max_num_tracks+1) atomicAdd(&dev_histogram_n_trks[number_of_tracks], 1); for (unsigned i = threadIdx.x; i < number_of_tracks; i += blockDim.x) { const auto* long_track = &(event_long_tracks.track(i)); diff --git a/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh b/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh index 53903e7b07a..e599309f5e6 100644 --- a/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh +++ b/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh @@ -171,9 +171,9 @@ namespace matching_consolidate_tracks { Property<histogram_long_track_matching_phi_min_t> m_histogramLongPhiMin {this, -4.f}; Property<histogram_long_track_matching_phi_max_t> m_histogramLongPhiMax {this, 4.f}; Property<histogram_long_track_matching_phi_nbins_t> m_histogramLongPhiNBins {this, 16u}; - Property<histogram_long_track_matching_nhits_min_t> m_histogramLongNhitsMin {this, 0.f}; - Property<histogram_long_track_matching_nhits_max_t> m_histogramLongNhitsMax {this, 50.f}; - Property<histogram_long_track_matching_nhits_nbins_t> m_histogramLongNhitsNBins {this, 50u}; + Property<histogram_long_track_matching_nhits_min_t> m_histogramLongNhitsMin {this, -0.5f}; + Property<histogram_long_track_matching_nhits_max_t> m_histogramLongNhitsMax {this, 50.5f}; + Property<histogram_long_track_matching_nhits_nbins_t> m_histogramLongNhitsNBins {this, 51u}; #ifndef ALLEN_STANDALONE private: diff --git a/device/track_matching/consolidate/src/ConsolidateMatchedTracks.cu b/device/track_matching/consolidate/src/ConsolidateMatchedTracks.cu index 37119ec7441..2c092c676cf 100644 --- a/device/track_matching/consolidate/src/ConsolidateMatchedTracks.cu +++ b/device/track_matching/consolidate/src/ConsolidateMatchedTracks.cu @@ -73,7 +73,7 @@ void matching_consolidate_tracks::matching_consolidate_tracks_t::init() #ifndef ALLEN_STANDALONE m_long_tracks_matching = new Gaudi::Accumulators::Counter<>(this, "n_long_tracks_matching"); histogram_n_long_tracks_matching = new gaudi_monitoring::Lockable_Histogram<> { - {this, "n_long_tracks_matching_event", "n_long_tracks_matching_event", {80, 0, 200}}, {}}; + {this, "n_long_tracks_matching_event", "n_long_tracks_matching_event", {201, -0.5, 200.5}}, {}}; histogram_long_track_matching_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "long_track_matching_eta", @@ -116,7 +116,7 @@ void matching_consolidate_tracks::matching_consolidate_tracks_t::operator()( make_device_buffer<unsigned>(arguments, property<histogram_long_track_matching_phi_nbins_t>()); auto dev_histogram_long_track_matching_nhits = make_device_buffer<unsigned>(arguments, property<histogram_long_track_matching_nhits_nbins_t>()); - auto dev_histogram_n_long_tracks_matching = make_device_buffer<unsigned>(arguments, 80u); + auto dev_histogram_n_long_tracks_matching = make_device_buffer<unsigned>(arguments, 201u); auto dev_n_long_tracks_matching_counter = make_device_buffer<unsigned>(arguments, 1u); Allen::memset_async( dev_histogram_long_track_matching_eta.data(), @@ -172,7 +172,7 @@ void matching_consolidate_tracks::matching_consolidate_tracks_t::operator()( histogram_long_track_matching_nhits, property<histogram_long_track_matching_nhits_min_t>(), property<histogram_long_track_matching_nhits_max_t>()}, - std::tuple {dev_histogram_n_long_tracks_matching.get(), histogram_n_long_tracks_matching, 0, 200}, + std::tuple {dev_histogram_n_long_tracks_matching.get(), histogram_n_long_tracks_matching, -0.5, 200.5}, std::tuple {dev_n_long_tracks_matching_counter.get(), m_long_tracks_matching}}); #endif } @@ -225,10 +225,7 @@ __global__ void matching_consolidate_tracks::matching_consolidate_tracks( dev_histogram_long_track_matching_phi, dev_histogram_long_track_matching_nhits); - if (number_of_tracks_event < 200) { - unsigned bin = std::floor(number_of_tracks_event / 2.5); - atomicAdd(&dev_histogram_n_long_tracks_matching[bin], 1); - } + if (number_of_tracks_event < 201) atomicAdd(&dev_histogram_n_long_tracks_matching[number_of_tracks_event], 1); dev_n_long_tracks_matching_counter[0] += number_of_tracks_event; #endif } diff --git a/device/velo/consolidate_tracks/src/VeloConsolidateTracks.cu b/device/velo/consolidate_tracks/src/VeloConsolidateTracks.cu index c55981435e2..468978a82f8 100644 --- a/device/velo/consolidate_tracks/src/VeloConsolidateTracks.cu +++ b/device/velo/consolidate_tracks/src/VeloConsolidateTracks.cu @@ -77,7 +77,7 @@ void velo_consolidate_tracks::velo_consolidate_tracks_t::init() m_velo_tracks = new Gaudi::Accumulators::Counter<>(this, "n_velo_tracks"); histogram_n_velo_tracks = new gaudi_monitoring::Lockable_Histogram<> { - {this, "n_velo_tracks_event", "n_velo_tracks_event", {100, 0, 500}}, {}}; + {this, "n_velo_tracks_event", "n_velo_tracks_event", {501, 0, 500}}, {}}; #endif } @@ -94,7 +94,7 @@ void velo_consolidate_tracks::velo_consolidate_tracks_t::operator()( Allen::memset_async<dev_velo_multi_event_tracks_view_t>(arguments, 0, context); Allen::memset_async<dev_velo_tracks_view_t>(arguments, 0, context); - auto dev_number_of_tracks_histo = make_device_buffer<unsigned>(arguments, 100u); + auto dev_number_of_tracks_histo = make_device_buffer<unsigned>(arguments, 501u); auto dev_tracks_counter = make_device_buffer<unsigned>(arguments, 1u); Allen::memset_async( dev_number_of_tracks_histo.data(), 0, dev_number_of_tracks_histo.size() * sizeof(unsigned), context); @@ -110,7 +110,7 @@ void velo_consolidate_tracks::velo_consolidate_tracks_t::operator()( gaudi_monitoring::fill( arguments, context, - std::tuple {std::tuple {dev_number_of_tracks_histo.get(), histogram_n_velo_tracks, 0, 500}, + std::tuple {std::tuple {dev_number_of_tracks_histo.get(), histogram_n_velo_tracks, -0.5, 500.5}, std::tuple {dev_tracks_counter.get(), m_velo_tracks}}); #endif } @@ -147,10 +147,7 @@ __global__ void velo_consolidate_tracks::velo_consolidate_tracks( const auto event_number_of_tracks_in_main_track_container = event_total_number_of_tracks - event_number_of_three_hit_tracks_filtered; - if (event_total_number_of_tracks < 500) { - unsigned bin = std::floor(event_total_number_of_tracks / 5); - atomicAdd(&dev_number_of_tracks_histo[bin], 1); - } + if (event_total_number_of_tracks < 501) atomicAdd(&dev_number_of_tracks_histo[event_total_number_of_tracks], 1); dev_tracks_counter[0] += event_total_number_of_tracks; // Pointers to data within event diff --git a/device/velo/simplified_kalman_filter/include/VeloKalmanFilter.cuh b/device/velo/simplified_kalman_filter/include/VeloKalmanFilter.cuh index ba2057e605c..6d323787adc 100644 --- a/device/velo/simplified_kalman_filter/include/VeloKalmanFilter.cuh +++ b/device/velo/simplified_kalman_filter/include/VeloKalmanFilter.cuh @@ -296,9 +296,9 @@ namespace velo_kalman_filter { Property<histogram_velo_track_phi_min_t> m_histogramVeloPhiMin {this, -4.f}; Property<histogram_velo_track_phi_max_t> m_histogramVeloPhiMax {this, 4.f}; Property<histogram_velo_track_phi_nbins_t> m_histogramVeloPhiNBins {this, 16u}; - Property<histogram_velo_track_nhits_min_t> m_histogramVeloNhitsMin {this, 0.f}; - Property<histogram_velo_track_nhits_max_t> m_histogramVeloNhitsMax {this, 50.f}; - Property<histogram_velo_track_nhits_nbins_t> m_histogramVeloNhitsNBins {this, 50u}; + Property<histogram_velo_track_nhits_min_t> m_histogramVeloNhitsMin {this, -0.5f}; + Property<histogram_velo_track_nhits_max_t> m_histogramVeloNhitsMax {this, 50.5f}; + Property<histogram_velo_track_nhits_nbins_t> m_histogramVeloNhitsNBins {this, 51u}; #ifndef ALLEN_STANDALONE private: diff --git a/device/vertex_fit/vertex_fitter/src/VertexFitter.cu b/device/vertex_fit/vertex_fitter/src/VertexFitter.cu index cf26ecc26d4..e76c0299fc8 100644 --- a/device/vertex_fit/vertex_fitter/src/VertexFitter.cu +++ b/device/vertex_fit/vertex_fitter/src/VertexFitter.cu @@ -16,7 +16,7 @@ void VertexFit::fit_secondary_vertices_t::init() { #ifndef ALLEN_STANDALONE histogram_nsvs = new gaudi_monitoring::Lockable_Histogram<> { - {this, "number_of_svs", "NSVs", {VertexFit::max_svs, 0, VertexFit::max_svs}}, {}}; + {this, "number_of_svs", "NSVs", {VertexFit::max_svs+1, -0.5, VertexFit::max_svs+.5}}, {}}; #endif } @@ -78,7 +78,7 @@ void VertexFit::fit_secondary_vertices_t::operator()( const Constants&, const Allen::Context& context) const { - auto dev_histogram_nsvs = make_device_buffer<unsigned>(arguments, VertexFit::max_svs); + auto dev_histogram_nsvs = make_device_buffer<unsigned>(arguments, VertexFit::max_svs+1); Allen::memset_async(dev_histogram_nsvs.data(), 0, dev_histogram_nsvs.size() * sizeof(unsigned), context); Allen::memset_async<dev_two_track_composite_view_t>(arguments, 0, context); @@ -91,7 +91,7 @@ void VertexFit::fit_secondary_vertices_t::operator()( #ifndef ALLEN_STANDALONE gaudi_monitoring::fill( - arguments, context, std::tuple {dev_histogram_nsvs.get(), histogram_nsvs, 0u, VertexFit::max_svs}); + arguments, context, std::tuple {dev_histogram_nsvs.get(), histogram_nsvs, -0.5, VertexFit::max_svs+.5}); #endif } @@ -136,7 +136,7 @@ __global__ void VertexFit::fit_secondary_vertices( const unsigned* event_svs_trk2_idx = parameters.dev_svs_trk2_idx + idx_offset; const float* event_poca = parameters.dev_sv_poca + 3 * idx_offset; - if (n_svs < VertexFit::max_svs) atomicAdd(&dev_histogram_nsvs[n_svs], 1); + if (n_svs < VertexFit::max_svs+1) atomicAdd(&dev_histogram_nsvs[n_svs], 1); // Tracks. const auto long_track_particles = parameters.dev_long_track_particles->container(event_number); -- GitLab From c48dfe26e258e6e70ad3538fb85a54d570621d63 Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Mon, 17 Jul 2023 10:58:49 -0400 Subject: [PATCH 03/18] update new histos --- configuration/python/AllenConf/HLT1_cosmics.py | 2 +- configuration/python/AllenConf/calo_reconstruction.py | 7 ++++--- configuration/python/AllenConf/hlt1_reconstruction.py | 2 +- configuration/python/AllenConf/muon_reconstruction.py | 9 +++++---- device/calo/clustering/src/CaloFindClusters.cu | 8 ++++---- device/muon/is_muon/src/IsMuon.cu | 8 ++++---- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/configuration/python/AllenConf/HLT1_cosmics.py b/configuration/python/AllenConf/HLT1_cosmics.py index 7711d046475..f4a0c8b1f8a 100644 --- a/configuration/python/AllenConf/HLT1_cosmics.py +++ b/configuration/python/AllenConf/HLT1_cosmics.py @@ -79,7 +79,7 @@ def setup_hlt1_node(enableRateValidator=True): # Reconstruct objects needed as input for selection lines decoded_calo = decode_calo() - ecal_clusters = make_ecal_clusters(decoded_calo) + ecal_clusters = make_ecal_clusters(decoded_calo, calo_find_clusters_name='calo_find_clusters_cosmics') hlt1_config['reconstruction'] = {'ecal_clusters': ecal_clusters} diff --git a/configuration/python/AllenConf/calo_reconstruction.py b/configuration/python/AllenConf/calo_reconstruction.py index b0811c0155f..58af863ed04 100755 --- a/configuration/python/AllenConf/calo_reconstruction.py +++ b/configuration/python/AllenConf/calo_reconstruction.py @@ -148,6 +148,7 @@ def make_track_matching(decoded_calo, velo_tracks, velo_states, long_tracks, @configurable def make_ecal_clusters(decoded_calo, + calo_find_clusters_name='calo_find_clusters', seed_min_adc=50, neighbour_min_adc=10, min_et=400, @@ -183,7 +184,7 @@ def make_ecal_clusters(decoded_calo, calo_find_clusters = make_algorithm( calo_find_clusters_t, - name='calo_find_clusters_{hash}', + name=str(calo_find_clusters_name), ecal_min_adc=neighbour_min_adc, host_ecal_number_of_clusters_t=prefix_sum_ecal_num_clusters. host_total_sum_holder_t, @@ -273,8 +274,8 @@ def make_ecal_clusters(decoded_calo, } -def ecal_cluster_reco(): +def ecal_cluster_reco(calo_find_clusters_name='calo_find_clusters_reco'): decoded_calo = decode_calo() - ecal_clusters = make_ecal_clusters(decoded_calo) + ecal_clusters = make_ecal_clusters(decoded_calo, calo_find_clusters_name=calo_find_clusters_name) alg = ecal_clusters["dev_ecal_clusters"].producer return alg diff --git a/configuration/python/AllenConf/hlt1_reconstruction.py b/configuration/python/AllenConf/hlt1_reconstruction.py index c0b4452ff86..0089d690804 100644 --- a/configuration/python/AllenConf/hlt1_reconstruction.py +++ b/configuration/python/AllenConf/hlt1_reconstruction.py @@ -130,7 +130,7 @@ def hlt1_reconstruction(algorithm_name='', if with_muon: decoded_muon = decode_muon() - muonID = is_muon(decoded_muon, long_tracks) + muonID = is_muon(decoded_muon, long_tracks, is_muon_name=algorithm_name+'is_muon') # Replace long tracks with those containing muon hits. long_tracks = muonID["long_tracks"] else: diff --git a/configuration/python/AllenConf/muon_reconstruction.py b/configuration/python/AllenConf/muon_reconstruction.py index 43b3bfbd6f4..a781c5c62d8 100644 --- a/configuration/python/AllenConf/muon_reconstruction.py +++ b/configuration/python/AllenConf/muon_reconstruction.py @@ -115,7 +115,7 @@ def decode_muon(empty_banks=False): } -def is_muon(decoded_muon, long_tracks): +def is_muon(decoded_muon, long_tracks, is_muon_name = 'is_muon'): number_of_events = initialize_number_of_events() host_number_of_events = number_of_events["host_number_of_events"] dev_number_of_events = number_of_events["dev_number_of_events"] @@ -127,7 +127,7 @@ def is_muon(decoded_muon, long_tracks): is_muon = make_algorithm( is_muon_t, - name='is_muon_{hash}', + name=str(is_muon_name), host_number_of_events_t=host_number_of_events, dev_number_of_events_t=dev_number_of_events, host_number_of_reconstructed_scifi_tracks_t= @@ -209,6 +209,7 @@ def muon_id(algorithm_name=''): from AllenConf.ut_reconstruction import decode_ut, make_ut_tracks from AllenConf.scifi_reconstruction import decode_scifi, make_forward_tracks + if (algorithm_name != ''): algorithm_name = algorithm_name + '_' decoded_velo = decode_velo() velo_tracks = make_velo_tracks(decoded_velo) decoded_ut = decode_ut() @@ -219,9 +220,9 @@ def muon_id(algorithm_name=''): ut_tracks, velo_tracks["dev_accepted_velo_tracks"], scifi_consolidate_tracks_name=algorithm_name + - '_scifi_consolidate_tracks_muon_id') + 'scifi_consolidate_tracks_muon_id') decoded_muon = decode_muon() - muonID = is_muon(decoded_muon, long_tracks) + muonID = is_muon(decoded_muon, long_tracks, is_muon_name=algorithm_name + 'is_muon') alg = muonID["dev_is_muon"].producer return alg diff --git a/device/calo/clustering/src/CaloFindClusters.cu b/device/calo/clustering/src/CaloFindClusters.cu index 4171a33ea1d..0dfa6feaa26 100755 --- a/device/calo/clustering/src/CaloFindClusters.cu +++ b/device/calo/clustering/src/CaloFindClusters.cu @@ -17,7 +17,7 @@ void calo_find_clusters::calo_find_clusters_t::init() { #ifndef ALLEN_STANDALONE histogram_n_clusters = new gaudi_monitoring::Lockable_Histogram<> { - {this, "n_ecal_clusters", "NClusters", {400, 0, 400}}, {}}; + {this, "n_ecal_clusters", "NClusters", {401, -0.5, 400.5}}, {}}; histogram_ecal_digit_e = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_digit_e", "EcalDigitE", {1000, 0, 10000}}, {}}; histogram_ecal_cluster_e = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_e", "EcalClusterE", {5000, 0, 50000}}, {}}; histogram_ecal_cluster_et = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_et", "EcalClusterEt", {500, 0, 5000}}, {}}; @@ -119,7 +119,7 @@ __global__ void calo_find_clusters::calo_find_clusters( unsigned const ecal_clusters_offset = parameters.dev_ecal_cluster_offsets[event_number]; unsigned const ecal_num_clusters = parameters.dev_ecal_cluster_offsets[event_number + 1] - ecal_clusters_offset; - if (ecal_num_clusters < 400) histogram_n_clusters[ecal_num_clusters]++; + if (ecal_num_clusters < 401) histogram_n_clusters[ecal_num_clusters]++; simple_clusters( parameters.dev_ecal_digits + ecal_digits_offset, @@ -150,7 +150,7 @@ __host__ void calo_find_clusters::calo_find_clusters_t::operator()( const Constants& constants, Allen::Context const& context) const { - auto dev_histogram_n_clusters = make_device_buffer<unsigned>(arguments, 400u); + auto dev_histogram_n_clusters = make_device_buffer<unsigned>(arguments, 401u); auto dev_histogram_digit_e = make_device_buffer<unsigned>(arguments, 1000u); auto dev_histogram_cluster_e = make_device_buffer<unsigned>(arguments, 5000u); auto dev_histogram_cluster_et = make_device_buffer<unsigned>(arguments, 500u); @@ -172,7 +172,7 @@ __host__ void calo_find_clusters::calo_find_clusters_t::operator()( gaudi_monitoring::fill( arguments, context, - std::tuple {std::tuple {dev_histogram_n_clusters.get(), histogram_n_clusters, 0, 400}, + std::tuple {std::tuple {dev_histogram_n_clusters.get(), histogram_n_clusters, -0.5, 400.5}, std::tuple {dev_histogram_digit_e.get(), histogram_ecal_digit_e, 0, 10000}, std::tuple {dev_histogram_cluster_e.get(), histogram_ecal_cluster_e, 0, 50000}, std::tuple {dev_histogram_cluster_et.get(), histogram_ecal_cluster_et, 0, 5000}, diff --git a/device/muon/is_muon/src/IsMuon.cu b/device/muon/is_muon/src/IsMuon.cu index 68e905095e9..27989c82c1c 100644 --- a/device/muon/is_muon/src/IsMuon.cu +++ b/device/muon/is_muon/src/IsMuon.cu @@ -20,13 +20,13 @@ void is_muon::is_muon_t::init() new gaudi_monitoring::Lockable_Histogram<> {{this, "n_muons", "# muons", - {2, 0, 2}}, + {2, -0.5, 1.5}}, {}}; histogram_muon_n_stations = new gaudi_monitoring::Lockable_Histogram<> {{this, "muon_n_stations", "# muon stations", - {3, 2, 5}}, + {3, 1.5, 4.5}}, {}}; histogram_muon_pt = new gaudi_monitoring::Lockable_Histogram<> {{this, @@ -73,8 +73,8 @@ void is_muon::is_muon_t::operator()( gaudi_monitoring::fill( arguments, context, - std::tuple {std::tuple {dev_histogram_n_muons.get(), histogram_n_muons, 0, 2}, - std::tuple {dev_histogram_muon_n_stations.get(), histogram_muon_n_stations, 2, 5}, + std::tuple {std::tuple {dev_histogram_n_muons.get(), histogram_n_muons, -0.5, 1.5}, + std::tuple {dev_histogram_muon_n_stations.get(), histogram_muon_n_stations, 1.5, 4.5}, std::tuple {dev_histogram_muon_pt.get(), histogram_muon_pt, 0, (unsigned) 1e4}}); #endif } -- GitLab From e050f7997d794e0ded60775031f760b7ce522248 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Mon, 17 Jul 2023 15:20:28 +0000 Subject: [PATCH 04/18] Fixed formatting patch generated by https://gitlab.cern.ch/lhcb/Allen/-/jobs/31097686 --- .../python/AllenConf/HLT1_cosmics.py | 3 +- .../python/AllenConf/calo_reconstruction.py | 3 +- .../python/AllenConf/hlt1_reconstruction.py | 3 +- .../python/AllenConf/muon_reconstruction.py | 5 ++- .../clustering/include/CaloFindClusters.cuh | 13 ++++-- .../calo/clustering/src/CaloFindClusters.cu | 31 +++++++++----- .../ParKalman/src/MakeLongTrackParticles.cu | 7 ++-- device/muon/is_muon/include/IsMuon.cuh | 9 +++- device/muon/is_muon/src/IsMuon.cu | 41 +++++++++---------- .../selections/Hlt1/src/GatherSelections.cu | 14 ++++--- .../vertex_fitter/src/VertexFitter.cu | 6 +-- 11 files changed, 82 insertions(+), 53 deletions(-) diff --git a/configuration/python/AllenConf/HLT1_cosmics.py b/configuration/python/AllenConf/HLT1_cosmics.py index f4a0c8b1f8a..1d4e0ec3369 100644 --- a/configuration/python/AllenConf/HLT1_cosmics.py +++ b/configuration/python/AllenConf/HLT1_cosmics.py @@ -79,7 +79,8 @@ def setup_hlt1_node(enableRateValidator=True): # Reconstruct objects needed as input for selection lines decoded_calo = decode_calo() - ecal_clusters = make_ecal_clusters(decoded_calo, calo_find_clusters_name='calo_find_clusters_cosmics') + ecal_clusters = make_ecal_clusters( + decoded_calo, calo_find_clusters_name='calo_find_clusters_cosmics') hlt1_config['reconstruction'] = {'ecal_clusters': ecal_clusters} diff --git a/configuration/python/AllenConf/calo_reconstruction.py b/configuration/python/AllenConf/calo_reconstruction.py index 58af863ed04..97b50026085 100755 --- a/configuration/python/AllenConf/calo_reconstruction.py +++ b/configuration/python/AllenConf/calo_reconstruction.py @@ -276,6 +276,7 @@ def make_ecal_clusters(decoded_calo, def ecal_cluster_reco(calo_find_clusters_name='calo_find_clusters_reco'): decoded_calo = decode_calo() - ecal_clusters = make_ecal_clusters(decoded_calo, calo_find_clusters_name=calo_find_clusters_name) + ecal_clusters = make_ecal_clusters( + decoded_calo, calo_find_clusters_name=calo_find_clusters_name) alg = ecal_clusters["dev_ecal_clusters"].producer return alg diff --git a/configuration/python/AllenConf/hlt1_reconstruction.py b/configuration/python/AllenConf/hlt1_reconstruction.py index 0089d690804..41439ba1309 100644 --- a/configuration/python/AllenConf/hlt1_reconstruction.py +++ b/configuration/python/AllenConf/hlt1_reconstruction.py @@ -130,7 +130,8 @@ def hlt1_reconstruction(algorithm_name='', if with_muon: decoded_muon = decode_muon() - muonID = is_muon(decoded_muon, long_tracks, is_muon_name=algorithm_name+'is_muon') + muonID = is_muon( + decoded_muon, long_tracks, is_muon_name=algorithm_name + 'is_muon') # Replace long tracks with those containing muon hits. long_tracks = muonID["long_tracks"] else: diff --git a/configuration/python/AllenConf/muon_reconstruction.py b/configuration/python/AllenConf/muon_reconstruction.py index a781c5c62d8..e382e9dad84 100644 --- a/configuration/python/AllenConf/muon_reconstruction.py +++ b/configuration/python/AllenConf/muon_reconstruction.py @@ -115,7 +115,7 @@ def decode_muon(empty_banks=False): } -def is_muon(decoded_muon, long_tracks, is_muon_name = 'is_muon'): +def is_muon(decoded_muon, long_tracks, is_muon_name='is_muon'): number_of_events = initialize_number_of_events() host_number_of_events = number_of_events["host_number_of_events"] dev_number_of_events = number_of_events["dev_number_of_events"] @@ -222,7 +222,8 @@ def muon_id(algorithm_name=''): scifi_consolidate_tracks_name=algorithm_name + 'scifi_consolidate_tracks_muon_id') decoded_muon = decode_muon() - muonID = is_muon(decoded_muon, long_tracks, is_muon_name=algorithm_name + 'is_muon') + muonID = is_muon( + decoded_muon, long_tracks, is_muon_name=algorithm_name + 'is_muon') alg = muonID["dev_is_muon"].producer return alg diff --git a/device/calo/clustering/include/CaloFindClusters.cuh b/device/calo/clustering/include/CaloFindClusters.cuh index ce32a2f4285..4208b9276e6 100755 --- a/device/calo/clustering/include/CaloFindClusters.cuh +++ b/device/calo/clustering/include/CaloFindClusters.cuh @@ -37,7 +37,16 @@ namespace calo_find_clusters { }; // Global function - __global__ void calo_find_clusters(Parameters parameters, const char* raw_ecal_geometry, const int16_t min_adc, gsl::span<unsigned> histogram_n_clusters, gsl::span<unsigned> histogram_digit_e, gsl::span<unsigned> histogram_cluster_e, gsl::span<unsigned> histogram_cluster_et, gsl::span<unsigned> histogram_cluster_x, gsl::span<unsigned> histogram_cluster_y); + __global__ void calo_find_clusters( + Parameters parameters, + const char* raw_ecal_geometry, + const int16_t min_adc, + gsl::span<unsigned> histogram_n_clusters, + gsl::span<unsigned> histogram_digit_e, + gsl::span<unsigned> histogram_cluster_e, + gsl::span<unsigned> histogram_cluster_et, + gsl::span<unsigned> histogram_cluster_x, + gsl::span<unsigned> histogram_cluster_y); // Algorithm struct calo_find_clusters_t : public DeviceAlgorithm, Parameters { @@ -62,7 +71,5 @@ namespace calo_find_clusters { gaudi_monitoring::Lockable_Histogram<>* histogram_ecal_cluster_x; gaudi_monitoring::Lockable_Histogram<>* histogram_ecal_cluster_y; #endif - }; } // namespace calo_find_clusters - diff --git a/device/calo/clustering/src/CaloFindClusters.cu b/device/calo/clustering/src/CaloFindClusters.cu index 0dfa6feaa26..0c974281bb2 100755 --- a/device/calo/clustering/src/CaloFindClusters.cu +++ b/device/calo/clustering/src/CaloFindClusters.cu @@ -16,13 +16,18 @@ INSTANTIATE_ALGORITHM(calo_find_clusters::calo_find_clusters_t) void calo_find_clusters::calo_find_clusters_t::init() { #ifndef ALLEN_STANDALONE - histogram_n_clusters = new gaudi_monitoring::Lockable_Histogram<> { - {this, "n_ecal_clusters", "NClusters", {401, -0.5, 400.5}}, {}}; - histogram_ecal_digit_e = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_digit_e", "EcalDigitE", {1000, 0, 10000}}, {}}; - histogram_ecal_cluster_e = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_e", "EcalClusterE", {5000, 0, 50000}}, {}}; - histogram_ecal_cluster_et = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_et", "EcalClusterEt", {500, 0, 5000}}, {}}; - histogram_ecal_cluster_x = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_x", "EcalClusterX", {800, -4000, 4000}}, {}}; - histogram_ecal_cluster_y = new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_y", "EcalClusterY", {800, -4000, 4000}}, {}}; + histogram_n_clusters = + new gaudi_monitoring::Lockable_Histogram<> {{this, "n_ecal_clusters", "NClusters", {401, -0.5, 400.5}}, {}}; + histogram_ecal_digit_e = + new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_digit_e", "EcalDigitE", {1000, 0, 10000}}, {}}; + histogram_ecal_cluster_e = + new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_e", "EcalClusterE", {5000, 0, 50000}}, {}}; + histogram_ecal_cluster_et = + new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_et", "EcalClusterEt", {500, 0, 5000}}, {}}; + histogram_ecal_cluster_x = + new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_x", "EcalClusterX", {800, -4000, 4000}}, {}}; + histogram_ecal_cluster_y = + new gaudi_monitoring::Lockable_Histogram<> {{this, "ecal_cluster_y", "EcalClusterY", {800, -4000, 4000}}, {}}; #endif } @@ -166,7 +171,15 @@ __host__ void calo_find_clusters::calo_find_clusters_t::operator()( // Find clusters. global_function(calo_find_clusters)( dim3(size<dev_event_list_t>(arguments)), dim3(property<block_dim_x_t>().get()), context)( - arguments, constants.dev_ecal_geometry, property<ecal_min_adc_t>().get(), dev_histogram_n_clusters.get(), dev_histogram_digit_e.get(), dev_histogram_cluster_e.get(), dev_histogram_cluster_et.get(), dev_histogram_cluster_x.get(), dev_histogram_cluster_y.get()); + arguments, + constants.dev_ecal_geometry, + property<ecal_min_adc_t>().get(), + dev_histogram_n_clusters.get(), + dev_histogram_digit_e.get(), + dev_histogram_cluster_e.get(), + dev_histogram_cluster_et.get(), + dev_histogram_cluster_x.get(), + dev_histogram_cluster_y.get()); #ifndef ALLEN_STANDALONE gaudi_monitoring::fill( @@ -179,6 +192,4 @@ __host__ void calo_find_clusters::calo_find_clusters_t::operator()( std::tuple {dev_histogram_cluster_x.get(), histogram_ecal_cluster_x, -4000.f, 4000.f}, std::tuple {dev_histogram_cluster_y.get(), histogram_ecal_cluster_y, -4000.f, 4000.f}}); #endif - } - diff --git a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu index d7f798eb9b3..f5c0409f017 100644 --- a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu +++ b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu @@ -17,7 +17,8 @@ void make_long_track_particles::make_long_track_particles_t::init() { #ifndef ALLEN_STANDALONE histogram_n_trks = new gaudi_monitoring::Lockable_Histogram<> { - {this, "number_of_trks", "NTrks", {UT::Constants::max_num_tracks+1, -0.5, UT::Constants::max_num_tracks+.5}}, {}}; + {this, "number_of_trks", "NTrks", {UT::Constants::max_num_tracks + 1, -0.5, UT::Constants::max_num_tracks + .5}}, + {}}; histogram_trk_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_eta", "etaTrk", {1000, 0, 5}}, {}}; histogram_trk_phi = new gaudi_monitoring::Lockable_Histogram<> {{this, "trk_phi", "phiTrk", {1000, -3.2, 3.2}}, {}}; histogram_trk_pt = @@ -43,7 +44,7 @@ void make_long_track_particles::make_long_track_particles_t::operator()( const Constants&, const Allen::Context& context) const { - auto dev_histogram_n_trks = make_device_buffer<unsigned>(arguments, UT::Constants::max_num_tracks+1); + auto dev_histogram_n_trks = make_device_buffer<unsigned>(arguments, UT::Constants::max_num_tracks + 1); auto dev_histogram_trk_eta = make_device_buffer<unsigned>(arguments, 1000u); auto dev_histogram_trk_phi = make_device_buffer<unsigned>(arguments, 1000u); auto dev_histogram_trk_pt = make_device_buffer<unsigned>(arguments, 1000u); @@ -65,7 +66,7 @@ void make_long_track_particles::make_long_track_particles_t::operator()( gaudi_monitoring::fill( arguments, context, - std::tuple {std::tuple {dev_histogram_n_trks.get(), histogram_n_trks, -0.5, UT::Constants::max_num_tracks+.5}, + std::tuple {std::tuple {dev_histogram_n_trks.get(), histogram_n_trks, -0.5, UT::Constants::max_num_tracks + .5}, std::tuple {dev_histogram_trk_eta.get(), histogram_trk_eta, 0, 5}, std::tuple {dev_histogram_trk_phi.get(), histogram_trk_phi, -3.2f, 3.2f}, std::tuple {dev_histogram_trk_pt.get(), histogram_trk_pt, 0u, unsigned(1e4)}}); diff --git a/device/muon/is_muon/include/IsMuon.cuh b/device/muon/is_muon/include/IsMuon.cuh index ac809216bb8..107cccbcdfa 100644 --- a/device/muon/is_muon/include/IsMuon.cuh +++ b/device/muon/is_muon/include/IsMuon.cuh @@ -38,8 +38,13 @@ namespace is_muon { PROPERTY(block_dim_x_t, "block_dim_x", "block dimension X", unsigned) block_dim_x; }; - __global__ void - is_muon(Parameters, const Muon::Constants::FieldOfInterest* dev_muon_foi, const float* dev_muon_momentum_cuts, gsl::span<unsigned> dev_histogram_n_muons, gsl::span<unsigned> dev_histogram_muon_n_stations, gsl::span<unsigned> dev_histogram_muon_pt); + __global__ void is_muon( + Parameters, + const Muon::Constants::FieldOfInterest* dev_muon_foi, + const float* dev_muon_momentum_cuts, + gsl::span<unsigned> dev_histogram_n_muons, + gsl::span<unsigned> dev_histogram_muon_n_stations, + gsl::span<unsigned> dev_histogram_muon_pt); struct is_muon_t : public DeviceAlgorithm, Parameters { void set_arguments_size(ArgumentReferences<Parameters> arguments, const RuntimeOptions&, const Constants&) const; diff --git a/device/muon/is_muon/src/IsMuon.cu b/device/muon/is_muon/src/IsMuon.cu index 27989c82c1c..7c1b075db29 100644 --- a/device/muon/is_muon/src/IsMuon.cu +++ b/device/muon/is_muon/src/IsMuon.cu @@ -16,24 +16,11 @@ INSTANTIATE_ALGORITHM(is_muon::is_muon_t) void is_muon::is_muon_t::init() { #ifndef ALLEN_STANDALONE - histogram_n_muons = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "n_muons", - "# muons", - {2, -0.5, 1.5}}, - {}}; + histogram_n_muons = new gaudi_monitoring::Lockable_Histogram<> {{this, "n_muons", "# muons", {2, -0.5, 1.5}}, {}}; histogram_muon_n_stations = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "muon_n_stations", - "# muon stations", - {3, 1.5, 4.5}}, - {}}; + new gaudi_monitoring::Lockable_Histogram<> {{this, "muon_n_stations", "# muon stations", {3, 1.5, 4.5}}, {}}; histogram_muon_pt = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "muon_pt", - "muon pt", - {1000, 0, (unsigned) 1e4}}, - {}}; + new gaudi_monitoring::Lockable_Histogram<> {{this, "muon_pt", "muon pt", {1000, 0, (unsigned) 1e4}}, {}}; #endif } @@ -59,7 +46,8 @@ void is_muon::is_muon_t::operator()( auto dev_histogram_muon_n_stations = make_device_buffer<unsigned>(arguments, 3u); auto dev_histogram_muon_pt = make_device_buffer<unsigned>(arguments, 1000u); Allen::memset_async(dev_histogram_n_muons.data(), 0, dev_histogram_n_muons.size() * sizeof(unsigned), context); - Allen::memset_async(dev_histogram_muon_n_stations.data(), 0, dev_histogram_muon_n_stations.size() * sizeof(unsigned), context); + Allen::memset_async( + dev_histogram_muon_n_stations.data(), 0, dev_histogram_muon_n_stations.size() * sizeof(unsigned), context); Allen::memset_async(dev_histogram_muon_pt.data(), 0, dev_histogram_muon_pt.size() * sizeof(unsigned), context); Allen::memset_async<dev_is_muon_t>(arguments, 0, context); @@ -67,7 +55,12 @@ void is_muon::is_muon_t::operator()( Allen::memset_async<dev_muon_hit_counts_t>(arguments, 0, context); global_function(is_muon)(dim3(size<dev_event_list_t>(arguments)), dim3(property<block_dim_x_t>().get()), context)( - arguments, constants.dev_muon_foi, constants.dev_muon_momentum_cuts, dev_histogram_n_muons.get(), dev_histogram_muon_n_stations.get(), dev_histogram_muon_pt.get()); + arguments, + constants.dev_muon_foi, + constants.dev_muon_momentum_cuts, + dev_histogram_n_muons.get(), + dev_histogram_muon_n_stations.get(), + dev_histogram_muon_pt.get()); #ifndef ALLEN_STANDALONE gaudi_monitoring::fill( @@ -243,7 +236,8 @@ __global__ void is_muon::is_muon( const unsigned bin = std::floor(pt / 10.f); ++dev_histogram_muon_pt[bin]; } - } else if (momentum < dev_muon_momentum_cuts[2]) { + } + else if (momentum < dev_muon_momentum_cuts[2]) { parameters.dev_is_muon[event_offset + track_id] = (occupancies[2] != 0) || (occupancies[3] != 0); // monitoring @@ -271,7 +265,8 @@ __global__ void is_muon::is_muon( const unsigned bin = std::floor(pt / 10.f); ++dev_histogram_muon_pt[bin]; } - } else { + } + else { ++dev_histogram_n_muons[0]; } } @@ -296,12 +291,14 @@ __global__ void is_muon::is_muon( const unsigned bin = std::floor(pt / 10.f); ++dev_histogram_muon_pt[bin]; } - } else { + } + else { ++dev_histogram_n_muons[0]; } } parameters.dev_lepton_id[event_offset + track_id] = parameters.dev_is_muon[event_offset + track_id]; - } else { + } + else { ++dev_histogram_n_muons[0]; } } diff --git a/device/selections/Hlt1/src/GatherSelections.cu b/device/selections/Hlt1/src/GatherSelections.cu index 4efbf24a890..71dc2525533 100644 --- a/device/selections/Hlt1/src/GatherSelections.cu +++ b/device/selections/Hlt1/src/GatherSelections.cu @@ -342,14 +342,16 @@ void gather_selections::gather_selections_t::operator()( // Monitoring auto host_histo_line_passes = make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); auto host_histo_line_rates = make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); - auto host_histo_line_rates_normalized = make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); + auto host_histo_line_rates_normalized = + make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); Allen::copy_async(host_histo_line_passes.get(), dev_histo_line_passes.get(), context, Allen::memcpyDeviceToHost); Allen::copy_async(host_histo_line_rates.get(), dev_histo_line_rates.get(), context, Allen::memcpyDeviceToHost); - Allen::memset_async(host_histo_line_rates_normalized.data(), 0, host_histo_line_rates_normalized.size() * sizeof(unsigned), context); + Allen::memset_async( + host_histo_line_rates_normalized.data(), 0, host_histo_line_rates_normalized.size() * sizeof(unsigned), context); Allen::synchronize(context); float t = std::numeric_limits<float>::max(); - if (rate_ref_line) t = host_histo_line_rates[rate_ref_line_index]/1000.f; + if (rate_ref_line) t = host_histo_line_rates[rate_ref_line_index] / 1000.f; for (unsigned i = 0; i < first<host_number_of_active_lines_t>(arguments); i++) { m_pass_counters[i]->buffer() += host_histo_line_passes[i]; m_rate_counters[i]->buffer() += host_histo_line_rates[i]; @@ -361,8 +363,10 @@ void gather_selections::gather_selections_t::operator()( gaudi_monitoring::details::fill_gaudi_histogram( host_histo_line_rates.get(), histogram_line_rates, 0u, first<host_number_of_active_lines_t>(arguments)); gaudi_monitoring::details::fill_gaudi_histogram( - host_histo_line_rates_normalized.get(), histogram_line_rates_normalized - , 0u, first<host_number_of_active_lines_t>(arguments)); + host_histo_line_rates_normalized.get(), + histogram_line_rates_normalized, + 0u, + first<host_number_of_active_lines_t>(arguments)); #endif // Reduce output mask to its proper size diff --git a/device/vertex_fit/vertex_fitter/src/VertexFitter.cu b/device/vertex_fit/vertex_fitter/src/VertexFitter.cu index e76c0299fc8..83832e3485d 100644 --- a/device/vertex_fit/vertex_fitter/src/VertexFitter.cu +++ b/device/vertex_fit/vertex_fitter/src/VertexFitter.cu @@ -16,7 +16,7 @@ void VertexFit::fit_secondary_vertices_t::init() { #ifndef ALLEN_STANDALONE histogram_nsvs = new gaudi_monitoring::Lockable_Histogram<> { - {this, "number_of_svs", "NSVs", {VertexFit::max_svs+1, -0.5, VertexFit::max_svs+.5}}, {}}; + {this, "number_of_svs", "NSVs", {VertexFit::max_svs + 1, -0.5, VertexFit::max_svs + .5}}, {}}; #endif } @@ -78,7 +78,7 @@ void VertexFit::fit_secondary_vertices_t::operator()( const Constants&, const Allen::Context& context) const { - auto dev_histogram_nsvs = make_device_buffer<unsigned>(arguments, VertexFit::max_svs+1); + auto dev_histogram_nsvs = make_device_buffer<unsigned>(arguments, VertexFit::max_svs + 1); Allen::memset_async(dev_histogram_nsvs.data(), 0, dev_histogram_nsvs.size() * sizeof(unsigned), context); Allen::memset_async<dev_two_track_composite_view_t>(arguments, 0, context); @@ -91,7 +91,7 @@ void VertexFit::fit_secondary_vertices_t::operator()( #ifndef ALLEN_STANDALONE gaudi_monitoring::fill( - arguments, context, std::tuple {dev_histogram_nsvs.get(), histogram_nsvs, -0.5, VertexFit::max_svs+.5}); + arguments, context, std::tuple {dev_histogram_nsvs.get(), histogram_nsvs, -0.5, VertexFit::max_svs + .5}); #endif } -- GitLab From f7e215fce478fe3a72de6972f51d5136e244bcb3 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Mon, 31 Jul 2023 10:28:09 +0000 Subject: [PATCH 05/18] Fixed formatting patch generated by https://gitlab.cern.ch/lhcb/Allen/-/jobs/31422514 --- device/PV/beamlinePV/src/pv_beamline_cleanup.cu | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/device/PV/beamlinePV/src/pv_beamline_cleanup.cu b/device/PV/beamlinePV/src/pv_beamline_cleanup.cu index bbd027bb009..886cd0724a6 100644 --- a/device/PV/beamlinePV/src/pv_beamline_cleanup.cu +++ b/device/PV/beamlinePV/src/pv_beamline_cleanup.cu @@ -25,7 +25,8 @@ void pv_beamline_cleanup::pv_beamline_cleanup_t::init() "smogpv_z", {property<nbins_histo_smogpvz_t>(), property<min_histo_smogpvz_t>(), property<max_histo_smogpvz_t>()}}, {}}; - histogram_n_pvs = new gaudi_monitoring::Lockable_Histogram<> {{this, "n_pvs_event", "n_pvs_event", {21, -0.5, 20.5}}, {}}; + histogram_n_pvs = + new gaudi_monitoring::Lockable_Histogram<> {{this, "n_pvs_event", "n_pvs_event", {21, -0.5, 20.5}}, {}}; histogram_pv_x = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_x", "pv_x", {1000, -2.f, 2.f}}, {}}; histogram_pv_y = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_y", "pv_y", {1000, -2.f, 2.f}}, {}}; histogram_pv_z = new gaudi_monitoring::Lockable_Histogram<> {{this, "pv_z", "pv_z", {1000, -200.f, 200.f}}, {}}; -- GitLab From c2da0655fca04a1a563bb1d6bd10a7437ecec428 Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Tue, 9 Jan 2024 15:54:09 -0500 Subject: [PATCH 06/18] move pt calculation to particletypes --- device/event_model/common/include/ParticleTypes.cuh | 9 +++++++++ device/muon/is_muon/src/IsMuon.cu | 6 +----- main/include/GaudiMonitoring.h | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/device/event_model/common/include/ParticleTypes.cuh b/device/event_model/common/include/ParticleTypes.cuh index 772ce8f999e..d0a16c73e98 100644 --- a/device/event_model/common/include/ParticleTypes.cuh +++ b/device/event_model/common/include/ParticleTypes.cuh @@ -80,6 +80,15 @@ namespace Allen { {} __host__ __device__ float qop() const { return *m_qop; } + __host__ __device__ float pt(Allen::Views::Physics::KalmanState velo_state) const { + const auto qop = *m_qop; + const float tx = velo_state.tx(); + const float ty = velo_state.ty(); + const float slope2 = tx * tx + ty * ty; + const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); + return pt; + } + enum struct segment { velo, ut, scifi, muon }; template<segment t> diff --git a/device/muon/is_muon/src/IsMuon.cu b/device/muon/is_muon/src/IsMuon.cu index 7c1b075db29..dc72cc20132 100644 --- a/device/muon/is_muon/src/IsMuon.cu +++ b/device/muon/is_muon/src/IsMuon.cu @@ -227,11 +227,7 @@ __global__ void is_muon::is_muon( const auto velo_track_index = velo_track.track_index(); const auto endvelo_states = parameters.dev_velo_states_view[event_number]; const auto velo_state = endvelo_states.state(velo_track_index); - const auto qop = long_track.qop(); - const float tx = velo_state.tx(); - const float ty = velo_state.ty(); - const float slope2 = tx * tx + ty * ty; - const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); + const float pt = long_track.pt(velo_state); if (pt < unsigned(1e4)) { const unsigned bin = std::floor(pt / 10.f); ++dev_histogram_muon_pt[bin]; diff --git a/main/include/GaudiMonitoring.h b/main/include/GaudiMonitoring.h index 0a9c5d868f5..302b345de58 100644 --- a/main/include/GaudiMonitoring.h +++ b/main/include/GaudiMonitoring.h @@ -76,7 +76,7 @@ namespace gaudi_monitoring { histo->call([=](auto& locked_histo) { for (unsigned bin = 0; bin < n_bins; bin++) { if (data[bin] != 0) { - float value = min + bin * bin_size + + float value = float(min) + bin * bin_size + half_bin_size; // use middle of bin for increment to not rely on floating point calculation locked_histo[value] += data[bin]; } -- GitLab From 975d10f6f01fedbc2f489d8ebab88de89fe5a87e Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Tue, 9 Jan 2024 17:21:46 -0500 Subject: [PATCH 07/18] clean up --- device/calo/clustering/src/CaloFindClusters.cu | 12 ++++++------ device/muon/is_muon/src/IsMuon.cu | 12 ++---------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/device/calo/clustering/src/CaloFindClusters.cu b/device/calo/clustering/src/CaloFindClusters.cu index 0c974281bb2..fd85d142f5b 100755 --- a/device/calo/clustering/src/CaloFindClusters.cu +++ b/device/calo/clustering/src/CaloFindClusters.cu @@ -64,7 +64,7 @@ __device__ void simple_clusters( if (digit_e < 10000) { const unsigned bin = std::floor(digit_e / 10); - ++histogram_digit_e[bin]; + atomicAdd(&histogram_digit_e[bin], 1); } } } @@ -86,19 +86,19 @@ __device__ void simple_clusters( // Fill histograms if (cluster.e < 50000) { const unsigned bin = std::floor(cluster.e / 10); - ++histogram_cluster_e[bin]; + atomicAdd(&histogram_cluster_e[bin], 1); } if (cluster.et < 5000) { const unsigned bin = std::floor(cluster.et / 10); - ++histogram_cluster_et[bin]; + atomicAdd(&histogram_cluster_et[bin], 1); } if (cluster.x < 4000 && cluster.x > -4000) { const unsigned bin = std::floor(cluster.x / 10) + 400; - ++histogram_cluster_x[bin]; + atomicAdd(&histogram_cluster_x[bin], 1); } if (cluster.y < 4000 && cluster.y > -4000) { const unsigned bin = std::floor(cluster.y / 10) + 400; - ++histogram_cluster_y[bin]; + atomicAdd(&histogram_cluster_y[bin], 1); } } } @@ -124,7 +124,7 @@ __global__ void calo_find_clusters::calo_find_clusters( unsigned const ecal_clusters_offset = parameters.dev_ecal_cluster_offsets[event_number]; unsigned const ecal_num_clusters = parameters.dev_ecal_cluster_offsets[event_number + 1] - ecal_clusters_offset; - if (ecal_num_clusters < 401) histogram_n_clusters[ecal_num_clusters]++; + if (ecal_num_clusters < 401) atomicAdd(&histogram_n_clusters[ecal_num_clusters], 1); simple_clusters( parameters.dev_ecal_digits + ecal_digits_offset, diff --git a/device/muon/is_muon/src/IsMuon.cu b/device/muon/is_muon/src/IsMuon.cu index dc72cc20132..285990c0fc9 100644 --- a/device/muon/is_muon/src/IsMuon.cu +++ b/device/muon/is_muon/src/IsMuon.cu @@ -252,11 +252,7 @@ __global__ void is_muon::is_muon( const auto velo_track_index = velo_track.track_index(); const auto endvelo_states = parameters.dev_velo_states_view[event_number]; const auto velo_state = endvelo_states.state(velo_track_index); - const auto qop = long_track.qop(); - const float tx = velo_state.tx(); - const float ty = velo_state.ty(); - const float slope2 = tx * tx + ty * ty; - const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); + const float pt = long_track.pt(velo_state); if (pt < unsigned(1e4)) { const unsigned bin = std::floor(pt / 10.f); ++dev_histogram_muon_pt[bin]; @@ -278,11 +274,7 @@ __global__ void is_muon::is_muon( const auto velo_track_index = velo_track.track_index(); const auto endvelo_states = parameters.dev_velo_states_view[event_number]; const auto velo_state = endvelo_states.state(velo_track_index); - const auto qop = long_track.qop(); - const float tx = velo_state.tx(); - const float ty = velo_state.ty(); - const float slope2 = tx * tx + ty * ty; - const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); + const float pt = long_track.pt(velo_state); if (pt < unsigned(1e4)) { const unsigned bin = std::floor(pt / 10.f); ++dev_histogram_muon_pt[bin]; -- GitLab From 4b2448dae9058124948ecb34a5be7fc25ffd7567 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Tue, 9 Jan 2024 22:22:30 +0000 Subject: [PATCH 08/18] Fixed formatting patch generated by https://gitlab.cern.ch/lhcb/Allen/-/jobs/35136853 --- device/event_model/common/include/ParticleTypes.cuh | 3 ++- device/vertex_fit/vertex_fitter/src/VertexFitter.cu | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/device/event_model/common/include/ParticleTypes.cuh b/device/event_model/common/include/ParticleTypes.cuh index d0a16c73e98..859025adb15 100644 --- a/device/event_model/common/include/ParticleTypes.cuh +++ b/device/event_model/common/include/ParticleTypes.cuh @@ -80,7 +80,8 @@ namespace Allen { {} __host__ __device__ float qop() const { return *m_qop; } - __host__ __device__ float pt(Allen::Views::Physics::KalmanState velo_state) const { + __host__ __device__ float pt(Allen::Views::Physics::KalmanState velo_state) const + { const auto qop = *m_qop; const float tx = velo_state.tx(); const float ty = velo_state.ty(); diff --git a/device/vertex_fit/vertex_fitter/src/VertexFitter.cu b/device/vertex_fit/vertex_fitter/src/VertexFitter.cu index 83832e3485d..c815910a39f 100644 --- a/device/vertex_fit/vertex_fitter/src/VertexFitter.cu +++ b/device/vertex_fit/vertex_fitter/src/VertexFitter.cu @@ -136,7 +136,7 @@ __global__ void VertexFit::fit_secondary_vertices( const unsigned* event_svs_trk2_idx = parameters.dev_svs_trk2_idx + idx_offset; const float* event_poca = parameters.dev_sv_poca + 3 * idx_offset; - if (n_svs < VertexFit::max_svs+1) atomicAdd(&dev_histogram_nsvs[n_svs], 1); + if (n_svs < VertexFit::max_svs + 1) atomicAdd(&dev_histogram_nsvs[n_svs], 1); // Tracks. const auto long_track_particles = parameters.dev_long_track_particles->container(event_number); -- GitLab From 6f14350472b782073066bf8e692d917cf9081c65 Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Wed, 10 Jan 2024 12:53:17 -0500 Subject: [PATCH 09/18] move pt to long track --- .../common/include/ParticleTypes.cuh | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/device/event_model/common/include/ParticleTypes.cuh b/device/event_model/common/include/ParticleTypes.cuh index 859025adb15..a5f2caff094 100644 --- a/device/event_model/common/include/ParticleTypes.cuh +++ b/device/event_model/common/include/ParticleTypes.cuh @@ -80,16 +80,6 @@ namespace Allen { {} __host__ __device__ float qop() const { return *m_qop; } - __host__ __device__ float pt(Allen::Views::Physics::KalmanState velo_state) const - { - const auto qop = *m_qop; - const float tx = velo_state.tx(); - const float ty = velo_state.ty(); - const float slope2 = tx * tx + ty * ty; - const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); - return pt; - } - enum struct segment { velo, ut, scifi, muon }; template<segment t> @@ -269,6 +259,16 @@ namespace Allen { const float* qop) : Track {velo_segment, ut_segment, scifi_segment, muon_segment, qop} {} + + __host__ __device__ float pt(Allen::Views::Physics::KalmanState velo_state) const + { + const auto qop = *m_qop; + const float tx = velo_state.tx(); + const float ty = velo_state.ty(); + const float slope2 = tx * tx + ty * ty; + const float pt = std::sqrt(slope2 / (1.0f + slope2)) / std::fabs(qop); + return pt; + } }; struct LongTracks : ILHCbIDContainer<LongTracks> { -- GitLab From d5d56c1b827763bf0d541e716f760fb1a4fe0c02 Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Wed, 10 Jan 2024 13:16:28 -0500 Subject: [PATCH 10/18] use atomicadds in downstreamconsolidate --- .../consolidate/src/DownstreamConsolidate.cu | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/device/downstream/consolidate/src/DownstreamConsolidate.cu b/device/downstream/consolidate/src/DownstreamConsolidate.cu index ccf30afeeea..e7ffba15944 100644 --- a/device/downstream/consolidate/src/DownstreamConsolidate.cu +++ b/device/downstream/consolidate/src/DownstreamConsolidate.cu @@ -153,7 +153,7 @@ void downstream_consolidate::downstream_consolidate_t::init() #ifndef ALLEN_STANDALONE m_downstream_tracks = new Gaudi::Accumulators::Counter<>(this, "n_downstream_tracks"); histogram_n_downstream_tracks = new gaudi_monitoring::Lockable_Histogram<> { - {this, "n_downstream_tracks_event", "n_downstream_tracks_event", {80, 0, 200}}, {}}; + {this, "n_downstream_tracks_event", "n_downstream_tracks_event", {201, -0.5, 200.5}, {}}; histogram_downstream_track_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "downstream_track_eta", @@ -200,7 +200,7 @@ void downstream_consolidate::downstream_consolidate_t::operator()( make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_phi_nbins_t>()); auto dev_histogram_downstream_track_nhits = make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_nhits_nbins_t>()); - auto dev_histogram_n_downstream_tracks = make_device_buffer<unsigned>(arguments, 80u); + auto dev_histogram_n_downstream_tracks = make_device_buffer<unsigned>(arguments, 201u); auto dev_n_downstream_tracks_counter = make_device_buffer<unsigned>(arguments, 1u); // @@ -256,7 +256,7 @@ void downstream_consolidate::downstream_consolidate_t::operator()( histogram_downstream_track_nhits, property<histogram_downstream_track_nhits_min_t>(), property<histogram_downstream_track_nhits_max_t>()}, - std::tuple {dev_histogram_n_downstream_tracks.get(), histogram_n_downstream_tracks, 0, 200}, + std::tuple {dev_histogram_n_downstream_tracks.get(), histogram_n_downstream_tracks, -0.5f, 200.5f}, std::tuple {dev_n_downstream_tracks_counter.get(), m_downstream_tracks}}); #endif } @@ -301,10 +301,7 @@ __global__ void downstream_consolidate::downstream_consolidate( // // Monitoring fill // - if (downstream_tracks_size < 200) { - unsigned bin = std::floor(downstream_tracks_size / 2.5); - atomicAdd(dev_histogram_n_downstream_tracks.data() + bin, 1u); - } + if (downstream_tracks_size < 201) atomicAdd(&dev_histogram_n_downstream_tracks[downstream_tracks_size], 1); dev_n_downstream_tracks_counter[0] += downstream_tracks_size; // Outputs @@ -387,13 +384,13 @@ __device__ void downstream_consolidate::downstream_consolidate_t::monitor( const unsigned int bin = static_cast<unsigned int>( (eta - parameters.histogram_downstream_track_eta_min) * parameters.histogram_downstream_track_eta_nbins / (parameters.histogram_downstream_track_eta_max - parameters.histogram_downstream_track_eta_min)); - atomicAdd(dev_histogram_downstream_track_eta.data() + bin, 1u); + atomicAdd(&dev_histogram_downstream_track_eta[bin], 1); } if (phi > parameters.histogram_downstream_track_phi_min && phi < parameters.histogram_downstream_track_phi_max) { const unsigned int bin = static_cast<unsigned int>( (phi - parameters.histogram_downstream_track_phi_min) * parameters.histogram_downstream_track_phi_nbins / (parameters.histogram_downstream_track_phi_max - parameters.histogram_downstream_track_phi_min)); - atomicAdd(dev_histogram_downstream_track_phi.data() + bin, 1u); + atomicAdd(&dev_histogram_downstream_track_phi[bin], 1); } if ( nhits > parameters.histogram_downstream_track_nhits_min && @@ -401,6 +398,6 @@ __device__ void downstream_consolidate::downstream_consolidate_t::monitor( const unsigned int bin = static_cast<unsigned int>( (nhits - parameters.histogram_downstream_track_nhits_min) * parameters.histogram_downstream_track_nhits_nbins / (parameters.histogram_downstream_track_nhits_max - parameters.histogram_downstream_track_nhits_min)); - atomicAdd(dev_histogram_downstream_track_nhits.data() + bin, 1u); + atomicAdd(&dev_histogram_downstream_track_nhits[bin], 1); } } -- GitLab From 04447f8648cded43d992ceb72e482f8538b8fa25 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Wed, 10 Jan 2024 18:17:04 +0000 Subject: [PATCH 11/18] Fixed formatting patch generated by https://gitlab.cern.ch/lhcb/Allen/-/jobs/35163486 --- .../consolidate/src/DownstreamConsolidate.cu | 474 +++++++++--------- 1 file changed, 239 insertions(+), 235 deletions(-) diff --git a/device/downstream/consolidate/src/DownstreamConsolidate.cu b/device/downstream/consolidate/src/DownstreamConsolidate.cu index e7ffba15944..5309218e08c 100644 --- a/device/downstream/consolidate/src/DownstreamConsolidate.cu +++ b/device/downstream/consolidate/src/DownstreamConsolidate.cu @@ -152,252 +152,256 @@ void downstream_consolidate::downstream_consolidate_t::init() { #ifndef ALLEN_STANDALONE m_downstream_tracks = new Gaudi::Accumulators::Counter<>(this, "n_downstream_tracks"); - histogram_n_downstream_tracks = new gaudi_monitoring::Lockable_Histogram<> { + histogram_n_downstream_tracks = new gaudi_monitoring::Lockable_Histogram<> + { {this, "n_downstream_tracks_event", "n_downstream_tracks_event", {201, -0.5, 200.5}, {}}; - histogram_downstream_track_eta = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "downstream_track_eta", - "#eta", - {property<histogram_downstream_track_eta_nbins_t>(), - property<histogram_downstream_track_eta_min_t>(), - property<histogram_downstream_track_eta_max_t>()}}, - {}}; - histogram_downstream_track_phi = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "downstream_track_phi", - "#phi", - {property<histogram_downstream_track_phi_nbins_t>(), - property<histogram_downstream_track_phi_min_t>(), - property<histogram_downstream_track_phi_max_t>()}}, - {}}; - histogram_downstream_track_nhits = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "downstream_track_nhits", - "N. hits / track", - {property<histogram_downstream_track_nhits_nbins_t>(), - property<histogram_downstream_track_nhits_min_t>(), - property<histogram_downstream_track_nhits_max_t>()}}, - {}}; + histogram_downstream_track_eta = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "downstream_track_eta", + "#eta", + {property<histogram_downstream_track_eta_nbins_t>(), + property<histogram_downstream_track_eta_min_t>(), + property<histogram_downstream_track_eta_max_t>()}}, + {}}; + histogram_downstream_track_phi = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "downstream_track_phi", + "#phi", + {property<histogram_downstream_track_phi_nbins_t>(), + property<histogram_downstream_track_phi_min_t>(), + property<histogram_downstream_track_phi_max_t>()}}, + {}}; + histogram_downstream_track_nhits = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "downstream_track_nhits", + "N. hits / track", + {property<histogram_downstream_track_nhits_nbins_t>(), + property<histogram_downstream_track_nhits_min_t>(), + property<histogram_downstream_track_nhits_max_t>()}}, + {}}; #endif -} - -void downstream_consolidate::downstream_consolidate_t::operator()( - const ArgumentReferences<Parameters>& arguments, - const RuntimeOptions&, - const Constants& constants, - const Allen::Context& context) const -{ - // Initialize container to avoid invalid std::function destructor - Allen::memset_async<dev_multi_event_downstream_tracks_view_t>(arguments, 0, context); - Allen::memset_async<dev_downstream_tracks_view_t>(arguments, 0, context); - - // - // Create monitoring container - // - auto dev_histogram_downstream_track_eta = - make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_eta_nbins_t>()); - auto dev_histogram_downstream_track_phi = - make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_phi_nbins_t>()); - auto dev_histogram_downstream_track_nhits = - make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_nhits_nbins_t>()); - auto dev_histogram_n_downstream_tracks = make_device_buffer<unsigned>(arguments, 201u); - auto dev_n_downstream_tracks_counter = make_device_buffer<unsigned>(arguments, 1u); + } - // - // Initialize monitoring container - // - Allen::memset_async( - dev_histogram_downstream_track_eta.data(), - 0, - dev_histogram_downstream_track_eta.size() * sizeof(unsigned), - context); - Allen::memset_async( - dev_histogram_downstream_track_phi.data(), - 0, - dev_histogram_downstream_track_phi.size() * sizeof(unsigned), - context); - Allen::memset_async( - dev_histogram_downstream_track_nhits.data(), - 0, - dev_histogram_downstream_track_nhits.size() * sizeof(unsigned), - context); - Allen::memset_async( - dev_histogram_n_downstream_tracks.data(), 0, dev_histogram_n_downstream_tracks.size() * sizeof(unsigned), context); - Allen::memset_async( - dev_n_downstream_tracks_counter.data(), 0, dev_n_downstream_tracks_counter.size() * sizeof(unsigned), context); - - // Fill the consolidation memory - global_function(downstream_consolidate)(dim3(size<dev_event_list_t>(arguments)), property<block_dim_t>(), context)( - arguments, - constants.dev_unique_x_sector_layer_offsets.data(), - dev_histogram_n_downstream_tracks.get(), - dev_n_downstream_tracks_counter.get()); - - // Create views - global_function(downstream_create_tracks_view)(dim3(first<host_number_of_events_t>(arguments)), 256, context)( - arguments, - dev_histogram_downstream_track_eta.get(), - dev_histogram_downstream_track_phi.get(), - dev_histogram_downstream_track_nhits.get()); + void downstream_consolidate::downstream_consolidate_t::operator()( + const ArgumentReferences<Parameters>& arguments, + const RuntimeOptions&, + const Constants& constants, + const Allen::Context& context) const + { + // Initialize container to avoid invalid std::function destructor + Allen::memset_async<dev_multi_event_downstream_tracks_view_t>(arguments, 0, context); + Allen::memset_async<dev_downstream_tracks_view_t>(arguments, 0, context); + + // + // Create monitoring container + // + auto dev_histogram_downstream_track_eta = + make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_eta_nbins_t>()); + auto dev_histogram_downstream_track_phi = + make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_phi_nbins_t>()); + auto dev_histogram_downstream_track_nhits = + make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_nhits_nbins_t>()); + auto dev_histogram_n_downstream_tracks = make_device_buffer<unsigned>(arguments, 201u); + auto dev_n_downstream_tracks_counter = make_device_buffer<unsigned>(arguments, 1u); + + // + // Initialize monitoring container + // + Allen::memset_async( + dev_histogram_downstream_track_eta.data(), + 0, + dev_histogram_downstream_track_eta.size() * sizeof(unsigned), + context); + Allen::memset_async( + dev_histogram_downstream_track_phi.data(), + 0, + dev_histogram_downstream_track_phi.size() * sizeof(unsigned), + context); + Allen::memset_async( + dev_histogram_downstream_track_nhits.data(), + 0, + dev_histogram_downstream_track_nhits.size() * sizeof(unsigned), + context); + Allen::memset_async( + dev_histogram_n_downstream_tracks.data(), + 0, + dev_histogram_n_downstream_tracks.size() * sizeof(unsigned), + context); + Allen::memset_async( + dev_n_downstream_tracks_counter.data(), 0, dev_n_downstream_tracks_counter.size() * sizeof(unsigned), context); + + // Fill the consolidation memory + global_function(downstream_consolidate)(dim3(size<dev_event_list_t>(arguments)), property<block_dim_t>(), context)( + arguments, + constants.dev_unique_x_sector_layer_offsets.data(), + dev_histogram_n_downstream_tracks.get(), + dev_n_downstream_tracks_counter.get()); + + // Create views + global_function(downstream_create_tracks_view)(dim3(first<host_number_of_events_t>(arguments)), 256, context)( + arguments, + dev_histogram_downstream_track_eta.get(), + dev_histogram_downstream_track_phi.get(), + dev_histogram_downstream_track_nhits.get()); #ifndef ALLEN_STANDALONE - gaudi_monitoring::fill( - arguments, - context, - std::tuple {std::tuple {dev_histogram_downstream_track_eta.get(), - histogram_downstream_track_eta, - property<histogram_downstream_track_eta_min_t>(), - property<histogram_downstream_track_eta_max_t>()}, - std::tuple {dev_histogram_downstream_track_phi.get(), - histogram_downstream_track_phi, - property<histogram_downstream_track_phi_min_t>(), - property<histogram_downstream_track_phi_max_t>()}, - std::tuple {dev_histogram_downstream_track_nhits.get(), - histogram_downstream_track_nhits, - property<histogram_downstream_track_nhits_min_t>(), - property<histogram_downstream_track_nhits_max_t>()}, - std::tuple {dev_histogram_n_downstream_tracks.get(), histogram_n_downstream_tracks, -0.5f, 200.5f}, - std::tuple {dev_n_downstream_tracks_counter.get(), m_downstream_tracks}}); + gaudi_monitoring::fill( + arguments, + context, + std::tuple {std::tuple {dev_histogram_downstream_track_eta.get(), + histogram_downstream_track_eta, + property<histogram_downstream_track_eta_min_t>(), + property<histogram_downstream_track_eta_max_t>()}, + std::tuple {dev_histogram_downstream_track_phi.get(), + histogram_downstream_track_phi, + property<histogram_downstream_track_phi_min_t>(), + property<histogram_downstream_track_phi_max_t>()}, + std::tuple {dev_histogram_downstream_track_nhits.get(), + histogram_downstream_track_nhits, + property<histogram_downstream_track_nhits_min_t>(), + property<histogram_downstream_track_nhits_max_t>()}, + std::tuple {dev_histogram_n_downstream_tracks.get(), histogram_n_downstream_tracks, -0.5f, 200.5f}, + std::tuple {dev_n_downstream_tracks_counter.get(), m_downstream_tracks}}); #endif -} - -__global__ void downstream_consolidate::downstream_consolidate( - downstream_consolidate::Parameters parameters, - const unsigned* dev_unique_x_sector_layer_offsets, - // Monitoring - gsl::span<unsigned> dev_histogram_n_downstream_tracks, - gsl::span<unsigned> dev_n_downstream_tracks_counter) -{ - // Basic - const unsigned event_number = parameters.dev_event_list[blockIdx.x]; - const unsigned number_of_events = parameters.dev_number_of_events[0]; - - // Tracks - const auto downstream_tracks_memory = - parameters.dev_downstream_tracks + event_number * UT::DownstreamTracks::TotalMemorySize; - UT::DownstreamTracks_Const downstream_tracks {downstream_tracks_memory}; - - // Event offsets for tracks - const auto downstream_tracks_offset = parameters.dev_offsets_downstream_tracks[event_number]; - const auto downstream_tracks_size = - parameters.dev_offsets_downstream_tracks[event_number + 1] - downstream_tracks_offset; - - // Event offsets for hit ofsets - const auto downstream_hit_number_offsets = parameters.dev_offsets_downstream_hit_numbers + downstream_tracks_offset; - - // Total numbers - const auto downstream_total_number_of_tracks = parameters.dev_offsets_downstream_tracks[number_of_events]; - const auto downstream_total_number_of_hits = - parameters.dev_offsets_downstream_hit_numbers[downstream_total_number_of_tracks]; - - // UT hits - const unsigned number_of_unique_x_sectors = dev_unique_x_sector_layer_offsets[UT::Constants::n_layers]; - const unsigned total_number_of_hits = parameters.dev_ut_hit_offsets[number_of_events * number_of_unique_x_sectors]; - const UT::HitOffsets ut_hit_offsets { - parameters.dev_ut_hit_offsets, event_number, number_of_unique_x_sectors, dev_unique_x_sector_layer_offsets}; - const auto event_hit_offset = ut_hit_offsets.event_offset(); - UT::ConstHits ut_hits {parameters.dev_ut_hits, total_number_of_hits, event_hit_offset}; - - // - // Monitoring fill - // - if (downstream_tracks_size < 201) atomicAdd(&dev_histogram_n_downstream_tracks[downstream_tracks_size], 1); - dev_n_downstream_tracks_counter[0] += downstream_tracks_size; - - // Outputs - const auto downstream_track_scifi_indices = parameters.dev_downstream_track_scifi_idx + downstream_tracks_offset; - const auto downstream_track_qops = parameters.dev_downstream_track_qops + downstream_tracks_offset; - - UT::Consolidated::Hits downstream_track_hits( - parameters.dev_downstream_track_hits, 0, downstream_total_number_of_hits); - - UT::Consolidated::Tracks output_tracks( - parameters.dev_offsets_downstream_tracks, - parameters.dev_offsets_downstream_hit_numbers, - event_number, - number_of_events); - - Velo::Consolidated::States output_states( - parameters.dev_downstream_track_states, downstream_total_number_of_tracks, downstream_tracks_offset); - - // Fill states - for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { - - // First AOS part of state - output_states.x(track_idx) = downstream_tracks.x(track_idx); - output_states.y(track_idx) = downstream_tracks.y(track_idx); - output_states.z(track_idx) = UT::Constants::zMidUT; - output_states.tx(track_idx) = downstream_tracks.tx(track_idx); - output_states.ty(track_idx) = downstream_tracks.ty(track_idx); - output_states.qop(track_idx) = downstream_tracks.qop(track_idx); - - // Fill extra qop for downstream track - downstream_track_qops[track_idx] = downstream_tracks.qop(track_idx); - - // Second AOS part of state - output_states.c00(track_idx) = 0.f; - output_states.c20(track_idx) = 0.f; - output_states.c22(track_idx) = 0.f; - output_states.c11(track_idx) = 0.f; - output_states.c31(track_idx) = 0.f; - output_states.c33(track_idx) = 0.f; - output_states.chi2(track_idx) = downstream_tracks.chi2(track_idx); - output_states.ndof(track_idx) = downstream_tracks.n_hits(track_idx) - 1u; } - // Scifi idx - for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { - downstream_track_scifi_indices[track_idx] = downstream_tracks.scifi(track_idx); - } + __global__ void downstream_consolidate::downstream_consolidate( + downstream_consolidate::Parameters parameters, + const unsigned* dev_unique_x_sector_layer_offsets, + // Monitoring + gsl::span<unsigned> dev_histogram_n_downstream_tracks, + gsl::span<unsigned> dev_n_downstream_tracks_counter) + { + // Basic + const unsigned event_number = parameters.dev_event_list[blockIdx.x]; + const unsigned number_of_events = parameters.dev_number_of_events[0]; + + // Tracks + const auto downstream_tracks_memory = + parameters.dev_downstream_tracks + event_number * UT::DownstreamTracks::TotalMemorySize; + UT::DownstreamTracks_Const downstream_tracks {downstream_tracks_memory}; + + // Event offsets for tracks + const auto downstream_tracks_offset = parameters.dev_offsets_downstream_tracks[event_number]; + const auto downstream_tracks_size = + parameters.dev_offsets_downstream_tracks[event_number + 1] - downstream_tracks_offset; + + // Event offsets for hit ofsets + const auto downstream_hit_number_offsets = parameters.dev_offsets_downstream_hit_numbers + downstream_tracks_offset; + + // Total numbers + const auto downstream_total_number_of_tracks = parameters.dev_offsets_downstream_tracks[number_of_events]; + const auto downstream_total_number_of_hits = + parameters.dev_offsets_downstream_hit_numbers[downstream_total_number_of_tracks]; + + // UT hits + const unsigned number_of_unique_x_sectors = dev_unique_x_sector_layer_offsets[UT::Constants::n_layers]; + const unsigned total_number_of_hits = parameters.dev_ut_hit_offsets[number_of_events * number_of_unique_x_sectors]; + const UT::HitOffsets ut_hit_offsets { + parameters.dev_ut_hit_offsets, event_number, number_of_unique_x_sectors, dev_unique_x_sector_layer_offsets}; + const auto event_hit_offset = ut_hit_offsets.event_offset(); + UT::ConstHits ut_hits {parameters.dev_ut_hits, total_number_of_hits, event_hit_offset}; + + // + // Monitoring fill + // + if (downstream_tracks_size < 201) atomicAdd(&dev_histogram_n_downstream_tracks[downstream_tracks_size], 1); + dev_n_downstream_tracks_counter[0] += downstream_tracks_size; + + // Outputs + const auto downstream_track_scifi_indices = parameters.dev_downstream_track_scifi_idx + downstream_tracks_offset; + const auto downstream_track_qops = parameters.dev_downstream_track_qops + downstream_tracks_offset; + + UT::Consolidated::Hits downstream_track_hits( + parameters.dev_downstream_track_hits, 0, downstream_total_number_of_hits); + + UT::Consolidated::Tracks output_tracks( + parameters.dev_offsets_downstream_tracks, + parameters.dev_offsets_downstream_hit_numbers, + event_number, + number_of_events); + + Velo::Consolidated::States output_states( + parameters.dev_downstream_track_states, downstream_total_number_of_tracks, downstream_tracks_offset); + + // Fill states + for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { + + // First AOS part of state + output_states.x(track_idx) = downstream_tracks.x(track_idx); + output_states.y(track_idx) = downstream_tracks.y(track_idx); + output_states.z(track_idx) = UT::Constants::zMidUT; + output_states.tx(track_idx) = downstream_tracks.tx(track_idx); + output_states.ty(track_idx) = downstream_tracks.ty(track_idx); + output_states.qop(track_idx) = downstream_tracks.qop(track_idx); + + // Fill extra qop for downstream track + downstream_track_qops[track_idx] = downstream_tracks.qop(track_idx); + + // Second AOS part of state + output_states.c00(track_idx) = 0.f; + output_states.c20(track_idx) = 0.f; + output_states.c22(track_idx) = 0.f; + output_states.c11(track_idx) = 0.f; + output_states.c31(track_idx) = 0.f; + output_states.c33(track_idx) = 0.f; + output_states.chi2(track_idx) = downstream_tracks.chi2(track_idx); + output_states.ndof(track_idx) = downstream_tracks.n_hits(track_idx) - 1u; + } - // Fill hits - for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { - const auto nhits = downstream_tracks.n_hits(track_idx); - const auto target_hit_offset = downstream_hit_number_offsets[track_idx]; - for (unsigned hit_idx = 0; hit_idx < nhits; hit_idx++) { - downstream_track_hits.set( - target_hit_offset + hit_idx, ut_hits.getHit(downstream_tracks.hits(track_idx, hit_idx))); + // Scifi idx + for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { + downstream_track_scifi_indices[track_idx] = downstream_tracks.scifi(track_idx); } - } - __syncthreads(); -} + // Fill hits + for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { + const auto nhits = downstream_tracks.n_hits(track_idx); + const auto target_hit_offset = downstream_hit_number_offsets[track_idx]; + for (unsigned hit_idx = 0; hit_idx < nhits; hit_idx++) { + downstream_track_hits.set( + target_hit_offset + hit_idx, ut_hits.getHit(downstream_tracks.hits(track_idx, hit_idx))); + } + } -__device__ void downstream_consolidate::downstream_consolidate_t::monitor( - const downstream_consolidate::Parameters& parameters, - const Allen::Views::Physics::DownstreamTrack downstream_track, - const Allen::Views::Physics::KalmanState downstream_state, - gsl::span<unsigned> dev_histogram_downstream_track_eta, - gsl::span<unsigned> dev_histogram_downstream_track_phi, - gsl::span<unsigned> dev_histogram_downstream_track_nhits) -{ - const auto nhits = downstream_track.number_of_hits(); - const auto tx = downstream_state.tx(); - const auto ty = downstream_state.ty(); - const auto slope2 = tx * tx + ty * ty; - const auto rho = std::sqrt(slope2); - const auto eta = eta_from_rho(rho); - const auto phi = std::atan2(ty, tx); - - // Filling histograms - if (eta > parameters.histogram_downstream_track_eta_min && eta < parameters.histogram_downstream_track_eta_max) { - const unsigned int bin = static_cast<unsigned int>( - (eta - parameters.histogram_downstream_track_eta_min) * parameters.histogram_downstream_track_eta_nbins / - (parameters.histogram_downstream_track_eta_max - parameters.histogram_downstream_track_eta_min)); - atomicAdd(&dev_histogram_downstream_track_eta[bin], 1); - } - if (phi > parameters.histogram_downstream_track_phi_min && phi < parameters.histogram_downstream_track_phi_max) { - const unsigned int bin = static_cast<unsigned int>( - (phi - parameters.histogram_downstream_track_phi_min) * parameters.histogram_downstream_track_phi_nbins / - (parameters.histogram_downstream_track_phi_max - parameters.histogram_downstream_track_phi_min)); - atomicAdd(&dev_histogram_downstream_track_phi[bin], 1); + __syncthreads(); } - if ( - nhits > parameters.histogram_downstream_track_nhits_min && - nhits < parameters.histogram_downstream_track_nhits_max) { - const unsigned int bin = static_cast<unsigned int>( - (nhits - parameters.histogram_downstream_track_nhits_min) * parameters.histogram_downstream_track_nhits_nbins / - (parameters.histogram_downstream_track_nhits_max - parameters.histogram_downstream_track_nhits_min)); - atomicAdd(&dev_histogram_downstream_track_nhits[bin], 1); + + __device__ void downstream_consolidate::downstream_consolidate_t::monitor( + const downstream_consolidate::Parameters& parameters, + const Allen::Views::Physics::DownstreamTrack downstream_track, + const Allen::Views::Physics::KalmanState downstream_state, + gsl::span<unsigned> dev_histogram_downstream_track_eta, + gsl::span<unsigned> dev_histogram_downstream_track_phi, + gsl::span<unsigned> dev_histogram_downstream_track_nhits) + { + const auto nhits = downstream_track.number_of_hits(); + const auto tx = downstream_state.tx(); + const auto ty = downstream_state.ty(); + const auto slope2 = tx * tx + ty * ty; + const auto rho = std::sqrt(slope2); + const auto eta = eta_from_rho(rho); + const auto phi = std::atan2(ty, tx); + + // Filling histograms + if (eta > parameters.histogram_downstream_track_eta_min && eta < parameters.histogram_downstream_track_eta_max) { + const unsigned int bin = static_cast<unsigned int>( + (eta - parameters.histogram_downstream_track_eta_min) * parameters.histogram_downstream_track_eta_nbins / + (parameters.histogram_downstream_track_eta_max - parameters.histogram_downstream_track_eta_min)); + atomicAdd(&dev_histogram_downstream_track_eta[bin], 1); + } + if (phi > parameters.histogram_downstream_track_phi_min && phi < parameters.histogram_downstream_track_phi_max) { + const unsigned int bin = static_cast<unsigned int>( + (phi - parameters.histogram_downstream_track_phi_min) * parameters.histogram_downstream_track_phi_nbins / + (parameters.histogram_downstream_track_phi_max - parameters.histogram_downstream_track_phi_min)); + atomicAdd(&dev_histogram_downstream_track_phi[bin], 1); + } + if ( + nhits > parameters.histogram_downstream_track_nhits_min && + nhits < parameters.histogram_downstream_track_nhits_max) { + const unsigned int bin = static_cast<unsigned int>( + (nhits - parameters.histogram_downstream_track_nhits_min) * parameters.histogram_downstream_track_nhits_nbins / + (parameters.histogram_downstream_track_nhits_max - parameters.histogram_downstream_track_nhits_min)); + atomicAdd(&dev_histogram_downstream_track_nhits[bin], 1); + } } -} -- GitLab From 2868cef9e415b7aa2a1e08cfc493b0f73d0f154e Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Thu, 11 Jan 2024 13:26:15 -0500 Subject: [PATCH 12/18] fix } issue --- device/downstream/consolidate/src/DownstreamConsolidate.cu | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/device/downstream/consolidate/src/DownstreamConsolidate.cu b/device/downstream/consolidate/src/DownstreamConsolidate.cu index 5309218e08c..70e66be2422 100644 --- a/device/downstream/consolidate/src/DownstreamConsolidate.cu +++ b/device/downstream/consolidate/src/DownstreamConsolidate.cu @@ -153,8 +153,7 @@ void downstream_consolidate::downstream_consolidate_t::init() #ifndef ALLEN_STANDALONE m_downstream_tracks = new Gaudi::Accumulators::Counter<>(this, "n_downstream_tracks"); histogram_n_downstream_tracks = new gaudi_monitoring::Lockable_Histogram<> - { - {this, "n_downstream_tracks_event", "n_downstream_tracks_event", {201, -0.5, 200.5}, {}}; + {{this, "n_downstream_tracks_event", "n_downstream_tracks_event", {201, -0.5, 200.5}}, {}}; histogram_downstream_track_eta = new gaudi_monitoring::Lockable_Histogram<> {{this, "downstream_track_eta", @@ -180,7 +179,7 @@ void downstream_consolidate::downstream_consolidate_t::init() property<histogram_downstream_track_nhits_max_t>()}}, {}}; #endif - } +} void downstream_consolidate::downstream_consolidate_t::operator()( const ArgumentReferences<Parameters>& arguments, -- GitLab From 11b9a7b675cbf922e54be64bbf2c5d56d96980b6 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Thu, 11 Jan 2024 18:27:14 +0000 Subject: [PATCH 13/18] Fixed formatting patch generated by https://gitlab.cern.ch/lhcb/Allen/-/jobs/35191291 --- .../consolidate/src/DownstreamConsolidate.cu | 473 +++++++++--------- 1 file changed, 235 insertions(+), 238 deletions(-) diff --git a/device/downstream/consolidate/src/DownstreamConsolidate.cu b/device/downstream/consolidate/src/DownstreamConsolidate.cu index 70e66be2422..044736d4cd4 100644 --- a/device/downstream/consolidate/src/DownstreamConsolidate.cu +++ b/device/downstream/consolidate/src/DownstreamConsolidate.cu @@ -152,255 +152,252 @@ void downstream_consolidate::downstream_consolidate_t::init() { #ifndef ALLEN_STANDALONE m_downstream_tracks = new Gaudi::Accumulators::Counter<>(this, "n_downstream_tracks"); - histogram_n_downstream_tracks = new gaudi_monitoring::Lockable_Histogram<> - {{this, "n_downstream_tracks_event", "n_downstream_tracks_event", {201, -0.5, 200.5}}, {}}; - histogram_downstream_track_eta = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "downstream_track_eta", - "#eta", - {property<histogram_downstream_track_eta_nbins_t>(), - property<histogram_downstream_track_eta_min_t>(), - property<histogram_downstream_track_eta_max_t>()}}, - {}}; - histogram_downstream_track_phi = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "downstream_track_phi", - "#phi", - {property<histogram_downstream_track_phi_nbins_t>(), - property<histogram_downstream_track_phi_min_t>(), - property<histogram_downstream_track_phi_max_t>()}}, - {}}; - histogram_downstream_track_nhits = - new gaudi_monitoring::Lockable_Histogram<> {{this, - "downstream_track_nhits", - "N. hits / track", - {property<histogram_downstream_track_nhits_nbins_t>(), - property<histogram_downstream_track_nhits_min_t>(), - property<histogram_downstream_track_nhits_max_t>()}}, - {}}; + histogram_n_downstream_tracks = new gaudi_monitoring::Lockable_Histogram<> { + {this, "n_downstream_tracks_event", "n_downstream_tracks_event", {201, -0.5, 200.5}}, {}}; + histogram_downstream_track_eta = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "downstream_track_eta", + "#eta", + {property<histogram_downstream_track_eta_nbins_t>(), + property<histogram_downstream_track_eta_min_t>(), + property<histogram_downstream_track_eta_max_t>()}}, + {}}; + histogram_downstream_track_phi = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "downstream_track_phi", + "#phi", + {property<histogram_downstream_track_phi_nbins_t>(), + property<histogram_downstream_track_phi_min_t>(), + property<histogram_downstream_track_phi_max_t>()}}, + {}}; + histogram_downstream_track_nhits = + new gaudi_monitoring::Lockable_Histogram<> {{this, + "downstream_track_nhits", + "N. hits / track", + {property<histogram_downstream_track_nhits_nbins_t>(), + property<histogram_downstream_track_nhits_min_t>(), + property<histogram_downstream_track_nhits_max_t>()}}, + {}}; #endif } - void downstream_consolidate::downstream_consolidate_t::operator()( - const ArgumentReferences<Parameters>& arguments, - const RuntimeOptions&, - const Constants& constants, - const Allen::Context& context) const - { - // Initialize container to avoid invalid std::function destructor - Allen::memset_async<dev_multi_event_downstream_tracks_view_t>(arguments, 0, context); - Allen::memset_async<dev_downstream_tracks_view_t>(arguments, 0, context); - - // - // Create monitoring container - // - auto dev_histogram_downstream_track_eta = - make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_eta_nbins_t>()); - auto dev_histogram_downstream_track_phi = - make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_phi_nbins_t>()); - auto dev_histogram_downstream_track_nhits = - make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_nhits_nbins_t>()); - auto dev_histogram_n_downstream_tracks = make_device_buffer<unsigned>(arguments, 201u); - auto dev_n_downstream_tracks_counter = make_device_buffer<unsigned>(arguments, 1u); - - // - // Initialize monitoring container - // - Allen::memset_async( - dev_histogram_downstream_track_eta.data(), - 0, - dev_histogram_downstream_track_eta.size() * sizeof(unsigned), - context); - Allen::memset_async( - dev_histogram_downstream_track_phi.data(), - 0, - dev_histogram_downstream_track_phi.size() * sizeof(unsigned), - context); - Allen::memset_async( - dev_histogram_downstream_track_nhits.data(), - 0, - dev_histogram_downstream_track_nhits.size() * sizeof(unsigned), - context); - Allen::memset_async( - dev_histogram_n_downstream_tracks.data(), - 0, - dev_histogram_n_downstream_tracks.size() * sizeof(unsigned), - context); - Allen::memset_async( - dev_n_downstream_tracks_counter.data(), 0, dev_n_downstream_tracks_counter.size() * sizeof(unsigned), context); - - // Fill the consolidation memory - global_function(downstream_consolidate)(dim3(size<dev_event_list_t>(arguments)), property<block_dim_t>(), context)( - arguments, - constants.dev_unique_x_sector_layer_offsets.data(), - dev_histogram_n_downstream_tracks.get(), - dev_n_downstream_tracks_counter.get()); - - // Create views - global_function(downstream_create_tracks_view)(dim3(first<host_number_of_events_t>(arguments)), 256, context)( - arguments, - dev_histogram_downstream_track_eta.get(), - dev_histogram_downstream_track_phi.get(), - dev_histogram_downstream_track_nhits.get()); +void downstream_consolidate::downstream_consolidate_t::operator()( + const ArgumentReferences<Parameters>& arguments, + const RuntimeOptions&, + const Constants& constants, + const Allen::Context& context) const +{ + // Initialize container to avoid invalid std::function destructor + Allen::memset_async<dev_multi_event_downstream_tracks_view_t>(arguments, 0, context); + Allen::memset_async<dev_downstream_tracks_view_t>(arguments, 0, context); + + // + // Create monitoring container + // + auto dev_histogram_downstream_track_eta = + make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_eta_nbins_t>()); + auto dev_histogram_downstream_track_phi = + make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_phi_nbins_t>()); + auto dev_histogram_downstream_track_nhits = + make_device_buffer<unsigned>(arguments, property<histogram_downstream_track_nhits_nbins_t>()); + auto dev_histogram_n_downstream_tracks = make_device_buffer<unsigned>(arguments, 201u); + auto dev_n_downstream_tracks_counter = make_device_buffer<unsigned>(arguments, 1u); + + // + // Initialize monitoring container + // + Allen::memset_async( + dev_histogram_downstream_track_eta.data(), + 0, + dev_histogram_downstream_track_eta.size() * sizeof(unsigned), + context); + Allen::memset_async( + dev_histogram_downstream_track_phi.data(), + 0, + dev_histogram_downstream_track_phi.size() * sizeof(unsigned), + context); + Allen::memset_async( + dev_histogram_downstream_track_nhits.data(), + 0, + dev_histogram_downstream_track_nhits.size() * sizeof(unsigned), + context); + Allen::memset_async( + dev_histogram_n_downstream_tracks.data(), 0, dev_histogram_n_downstream_tracks.size() * sizeof(unsigned), context); + Allen::memset_async( + dev_n_downstream_tracks_counter.data(), 0, dev_n_downstream_tracks_counter.size() * sizeof(unsigned), context); + + // Fill the consolidation memory + global_function(downstream_consolidate)(dim3(size<dev_event_list_t>(arguments)), property<block_dim_t>(), context)( + arguments, + constants.dev_unique_x_sector_layer_offsets.data(), + dev_histogram_n_downstream_tracks.get(), + dev_n_downstream_tracks_counter.get()); + + // Create views + global_function(downstream_create_tracks_view)(dim3(first<host_number_of_events_t>(arguments)), 256, context)( + arguments, + dev_histogram_downstream_track_eta.get(), + dev_histogram_downstream_track_phi.get(), + dev_histogram_downstream_track_nhits.get()); #ifndef ALLEN_STANDALONE - gaudi_monitoring::fill( - arguments, - context, - std::tuple {std::tuple {dev_histogram_downstream_track_eta.get(), - histogram_downstream_track_eta, - property<histogram_downstream_track_eta_min_t>(), - property<histogram_downstream_track_eta_max_t>()}, - std::tuple {dev_histogram_downstream_track_phi.get(), - histogram_downstream_track_phi, - property<histogram_downstream_track_phi_min_t>(), - property<histogram_downstream_track_phi_max_t>()}, - std::tuple {dev_histogram_downstream_track_nhits.get(), - histogram_downstream_track_nhits, - property<histogram_downstream_track_nhits_min_t>(), - property<histogram_downstream_track_nhits_max_t>()}, - std::tuple {dev_histogram_n_downstream_tracks.get(), histogram_n_downstream_tracks, -0.5f, 200.5f}, - std::tuple {dev_n_downstream_tracks_counter.get(), m_downstream_tracks}}); + gaudi_monitoring::fill( + arguments, + context, + std::tuple {std::tuple {dev_histogram_downstream_track_eta.get(), + histogram_downstream_track_eta, + property<histogram_downstream_track_eta_min_t>(), + property<histogram_downstream_track_eta_max_t>()}, + std::tuple {dev_histogram_downstream_track_phi.get(), + histogram_downstream_track_phi, + property<histogram_downstream_track_phi_min_t>(), + property<histogram_downstream_track_phi_max_t>()}, + std::tuple {dev_histogram_downstream_track_nhits.get(), + histogram_downstream_track_nhits, + property<histogram_downstream_track_nhits_min_t>(), + property<histogram_downstream_track_nhits_max_t>()}, + std::tuple {dev_histogram_n_downstream_tracks.get(), histogram_n_downstream_tracks, -0.5f, 200.5f}, + std::tuple {dev_n_downstream_tracks_counter.get(), m_downstream_tracks}}); #endif - } +} - __global__ void downstream_consolidate::downstream_consolidate( - downstream_consolidate::Parameters parameters, - const unsigned* dev_unique_x_sector_layer_offsets, - // Monitoring - gsl::span<unsigned> dev_histogram_n_downstream_tracks, - gsl::span<unsigned> dev_n_downstream_tracks_counter) - { - // Basic - const unsigned event_number = parameters.dev_event_list[blockIdx.x]; - const unsigned number_of_events = parameters.dev_number_of_events[0]; - - // Tracks - const auto downstream_tracks_memory = - parameters.dev_downstream_tracks + event_number * UT::DownstreamTracks::TotalMemorySize; - UT::DownstreamTracks_Const downstream_tracks {downstream_tracks_memory}; - - // Event offsets for tracks - const auto downstream_tracks_offset = parameters.dev_offsets_downstream_tracks[event_number]; - const auto downstream_tracks_size = - parameters.dev_offsets_downstream_tracks[event_number + 1] - downstream_tracks_offset; - - // Event offsets for hit ofsets - const auto downstream_hit_number_offsets = parameters.dev_offsets_downstream_hit_numbers + downstream_tracks_offset; - - // Total numbers - const auto downstream_total_number_of_tracks = parameters.dev_offsets_downstream_tracks[number_of_events]; - const auto downstream_total_number_of_hits = - parameters.dev_offsets_downstream_hit_numbers[downstream_total_number_of_tracks]; - - // UT hits - const unsigned number_of_unique_x_sectors = dev_unique_x_sector_layer_offsets[UT::Constants::n_layers]; - const unsigned total_number_of_hits = parameters.dev_ut_hit_offsets[number_of_events * number_of_unique_x_sectors]; - const UT::HitOffsets ut_hit_offsets { - parameters.dev_ut_hit_offsets, event_number, number_of_unique_x_sectors, dev_unique_x_sector_layer_offsets}; - const auto event_hit_offset = ut_hit_offsets.event_offset(); - UT::ConstHits ut_hits {parameters.dev_ut_hits, total_number_of_hits, event_hit_offset}; - - // - // Monitoring fill - // - if (downstream_tracks_size < 201) atomicAdd(&dev_histogram_n_downstream_tracks[downstream_tracks_size], 1); - dev_n_downstream_tracks_counter[0] += downstream_tracks_size; - - // Outputs - const auto downstream_track_scifi_indices = parameters.dev_downstream_track_scifi_idx + downstream_tracks_offset; - const auto downstream_track_qops = parameters.dev_downstream_track_qops + downstream_tracks_offset; - - UT::Consolidated::Hits downstream_track_hits( - parameters.dev_downstream_track_hits, 0, downstream_total_number_of_hits); - - UT::Consolidated::Tracks output_tracks( - parameters.dev_offsets_downstream_tracks, - parameters.dev_offsets_downstream_hit_numbers, - event_number, - number_of_events); - - Velo::Consolidated::States output_states( - parameters.dev_downstream_track_states, downstream_total_number_of_tracks, downstream_tracks_offset); - - // Fill states - for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { - - // First AOS part of state - output_states.x(track_idx) = downstream_tracks.x(track_idx); - output_states.y(track_idx) = downstream_tracks.y(track_idx); - output_states.z(track_idx) = UT::Constants::zMidUT; - output_states.tx(track_idx) = downstream_tracks.tx(track_idx); - output_states.ty(track_idx) = downstream_tracks.ty(track_idx); - output_states.qop(track_idx) = downstream_tracks.qop(track_idx); - - // Fill extra qop for downstream track - downstream_track_qops[track_idx] = downstream_tracks.qop(track_idx); - - // Second AOS part of state - output_states.c00(track_idx) = 0.f; - output_states.c20(track_idx) = 0.f; - output_states.c22(track_idx) = 0.f; - output_states.c11(track_idx) = 0.f; - output_states.c31(track_idx) = 0.f; - output_states.c33(track_idx) = 0.f; - output_states.chi2(track_idx) = downstream_tracks.chi2(track_idx); - output_states.ndof(track_idx) = downstream_tracks.n_hits(track_idx) - 1u; - } +__global__ void downstream_consolidate::downstream_consolidate( + downstream_consolidate::Parameters parameters, + const unsigned* dev_unique_x_sector_layer_offsets, + // Monitoring + gsl::span<unsigned> dev_histogram_n_downstream_tracks, + gsl::span<unsigned> dev_n_downstream_tracks_counter) +{ + // Basic + const unsigned event_number = parameters.dev_event_list[blockIdx.x]; + const unsigned number_of_events = parameters.dev_number_of_events[0]; - // Scifi idx - for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { - downstream_track_scifi_indices[track_idx] = downstream_tracks.scifi(track_idx); - } + // Tracks + const auto downstream_tracks_memory = + parameters.dev_downstream_tracks + event_number * UT::DownstreamTracks::TotalMemorySize; + UT::DownstreamTracks_Const downstream_tracks {downstream_tracks_memory}; - // Fill hits - for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { - const auto nhits = downstream_tracks.n_hits(track_idx); - const auto target_hit_offset = downstream_hit_number_offsets[track_idx]; - for (unsigned hit_idx = 0; hit_idx < nhits; hit_idx++) { - downstream_track_hits.set( - target_hit_offset + hit_idx, ut_hits.getHit(downstream_tracks.hits(track_idx, hit_idx))); - } - } + // Event offsets for tracks + const auto downstream_tracks_offset = parameters.dev_offsets_downstream_tracks[event_number]; + const auto downstream_tracks_size = + parameters.dev_offsets_downstream_tracks[event_number + 1] - downstream_tracks_offset; + + // Event offsets for hit ofsets + const auto downstream_hit_number_offsets = parameters.dev_offsets_downstream_hit_numbers + downstream_tracks_offset; - __syncthreads(); + // Total numbers + const auto downstream_total_number_of_tracks = parameters.dev_offsets_downstream_tracks[number_of_events]; + const auto downstream_total_number_of_hits = + parameters.dev_offsets_downstream_hit_numbers[downstream_total_number_of_tracks]; + + // UT hits + const unsigned number_of_unique_x_sectors = dev_unique_x_sector_layer_offsets[UT::Constants::n_layers]; + const unsigned total_number_of_hits = parameters.dev_ut_hit_offsets[number_of_events * number_of_unique_x_sectors]; + const UT::HitOffsets ut_hit_offsets { + parameters.dev_ut_hit_offsets, event_number, number_of_unique_x_sectors, dev_unique_x_sector_layer_offsets}; + const auto event_hit_offset = ut_hit_offsets.event_offset(); + UT::ConstHits ut_hits {parameters.dev_ut_hits, total_number_of_hits, event_hit_offset}; + + // + // Monitoring fill + // + if (downstream_tracks_size < 201) atomicAdd(&dev_histogram_n_downstream_tracks[downstream_tracks_size], 1); + dev_n_downstream_tracks_counter[0] += downstream_tracks_size; + + // Outputs + const auto downstream_track_scifi_indices = parameters.dev_downstream_track_scifi_idx + downstream_tracks_offset; + const auto downstream_track_qops = parameters.dev_downstream_track_qops + downstream_tracks_offset; + + UT::Consolidated::Hits downstream_track_hits( + parameters.dev_downstream_track_hits, 0, downstream_total_number_of_hits); + + UT::Consolidated::Tracks output_tracks( + parameters.dev_offsets_downstream_tracks, + parameters.dev_offsets_downstream_hit_numbers, + event_number, + number_of_events); + + Velo::Consolidated::States output_states( + parameters.dev_downstream_track_states, downstream_total_number_of_tracks, downstream_tracks_offset); + + // Fill states + for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { + + // First AOS part of state + output_states.x(track_idx) = downstream_tracks.x(track_idx); + output_states.y(track_idx) = downstream_tracks.y(track_idx); + output_states.z(track_idx) = UT::Constants::zMidUT; + output_states.tx(track_idx) = downstream_tracks.tx(track_idx); + output_states.ty(track_idx) = downstream_tracks.ty(track_idx); + output_states.qop(track_idx) = downstream_tracks.qop(track_idx); + + // Fill extra qop for downstream track + downstream_track_qops[track_idx] = downstream_tracks.qop(track_idx); + + // Second AOS part of state + output_states.c00(track_idx) = 0.f; + output_states.c20(track_idx) = 0.f; + output_states.c22(track_idx) = 0.f; + output_states.c11(track_idx) = 0.f; + output_states.c31(track_idx) = 0.f; + output_states.c33(track_idx) = 0.f; + output_states.chi2(track_idx) = downstream_tracks.chi2(track_idx); + output_states.ndof(track_idx) = downstream_tracks.n_hits(track_idx) - 1u; } - __device__ void downstream_consolidate::downstream_consolidate_t::monitor( - const downstream_consolidate::Parameters& parameters, - const Allen::Views::Physics::DownstreamTrack downstream_track, - const Allen::Views::Physics::KalmanState downstream_state, - gsl::span<unsigned> dev_histogram_downstream_track_eta, - gsl::span<unsigned> dev_histogram_downstream_track_phi, - gsl::span<unsigned> dev_histogram_downstream_track_nhits) - { - const auto nhits = downstream_track.number_of_hits(); - const auto tx = downstream_state.tx(); - const auto ty = downstream_state.ty(); - const auto slope2 = tx * tx + ty * ty; - const auto rho = std::sqrt(slope2); - const auto eta = eta_from_rho(rho); - const auto phi = std::atan2(ty, tx); - - // Filling histograms - if (eta > parameters.histogram_downstream_track_eta_min && eta < parameters.histogram_downstream_track_eta_max) { - const unsigned int bin = static_cast<unsigned int>( - (eta - parameters.histogram_downstream_track_eta_min) * parameters.histogram_downstream_track_eta_nbins / - (parameters.histogram_downstream_track_eta_max - parameters.histogram_downstream_track_eta_min)); - atomicAdd(&dev_histogram_downstream_track_eta[bin], 1); - } - if (phi > parameters.histogram_downstream_track_phi_min && phi < parameters.histogram_downstream_track_phi_max) { - const unsigned int bin = static_cast<unsigned int>( - (phi - parameters.histogram_downstream_track_phi_min) * parameters.histogram_downstream_track_phi_nbins / - (parameters.histogram_downstream_track_phi_max - parameters.histogram_downstream_track_phi_min)); - atomicAdd(&dev_histogram_downstream_track_phi[bin], 1); - } - if ( - nhits > parameters.histogram_downstream_track_nhits_min && - nhits < parameters.histogram_downstream_track_nhits_max) { - const unsigned int bin = static_cast<unsigned int>( - (nhits - parameters.histogram_downstream_track_nhits_min) * parameters.histogram_downstream_track_nhits_nbins / - (parameters.histogram_downstream_track_nhits_max - parameters.histogram_downstream_track_nhits_min)); - atomicAdd(&dev_histogram_downstream_track_nhits[bin], 1); + // Scifi idx + for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { + downstream_track_scifi_indices[track_idx] = downstream_tracks.scifi(track_idx); + } + + // Fill hits + for (unsigned track_idx = threadIdx.x; track_idx < downstream_tracks_size; track_idx += blockDim.x) { + const auto nhits = downstream_tracks.n_hits(track_idx); + const auto target_hit_offset = downstream_hit_number_offsets[track_idx]; + for (unsigned hit_idx = 0; hit_idx < nhits; hit_idx++) { + downstream_track_hits.set( + target_hit_offset + hit_idx, ut_hits.getHit(downstream_tracks.hits(track_idx, hit_idx))); } } + + __syncthreads(); +} + +__device__ void downstream_consolidate::downstream_consolidate_t::monitor( + const downstream_consolidate::Parameters& parameters, + const Allen::Views::Physics::DownstreamTrack downstream_track, + const Allen::Views::Physics::KalmanState downstream_state, + gsl::span<unsigned> dev_histogram_downstream_track_eta, + gsl::span<unsigned> dev_histogram_downstream_track_phi, + gsl::span<unsigned> dev_histogram_downstream_track_nhits) +{ + const auto nhits = downstream_track.number_of_hits(); + const auto tx = downstream_state.tx(); + const auto ty = downstream_state.ty(); + const auto slope2 = tx * tx + ty * ty; + const auto rho = std::sqrt(slope2); + const auto eta = eta_from_rho(rho); + const auto phi = std::atan2(ty, tx); + + // Filling histograms + if (eta > parameters.histogram_downstream_track_eta_min && eta < parameters.histogram_downstream_track_eta_max) { + const unsigned int bin = static_cast<unsigned int>( + (eta - parameters.histogram_downstream_track_eta_min) * parameters.histogram_downstream_track_eta_nbins / + (parameters.histogram_downstream_track_eta_max - parameters.histogram_downstream_track_eta_min)); + atomicAdd(&dev_histogram_downstream_track_eta[bin], 1); + } + if (phi > parameters.histogram_downstream_track_phi_min && phi < parameters.histogram_downstream_track_phi_max) { + const unsigned int bin = static_cast<unsigned int>( + (phi - parameters.histogram_downstream_track_phi_min) * parameters.histogram_downstream_track_phi_nbins / + (parameters.histogram_downstream_track_phi_max - parameters.histogram_downstream_track_phi_min)); + atomicAdd(&dev_histogram_downstream_track_phi[bin], 1); + } + if ( + nhits > parameters.histogram_downstream_track_nhits_min && + nhits < parameters.histogram_downstream_track_nhits_max) { + const unsigned int bin = static_cast<unsigned int>( + (nhits - parameters.histogram_downstream_track_nhits_min) * parameters.histogram_downstream_track_nhits_nbins / + (parameters.histogram_downstream_track_nhits_max - parameters.histogram_downstream_track_nhits_min)); + atomicAdd(&dev_histogram_downstream_track_nhits[bin], 1); + } +} -- GitLab From b21754f4b43accdb5b574eeeb64b6f9ebb97689c Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Tue, 16 Jan 2024 18:36:30 -0500 Subject: [PATCH 14/18] atomicadds in ismuon --- device/muon/is_muon/src/IsMuon.cu | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/device/muon/is_muon/src/IsMuon.cu b/device/muon/is_muon/src/IsMuon.cu index 285990c0fc9..6c4dc055743 100644 --- a/device/muon/is_muon/src/IsMuon.cu +++ b/device/muon/is_muon/src/IsMuon.cu @@ -160,7 +160,7 @@ __global__ void is_muon::is_muon( const auto& state = parameters.dev_scifi_states[event_offset + track_id]; if (momentum < dev_muon_momentum_cuts[0]) { - ++dev_histogram_n_muons[0]; + atomicAdd(&dev_histogram_n_muons[0], 1); continue; } @@ -213,7 +213,7 @@ __global__ void is_muon::is_muon( parameters.dev_is_muon[event_offset + track_id] = true; // monitoring - ++dev_histogram_n_muons[1]; + atomicAdd(&dev_histogram_n_muons[1], 1); unsigned n_stations = 0; if (occupancies[2] != 0) { ++n_stations; @@ -221,7 +221,7 @@ __global__ void is_muon::is_muon( if (occupancies[3] != 0) { ++n_stations; } - ++dev_histogram_muon_n_stations[n_stations]; + atomicAdd(&dev_histogram_muon_n_stations[n_stations], 1); const auto long_track = long_tracks.track(track_id); const auto velo_track = long_track.track_segment<Allen::Views::Physics::Track::segment::velo>(); const auto velo_track_index = velo_track.track_index(); @@ -230,7 +230,7 @@ __global__ void is_muon::is_muon( const float pt = long_track.pt(velo_state); if (pt < unsigned(1e4)) { const unsigned bin = std::floor(pt / 10.f); - ++dev_histogram_muon_pt[bin]; + atomicAdd(&dev_histogram_muon_pt[bin], 1); } } else if (momentum < dev_muon_momentum_cuts[2]) { @@ -238,7 +238,7 @@ __global__ void is_muon::is_muon( // monitoring if ((occupancies[2] != 0) || (occupancies[3] != 0)) { - ++dev_histogram_n_muons[1]; + atomicAdd(&dev_histogram_n_muons[1], 1); unsigned n_stations = 0; if (occupancies[2] != 0) { ++n_stations; @@ -246,7 +246,7 @@ __global__ void is_muon::is_muon( if (occupancies[3] != 0) { ++n_stations; } - ++dev_histogram_muon_n_stations[n_stations]; + atomicAdd(&dev_histogram_muon_n_stations[n_stations], 1); const auto long_track = long_tracks.track(track_id); const auto velo_track = long_track.track_segment<Allen::Views::Physics::Track::segment::velo>(); const auto velo_track_index = velo_track.track_index(); @@ -255,11 +255,11 @@ __global__ void is_muon::is_muon( const float pt = long_track.pt(velo_state); if (pt < unsigned(1e4)) { const unsigned bin = std::floor(pt / 10.f); - ++dev_histogram_muon_pt[bin]; + atomicAdd(&dev_histogram_muon_pt[bin], 1); } } else { - ++dev_histogram_n_muons[0]; + atomicAdd(&dev_histogram_n_muons[0], 1); } } else { @@ -267,8 +267,8 @@ __global__ void is_muon::is_muon( // monitoring if ((occupancies[2] != 0) && (occupancies[3] != 0)) { - ++dev_histogram_n_muons[1]; - ++dev_histogram_muon_n_stations[2]; + atomicAdd(&dev_histogram_n_muons[1], 1); + atomicAdd(&dev_histogram_muon_n_stations[2], 1); const auto long_track = long_tracks.track(track_id); const auto velo_track = long_track.track_segment<Allen::Views::Physics::Track::segment::velo>(); const auto velo_track_index = velo_track.track_index(); @@ -277,17 +277,17 @@ __global__ void is_muon::is_muon( const float pt = long_track.pt(velo_state); if (pt < unsigned(1e4)) { const unsigned bin = std::floor(pt / 10.f); - ++dev_histogram_muon_pt[bin]; + atomicAdd(&dev_histogram_muon_pt[bin], 1); } } else { - ++dev_histogram_n_muons[0]; + atomicAdd(&dev_histogram_n_muons[0], 1); } } parameters.dev_lepton_id[event_offset + track_id] = parameters.dev_is_muon[event_offset + track_id]; } else { - ++dev_histogram_n_muons[0]; + atomicAdd(&dev_histogram_n_muons[0], 1); } } } -- GitLab From 2e1de4013ab822e73085c9c9e816648bdf513e17 Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Mon, 22 Jan 2024 12:19:02 -0500 Subject: [PATCH 15/18] remove rate histogram --- .../Hlt1/include/GatherSelections.cuh | 3 --- .../selections/Hlt1/src/GatherSelections.cu | 19 ------------------- 2 files changed, 22 deletions(-) diff --git a/device/selections/Hlt1/include/GatherSelections.cuh b/device/selections/Hlt1/include/GatherSelections.cuh index 50e893f6f6b..2fa0fd5e0ea 100644 --- a/device/selections/Hlt1/include/GatherSelections.cuh +++ b/device/selections/Hlt1/include/GatherSelections.cuh @@ -89,9 +89,6 @@ namespace gather_selections { mutable std::vector<std::unique_ptr<Gaudi::Accumulators::Counter<>>> m_rate_counters; gaudi_monitoring::Lockable_Histogram<>* histogram_line_passes; gaudi_monitoring::Lockable_Histogram<>* histogram_line_rates; - gaudi_monitoring::Lockable_Histogram<>* histogram_line_rates_normalized; - bool rate_ref_line; - unsigned rate_ref_line_index; #endif }; } // namespace gather_selections diff --git a/device/selections/Hlt1/src/GatherSelections.cu b/device/selections/Hlt1/src/GatherSelections.cu index 71dc2525533..0b4a292859d 100644 --- a/device/selections/Hlt1/src/GatherSelections.cu +++ b/device/selections/Hlt1/src/GatherSelections.cu @@ -156,12 +156,7 @@ void gather_selections::gather_selections_t::init() std::istringstream is(line_names); std::string line_name; std::vector<std::string> line_labels; - rate_ref_line = false; while (std::getline(is, line_name, ',')) { - if (line_name == "Hlt1ODIN1kHzLumi") { - rate_ref_line = true; - rate_ref_line_index = line_labels.size(); - } const std::string pass_counter_name {line_name + "Pass"}; const std::string rate_counter_name {line_name + "Rate"}; m_pass_counters.push_back(std::make_unique<Gaudi::Accumulators::Counter<>>(this, pass_counter_name)); @@ -174,8 +169,6 @@ void gather_selections::gather_selections_t::init() {this, "line_passes", "line passes", {unsigned(n_lines), 0, n_lines, {}, line_labels}}, {}}; histogram_line_rates = new gaudi_monitoring::Lockable_Histogram<> { {this, "line_rates", "line rates", {unsigned(n_lines), 0, n_lines, {}, line_labels}}, {}}; - histogram_line_rates_normalized = new gaudi_monitoring::Lockable_Histogram<> { - {this, "line_rates_normalized", "line rates normalized", {unsigned(n_lines), 0, n_lines, {}, line_labels}}, {}}; #endif } @@ -342,31 +335,19 @@ void gather_selections::gather_selections_t::operator()( // Monitoring auto host_histo_line_passes = make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); auto host_histo_line_rates = make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); - auto host_histo_line_rates_normalized = - make_host_buffer<unsigned>(arguments, first<host_number_of_active_lines_t>(arguments)); Allen::copy_async(host_histo_line_passes.get(), dev_histo_line_passes.get(), context, Allen::memcpyDeviceToHost); Allen::copy_async(host_histo_line_rates.get(), dev_histo_line_rates.get(), context, Allen::memcpyDeviceToHost); - Allen::memset_async( - host_histo_line_rates_normalized.data(), 0, host_histo_line_rates_normalized.size() * sizeof(unsigned), context); Allen::synchronize(context); - float t = std::numeric_limits<float>::max(); - if (rate_ref_line) t = host_histo_line_rates[rate_ref_line_index] / 1000.f; for (unsigned i = 0; i < first<host_number_of_active_lines_t>(arguments); i++) { m_pass_counters[i]->buffer() += host_histo_line_passes[i]; m_rate_counters[i]->buffer() += host_histo_line_rates[i]; - if (rate_ref_line) host_histo_line_rates_normalized[i] = host_histo_line_rates[i] / t; } gaudi_monitoring::details::fill_gaudi_histogram( host_histo_line_passes.get(), histogram_line_passes, 0u, first<host_number_of_active_lines_t>(arguments)); gaudi_monitoring::details::fill_gaudi_histogram( host_histo_line_rates.get(), histogram_line_rates, 0u, first<host_number_of_active_lines_t>(arguments)); - gaudi_monitoring::details::fill_gaudi_histogram( - host_histo_line_rates_normalized.get(), - histogram_line_rates_normalized, - 0u, - first<host_number_of_active_lines_t>(arguments)); #endif // Reduce output mask to its proper size -- GitLab From d81d1850e302603bbd399e9348f710207266edab Mon Sep 17 00:00:00 2001 From: kaaricha <kate.abigail.richardson@cern.ch> Date: Fri, 1 Mar 2024 20:47:09 -0500 Subject: [PATCH 16/18] fix failing test --- device/calo/clustering/src/CaloFindClusters.cu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/device/calo/clustering/src/CaloFindClusters.cu b/device/calo/clustering/src/CaloFindClusters.cu index fd85d142f5b..2ceff91a96f 100755 --- a/device/calo/clustering/src/CaloFindClusters.cu +++ b/device/calo/clustering/src/CaloFindClusters.cu @@ -84,11 +84,11 @@ __device__ void simple_clusters( cluster.CaloNeutralE19 = calo.getE(seed_cluster.id, seed_cluster.adc) / cluster.e; // Fill histograms - if (cluster.e < 50000) { + if (0 < cluster.e && cluster.e < 50000) { const unsigned bin = std::floor(cluster.e / 10); atomicAdd(&histogram_cluster_e[bin], 1); } - if (cluster.et < 5000) { + if (0< cluster.et && cluster.et < 5000) { const unsigned bin = std::floor(cluster.et / 10); atomicAdd(&histogram_cluster_et[bin], 1); } -- GitLab From 483d058ab5a94e934693e430c7fe4724064920c7 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Sat, 2 Mar 2024 01:47:49 +0000 Subject: [PATCH 17/18] Fixed formatting patch generated by https://gitlab.cern.ch/lhcb/Allen/-/jobs/36645534 --- device/calo/clustering/src/CaloFindClusters.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device/calo/clustering/src/CaloFindClusters.cu b/device/calo/clustering/src/CaloFindClusters.cu index 2ceff91a96f..32f57bbec4f 100755 --- a/device/calo/clustering/src/CaloFindClusters.cu +++ b/device/calo/clustering/src/CaloFindClusters.cu @@ -88,7 +88,7 @@ __device__ void simple_clusters( const unsigned bin = std::floor(cluster.e / 10); atomicAdd(&histogram_cluster_e[bin], 1); } - if (0< cluster.et && cluster.et < 5000) { + if (0 < cluster.et && cluster.et < 5000) { const unsigned bin = std::floor(cluster.et / 10); atomicAdd(&histogram_cluster_et[bin], 1); } -- GitLab From d072be47e8e5a7cebe0ce6400cdf631c2703324e Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Sat, 2 Mar 2024 21:19:45 +0000 Subject: [PATCH 18/18] Fixed formatting patch generated by https://gitlab.cern.ch/lhcb/Allen/-/jobs/36655454 --- device/kalman/ParKalman/src/MakeLongTrackParticles.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu index f5c0409f017..add01e2e21c 100644 --- a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu +++ b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu @@ -93,7 +93,7 @@ void __global__ make_long_track_particles::make_particles( const unsigned number_of_tracks = event_long_tracks.size(); const auto pv_table = parameters.dev_kalman_pv_tables[event_number]; - if (number_of_tracks < UT::Constants::max_num_tracks+1) atomicAdd(&dev_histogram_n_trks[number_of_tracks], 1); + if (number_of_tracks < UT::Constants::max_num_tracks + 1) atomicAdd(&dev_histogram_n_trks[number_of_tracks], 1); for (unsigned i = threadIdx.x; i < number_of_tracks; i += blockDim.x) { const auto* long_track = &(event_long_tracks.track(i)); -- GitLab