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;