From 400635408f2a42902ee6bc8675a1baeae91af769 Mon Sep 17 00:00:00 2001
From: Salvador Marti <salvador.marti@ific.uv.es>
Date: Wed, 23 Dec 2020 09:57:27 +0100
Subject: [PATCH 1/7] removing conflicts

---
 .../src/IDAlignMonGenericTracks.cxx           |  89 ++++++-----
 .../src/IDAlignMonResiduals.cxx               | 143 +++++++++++++-----
 .../src/IDAlignMonResiduals.h                 |   1 +
 3 files changed, 155 insertions(+), 78 deletions(-)

diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx
index 0af2fb4750b9..65e66dd9831e 100644
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx
@@ -551,7 +551,6 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
   //if ( newLowStatFlag ) {    }
   //if ( newLumiBlockFlag() ) {    }
   if ( newRunFlag() ) {  
-
     //if user environment specified we don't want to book new histograms at every run boundary
     //we instead want one histogram per job
     if(m_histosBooked!=0 && AthenaMonManager::environment()==AthenaMonManager::user) return StatusCode::SUCCESS;
@@ -593,28 +592,37 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
     //###############
  
     
-    m_nhits_per_event = TH1F_LW::create("Nhits_per_event","Number of hits per event",1024,-0.5,1023.5);  
+    m_nhits_per_event = TH1F_LW::create("Nhits_per_event","Number of hits per event", 1024, -0.5, 1023.5);  
     RegisterHisto(al_mon,m_nhits_per_event) ;  
     m_nhits_per_event->GetXaxis()->SetTitle("Number of Hits on Tracks per Event"); 
-    m_nhits_per_event->GetYaxis()->SetTitle("Number of Events"); 
-    m_ntrk = TH1F_LW::create("ntracks","Number of Tracks",m_NTracksRange+1, -0.5, m_NTracksRange+0.5);
+    m_nhits_per_event->GetYaxis()->SetTitle("Number of Events");
+ 
+    m_ntrk = TH1F_LW::create("ntracks","Number of Tracks", m_NTracksRange+1, -0.5, m_NTracksRange+0.5);
     RegisterHisto(al_mon,m_ntrk);
+    m_ntrk->GetXaxis()->SetTitle("Number of Tracks");
+    m_ntrk->GetYaxis()->SetTitle("Number of Events");
+
     m_ngtrk = TH1F_LW::create("ngtracks","Number of Good Tracks",m_NTracksRange+1, -0.5, m_NTracksRange+0.5);
     RegisterHisto(al_mon,m_ngtrk);
-    m_nhits_per_track = TH1F_LW::create("Nhits_per_track","Number of hits per track",101,-0.5, 100.5);  
+    m_ngtrk->GetXaxis()->SetTitle("Number of Good Tracks");
+    m_ngtrk->GetYaxis()->SetTitle("Number of Events");
+
+    m_nhits_per_track = TH1F_LW::create("Nhits_per_track","Number of hits per track", 101, -0.5, 100.5);  
     RegisterHisto(al_mon,m_nhits_per_track) ; 
     m_nhits_per_track->GetXaxis()->SetTitle("Number of Hits per Track"); 
     m_nhits_per_track->GetYaxis()->SetTitle("Number of Tracks"); 
  
-    m_npixhits_per_track_barrel = TH1F_LW::create("Npixhits_per_track_barrel","Number of pixhits per track (Barrel)",14,-0.5,13.5);  
+    m_npixhits_per_track_barrel = TH1F_LW::create("Npixhits_per_track_barrel","Number of pixhits per track (Barrel)", 14,-0.5,13.5);  
     RegisterHisto(al_mon,m_npixhits_per_track_barrel) ;  
     m_npixhits_per_track_barrel->GetXaxis()->SetTitle("Number of Pixel Hits per Track in Barrel"); 
     m_npixhits_per_track_barrel->GetYaxis()->SetTitle("Number of Tracks"); 
-    m_nscthits_per_track_barrel = TH1F_LW::create("Nscthits_per_track_barrel","Number of scthits per track (Barrel)",30,-0.5,29.5);  
+
+    m_nscthits_per_track_barrel = TH1F_LW::create("Nscthits_per_track_barrel","Number of scthits per track (Barrel)", 30,-0.5,29.5);  
     RegisterHisto(al_mon,m_nscthits_per_track_barrel) ;  
     m_nscthits_per_track_barrel->GetXaxis()->SetTitle("Number of SCT Hits per Track in Barrel"); 
     m_nscthits_per_track_barrel->GetYaxis()->SetTitle("Number of Tracks"); 
-    m_ntrthits_per_track_barrel = TH1F_LW::create("Ntrthits_per_track_barrel","Number of trthits per track (Barrel)",100,-0.5,99.5);  
+
+    m_ntrthits_per_track_barrel = TH1F_LW::create("Ntrthits_per_track_barrel","Number of trthits per track (Barrel)", 100,-0.5,99.5);  
     RegisterHisto(al_mon,m_ntrthits_per_track_barrel) ; 
     m_ntrthits_per_track_barrel->GetXaxis()->SetTitle("Number of TRT Hits per Track in Barrel"); 
     m_ntrthits_per_track_barrel->GetYaxis()->SetTitle("Number of Tracks");   
@@ -623,10 +631,12 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
     RegisterHisto(al_mon,m_npixhits_per_track_eca) ;  
     m_npixhits_per_track_eca->GetXaxis()->SetTitle("Number of Pixel Hits per Track in ECA"); 
     m_npixhits_per_track_eca->GetYaxis()->SetTitle("Number of Tracks"); 
+
     m_nscthits_per_track_eca = TH1F_LW::create("Nscthits_per_track_eca","Number of scthits per track (Eca)",30,-0.5,29.5);  
     RegisterHisto(al_mon,m_nscthits_per_track_eca) ;  
     m_nscthits_per_track_eca->GetXaxis()->SetTitle("Number of SCT Hits per Track in ECA"); 
     m_nscthits_per_track_eca->GetYaxis()->SetTitle("Number of Tracks"); 
+
     m_ntrthits_per_track_eca = TH1F_LW::create("Ntrthits_per_track_eca","Number of trthits per track (Eca)",100,-0.5,99.5);  
     RegisterHisto(al_mon,m_ntrthits_per_track_eca) ;   
     m_ntrthits_per_track_eca->GetXaxis()->SetTitle("Number of TRT Hits per Track in ECA"); 
@@ -636,10 +646,12 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
     RegisterHisto(al_mon,m_npixhits_per_track_ecc) ;  
     m_npixhits_per_track_ecc->GetXaxis()->SetTitle("Number of Pixel Hits per Track in ECC"); 
     m_npixhits_per_track_ecc->GetYaxis()->SetTitle("Number of Tracks"); 
+
     m_nscthits_per_track_ecc = TH1F_LW::create("Nscthits_per_track_ecc","Number of scthits per track (Ecc)",30,-0.5,29.5);  
     RegisterHisto(al_mon,m_nscthits_per_track_ecc) ;  
     m_nscthits_per_track_ecc->GetXaxis()->SetTitle("Number of SCT Hits per Track in ECC"); 
     m_nscthits_per_track_ecc->GetYaxis()->SetTitle("Number of Tracks"); 
+
     m_ntrthits_per_track_ecc = TH1F_LW::create("Ntrthits_per_track_ecc","Number of trthits per track (Ecc)",100,-0.5,99.5);  
     RegisterHisto(al_mon,m_ntrthits_per_track_ecc) ;    
     m_ntrthits_per_track_ecc->GetXaxis()->SetTitle("Number of TRT Hits per Track in ECC"); 
@@ -648,30 +660,34 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
     ///////////////////////////////////////////////////////////////////////////////////////////////////
     //Monitoring plots shown in the dqm web page
     ///////////////////////////////////////////////////////////////////////////////////////////////////
-    m_chi2oDoF = TH1F_LW::create("chi2oDoF","chi2oDoF",100,0,10);  
+    m_chi2oDoF = TH1F_LW::create("chi2oDoF","chi2oDoF", 100, 0., 10.);  
     RegisterHisto(al_mon,m_chi2oDoF) ;  
     m_chi2oDoF->GetXaxis()->SetTitle("Track #chi^{2} / NDoF"); 
     m_chi2oDoF->GetYaxis()->SetTitle("Number of Tracks");  
-    m_eta = TH1F_LW::create("eta","eta",100,-m_etaRange,m_etaRange);  
+
+    m_eta = TH1F_LW::create("eta","eta", 80,-m_etaRange,m_etaRange);  
     RegisterHisto(al_mon_ls,m_eta) ;  
     m_eta->GetXaxis()->SetTitle("Track #eta"); 
-    m_eta->GetYaxis()->SetTitle("Number of Tracks"); 
-    m_phi = TH1F_LW::create("phi","phi",100,0,2*M_PI);  m_phi->SetMinimum(0);
+    m_eta->GetYaxis()->SetTitle("Number of Tracks");
+ 
+    m_phi = TH1F_LW::create("phi","phi", 80, 0,2*M_PI);  
     RegisterHisto(al_mon_ls,m_phi) ;  
+    m_phi->SetMinimum(0);
     m_phi->GetXaxis()->SetTitle("Track #phi"); 
     m_phi->GetYaxis()->SetTitle("Number of Tracks");  
-    m_d0_bscorr = TH1F_LW::create("d0_bscorr","d0 (corrected for beamspot); [mm]",400,-m_d0BsRange,m_d0BsRange);  
+
+    m_d0_bscorr = TH1F_LW::create("d0_bscorr","d0 (corrected for beamspot); d0 [mm]",200,-m_d0BsRange,m_d0BsRange);  
     RegisterHisto(al_mon_ls,m_d0_bscorr) ;  
     
     m_z0 = TH1F_LW::create("z0","z0;[mm]",100,-m_z0Range,m_z0Range);  
     RegisterHisto(al_mon,m_z0) ;  
     m_z0sintheta = TH1F_LW::create("z0sintheta","z0sintheta",100,-m_z0Range,m_z0Range);  
     RegisterHisto(al_mon,m_z0sintheta) ;  
+
     m_d0 = TH1F_LW::create("d0","d0;[mm]",400,-m_d0Range,m_d0Range);  
     RegisterHisto(al_mon,m_d0) ;  
     
 
-    
     m_npixhits_per_track = TH1F_LW::create("Npixhits_per_track","Number of pixhits per track",14,-0.5,13.5);  
     RegisterHisto(al_mon_ls,m_npixhits_per_track) ;  
     m_npixhits_per_track->GetXaxis()->SetTitle("Number of Pixel Hits per Track"); 
@@ -750,8 +766,6 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
     m_trk_pT_asym_ecc = TH1F_LW::create("trk_pT_asym_ecc","Track Charge Asymmetry versus pT (Endcap C) ",50,0,100);
     RegisterHisto(al_mon,m_trk_pT_asym_ecc);
     
-    
-    
 
     if(m_extendedPlots){
       
@@ -781,7 +795,7 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       RegisterHisto(al_mon, m_trk_pT_vs_eta_eca     );
 
       m_trk_d0_barrel  = TH1F_LW::create("trk_d0_barrel","Impact parameter: all tracks (Barrel); d_{0} [mm]",100, -m_d0Range, m_d0Range);
-      m_trk_d0c_barrel = TH1F_LW::create("trk_d0c_barrel","Impact parameter (corrected for vertex): all tracks (Barrel)",100, -5, 5);  
+      m_trk_d0c_barrel = TH1F_LW::create("trk_d0c_barrel","Impact parameter (corrected for vertex): all tracks (Barrel)",100, -4., 4.);  
       m_trk_z0_barrel  = TH1F_LW::create("trk_z0_barrel","Track z0: all tracks (Barrel)",100, -m_z0Range, m_z0Range);
       m_trk_d0_eca     = TH1F_LW::create("trk_d0_eca","Impact parameter: all tracks (Endcap A)",100, -m_d0Range, m_d0Range);
       m_trk_d0c_eca    = TH1F_LW::create("trk_d0c_eca","Impact parameter (corrected for vertex): all tracks  (Endcap A)",100, -m_d0Range, m_d0Range);  
@@ -808,8 +822,6 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       m_trk_chi2Prob = new TProfile("trk_chi2Prob","chi2Prob versus eta",100,-m_etaRange,m_etaRange,-5,5);  
       RegisterHisto(al_mon,m_trk_chi2Prob) ;
 
-    
-
       
       //Detailed IP Plots. All the PV Corrected are broken and need to be fixed.
       m_trk_d0_barrel_zoomin = TH1F_LW::create("trk_d0_barrel_zoomin","Impact parameter: all tracks (Barrel)",100,-5,5);
@@ -887,7 +899,6 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       
       
       
-      
       //PV corrected plots. Broken. 
       m_d0_pvcorr = TH1F_LW::create("d0_pvcorr","d0 (corrected for primVtx); [mm]",400,-m_d0Range,m_d0Range);  
       RegisterHisto(al_mon,m_d0_pvcorr) ; 
@@ -939,32 +950,32 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       m_trk_chi2ProbDist->GetYaxis()->SetTitle("Number of Tracks");
       RegisterHisto(al_mon,m_trk_chi2ProbDist) ;
       
-      m_errCotTheta = TH1F_LW::create("errCotTheta","Error of CotTheta",50,0,0.02);
+      m_errCotTheta = TH1F_LW::create("errCotTheta","Error of CotTheta", 40, 0, 0.02);
       RegisterHisto(al_mon,m_errCotTheta);  
       m_errCotTheta->GetXaxis()->SetTitle("Track #Delta(cot(#theta))"); 
       m_errCotTheta->GetYaxis()->SetTitle("Number of Tracks"); 
       
-      m_errCotThetaVsD0BS = new TH2F("errCotThetaVsD0BS","Error of CotTheta vs d0BS",-m_d0BsRange,m_d0BsRange,40,50,0 ,0.02);
+      m_errCotThetaVsD0BS = new TH2F("errCotThetaVsD0BS","Error of CotTheta vs d0BS", 50, -m_d0BsRange, m_d0BsRange, 40, 0. ,0.02);
       RegisterHisto(al_mon,m_errCotThetaVsD0BS) ;  
       m_errCotThetaVsD0BS->GetXaxis()->SetTitle("d0 (mm)"); 
       m_errCotThetaVsD0BS->GetYaxis()->SetTitle("Track #Delta(cot(#theta))"); 
 
-      m_errCotThetaVsPt = new TH2F("errCotThetaVsPt","Error of CotTheta vs Pt",50,0,40,50,0 ,0.02);
+      m_errCotThetaVsPt = new TH2F("errCotThetaVsPt","Error of CotTheta vs Pt",50,0,40, 40, 0. ,0.02);
       RegisterHisto(al_mon,m_errCotThetaVsPt) ;  
       m_errCotThetaVsPt->GetXaxis()->SetTitle("Pt (GeV/c)"); 
       m_errCotThetaVsPt->GetYaxis()->SetTitle("Track #Delta(cot(#theta))"); 
        
-      m_errCotThetaVsP = new TH2F("errCotThetaVsP","Error of CotTheta vs P",50,0,40,50,0 ,0.02);
+      m_errCotThetaVsP = new TH2F("errCotThetaVsP","Error of CotTheta vs P",50,0,40, 40, 0. ,0.02);
       RegisterHisto(al_mon,m_errCotThetaVsP) ;  
       m_errCotThetaVsP->GetXaxis()->SetTitle("P (GeV/c)"); 
       m_errCotThetaVsP->GetYaxis()->SetTitle("Track #Delta(cot(#theta))"); 
       
-      m_errCotThetaVsPhi = new TH2F("errCotThetaVsPhi","Error of CotTheta vs Phi",50,0,2*M_PI,50, 0 ,0.02);
+      m_errCotThetaVsPhi = new TH2F("errCotThetaVsPhi","Error of CotTheta vs Phi",50,0,2*M_PI, 40, 0. ,0.02);
       RegisterHisto(al_mon,m_errCotThetaVsPhi) ;  
       m_errCotThetaVsPhi->GetXaxis()->SetTitle("#phi0"); 
       m_errCotThetaVsPhi->GetYaxis()->SetTitle("Track #Delta(cot(#theta))"); 
       
-      m_errCotThetaVsEta = new TH2F("errCotThetaVsEta","Error of CotTheta vs Eta",50,-3., 3.,50, 0 ,0.02);
+      m_errCotThetaVsEta = new TH2F("errCotThetaVsEta","Error of CotTheta vs Eta",50,-3., 3., 40, 0. ,0.02);
       RegisterHisto(al_mon,m_errCotThetaVsEta) ;  
       m_errCotThetaVsEta->GetXaxis()->SetTitle("#eta"); 
       m_errCotThetaVsEta->GetYaxis()->SetTitle("Track #Delta(cot(#theta))"); 
@@ -973,12 +984,12 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       RegisterHisto(al_mon,m_errTheta);  
       m_errTheta->GetXaxis()->SetTitle("Track #Delta(#theta)"); 
       m_errTheta->GetYaxis()->SetTitle("Number of Tracks"); 
-    
+
       m_errThetaVsD0BS = new TH2F("errThetaVsD0BS","Error of Theta vs d0BS",50,-m_d0BsRange,m_d0BsRange,50,0 ,0.02);
       RegisterHisto(al_mon,m_errThetaVsD0BS) ;  
       m_errThetaVsD0BS->GetXaxis()->SetTitle("d0 (mm)"); 
       m_errThetaVsD0BS->GetYaxis()->SetTitle("Track #delta(#theta)");
-      
+
       m_errThetaVsPt = new TH2F("errThetaVsPt","Error of Theta vs Pt",50,0,50,50,0 ,0.02);
       RegisterHisto(al_mon,m_errThetaVsPt) ;  
       m_errThetaVsPt->GetXaxis()->SetTitle("Pt (GeV/c)"); 
@@ -1134,7 +1145,7 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       RegisterHisto(al_mon,m_PtVsPhi0Neg);
       m_PtVsPhi0Neg->GetXaxis()->SetTitle("#phi0 (rad)"); 
       m_PtVsPhi0Neg->GetYaxis()->SetTitle("Pt (GeV/c)");  
-      
+
       m_errPtVsEta = new TH2F("errPtVsEta", "Error of Pt Vs Eta", 50, -3., 3.,50, 0., 0.5);
       RegisterHisto(al_mon,m_errPtVsEta);
       m_errPtVsEta->GetXaxis()->SetTitle("#eta"); 
@@ -1188,7 +1199,7 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       m_QPtVsEta->GetXaxis()->SetTitle("#eta"); 
       RegisterHisto(al_mon,m_QPtVsEta);
       m_QPtVsEta->GetYaxis()->SetTitle("qPt (GeV)");  
-      
+
       //Plots to check the BeamSpot
       // versus Phi0
       m_D0bsVsPhi0 = new TH2F("D0bsVsPhi0", "d0_{bs} Vs #phi0 ", 50, 0, 2*M_PI, 400, -m_d0BsRange, m_d0BsRange);
@@ -1237,7 +1248,7 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       m_D0bsVsPtBarrel->GetXaxis()->SetTitle("qPt (GeV)"); 
       RegisterHisto(al_mon,m_D0bsVsPtBarrel);
       m_D0bsVsPtBarrel->GetYaxis()->SetTitle("d0_{bs} mm )");
-     
+
       //BeamSpot Position histos
       m_YBs_vs_XBs = new TH2F("YBs_vs_XBs","BeamSpot Position: y vs x",100, -0.9,-0.1, 100, -0.9,-0.1);
       RegisterHisto(al_mon,m_YBs_vs_XBs);
@@ -1307,7 +1318,7 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
       m_BeamSpotTiltY_vs_LumiBlock->GetYaxis()->SetRangeUser(-1,1);
         
     }
-    
+
     
     //These plots are broken. Have to be passed to the PVbiases tool
     m_trk_d0_wrtPV = TH1F_LW::create("d0_pvcorr_est","d0 (corrected for primVtx v2); [mm]",400,-0.2,0.2);  
@@ -1551,7 +1562,7 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
     m_eta_asym->GetYaxis()->SetTitle("(pos-neg)/(pos+neg)");   
 
 
-    
+
     // msg(MSG::INFO) << "lumiblock histos done " <<endmsg;
 
  
@@ -1559,27 +1570,27 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
 
     
     // lumiblock histos 
-    m_LumiBlock = TH1F_LW::create("LumiBlock","Lumi block",1024,-0.5,1023.5); 
+    m_LumiBlock = TH1F_LW::create("LumiBlock","Lumi block", 1024, -0.5, 1023.5); 
     RegisterHisto(al_mon,m_LumiBlock) ;
     m_LumiBlock->GetXaxis()->SetTitle("Lumi block ID"); 
     m_LumiBlock->GetYaxis()->SetTitle("# events");   
 
-    m_Tracks_per_LumiBlock = TH1F_LW::create("TracksPerLumiBlock","Tracks per Lumi block",1024,-0.5,1023.5); 
+    m_Tracks_per_LumiBlock = TH1F_LW::create("TracksPerLumiBlock","Tracks per Lumi block", 1024, -0.5, 1023.5); 
     RegisterHisto(al_mon,m_Tracks_per_LumiBlock) ;
     m_Tracks_per_LumiBlock->GetXaxis()->SetTitle("Lumi block ID"); 
     m_Tracks_per_LumiBlock->GetYaxis()->SetTitle("# tracks");   
 
-    m_NPIX_per_LumiBlock = TH1F_LW::create("NPixPerLumiBlock","N pixel hits per Lumi block",1024,-0.5,1023.5); 
+    m_NPIX_per_LumiBlock = TH1F_LW::create("NPixPerLumiBlock","N pixel hits per Lumi block", 1024, -0.5, 1023.5); 
     RegisterHisto(al_mon, m_NPIX_per_LumiBlock) ;
     m_NPIX_per_LumiBlock->GetXaxis()->SetTitle("Lumi block ID"); 
     m_NPIX_per_LumiBlock->GetYaxis()->SetTitle("# pixel hits");   
 
-    m_NSCT_per_LumiBlock = TH1F_LW::create("NSCTPerLumiBlock","N SCT hits per Lumi block",1024,-0.5,1023.5); 
+    m_NSCT_per_LumiBlock = TH1F_LW::create("NSCTPerLumiBlock","N SCT hits per Lumi block", 1024, -0.5, 1023.5); 
     RegisterHisto(al_mon, m_NSCT_per_LumiBlock) ;
     m_NSCT_per_LumiBlock->GetXaxis()->SetTitle("Lumi block ID"); 
     m_NSCT_per_LumiBlock->GetYaxis()->SetTitle("# SCT hits");   
 
-    m_NTRT_per_LumiBlock = TH1F_LW::create("NTRTPerLumiBlock","N TRT hits per Lumi block",1024,-0.5,1023.5); 
+    m_NTRT_per_LumiBlock = TH1F_LW::create("NTRTPerLumiBlock","N TRT hits per Lumi block", 1024, -0.5, 1023.5); 
     RegisterHisto(al_mon, m_NTRT_per_LumiBlock) ;
     m_NTRT_per_LumiBlock->GetXaxis()->SetTitle("Lumi block ID"); 
     m_NTRT_per_LumiBlock->GetYaxis()->SetTitle("# TRT hits");   
@@ -1587,7 +1598,7 @@ StatusCode IDAlignMonGenericTracks::bookHistograms()
     m_histosBooked++;
   }
   return StatusCode::SUCCESS;
