From 9daad83778c09a89edd78e13fd2d57741d48f95e Mon Sep 17 00:00:00 2001
From: Miguel Ruiz Diaz <miguel.ruiz.diaz@cern.ch>
Date: Wed, 5 Feb 2025 12:15:38 +0000
Subject: [PATCH] Eta distribution of track residuals added to FTTrackMonitor

---
 Tr/TrackMonitors/src/FTTrackMonitor.cpp | 31 ++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/Tr/TrackMonitors/src/FTTrackMonitor.cpp b/Tr/TrackMonitors/src/FTTrackMonitor.cpp
index be8c6b256e0..976cdc4e1ec 100644
--- a/Tr/TrackMonitors/src/FTTrackMonitor.cpp
+++ b/Tr/TrackMonitors/src/FTTrackMonitor.cpp
@@ -135,11 +135,15 @@ private:
       "residualPerSiPM",
       "(biased) residual per SiPM",
       { { FTConstants::nSiPMsTotal, -0.5, FTConstants::nSiPMsTotal - 0.5, "X" }, { 50, -1., 1., "Y" } } };
+  mutable Gaudi::Accumulators::ProfileHistogram<1> m_residualPerEta{
+      this, "TrackResidualPerEta", "Track residuals per eta", { 100, 2, 5, "Eta" } };
 
   // Plots split by SciFi module
   struct HistoModules {
-    mutable Gaudi::Accumulators::Histogram<1> UnbiasedResidualModules_permodule;
-    mutable Gaudi::Accumulators::Histogram<1> RMSResidualModules_permodule;
+    mutable Gaudi::Accumulators::Histogram<1>        UnbiasedResidualModules_permodule;
+    mutable Gaudi::Accumulators::Histogram<1>        RMSResidualModules_permodule;
+    mutable Gaudi::Accumulators::ProfileHistogram<1> UnbiasedResidualModules_permodule_eta;
+    mutable Gaudi::Accumulators::ProfileHistogram<1> UnbiasedResidualModules_permodule_y;
 
     HistoModules( const FTTrackMonitor* owner, unsigned int module_id )
         : UnbiasedResidualModules_permodule{ owner,
@@ -149,7 +153,18 @@ private:
         , RMSResidualModules_permodule{ owner,
                                         LHCb::Detector::FTUtils::globalModuleToLocalString( module_id ),
                                         LHCb::Detector::FTUtils::globalModuleToLocalString( module_id ),
-                                        { 200, -2. * Gaudi::Units::mm, 2. * Gaudi::Units::mm, "X" } } {}
+                                        { 200, -2. * Gaudi::Units::mm, 2. * Gaudi::Units::mm, "X" } }
+        , UnbiasedResidualModules_permodule_eta{ owner,
+                                                 fmt::format(
+                                                     "{}_eta",
+                                                     LHCb::Detector::FTUtils::globalModuleToLocalString( module_id ) ),
+                                                 LHCb::Detector::FTUtils::globalModuleToLocalString( module_id ),
+                                                 { 100, 2, 5, "Eta" } }
+        , UnbiasedResidualModules_permodule_y{
+              owner,
+              fmt::format( "{}_y", LHCb::Detector::FTUtils::globalModuleToLocalString( module_id ) ),
+              LHCb::Detector::FTUtils::globalModuleToLocalString( module_id ),
+              { 100, 0, 2400, "y [mm]" } } {}
   };
 
   // Plots split by SciFi station
@@ -365,6 +380,10 @@ void FTTrackMonitor::fillNodeInfo( LHCb::Track const& track, FitResultType const
       m_UnbiasedResidualModules[uniqueModule] += node.unbiasedResidual();
       m_UnbiasedResidualQuarters[uniqueQuarter] += node.unbiasedResidual();
 
+      // Plot resiadials as a function of track eta
+      const double eta = track.pseudoRapidity();
+      m_residualPerEta[eta] += node.unbiasedResidual();
+
       ++m_unbiasedFTResidualLayer[{ uniqueLayer, node.unbiasedResidual() }];
       ++m_biasedFTResidualLayer[{ uniqueLayer, node.residual() }];
       ++m_residualPerModule[{ uniqueModule, node.residual() }];
@@ -374,9 +393,9 @@ void FTTrackMonitor::fillNodeInfo( LHCb::Track const& track, FitResultType const
       if ( m_verboseMode.value() ) {
         auto& histos_modules = m_histograms_modules.at( chan.globalModuleIdx() );
         ++histos_modules.UnbiasedResidualModules_permodule[node.unbiasedResidual()];
-        if ( node.errResidual2() > TrackParameters::lowTolerance ) {
-          ++histos_modules.RMSResidualModules_permodule[residualRms];
-        }
+        histos_modules.UnbiasedResidualModules_permodule_eta[eta] += node.unbiasedResidual();
+        histos_modules.UnbiasedResidualModules_permodule_y[fabs( state( node ).position().y() )] +=
+            node.unbiasedResidual();
       }
 
       // plots per layer
-- 
GitLab