diff --git a/configuration/python/AllenConf/HLT1_cosmics.py b/configuration/python/AllenConf/HLT1_cosmics.py
index 7711d046475cd2cd4865157740e89b1459165c16..1d4e0ec3369d95ea49408ef51ecaca9daf67e9d4 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)
+    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 b0811c0155f2c4df62824ba45157b810e9a7d1cd..97b50026085133eb8946e1b03dc55605468e4d75 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,9 @@ 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 c0b4452ff8631f0ad3aa9e740f5052cd7fe6c5e4..41439ba13096dda6ca500ea53003fc60f71d786f 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)
+        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 ec2cfc2a3ab3777d0a5c807d70dbc7594d2403f8..e382e9dad8474c4bc1a97e5ab483955a1f74dfc1 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"]
@@ -123,10 +123,11 @@ 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,
-        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=
@@ -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(
@@ -206,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()
@@ -216,9 +220,10 @@ 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/PV/beamlinePV/src/pv_beamline_cleanup.cu b/device/PV/beamlinePV/src/pv_beamline_cleanup.cu
index 45bdf874459fa2819ea169e7327bc30324c92fd9..886cd0724a63d970532f2af42cb69bd11cb85ed0 100644
--- a/device/PV/beamlinePV/src/pv_beamline_cleanup.cu
+++ b/device/PV/beamlinePV/src/pv_beamline_cleanup.cu
@@ -16,10 +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_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 +25,11 @@ 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}}, {}};
 #endif
 }
 
@@ -48,14 +49,12 @@ 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_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_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);
   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);
@@ -81,8 +80,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},
@@ -139,15 +138,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) {
@@ -163,8 +162,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 75163b6d12e3c1838c1284ef84c0cb8a6b0d6f51..3ef18bcacf19035d274e32dc575a93eadfb2b3f2 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
 
@@ -183,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 efc74b9334f3543cd6d6d9623a24bcbc342a3d12..fdae0e1d0991e374a9253aa5f51f758c1b8d4b19 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 fff2ea021ed11c6a08537c943b1e274ff0d8401c..df17c94a9646f6cf07cd8e8dda89bc1013e62b57 100644
--- a/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh
+++ b/device/SciFi/hybridseeding/consolidate/include/ConsolidateSciFiSeeding.cuh
@@ -152,13 +152,13 @@ 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};
-    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 61ef2ffa591acd23c54d7d7fbafdb0c378e4e093..087c1776bbee6b823d4bca8fb741ad48eda13f81 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", {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, 80u);
+  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,9 +237,8 @@ __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) {
-    unsigned bin = std::floor(number_of_tracks_event / 2.5);
-    atomicAdd(&dev_histogram_scifi_n_tracks[bin], 1);
+  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/calo/clustering/include/CaloFindClusters.cuh b/device/calo/clustering/include/CaloFindClusters.cuh
index 6b4f8df91f4c8771c533a47c331c598fc80557af..4208b9276e69e0cac767d85cea0027ff924a0647 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,21 @@ 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 +63,13 @@ 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 e39a6c44dfd1dd50d11478e66e006ce45a0b93ea..32f57bbec4fe9c59dfe8a59ca01064bb5fc54211 100755
--- a/device/calo/clustering/src/CaloFindClusters.cu
+++ b/device/calo/clustering/src/CaloFindClusters.cu
@@ -13,6 +13,24 @@
 
 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}}, {}};
+#endif
+}
+
 __device__ void simple_clusters(
   CaloDigit const* digits,
   CaloSeedCluster const* seed_clusters,
@@ -20,7 +38,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 +58,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);
+          atomicAdd(&histogram_digit_e[bin], 1);
+        }
       }
     }
     cluster.e -= corrections[c];
@@ -53,13 +82,37 @@ __device__ void simple_clusters(
     }
     cluster.CalcEt();
     cluster.CaloNeutralE19 = calo.getE(seed_cluster.id, seed_cluster.adc) / cluster.e;
