diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoring/src/IDAlignMonGenericTracks.cxx
index 0af2fb4750b9db2589a326d02cf2a08f6da20b8f..65e66dd9831ebb4e5232de55dd9b92af032585d8 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 18caef478a26e9cd81aa02a2f0027cd7cd654ce0..226a949adc417707b732b1ba6eb28ff3faec5c1b 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_hTotalTracks = 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_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);
     }
@@ -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");
@@ -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_DEBUG ("IDAlignMonResiduals::fillHistograms ** eventInfo retrieving failure");
   }
 
   if (!m_hasBeenCalledThisEvent){
@@ -1073,10 +1093,13 @@ StatusCode IDAlignMonResiduals::fillHistograms()
   else {
     m_mu = -999;
   }
+  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);
-    m_totalEvents->Fill(0);
+    m_totalEvents->Fill(0.);
   }
 
   float timeCor = 0.;
@@ -1094,15 +1117,18 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 
   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_DEBUG ("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;
 
@@ -1111,8 +1137,8 @@ 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){
-      ATH_MSG_WARNING("** IDAlignMonResiduals::fillHistograms ** No associated Trk::Track object found for track "<< nTracks);
+    if(track == nullptr){
+      ATH_MSG_DEBUG("** IDAlignMonResiduals::fillHistograms ** No associated Trk::Track object found for track "<< nTracks);
       continue;
     }
 
@@ -1136,6 +1162,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.;
@@ -1151,36 +1178,47 @@ StatusCode IDAlignMonResiduals::fillHistograms()
     }
     //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 ");
+		     << "  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 (" ====> dealing with hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " of track: " << nTracks << "/" << tracks->size());
+      if (tsos == nullptr) {
 	ATH_MSG_DEBUG ("     TSOS (hit) = " << nTSOS << " is NULL ");
 	continue;
       }	
-      ATH_MSG_DEBUG ("** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << "  dealing with TSOS (hit) = " << nTSOS);
 
       //skipping outliers
+      ATH_MSG_DEBUG (" --> testing hit " << nTSOS << "/" << track->trackStateOnSurfaces()->size() << " to be measurement type");
       if(!tsos->type(Trk::TrackStateOnSurface::Measurement)) {
 	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_DEBUG ("Defined hit MeasurementBase for hit " << nTSOS);
+      ATH_MSG_DEBUG ( " --> Defined hit measurementOnTrack() for hit: " << nTSOS <<"/" << track->trackStateOnSurfaces()->size() << " of track " << nTracks);
+      if (!countedTrack) {
+	ATH_MSG_DEBUG ( " --> going to fill: m_hTotalTracks->Fill(0.) ");
+	// m_hTotalTracks->Fill(0.); // count only once
+	countedTrack = true;
+      }
 
       //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
+      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== 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_DEBUG ("No hit associated with TSOS "<< nTSOS);
 	continue;
       }
 
+      ATH_MSG_DEBUG (" --> Going to retrive the track parameters of this TSOS: " << nTSOS); 
       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_DEBUG (" Skipping TSOS " << nTSOS << " because it does not have TrackParameters");
 	continue;
       }
 
@@ -1189,10 +1227,10 @@ StatusCode IDAlignMonResiduals::fillHistograms()
       float incidencePhi = -999;
       float incidenceTheta = -999;
 
+      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){
+      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();
@@ -1206,12 +1244,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");
 	continue;
       }
+      ATH_MSG_DEBUG (" --> going to define residuals and everything of TSOS  #" << nTSOS << "/" << track->trackStateOnSurfaces()->size());
 
       float residualX = 9999.0;
       float residualY = 9999.0;
@@ -1251,14 +1290,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_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];
@@ -1285,7 +1324,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_DEBUG (" --> TRT UnBiased TrackParameters of hit " << nTSOS << " FOUND");
 	
 	float perdictR = trackParameterUnbiased->parameters()[Trk::locR];
 	
@@ -1304,7 +1343,7 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	  pullR = residualPull->pull()[Trk::locR];
 	}
 	else {
-	  if(msgLvl(MSG::WARNING)) msg(MSG::WARNING) << " no covariance of the track parameters given, can not calc pull!" << endmsg;
+	  ATH_MSG_DEBUG (" no covariance of the track parameters given, can not calculate pull!");
 	}
 	
 	delete trackParameterUnbiased;
@@ -1317,17 +1356,17 @@ StatusCode IDAlignMonResiduals::fillHistograms()
 	const InDet::TRT_DriftCircle *RawDriftCircle(NULL);
 	
 	if (trtCircle!=NULL) {
-	  ATH_MSG_DEBUG("Getting RawDriftCircle");
+	  ATH_MSG_DEBUG(" --> 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 {
@@ -4909,11 +4948,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 +4962,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 +4981,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 +5328,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 +5349,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 954d79ff91da8ac79c6b4c0224a16cb906c2c2a0..b24017dd6b0c188e8af8d21d84b4dab31848b22c 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_hTotalTracks{};
   TH1F* m_sirescalcfailure{};
   std::vector<TH3F*> m_sct_b_Oxresxvsmodetaphi_3ds;
   std::vector<TH3F*> m_sct_b_Oyresxvsmodetaphi_3ds;