-  
+
 }
 
 void IDAlignMonGenericTracks::RegisterHisto(MonGroup& mon, TH1F_LW* histo) {
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
index 18caef478a26..b9c28604161a 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
@@ -177,6 +177,9 @@ struct IDAlignMonResiduals::TRTEndcapHistograms{
 	TH2F* aveResVsPhiWheel[2]{};
 	TH2F* rmsResVsPhiWheel[2]{};
 
+	TH3F* resVsPhiWheelPos[2]{};
+	TH3F* resVsPhiWheelNeg[2]{};
+
 	/** Residual maps for low pT tracks separated by charge in the TRT Endcap */
 	TH3F* resVsRadiusWheelPos[2]{};
 	TH2F* aveResVsRadiusWheelPos[2]{};
@@ -184,6 +187,9 @@ struct IDAlignMonResiduals::TRTEndcapHistograms{
 	TH3F* resVsRadiusWheelNeg[2]{};
 	TH2F* aveResVsRadiusWheelNeg[2]{};
 	TH2F* rmsResVsRadiusWheelNeg[2]{};
+
+        // Residual vs pt and vs wheel in the endcap 
+	TH3F* resVsqPtWheel[2]{};
 };
 
 ////////////////////////////////////////
@@ -307,6 +313,7 @@ void IDAlignMonResiduals::InitializeHistograms()
 {
 
   m_totalEvents = 0;
+  m_totalTracks = 0;
   m_oldlumiblock = 0;
   m_sirescalcfailure =0;
   m_pix_eca_xresvsmodphidisk_3d = 0;
@@ -315,7 +322,7 @@ void IDAlignMonResiduals::InitializeHistograms()
   m_pix_ecc_yresvsmodphidisk_3d = 0;
   m_dbm_xresvsmodphi_2d = 0;
   m_sct_b_pullx_pt = 0;
-  m_sct_eca_pullx_pt = 0       ;
+  m_sct_eca_pullx_pt = 0;
   m_sct_ecc_pullx_pt = 0;
   m_sct_b0_xresvsmodetaphi_3d = 0;
   m_sct_b1_xresvsmodetaphi_3d = 0;
@@ -842,6 +849,9 @@ StatusCode IDAlignMonResiduals::bookHistograms()
       m_totalEvents  = new TH1F("TotalEvents","TotalEvents", 1, -0.5, 0.5);
       RegisterHisto(al_mon,m_totalEvents);
 
+      m_totalTracks  = new TH1F("TotalTracks","TotalTracks", 1, -0.5, 0.5);
+      RegisterHisto(al_mon,m_totalTracks);
+
       m_mu_perEvent = new TH1F("mu_perEvent","<#mu> per event", m_nBinsMuRange, m_muRangeMin, m_muRangeMax);
       RegisterHisto(al_mon,m_mu_perEvent);
     }
@@ -849,13 +859,17 @@ StatusCode IDAlignMonResiduals::bookHistograms()
 
     //All modules
     m_pix_b0_resXvsetaLumiBlock = new TProfile2D("pix_b0_resXvsetaLumiBlock","2D profile of X unbiased residuals vs IBL eta module per Lumi Block; LumiBlock;Module Eta",
-						 m_nBinsLB,m_LBRangeMin,m_LBRangeMax, 20,-10.5,9.5, m_minPIXResXFillRange,m_maxPIXResXFillRange);
+						 m_nBinsLB, m_LBRangeMin, m_LBRangeMax, 
+						 20, -10.5, 9.5, 
+						 m_minPIXResXFillRange, m_maxPIXResXFillRange);
     RegisterHisto(al_mon,m_pix_b0_resXvsetaLumiBlock);
 
     //Only planars
 
     m_pix_b0_resXvsetaLumiBlock_planars = new TProfile2D("pix_b0_resXvsetaLumiBlock_planars","2D profile of X unbiased residuals vs IBL eta module per Lumi Block;LumiBlock; Module Eta",
-							 m_nBinsLB,m_LBRangeMin,m_LBRangeMax, 12,-6.5,5.5, m_minPIXResXFillRange,m_maxPIXResXFillRange);
+							 m_nBinsLB,m_LBRangeMin,m_LBRangeMax, 
+							 12, -6.5, 5.5, 
+							 m_minPIXResXFillRange, m_maxPIXResXFillRange);
     RegisterHisto(al_mon,m_pix_b0_resXvsetaLumiBlock_planars);
 
 