+
+    // Fill histograms
+    if (0 < cluster.e && cluster.e < 50000) {
+      const unsigned bin = std::floor(cluster.e / 10);
+      atomicAdd(&histogram_cluster_e[bin], 1);
+    }
+    if (0 < cluster.et && cluster.et < 5000) {
+      const unsigned bin = std::floor(cluster.et / 10);
+      atomicAdd(&histogram_cluster_et[bin], 1);
+    }
+    if (cluster.x < 4000 && cluster.x > -4000) {
+      const unsigned bin = std::floor(cluster.x / 10) + 400;
+      atomicAdd(&histogram_cluster_x[bin], 1);
+    }
+    if (cluster.y < 4000 && cluster.y > -4000) {
+      const unsigned bin = std::floor(cluster.y / 10) + 400;
+      atomicAdd(&histogram_cluster_y[bin], 1);
+    }
   }
 }
 
 __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 +123,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 < 401) atomicAdd(&histogram_n_clusters[ecal_num_clusters], 1);
+
   simple_clusters(
     parameters.dev_ecal_digits + ecal_digits_offset,
     parameters.dev_ecal_seed_clusters + Calo::Constants::ecal_max_index / 8 * event_number,
@@ -77,7 +133,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 +155,41 @@ __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, 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);
+  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.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},
+                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/downstream/consolidate/src/DownstreamConsolidate.cu b/device/downstream/consolidate/src/DownstreamConsolidate.cu
index ccf30afeeeae0a80f3a71c4a3db6cce050812d32..044736d4cd4c2161773e8a38c01c4ae910617087 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);
   }
 }
diff --git a/device/event_model/common/include/ParticleTypes.cuh b/device/event_model/common/include/ParticleTypes.cuh
index 772ce8f999e72556b40c1cb36de9cf4818754599..a5f2caff0942e8d4f790d7814cc5b881b44c0015 100644
--- a/device/event_model/common/include/ParticleTypes.cuh
+++ b/device/event_model/common/include/ParticleTypes.cuh
@@ -259,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> {
diff --git a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu
index f64b55dfc91b3c5a089c7581cfd4b6732c8a916c..add01e2e21cd449e939eb8ecf8da756f153180a0 100644
--- a/device/kalman/ParKalman/src/MakeLongTrackParticles.cu
+++ b/device/kalman/ParKalman/src/MakeLongTrackParticles.cu
@@ -17,11 +17,12 @@ 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}}, {}};
+    {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 =
-    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
 }
 
@@ -43,10 +44,10 @@ 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_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_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);
   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);
@@ -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, 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 +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) 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));
@@ -106,13 +107,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 2519c2bf7dde7ab8a3f8ec8206bfaa9246574edb..107cccbcdfadd808ab6b4fa39e9f6f88ffbc8a84 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;
@@ -33,12 +38,18 @@ 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);
+  __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;
 
+    void init();
     void operator()(
       const ArgumentReferences<Parameters>& arguments,
       const RuntimeOptions& runtime_options,
@@ -47,5 +58,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 af0c20a16c223c006284bd63664e5dd0883df27b..6c4dc055743f597d175c4435b9aecae4e4896914 100644
--- a/device/muon/is_muon/src/IsMuon.cu
+++ b/device/muon/is_muon/src/IsMuon.cu
@@ -13,6 +13,17 @@
 
 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_muon_n_stations =
+    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}}, {}};
+#endif
+}
+
 void is_muon::is_muon_t::set_arguments_size(
   ArgumentReferences<Parameters> arguments,
   const RuntimeOptions&,
@@ -31,12 +42,34 @@ 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.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
 }
 
 __device__ float elliptical_foi_window(const float a, const float b, const float c, const float momentum)
@@ -83,7 +116,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 +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]) {
+      atomicAdd(&dev_histogram_n_muons[0], 1);
       continue;
     }
 
@@ -174,14 +211,83 @@ __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;
+
+        // monitoring
+        atomicAdd(&dev_histogram_n_muons[1], 1);
+        unsigned n_stations = 0;
+        if (occupancies[2] != 0) {
+          ++n_stations;
+        }
+        if (occupancies[3] != 0) {
+          ++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();
+        const auto endvelo_states = parameters.dev_velo_states_view[event_number];
+        const auto velo_state = endvelo_states.state(velo_track_index);
+        const float pt = long_track.pt(velo_state);
+        if (pt < unsigned(1e4)) {
+          const unsigned bin = std::floor(pt / 10.f);
+          atomicAdd(&dev_histogram_muon_pt[bin], 1);
+        }
       }
       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)) {
+          atomicAdd(&dev_histogram_n_muons[1], 1);
+          unsigned n_stations = 0;
+          if (occupancies[2] != 0) {
+            ++n_stations;
+          }
+          if (occupancies[3] != 0) {
+            ++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();
+          const auto endvelo_states = parameters.dev_velo_states_view[event_number];
+          const auto velo_state = endvelo_states.state(velo_track_index);
+          const float pt = long_track.pt(velo_state);
+          if (pt < unsigned(1e4)) {
+            const unsigned bin = std::floor(pt / 10.f);
+            atomicAdd(&dev_histogram_muon_pt[bin], 1);
+          }
+        }
+        else {
+          atomicAdd(&dev_histogram_n_muons[0], 1);
+        }
       }
       else {
         parameters.dev_is_muon[event_offset + track_id] = (occupancies[2] != 0) && (occupancies[3] != 0);
+
+        // monitoring
+        if ((occupancies[2] != 0) && (occupancies[3] != 0)) {
+          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();
+          const auto endvelo_states = parameters.dev_velo_states_view[event_number];
+          const auto velo_state = endvelo_states.state(velo_track_index);
+          const float pt = long_track.pt(velo_state);
+          if (pt < unsigned(1e4)) {
+            const unsigned bin = std::floor(pt / 10.f);
+            atomicAdd(&dev_histogram_muon_pt[bin], 1);
+          }
+        }
+        else {
+          atomicAdd(&dev_histogram_n_muons[0], 1);
+        }
       }
       parameters.dev_lepton_id[event_offset + track_id] = parameters.dev_is_muon[event_offset + track_id];
     }
+    else {
+      atomicAdd(&dev_histogram_n_muons[0], 1);
+    }
   }
 }
diff --git a/device/selections/lines/calibration/include/D2KPiLine.cuh b/device/selections/lines/calibration/include/D2KPiLine.cuh
index 9d201bd350f14d0c1f72b80f0a490664acf681f0..34ab96da75e3d961e7a28842b24ede0747799d17 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 f4b0753f5e59cb463692700ff6011a66f7591c3d..c8e5e61d816663175b8c0dd5eeb6960416650150 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 e5e58ee315094cd1e067d66634962d20aaf6126c..975734d8bb8f03cd852018ff79a2dbeedb73723e 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 cf8ecbd482c47d64923cfa6ce7a3dd1e8ba2491a..e599309f5e668532c1bf24b20bbb0b0cde90cefb 100644
--- a/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh
+++ b/device/track_matching/consolidate/include/ConsolidateMatchedTracks.cuh
@@ -167,13 +167,13 @@ 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};
-    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 37119ec74416cda09c7a2aa13d5cf1135682d90a..2c092c676cf31b0443596903511b41abfe25237b 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 c55981435e23acec131cfe76e12cb10173649e4a..468978a82f86887052a22747899e16b7697d5f67 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 ba2057e605c663b64871b6eeaa6ea954e07384fc..6d323787adc372784cddf9aca5b7f9a10c79591b 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 cf26ecc26d45fae7a9d309ce3db15f56a7c38d81..c815910a39f1527c1efdd2b754fa32660d404769 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);
diff --git a/main/include/GaudiMonitoring.h b/main/include/GaudiMonitoring.h
index 0a9c5d868f54b942414fe1d7414c0f6f0c826291..302b345de5807cc08c904b9ca44e20a20d2ea958 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];
           }