@@ -935,7 +949,7 @@ StatusCode IDAlignMonResiduals::bookHistograms()
     RegisterHisto(al_mon,m_base_vs_LB_planars);
 
 
-    if(msgLvl(MSG::VERBOSE)) msg() << " INITIALIZED GENERALHISTOS FOR RESIDUALS "<< endmsg;
+    ATH_MSG_VERBOSE (" INITIALIZED GENERALHISTOS FOR RESIDUALS ");
     //PrintIBLGeometry();
     MakePIXBarrelHistograms (al_mon);
     MakePIXEndCapsHistograms(al_mon);
@@ -946,8 +960,9 @@ StatusCode IDAlignMonResiduals::bookHistograms()
     MakeTRTHistograms(al_mon);
 
     MakeSiliconHistograms(al_mon);
-    if(msgLvl(MSG::VERBOSE)) msg() << " INITIALIZED GENERALHISTOS FOR RESIDUALS "<< endmsg;
+    ATH_MSG_VERBOSE (" INITIALIZED GENERALHISTOS FOR RESIDUALS ");
     ++m_histosBooked;
+
   }
 
   ATH_MSG_VERBOSE(" Residual histograms booking COMPLETED");
@@ -1052,7 +1067,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 {
   const EventContext& ctx = Gaudi::Hive::currentContext();
   ++m_events;
-  ATH_MSG_DEBUG ("IDAlignMonResiduals::fillHistograms ** START ** call for m_events " << m_events << " for track collection: " <<   m_tracksName.key());
+  ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** START ** call for m_events " << m_events << " for track collection: " <<   m_tracksName.key());
 
   m_hasBeenCalledThisEvent=false;
   m_mu=0.;
@@ -1060,10 +1075,15 @@ StatusCode IDAlignMonResiduals::fillHistograms()
   SG::ReadHandle<xAOD::EventInfo> eventInfo (m_eventInfoKey, ctx);
 
   m_changedlumiblock = false;
-  m_lumiblock = eventInfo->lumiBlock();
-  if (m_lumiblock!=m_oldlumiblock){   //Changes every m_LBGranularity
-    m_oldlumiblock=m_lumiblock;
-    m_changedlumiblock=true;
+  if (eventInfo.isValid()) {
+    m_lumiblock = eventInfo->lumiBlock();
+    if (m_lumiblock!=m_oldlumiblock){   //Changes every m_LBGranularity
+      m_oldlumiblock=m_lumiblock;
+      m_changedlumiblock=true;
+    }
+  }
+  else {
+    ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** eventInfo retrieving failure");
   }
 
   if (!m_hasBeenCalledThisEvent){
@@ -1073,10 +1093,11 @@ StatusCode IDAlignMonResiduals::fillHistograms()
   else {
     m_mu = -999;
   }
+  ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** event number: " << eventInfo->eventNumber() << "   lumiblock: " << m_lumiblock << "  mu: " << m_mu);
 
   if (m_extendedPlots){
     m_mu_perEvent->Fill(m_mu);
-    m_totalEvents->Fill(0);
+    m_totalEvents->Fill(0.);
   }
 
   float timeCor = 0.;
@@ -1087,27 +1108,27 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       timeCor = theComTime->getTime();
     }
     else{
-      ATH_MSG_DEBUG ("ComTime object not found with name " << m_comTimeObjectName.key() << "!!!");
+      ATH_MSG_WARNING ("ComTime object not found with name " << m_comTimeObjectName.key() << "!!!");
       //return StatusCode::FAILURE;
     }
   }
 
   SG::ReadHandle<TrackCollection> inputTracks{m_tracksName};
   if (not inputTracks.isValid()) {
-    ATH_MSG_DEBUG ("IDAlignMonResiduals::fillHistograms() -- " << m_tracksName.key() << " could not be retrieved");
+    ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms() -- " << m_tracksName.key() << " could not be retrieved");
     return StatusCode::RECOVERABLE;
   }
 
   const DataVector<Trk::Track>* tracks = m_trackSelection->selectTracks(inputTracks);
-  ATH_MSG_DEBUG ("IDAlignMonResiduals::fillHistograms() -- event: " << m_events
-		 << " with Track collection " << m_tracksName.key()
-		 << " has size =" << tracks->size());
-
+  ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms() -- event: " << m_events
+		   << " with Track collection " << m_tracksName.key()
+		   << " has size =" << tracks->size());
+  
   int nTracks = 0;
   int nHitsEvent = 0;
 
   for (DataVector<Trk::Track>::const_iterator trackItr  = tracks->begin(); trackItr != tracks->end(); ++trackItr) { //looping over tracks
-    ATH_MSG_DEBUG (" -- looping over track " << nTracks << "/" << tracks->size());
+    ATH_MSG_WARNING (" -- looping over track " << nTracks << "/" << tracks->size());
     //need to get the Trk::Track object from which the TrackParticle object was created
     //this has the hit information
     const Trk::Track* track = *trackItr;
@@ -1136,6 +1157,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
     float trkpt      = -999;
     float trkqoverp2 = -999;
     float trketa_w   = -999;
+    bool countedTrack = false;
     
     if(m_extendedPlots) {
       trkqoverp2 =  track->perigeeParameters()->parameters()[Trk::qOverP]*fabs(track->perigeeParameters()->parameters()[Trk::qOverP])*1000000.;
@@ -1168,6 +1190,10 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       }
       const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
       ATH_MSG_DEBUG ("Defined hit MeasurementBase for hit " << nTSOS);
+      if (!countedTrack) {
+	m_totalTracks->Fill(0.); // count only once
+	countedTrack = true;
+      }
 
       //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
       const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
@@ -4909,11 +4935,13 @@ void IDAlignMonResiduals::MakeTRTEndcapHistograms(MonGroup& al_mon){
       RegisterHisto(al_mon,m_trt_ec_hist->pullR_notube_pt[endcap]);
 
       /** Residuals vs pt per wheel */
-      for (int iWheel=0; iWheel < 40; iWheel++) {
-	m_trt_ec_hist->residualR_ptwheel[endcap][iWheel] = MakeProfile("trt_"+endcapName[endcap]+"_resvspt_wheel_"+intToString(iWheel),
+      for (int iWheel=0; iWheel < 40; iWheel++) { 
+	m_trt_ec_hist->residualR_ptwheel[endcap][iWheel] = MakeProfile("trt_ec_resVspt_wheel_"+intToString(iWheel)+"_"+endcapName[endcap],
 								       "Residual vs p_{T} for TRT "+endcapName[endcap]+" "+intToString(iWheel),
 								       m_nBinsPtRange, -m_PtRange, m_PtRange,
-								       m_minTRTResWindow, m_maxTRTResWindow, "Track p_{T} [GeV]","Residual [mm]");
+								       m_minTRTResWindow, m_maxTRTResWindow,
+								       "Track p_{T} [GeV]","Residual [mm]");
+	SetMinWindow(m_trt_ec_hist->residualR_ptwheel[endcap][iWheel], -0.025, 0.025);
 	RegisterHisto(al_mon,m_trt_ec_hist->residualR_ptwheel[endcap][iWheel]);
       }
       
@@ -4921,13 +4949,13 @@ void IDAlignMonResiduals::MakeTRTEndcapHistograms(MonGroup& al_mon){
       m_trt_ec_hist->residualR_mu[endcap] = MakeHist("trt_ec_residualR_mu_"+endcapName[endcap],
 						     "UnBiased Residual vs mu for TRT "+endcapName[endcap],
 						     m_nBinsMuRange, m_muRangeMin, m_muRangeMax,
-						     100, m_minTRTResWindow, m_maxTRTResWindow,
+						     50, m_minTRTResWindow, m_maxTRTResWindow,
 						     "#mu ","Residual [mm]"); 
       RegisterHisto(al_mon,m_trt_ec_hist->residualR_mu[endcap]);
       
       m_trt_ec_hist->pullR_mu[endcap] = MakeHist("trt_ec_pullR_mu_"+endcapName[endcap],"Unbiased residual pull vs mu for TRT "+endcapName[endcap],
 						 m_nBinsMuRange, m_muRangeMin, m_muRangeMax,
-						 100, -m_RangeOfPullHistos,m_RangeOfPullHistos,
+						 50, -m_RangeOfPullHistos,m_RangeOfPullHistos,
 						 "#mu","Pull");
       RegisterHisto(al_mon,m_trt_ec_hist->pullR_mu[endcap]);
     }
@@ -4940,50 +4968,80 @@ void IDAlignMonResiduals::MakeTRTEndcapHistograms(MonGroup& al_mon){
 						      32, -0.5, 31.5,
 						      50, m_minTRTResWindow, m_maxTRTResWindow);
       RegisterHisto(al_mon,m_trt_ec_hist->resVsPhiWheel[endcap]);
+
       m_trt_ec_hist->aveResVsPhiWheel[endcap] = MakeHist("trt_ec_aveResVsPhiWheel_"+endcapName[endcap],
 							 "Average Residual vs Phi Sector & Wheel for TRT "+endcapName[endcap],
 							 40, -0.5, 39.5,
 							 32, -0.5, 31.5,
 							 "End-cap 4-plane wheel","#phi Sector");
       RegisterHisto(al_mon,m_trt_ec_hist->aveResVsPhiWheel[endcap]);
+
       m_trt_ec_hist->rmsResVsPhiWheel[endcap] = MakeHist("trt_ec_rmsResVsPhiWheel_"+endcapName[endcap],"Residual RMS vs Phi Sector & Wheel for TRT "+endcapName[endcap],
 							 40, -0.5, 39.5,
 							 32, -0.5, 31.5,
 							 "End-cap 4-plane wheel","#phi Sector");
       RegisterHisto(al_mon,m_trt_ec_hist->rmsResVsPhiWheel[endcap]);
 
+      // same for positive and negative charged particles
+      m_trt_ec_hist->resVsPhiWheelPos[endcap] = new TH3F(("trt_ec_resVsPhiWheelPos_"+endcapName[endcap]).c_str(),
+						      ("Residual Distribution vs Phi Sector & Wheel for TRT "+endcapName[endcap]+" positive;Wheel;#phi sector;Residual [mm]").c_str(),
+						      40, -0.5, 39.5,
+						      32, -0.5, 31.5,
+						      50, m_minTRTResWindow, m_maxTRTResWindow);
+      RegisterHisto(al_mon,m_trt_ec_hist->resVsPhiWheelPos[endcap]);
+      m_trt_ec_hist->resVsPhiWheelNeg[endcap] = new TH3F(("trt_ec_resVsPhiWheelNeg_"+endcapName[endcap]).c_str(),
+						      ("Residual Distribution vs Phi Sector & Wheel for TRT "+endcapName[endcap]+" negative;Wheel;#phi sector;Residual [mm]").c_str(),
+						      40, -0.5, 39.5,
+						      32, -0.5, 31.5,
+						      50, m_minTRTResWindow, m_maxTRTResWindow);
+      RegisterHisto(al_mon,m_trt_ec_hist->resVsPhiWheelNeg[endcap]);
+
       /** Endcap Residual plots vs Radius & Wheel */
       m_trt_ec_hist->resVsRadiusWheelPos[endcap] = new TH3F(("trt_ec_resVsRadiusWheelPos_"+endcapName[endcap]).c_str(),
 							    ("Residual Distribution vs Wheel & Radius on Wheel for TRT "+endcapName[endcap]+";Wheel;Radius [mm]; Res [mm]").c_str(),
-							    40, -0.5, 39.5, 30, 644,1004/*these are the radius limits in mm according to TRT SW*/,
+							    40, -0.5, 39.5, 
+							    20, 644., 1004. /*these are the radius limits in mm according to TRT SW*/,
 							    50, m_minTRTResWindow, m_maxTRTResWindow);
       RegisterHisto(al_mon,m_trt_ec_hist->resVsRadiusWheelPos[endcap]);
       m_trt_ec_hist->aveResVsRadiusWheelPos[endcap] = MakeHist("trt_ec_aveResVsRadiusWheelPos_"+endcapName[endcap],
 							       "Average Residual vs Wheel & Radius on Wheel for TRT "+endcapName[endcap],
-							       40, -0.5, 39.5, 30, 644, 1004,
+							       40, -0.5, 39.5, 
+							       20, 644., 1004.,
 							       "Wheel Number","Radius on Wheel [mm]");
       RegisterHisto(al_mon,m_trt_ec_hist->aveResVsRadiusWheelPos[endcap]);
       m_trt_ec_hist->rmsResVsRadiusWheelPos[endcap] = MakeHist("trt_ec_rmsResVsRadiusWheelPos_"+endcapName[endcap],
 							       "Residual RMS vs Wheel & Radius on Wheel for TRT "+endcapName[endcap],
-							       40, -0.5, 39.5, 30, 644, 1004,
+							       40, -0.5, 39.5, 
+							       20, 644., 1004.,
 							       "Wheel Number","Radius on Wheel [mm]");
       RegisterHisto(al_mon,m_trt_ec_hist->rmsResVsRadiusWheelPos[endcap]);
       m_trt_ec_hist->resVsRadiusWheelNeg[endcap] = new TH3F(("trt_ec_resVsRadiusWheelNeg_"+endcapName[endcap]).c_str(),
 							    ("Residual Distribution vs Wheel & Radius on Wheel for TRT "+endcapName[endcap]+";Wheel;Radius [mm]; Res [mm]").c_str(),
-							    40, -0.5, 39.5, 30, 644, 1004/*these are the radius limits in mm according to TRT SW*/,
+							    40, -0.5, 39.5, 
+							    25, 644., 1004./*these are the radius limits in mm according to TRT SW*/,
 							    50, m_minTRTResWindow, m_maxTRTResWindow);
       RegisterHisto(al_mon,m_trt_ec_hist->resVsRadiusWheelNeg[endcap]);
       m_trt_ec_hist->aveResVsRadiusWheelNeg[endcap] = MakeHist("trt_ec_aveResVsRadiusWheelNeg_"+endcapName[endcap],
 							       "Average Residual vs Wheel & Radius on Wheel for TRT "+endcapName[endcap],
-							       40, -0.5, 39.5, 30, 644,1004,
+							       40, -0.5, 39.5, 
+							       20, 644., 1004.,
 							       "Wheel Number","Radius on Wheel [mm]");
       RegisterHisto(al_mon,m_trt_ec_hist->aveResVsRadiusWheelNeg[endcap]);
       m_trt_ec_hist->rmsResVsRadiusWheelNeg[endcap] = MakeHist("trt_ec_rmsResVsRadiusWheelNeg_"+endcapName[endcap],
 							       "Residual RMS vs Wheel & Radius on Wheel for TRT "+endcapName[endcap],
-							       40, -0.5, 39.5, 30, 644, 1004,
+							       40, -0.5, 39.5, 
+							       20, 644., 1004.,
 							       "Wheel Number","Radius on Wheel [mm]");
       RegisterHisto(al_mon,m_trt_ec_hist->rmsResVsRadiusWheelNeg[endcap]);
 
+      /** Endcap residual histograms vs q x pT & Wheel */ 
+      m_trt_ec_hist->resVsqPtWheel[endcap] = new TH3F(("trt_ec_resVsqPtWheel_"+endcapName[endcap]).c_str(),
+						      ("Residual Distribution vs Wheel & p_{T} for TRT "+endcapName[endcap]+";Wheel;q#timesp_{T} [GeV]; Res [mm]").c_str(),
+						      40, -0.5, 39.5,
+						      20, -m_PtRange, m_PtRange,
+						      50, m_minTRTResWindow, m_maxTRTResWindow);
+      RegisterHisto(al_mon,m_trt_ec_hist->resVsqPtWheel[endcap]);
+
       /** R(t) relation */
       m_trt_ec_hist->rt[endcap] = MakeHist("trt_ec_rt_"+endcapName[endcap],"rt relation for TRT "+endcapName[endcap], 100,-12.5,59.375,100,0,2,"leading edge [ns] corrected for t0 and EP ","dist from wire to track [mm]");
       RegisterHisto(al_mon,m_trt_ec_hist->rt[endcap]);
@@ -5257,7 +5315,7 @@ void IDAlignMonResiduals::fillTRTEndcapHistograms(int barrel_ec, int layer_or_wh
     if(m_extendedPlots){
       if (LE != -999) m_trt_ec_hist->rt[endcap] -> Fill(LE - EP - t0,fabs(perdictR), hweight);
       m_trt_ec_hist->residualR_pt[endcap]-> Fill(trkpt, residualR, hweight);
-      m_trt_ec_hist->residualR_ptwheel[endcap][layer_or_wheel]-> Fill(trkpt, residualR, hweight);
+      m_trt_ec_hist->residualR_ptwheel[endcap][getRing(layer_or_wheel,straw_layer)]-> Fill(trkpt, residualR, hweight);
       m_trt_ec_hist->pullR_pt[endcap]    -> Fill(trkpt, pullR    , hweight);
       if (!isTubeHit) m_trt_ec_hist->pullR_notube_pt[endcap] -> Fill(trkpt,pullR, hweight);
 
@@ -5278,22 +5336,29 @@ void IDAlignMonResiduals::fillTRTEndcapHistograms(int barrel_ec, int layer_or_wh
       }
     }
 
+
     // fill TH3F of ave residual vs phi & wheel
     if(m_extendedPlots){
-      m_trt_ec_hist->resVsPhiWheel[endcap]->Fill(getRing(layer_or_wheel,straw_layer),phi_module,residualR,hweight);
+      float theWheel  = static_cast<float>(getRing(layer_or_wheel,straw_layer));
+      float thePhiMod = static_cast<float>(phi_module);
+
+      m_trt_ec_hist->resVsPhiWheel[endcap]->Fill(theWheel, thePhiMod, residualR, hweight);
+
       // fill TH3F of ave residual vs wheel & radius vs charge & LOW PT ONLY
       ATH_MSG_DEBUG ("Going to fill m_trt_ec_hist->resVsRadiusWheelPos["<< endcap<<"] for pt: " << trkpt << "  hitGlobalR= " << hitGlobalR);
       if(fabs(trkpt) < m_maxPtEC){
 	int charge = (trkpt > 0 ? 1 : -1);
-	if (hitGlobalR != -9999)
-	  {
-	    if(charge > 0){
-	      m_trt_ec_hist->resVsRadiusWheelPos[endcap]->Fill(getRing(layer_or_wheel,straw_layer), hitGlobalR, residualR,hweight);
-	    }
-	    else{
-	      m_trt_ec_hist->resVsRadiusWheelNeg[endcap]->Fill(getRing(layer_or_wheel,straw_layer), hitGlobalR, residualR,hweight);
-	    }
+	if (hitGlobalR != -9999) {
+	  if(charge > 0){
+	    m_trt_ec_hist->resVsPhiWheelPos[endcap]   ->Fill(theWheel, thePhiMod,  residualR, hweight);
+	    m_trt_ec_hist->resVsRadiusWheelPos[endcap]->Fill(theWheel, hitGlobalR, residualR, hweight);
+	  }
+	  else{
+	    m_trt_ec_hist->resVsPhiWheelNeg[endcap]   ->Fill(theWheel, thePhiMod,  residualR, hweight);
+	    m_trt_ec_hist->resVsRadiusWheelNeg[endcap]->Fill(theWheel, hitGlobalR, residualR, hweight);
 	  }
+	} // radius known
+	m_trt_ec_hist->resVsqPtWheel[endcap]->Fill(theWheel, trkpt, residualR, hweight);
       }
     }
 
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.h b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.h
index 954d79ff91da..8a767130ac40 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.h
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.h
@@ -215,6 +215,7 @@ class IDAlignMonResiduals : public ManagedMonitorToolBase
   //histograms
   
   TH1F* m_totalEvents{};
+  TH1F* m_totalTracks{};
   TH1F* m_sirescalcfailure{};
   std::vector<TH3F*> m_sct_b_Oxresxvsmodetaphi_3ds;
   std::vector<TH3F*> m_sct_b_Oyresxvsmodetaphi_3ds;
-- 
GitLab


From 3d75a1509cb518b5eafd56aa21a569dcaca13ade Mon Sep 17 00:00:00 2001
From: Salvador Marti <salvador.marti@ific.uv.es>
Date: Wed, 23 Dec 2020 12:56:42 +0100
Subject: [PATCH 2/7] keep debugging

---
 .../src/IDAlignMonResiduals.cxx               | 40 +++++++++----------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
index b9c28604161a..70bda10dc6ab 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
@@ -1132,14 +1132,14 @@ StatusCode IDAlignMonResiduals::fillHistograms()
     //need to get the Trk::Track object from which the TrackParticle object was created
     //this has the hit information
     const Trk::Track* track = *trackItr;
-    if(track == NULL){
+    if(track == nullptr){
       ATH_MSG_WARNING("** IDAlignMonResiduals::fillHistograms ** No associated Trk::Track object found for track "<< nTracks);
       continue;
     }
 
     //check that all TSOS of track have track parameters defined (required to compute residuals/pulls)
     if (trackRequiresRefit(track)) {	
-      ATH_MSG_DEBUG ("** IDAlignMonResiduals::fillHistograms ** Not all TSOS contain track parameters - will be missing residuals/pulls ");
+      ATH_MSG_WARNING ("** IDAlignMonResiduals::fillHistograms ** Not all TSOS contain track parameters - will be missing residuals/pulls ");
     }
     else {
       ATH_MSG_DEBUG ("All TSOS of track " << nTracks <<"/" << tracks->size() << " contain track parameters - Good! ");
@@ -1147,7 +1147,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 
     //trackStateOnSurfaces is a vector of Trk::TrackStateOnSurface objects which contain information
     //on track at each (inner)detector surface it crosses eg hit used to fit track
-    ATH_MSG_DEBUG ("** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << "  has " << track->trackStateOnSurfaces()->size() << " TrkSurfaces");
+    ATH_MSG_WARNING ("** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << "  has " << track->trackStateOnSurfaces()->size() << " TrkSurfaces");
 
     // Code is able to get a weight from an external file and appy it to all histograms
     double hweight = 1.;
@@ -1172,24 +1172,24 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       hweight       = m_etapTWeight->GetBinContent( binNumber );
     }
     //looping over the hits of this track
-    ATH_MSG_DEBUG ("** track " << nTracks << "/" << tracks->size() 
-		   << " pt: " <<  trkpt << "  eta: " << trketa_w << "   weight: " << hweight
-		   << " ** start looping on hits/TSOS ");
+    ATH_MSG_WARNING ("** track " << nTracks << "/" << tracks->size() 
+		     << " pt: " <<  trkpt << "  eta: " << trketa_w << "   weight: " << hweight
+		     << " ** start looping on hits/TSOS ");
     for (const Trk::TrackStateOnSurface* tsos : *track->trackStateOnSurfaces()) {
       ++nTSOS;
-      if (tsos == NULL) {
-	ATH_MSG_DEBUG ("     TSOS (hit) = " << nTSOS << " is NULL ");
+      if (tsos == nullptr) {
+	ATH_MSG_WARNING ("     TSOS (hit) = " << nTSOS << " is NULL ");
 	continue;
       }	
-      ATH_MSG_DEBUG ("** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << "  dealing with TSOS (hit) = " << nTSOS);
+      ATH_MSG_WARNING ("** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << "  dealing with TSOS (hit) = " << nTSOS);
 
       //skipping outliers
       if(!tsos->type(Trk::TrackStateOnSurface::Measurement)) {
-	ATH_MSG_DEBUG ("Skipping TSOS " << nTSOS << " because it is an outlier (or the first TSOS on the track)");
+	ATH_MSG_WARNING ("Skipping TSOS " << nTSOS << " because it is an outlier (or the first TSOS on the track)");
 	continue;
       }
       const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
-      ATH_MSG_DEBUG ("Defined hit MeasurementBase for hit " << nTSOS);
+      ATH_MSG_WARNING ("Defined hit MeasurementBase for hit " << nTSOS);
       if (!countedTrack) {
 	m_totalTracks->Fill(0.); // count only once
 	countedTrack = true;
@@ -1197,9 +1197,9 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 
       //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
       const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
-      if (hit== NULL) {
+      if (hit == nullptr) {
 	//for some reason the first tsos has no associated hit - maybe because this contains the defining parameters?
-	if (nHits > 0 && msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "No hit associated with TSOS "<< nTSOS << endmsg;
+	if (nHits > 0) ATH_MSG_WARNING ("No hit associated with TSOS "<< nTSOS);
 	continue;
       }
 
@@ -1216,9 +1216,8 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       float incidenceTheta = -999;
 
       const Trk::TrkDetElementBase *de = hit->detectorElement(); //  rio is the measurment at a particular suface
-      const InDetDD::SiDetectorElement *side = dynamic_cast<const
-	InDetDD::SiDetectorElement *>(de);
-      if(side){
+      const InDetDD::SiDetectorElement *side = dynamic_cast<const InDetDD::SiDetectorElement *>(de);
+      if (side){
 	Amg::Vector3D mytrack = trackParameter->momentum(); // track parameters at that surface
 	Amg::Vector3D mynormal = side->normal();
 	Amg::Vector3D myphiax = side->phiAxis();
@@ -1232,12 +1231,13 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 
       const AmgSymMatrix(5)* TrackParCovariance = trackParameter ? trackParameter->covariance() : NULL;
 
-      if(TrackParCovariance==NULL) {
+      if( TrackParCovariance == nullptr) {
 	//if no MeasuredTrackParameters the hit will not have associated convariance error matrix and will not
 	//be able to define a pull or unbiased residual (errors needed for propagation)
-	ATH_MSG_DEBUG ("Skipping TSOS " << nTSOS << " because does not have MeasuredTrackParameters");
+	ATH_MSG_WARNING ("Skipping TSOS " << nTSOS << " because does not have MeasuredTrackParameters");
 	continue;
       }
+      ATH_MSG_WARNING ("-salva- dealing with TSOS  #" << nTSOS);
 
       float residualX = 9999.0;
       float residualY = 9999.0;
@@ -1277,14 +1277,14 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       int ClusSize    = -999;
 
       const Identifier & hitId = hit->identify();
-      ATH_MSG_DEBUG ( "Defined  hit Identifier ");
+      ATH_MSG_DEBUG ( "Defining  hit Identifier ");
       if (m_idHelper->is_trt(hitId)) detType = 2;
       else if (m_idHelper->is_sct(hitId)) detType = 1;
       else  detType = 0;
 
       // TRT hits: detType = 2
       if(detType==2){ 
-	ATH_MSG_DEBUG("** IDAlignMonResiduals::fillHistograms() ** Hit is from the TRT, finding residuals... ");
+	ATH_MSG_WARNING("** IDAlignMonResiduals::fillHistograms() ** Hit is from the TRT, finding residuals... ");
 	bool isTubeHit = (mesh->localCovariance()(Trk::locX,Trk::locX) > 1.0) ? 1 : 0;
 	const Trk::TrackParameters* trackParameter = tsos->trackParameters();
 	float hitR = hit->localParameters()[Trk::driftRadius];
-- 
GitLab


From 8a3219dd7c55c79c2014eff940d73e8db15e624b Mon Sep 17 00:00:00 2001
From: Salvador Marti <salvador.marti@ific.uv.es>
Date: Wed, 23 Dec 2020 16:39:34 +0100
Subject: [PATCH 3/7] keep debugging IDAlignMonResiduals

---
 .../src/IDAlignMonResiduals.cxx               | 45 ++++++++++++-------
 1 file changed, 30 insertions(+), 15 deletions(-)

diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
index 70bda10dc6ab..dfbbe6733c5a 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
@@ -1067,7 +1067,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 {
   const EventContext& ctx = Gaudi::Hive::currentContext();
   ++m_events;
-  ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** START ** call for m_events " << m_events << " for track collection: " <<   m_tracksName.key());
+  ATH_MSG_DEBUG ("IDAlignMonResiduals::fillHistograms ** START ** call for m_events " << m_events << " for track collection: " <<   m_tracksName.key());
 
   m_hasBeenCalledThisEvent=false;
   m_mu=0.;
@@ -1093,7 +1093,9 @@ StatusCode IDAlignMonResiduals::fillHistograms()
   else {
     m_mu = -999;
   }
-  ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** event number: " << eventInfo->eventNumber() << "   lumiblock: " << m_lumiblock << "  mu: " << m_mu);
+  ATH_MSG_DEBUG ("IDAlignMonResiduals::fillHistograms ** run number: " << eventInfo->runNumber() 
+		   << "  event number: " << eventInfo->eventNumber() 
+		   << "   lumiblock: " << m_lumiblock << "  mu: " << m_mu);
 
   if (m_extendedPlots){
     m_mu_perEvent->Fill(m_mu);
@@ -1115,14 +1117,17 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 
   SG::ReadHandle<TrackCollection> inputTracks{m_tracksName};
   if (not inputTracks.isValid()) {
-    ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms() -- " << m_tracksName.key() << " could not be retrieved");
+    ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** " << m_tracksName.key() << " could not be retrieved");
     return StatusCode::RECOVERABLE;
   }
 
   const DataVector<Trk::Track>* tracks = m_trackSelection->selectTracks(inputTracks);
-  ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms() -- event: " << m_events
-		   << " with Track collection " << m_tracksName.key()
-		   << " has size =" << tracks->size());
+  ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** event: " << m_events
+		   << "  run: " << eventInfo->runNumber()
+		   << "  event: " << eventInfo->eventNumber()
+		   << "  LB: " << m_lumiblock
+		   << "  --> Track collection " << m_tracksName.key()
+		   << "  has size =" << tracks->size());
   
   int nTracks = 0;
   int nHitsEvent = 0;
@@ -1173,29 +1178,35 @@ StatusCode IDAlignMonResiduals::fillHistograms()
     }
     //looping over the hits of this track
     ATH_MSG_WARNING ("** track " << nTracks << "/" << tracks->size() 
-		     << " pt: " <<  trkpt << "  eta: " << trketa_w << "   weight: " << hweight
-		     << " ** start looping on hits/TSOS ");
+		     << "  pt: " <<  trkpt 
+		     << "  eta: " << trketa_w 
+		     << "  weight: " << hweight
+		     << " ** start looping on hits/TSOS ** ");
     for (const Trk::TrackStateOnSurface* tsos : *track->trackStateOnSurfaces()) {
       ++nTSOS;
+      ATH_MSG_WARNING (" --> dealing with hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " of track: " << nTracks);
       if (tsos == nullptr) {
 	ATH_MSG_WARNING ("     TSOS (hit) = " << nTSOS << " is NULL ");
 	continue;
       }	
-      ATH_MSG_WARNING ("** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << "  dealing with TSOS (hit) = " << nTSOS);
 
       //skipping outliers
+      ATH_MSG_WARNING (" --> testing hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " to be measurement type");
       if(!tsos->type(Trk::TrackStateOnSurface::Measurement)) {
 	ATH_MSG_WARNING ("Skipping TSOS " << nTSOS << " because it is an outlier (or the first TSOS on the track)");
 	continue;
       }
+
       const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
       ATH_MSG_WARNING ("Defined hit MeasurementBase for hit " << nTSOS);
       if (!countedTrack) {
 	m_totalTracks->Fill(0.); // count only once
 	countedTrack = true;
+	ATH_MSG_WARNING ("m_totalTracks->Fill(0.); OK"); 
       }
 
       //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
+      ATH_MSG_WARNING (" Going to retrive the Trk::RIO_OnTrack for hit " << nTSOS); 
       const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
       if (hit == nullptr) {
 	//for some reason the first tsos has no associated hit - maybe because this contains the defining parameters?
@@ -1203,10 +1214,12 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	continue;
       }
 
+      ATH_MSG_WARNING (" Going to retrive the track parameters of this TSOS"); 
       const Trk::TrackParameters* trackParameter = tsos->trackParameters();
-      if(trackParameter==NULL) {
+      if(trackParameter== nullptr) {
 	//if no TrackParameters for TSOS we cannot define residuals
 	if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Skipping TSOS " << nTSOS << " because does not have TrackParameters" << endmsg;
+	ATH_MSG_WARNING (" Skipping TSOS " << nTSOS << " because it does not have TrackParameters");
 	continue;
       }
 
@@ -1215,6 +1228,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       float incidencePhi = -999;
       float incidenceTheta = -999;
 
+      ATH_MSG_WARNING (" going for hit->detectorElement() of hit " << nTSOS);
       const Trk::TrkDetElementBase *de = hit->detectorElement(); //  rio is the measurment at a particular suface
       const InDetDD::SiDetectorElement *side = dynamic_cast<const InDetDD::SiDetectorElement *>(de);
       if (side){
@@ -1311,7 +1325,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	  if(msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Cannot define unbiased parameters for hit, skipping it." << endmsg;
 	  continue;
 	}
-	if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Found UnBiased TrackParameters" << endmsg;
+	ATH_MSG_WARNING ("UnBiased TrackParameters FOUND!");
 	
 	float perdictR = trackParameterUnbiased->parameters()[Trk::locR];
 	
@@ -1328,9 +1342,10 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	
 	if (residualPull) {
 	  pullR = residualPull->pull()[Trk::locR];
+	  ATH_MSG_WARNING (" pullR = " << pullR);
 	}
 	else {
-	  if(msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " no covariance of the track parameters given, can not calc pull!" << endmsg;
+	  ATH_MSG_WARNING (" no covariance of the track parameters given, can not calculate pull!");
 	}
 	
 	delete trackParameterUnbiased;
@@ -1343,17 +1358,17 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	const InDet::TRT_DriftCircle *RawDriftCircle(NULL);
 	
 	if (trtCircle!=NULL) {
-	  ATH_MSG_DEBUG("Getting RawDriftCircle");
+	  ATH_MSG_WARNING("Getting TRT RawDriftCircle");
 	  RawDriftCircle = dynamic_cast<const InDet::TRT_DriftCircle*>(trtCircle->prepRawData());
 	}
 	else {
 	  ATH_MSG_DEBUG("trtCircle is a NULL pointer");
 	}
 	
-	if ( trtCircle != NULL){
+	if ( trtCircle != nullptr){
 	  bool isValid;
 	  float leadingEdge = -999;
-	  if (RawDriftCircle != NULL) {
+	  if (RawDriftCircle != nullptr) {
 	    leadingEdge=RawDriftCircle->driftTime(isValid);
 	  }
 	  else {
-- 
GitLab


From 60c6e71a201b20df60e759a36161b30fcddfca2b Mon Sep 17 00:00:00 2001
From: Salvador Marti <salvador.marti@ific.uv.es>
Date: Wed, 23 Dec 2020 23:02:29 +0100
Subject: [PATCH 4/7] debugging around m_hTotalTrack->Fill

---
 .../src/IDAlignMonResiduals.cxx                    | 14 ++++++++------
 .../src/IDAlignMonResiduals.h                      |  2 +-
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
index dfbbe6733c5a..2103e21fb9e8 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
@@ -313,7 +313,7 @@ void IDAlignMonResiduals::InitializeHistograms()
 {
 
   m_totalEvents = 0;
-  m_totalTracks = 0;
+  m_hTotalTracks = 0;
   m_oldlumiblock = 0;
   m_sirescalcfailure =0;
   m_pix_eca_xresvsmodphidisk_3d = 0;
@@ -849,8 +849,8 @@ StatusCode IDAlignMonResiduals::bookHistograms()
       m_totalEvents  = new TH1F("TotalEvents","TotalEvents", 1, -0.5, 0.5);
       RegisterHisto(al_mon,m_totalEvents);
 
-      m_totalTracks  = new TH1F("TotalTracks","TotalTracks", 1, -0.5, 0.5);
-      RegisterHisto(al_mon,m_totalTracks);
+      m_hTotalTracks  = new TH1F("TotalTracks","TotalTracks", 1, -0.5, 0.5);
+      RegisterHisto(al_mon,m_hTotalTracks);
 
       m_mu_perEvent = new TH1F("mu_perEvent","<#mu> per event", m_nBinsMuRange, m_muRangeMin, m_muRangeMax);
       RegisterHisto(al_mon,m_mu_perEvent);
@@ -1198,11 +1198,13 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       }
 
       const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
-      ATH_MSG_WARNING ("Defined hit MeasurementBase for hit " << nTSOS);
+      ATH_MSG_WARNING ( "--> Defined hit measurementOnTrack() for hit: " << nTSOS <<"/" << track->trackStateOnSurfaces()->size());
+      ATH_MSG_WARNING ( "--> countedTrack?:" << countedTrack);
       if (!countedTrack) {
-	m_totalTracks->Fill(0.); // count only once
+	ATH_MSG_WARNING ( "--> going to fill: m_hTotalTracks->Fill(0.) ");
+	m_hTotalTracks->Fill(0.); // count only once
 	countedTrack = true;
-	ATH_MSG_WARNING ("m_totalTracks->Fill(0.); OK"); 
+	ATH_MSG_WARNING ("--> m_hTotalTracks->Fill(0.); OK"); 
       }
 
       //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.h b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.h
index 8a767130ac40..b24017dd6b0c 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.h
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.h
@@ -215,7 +215,7 @@ class IDAlignMonResiduals : public ManagedMonitorToolBase
   //histograms
   
   TH1F* m_totalEvents{};
-  TH1F* m_totalTracks{};
+  TH1F* m_hTotalTracks{};
   TH1F* m_sirescalcfailure{};
   std::vector<TH3F*> m_sct_b_Oxresxvsmodetaphi_3ds;
   std::vector<TH3F*> m_sct_b_Oyresxvsmodetaphi_3ds;
-- 
GitLab


From e66643a36653da3109b80b1fd61c68601dfd49e4 Mon Sep 17 00:00:00 2001
From: Salvador Marti <salvador.marti@ific.uv.es>
Date: Thu, 24 Dec 2020 09:44:36 +0100
Subject: [PATCH 5/7] suspecting h->Fill(0.) Very strange

---
 .../src/IDAlignMonResiduals.cxx                   | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
index 2103e21fb9e8..ad96e13d9e1d 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
@@ -1184,27 +1184,28 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 		     << " ** start looping on hits/TSOS ** ");
     for (const Trk::TrackStateOnSurface* tsos : *track->trackStateOnSurfaces()) {
       ++nTSOS;
-      ATH_MSG_WARNING (" --> dealing with hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " of track: " << nTracks);
+      ATH_MSG_WARNING (" ** dealing with hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " of track: " << nTracks);
       if (tsos == nullptr) {
 	ATH_MSG_WARNING ("     TSOS (hit) = " << nTSOS << " is NULL ");
 	continue;
       }	
 
       //skipping outliers
-      ATH_MSG_WARNING (" --> testing hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " to be measurement type");
+      ATH_MSG_DEBUG (" --> testing hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " to be measurement type");
       if(!tsos->type(Trk::TrackStateOnSurface::Measurement)) {
-	ATH_MSG_WARNING ("Skipping TSOS " << nTSOS << " because it is an outlier (or the first TSOS on the track)");
+	ATH_MSG_DEBUG ("Skipping TSOS " << nTSOS << " because it is an outlier (or the first TSOS on the track)");
 	continue;
       }
 
       const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
-      ATH_MSG_WARNING ( "--> Defined hit measurementOnTrack() for hit: " << nTSOS <<"/" << track->trackStateOnSurfaces()->size());
-      ATH_MSG_WARNING ( "--> countedTrack?:" << countedTrack);
+      ATH_MSG_WARNING ( " --> Defined hit measurementOnTrack() for hit: " << nTSOS <<"/" << track->trackStateOnSurfaces()->size() << " of track " << nTracks);
+      ATH_MSG_WARNING ( " --> countedTrack?:" << countedTrack);
       if (!countedTrack) {
-	ATH_MSG_WARNING ( "--> going to fill: m_hTotalTracks->Fill(0.) ");
+	ATH_MSG_WARNING ( " --> going to fill: m_hTotalTracks->Fill(0.) ");
 	m_hTotalTracks->Fill(0.); // count only once
+	ATH_MSG_WARNING ( " --> m_hTotalTracks->Fill(0.) OK  now setting countedTrack to true ");
 	countedTrack = true;
-	ATH_MSG_WARNING ("--> m_hTotalTracks->Fill(0.); OK"); 
+	ATH_MSG_WARNING ("--> counted track set to true"); 
       }
 
       //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
-- 
GitLab


From 21ad3d06d587d98b4231683a0fd4e57cecc46d8a Mon Sep 17 00:00:00 2001
From: Salvador Marti <salvador.marti@ific.uv.es>
Date: Thu, 24 Dec 2020 15:35:48 +0100
Subject: [PATCH 6/7] commenting m_hTotalTracks->Fill(0.) causing a very
 strange crash in the MR test

---
 .../src/IDAlignMonResiduals.cxx               | 41 +++++++++----------
 1 file changed, 19 insertions(+), 22 deletions(-)

diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
index ad96e13d9e1d..3278fdb38253 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
@@ -1152,7 +1152,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 
     //trackStateOnSurfaces is a vector of Trk::TrackStateOnSurface objects which contain information
     //on track at each (inner)detector surface it crosses eg hit used to fit track
-    ATH_MSG_WARNING ("** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << "  has " << track->trackStateOnSurfaces()->size() << " TrkSurfaces");
+    ATH_MSG_DEBUG ("** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << "  has " << track->trackStateOnSurfaces()->size() << " TrkSurfaces");
 
     // Code is able to get a weight from an external file and appy it to all histograms
     double hweight = 1.;
@@ -1177,16 +1177,16 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       hweight       = m_etapTWeight->GetBinContent( binNumber );
     }
     //looping over the hits of this track
-    ATH_MSG_WARNING ("** track " << nTracks << "/" << tracks->size() 
+    ATH_MSG_DEBUG ("** track " << nTracks << "/" << tracks->size() 
 		     << "  pt: " <<  trkpt 
 		     << "  eta: " << trketa_w 
 		     << "  weight: " << hweight
 		     << " ** start looping on hits/TSOS ** ");
     for (const Trk::TrackStateOnSurface* tsos : *track->trackStateOnSurfaces()) {
       ++nTSOS;
-      ATH_MSG_WARNING (" ** dealing with hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " of track: " << nTracks);
+      ATH_MSG_WARNING (" ====> dealing with hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " of track: " << nTracks << "/" << tracks->size());
       if (tsos == nullptr) {
-	ATH_MSG_WARNING ("     TSOS (hit) = " << nTSOS << " is NULL ");
+	ATH_MSG_DEBUG ("     TSOS (hit) = " << nTSOS << " is NULL ");
 	continue;
       }	
 
@@ -1198,31 +1198,29 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       }
 
       const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
-      ATH_MSG_WARNING ( " --> Defined hit measurementOnTrack() for hit: " << nTSOS <<"/" << track->trackStateOnSurfaces()->size() << " of track " << nTracks);
-      ATH_MSG_WARNING ( " --> countedTrack?:" << countedTrack);
+      ATH_MSG_DEBUG ( " --> Defined hit measurementOnTrack() for hit: " << nTSOS <<"/" << track->trackStateOnSurfaces()->size() << " of track " << nTracks);
       if (!countedTrack) {
-	ATH_MSG_WARNING ( " --> going to fill: m_hTotalTracks->Fill(0.) ");
-	m_hTotalTracks->Fill(0.); // count only once
+	ATH_MSG_DEBUG ( " --> going to fill: m_hTotalTracks->Fill(0.) ");
+	// m_hTotalTracks->Fill(0.); // count only once
 	ATH_MSG_WARNING ( " --> m_hTotalTracks->Fill(0.) OK  now setting countedTrack to true ");
 	countedTrack = true;
-	ATH_MSG_WARNING ("--> counted track set to true"); 
+	ATH_MSG_WARNING (" --> counted track set to true"); 
       }
 
       //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
-      ATH_MSG_WARNING (" Going to retrive the Trk::RIO_OnTrack for hit " << nTSOS); 
+      ATH_MSG_DEBUG (" --> Going to retrive the Trk::RIO_OnTrack for hit " << nTSOS); 
       const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
       if (hit == nullptr) {
 	//for some reason the first tsos has no associated hit - maybe because this contains the defining parameters?
-	if (nHits > 0) ATH_MSG_WARNING ("No hit associated with TSOS "<< nTSOS);
+	if (nHits > 0) ATH_MSG_DEBUG ("No hit associated with TSOS "<< nTSOS);
 	continue;
       }
 
-      ATH_MSG_WARNING (" Going to retrive the track parameters of this TSOS"); 
+      ATH_MSG_DEBUG (" --> Going to retrive the track parameters of this TSOS: " << nTSOS); 
       const Trk::TrackParameters* trackParameter = tsos->trackParameters();
       if(trackParameter== nullptr) {
 	//if no TrackParameters for TSOS we cannot define residuals
-	if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Skipping TSOS " << nTSOS << " because does not have TrackParameters" << endmsg;
-	ATH_MSG_WARNING (" Skipping TSOS " << nTSOS << " because it does not have TrackParameters");
+	ATH_MSG_DEBUG (" Skipping TSOS " << nTSOS << " because it does not have TrackParameters");
 	continue;
       }
 
@@ -1231,7 +1229,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       float incidencePhi = -999;
       float incidenceTheta = -999;
 
-      ATH_MSG_WARNING (" going for hit->detectorElement() of hit " << nTSOS);
+      ATH_MSG_DEBUG (" --> going for hit->detectorElement() of hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size());
       const Trk::TrkDetElementBase *de = hit->detectorElement(); //  rio is the measurment at a particular suface
       const InDetDD::SiDetectorElement *side = dynamic_cast<const InDetDD::SiDetectorElement *>(de);
       if (side){
@@ -1251,10 +1249,10 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       if( TrackParCovariance == nullptr) {
 	//if no MeasuredTrackParameters the hit will not have associated convariance error matrix and will not
 	//be able to define a pull or unbiased residual (errors needed for propagation)
-	ATH_MSG_WARNING ("Skipping TSOS " << nTSOS << " because does not have MeasuredTrackParameters");
+	ATH_MSG_DEBUG ("Skipping TSOS " << nTSOS << " because does not have MeasuredTrackParameters");
 	continue;
       }
-      ATH_MSG_WARNING ("-salva- dealing with TSOS  #" << nTSOS);
+      ATH_MSG_DEBUG (" --> going to define residuals and everything of TSOS  #" << nTSOS << "/" << track->trackStateOnSurfaces()->size());
 
       float residualX = 9999.0;
       float residualY = 9999.0;
@@ -1301,7 +1299,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 
       // TRT hits: detType = 2
       if(detType==2){ 
-	ATH_MSG_WARNING("** IDAlignMonResiduals::fillHistograms() ** Hit is from the TRT, finding residuals... ");
+	ATH_MSG_DEBUG ("** IDAlignMonResiduals::fillHistograms() ** Hit is from the TRT, finding residuals... ");
 	bool isTubeHit = (mesh->localCovariance()(Trk::locX,Trk::locX) > 1.0) ? 1 : 0;
 	const Trk::TrackParameters* trackParameter = tsos->trackParameters();
 	float hitR = hit->localParameters()[Trk::driftRadius];
@@ -1328,7 +1326,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	  if(msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Cannot define unbiased parameters for hit, skipping it." << endmsg;
 	  continue;
 	}
-	ATH_MSG_WARNING ("UnBiased TrackParameters FOUND!");
+	ATH_MSG_DEBUG (" --> TRT UnBiased TrackParameters of hit " << nTSOS << " FOUND");
 	
 	float perdictR = trackParameterUnbiased->parameters()[Trk::locR];
 	
@@ -1345,10 +1343,9 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	
 	if (residualPull) {
 	  pullR = residualPull->pull()[Trk::locR];
-	  ATH_MSG_WARNING (" pullR = " << pullR);
 	}
 	else {
-	  ATH_MSG_WARNING (" no covariance of the track parameters given, can not calculate pull!");
+	  ATH_MSG_DEBUG (" no covariance of the track parameters given, can not calculate pull!");
 	}
 	
 	delete trackParameterUnbiased;
@@ -1361,7 +1358,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	const InDet::TRT_DriftCircle *RawDriftCircle(NULL);
 	
 	if (trtCircle!=NULL) {
-	  ATH_MSG_WARNING("Getting TRT RawDriftCircle");
+	  ATH_MSG_DEBUG(" --> Getting TRT RawDriftCircle");
 	  RawDriftCircle = dynamic_cast<const InDet::TRT_DriftCircle*>(trtCircle->prepRawData());
 	}
 	else {
-- 
GitLab


From d54555ee948278ea575b71ab7d4485f8d2977b81 Mon Sep 17 00:00:00 2001
From: Salvador Marti <salvador.marti@ific.uv.es>
Date: Thu, 24 Dec 2020 19:22:36 +0100
Subject: [PATCH 7/7] move warning messages to debug

---
 .../src/IDAlignMonResiduals.cxx                  | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
index 3278fdb38253..226a949adc41 100755
--- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
+++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonResiduals.cxx
@@ -1083,7 +1083,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
     }
   }
   else {
-    ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** eventInfo retrieving failure");
+    ATH_MSG_DEBUG ("IDAlignMonResiduals::fillHistograms ** eventInfo retrieving failure");
   }
 
   if (!m_hasBeenCalledThisEvent){
@@ -1110,7 +1110,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       timeCor = theComTime->getTime();
     }
     else{
-      ATH_MSG_WARNING ("ComTime object not found with name " << m_comTimeObjectName.key() << "!!!");
+      ATH_MSG_DEBUG ("ComTime object not found with name " << m_comTimeObjectName.key() << "!!!");
       //return StatusCode::FAILURE;
     }
   }
@@ -1122,7 +1122,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
   }
 
   const DataVector<Trk::Track>* tracks = m_trackSelection->selectTracks(inputTracks);
-  ATH_MSG_WARNING ("IDAlignMonResiduals::fillHistograms ** event: " << m_events
+  ATH_MSG_DEBUG ("IDAlignMonResiduals::fillHistograms ** event: " << m_events
 		   << "  run: " << eventInfo->runNumber()
 		   << "  event: " << eventInfo->eventNumber()
 		   << "  LB: " << m_lumiblock
@@ -1133,18 +1133,18 @@ StatusCode IDAlignMonResiduals::fillHistograms()
   int nHitsEvent = 0;
 
   for (DataVector<Trk::Track>::const_iterator trackItr  = tracks->begin(); trackItr != tracks->end(); ++trackItr) { //looping over tracks
-    ATH_MSG_WARNING (" -- looping over track " << nTracks << "/" << tracks->size());
+    ATH_MSG_DEBUG (" -- looping over track " << nTracks << "/" << tracks->size());
     //need to get the Trk::Track object from which the TrackParticle object was created
     //this has the hit information
     const Trk::Track* track = *trackItr;
     if(track == nullptr){
-      ATH_MSG_WARNING("** IDAlignMonResiduals::fillHistograms ** No associated Trk::Track object found for track "<< nTracks);
+      ATH_MSG_DEBUG("** IDAlignMonResiduals::fillHistograms ** No associated Trk::Track object found for track "<< nTracks);
       continue;
     }
 
     //check that all TSOS of track have track parameters defined (required to compute residuals/pulls)
     if (trackRequiresRefit(track)) {	
-      ATH_MSG_WARNING ("** IDAlignMonResiduals::fillHistograms ** Not all TSOS contain track parameters - will be missing residuals/pulls ");
+      ATH_MSG_DEBUG ("** IDAlignMonResiduals::fillHistograms ** Not all TSOS contain track parameters - will be missing residuals/pulls ");
     }
     else {
       ATH_MSG_DEBUG ("All TSOS of track " << nTracks <<"/" << tracks->size() << " contain track parameters - Good! ");
@@ -1184,7 +1184,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 		     << " ** start looping on hits/TSOS ** ");
     for (const Trk::TrackStateOnSurface* tsos : *track->trackStateOnSurfaces()) {
       ++nTSOS;
-      ATH_MSG_WARNING (" ====> dealing with hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " of track: " << nTracks << "/" << tracks->size());
+      ATH_MSG_DEBUG (" ====> dealing with hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " of track: " << nTracks << "/" << tracks->size());
       if (tsos == nullptr) {
 	ATH_MSG_DEBUG ("     TSOS (hit) = " << nTSOS << " is NULL ");
 	continue;
@@ -1202,9 +1202,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       if (!countedTrack) {
 	ATH_MSG_DEBUG ( " --> going to fill: m_hTotalTracks->Fill(0.) ");
 	// m_hTotalTracks->Fill(0.); // count only once
-	ATH_MSG_WARNING ( " --> m_hTotalTracks->Fill(0.) OK  now setting countedTrack to true ");
 	countedTrack = true;
-	ATH_MSG_WARNING (" --> counted track set to true"); 
       }
 
       //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
-- 
GitLab