#!/usr/bin/python from ROOT import ROOT,gROOT,TCanvas,TFile,TH1D,TH2D,TLegend,THStack,TPaveText, TMarker,TLine,gPad,TF1,TF2,TGraph,Double,TPad import sys,os,math from plotting.PlotStyle import calcSigma,setPlotStyle,colorRwthDarkBlue,colorRwthMagenta,drawLabelCmsPrivateSimulation from plotting.RootFileHandler import RootFileHandler DEBUG = 1 prefix = '[plotEfficiency] ' markerpairs = [ [20,24],[21,25],[22,26],[23,32],[34,28] ] if len(sys.argv) < 2: print 'First argument has to be the file name scheme!' fileHandler = RootFileHandler(sys.argv[1]) fileHandler.printStatus() if( not os.path.exists('plots')): os.mkdir('plots') if( not os.path.exists('plots/efficiency')): os.mkdir('plots/efficiency') setPlotStyle() def plotEfficiencyForPt(folder,pt): if(DEBUG): print prefix + 'was called' #Set plot style if(DEBUG): print prefix + "Getting histogram: %s" % ("hoMuonAnalyzer/efficiency/GenAndL1MuonPt" + str(pt) + "_Efficiency")
class TimeWindow: def __init__(self,filename,data = False): self.commandLine = CommandLineHandler('[TimeWindow] ') self.fileHandler = RootFileHandler(filename) self.fileHandler.printStatus() if( not os.path.exists('plots')): os.mkdir('plots') if( not os.path.exists('plots/efficiencyWithTime')): os.mkdir('plots/efficiencyWithTime') setPlotStyle() self.data = data def plotTimeWindowAlone(self): c = TCanvas('cTimeWindowAlone',"Time Window Alone") effL1Muon3x3Truth = self.fileHandler.getHistogram('hoMuonAnalyzer/efficiency/L1MuonTruthTimeWindow3x3_Efficiency') effL1Muon3x3 = self.fileHandler.getHistogram('hoMuonAnalyzer/efficiency/L1MuonTimeWindow3x3_Efficiency') effL1Muon3x3.SetMarkerStyle(22) effL1Muon3x3.SetMarkerColor(colorRwthDarkBlue) effL1Muon3x3.SetLineColor(colorRwthDarkBlue) effL1Muon3x3.SetTitle('Efficiency in 3x3 grid with time window;p_{T} / GeV;rel. fraction') effL1Muon3x3.Draw() c.Update() effL1Muon3x3.GetPaintedGraph().GetXaxis().SetRangeUser(0,40) #effL1Muon3x3.GetPaintedGraph().GetYaxis().SetRangeUser(0.996,1.001) effL1Muon3x3Truth.SetMarkerStyle(23) effL1Muon3x3Truth.SetMarkerColor(colorRwthMagenta) effL1Muon3x3Truth.SetLineColor(colorRwthMagenta) effL1Muon3x3Truth.Draw('same') setupAxes(effL1Muon3x3) legend = TLegend(0.55,0.1,0.9,0.3) legend.AddEntry(effL1Muon3x3,'Matches in 3x3 grid','ep') legend.AddEntry(effL1Muon3x3Truth,'Matches to truth in 3x3 grid','ep') legend.Draw() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.Update() c.SaveAs('plots/efficiencyWithTime/allL1AndL1Truth3x3.gif') return c, effL1Muon3x3,effL1Muon3x3Truth,label,legend def plotAllL1Together(self): c = TCanvas('cTimeWindowAllL1',"Time Window All L1") effL1Muon3x3 = self.fileHandler.getHistogram('hoMuonAnalyzer/efficiency/L1Muon3x3_Efficiency') effL1Muon3x3TW = self.fileHandler.getHistogram('hoMuonAnalyzer/efficiency/L1MuonTimeWindow3x3_Efficiency') effL1Muon3x3.SetMarkerStyle(22) effL1Muon3x3.SetMarkerColor(colorRwthDarkBlue) effL1Muon3x3.SetLineColor(colorRwthDarkBlue) effL1Muon3x3.SetTitle('Efficiency in 3x3 grid;p_{T} / GeV;rel. fraction') effL1Muon3x3.Draw() c.Update() #effL1Muon3x3.GetPaintedGraph().GetXaxis().SetRangeUser(0,40) #effL1Muon3x3.GetPaintedGraph().GetYaxis().SetRangeUser(0.996,1.001) effL1Muon3x3TW.SetMarkerStyle(23) effL1Muon3x3TW.SetMarkerColor(colorRwthMagenta) effL1Muon3x3TW.SetLineColor(colorRwthMagenta) effL1Muon3x3TW.Draw('same') setupAxes(effL1Muon3x3) legend = TLegend(0.55,0.1,0.9,0.3) legend.AddEntry(effL1Muon3x3,'Matches in 3x3 grid','ep') legend.AddEntry(effL1Muon3x3TW,'Matches in 3x3 grid and time window','ep') legend.Draw() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.Update() c.SaveAs('plots/efficiencyWithTime/allL13x3.gif') return c, label, effL1Muon3x3, effL1Muon3x3TW, legend def plotTruthL1Together(self): c = TCanvas('cTimeWindowTruthL1',"Time Window Truth L1") effL1Muon3x3 = self.fileHandler.getHistogram('hoMuonAnalyzer/efficiency/L1MuonTruth3x3_Efficiency') effL1Muon3x3TW = self.fileHandler.getHistogram('hoMuonAnalyzer/efficiency/L1MuonTruthTimeWindow3x3_Efficiency') effL1Muon3x3.SetMarkerStyle(22) effL1Muon3x3.SetMarkerColor(colorRwthDarkBlue) effL1Muon3x3.SetLineColor(colorRwthDarkBlue) effL1Muon3x3.SetTitle('Efficiency Truth in 3x3 grid;p_{T} / GeV;rel. fraction') effL1Muon3x3.Draw() c.Update() effL1Muon3x3.GetPaintedGraph().GetXaxis().SetRangeUser(0,40) #effL1Muon3x3.GetPaintedGraph().GetYaxis().SetRangeUser(0.996,1.001) effL1Muon3x3TW.SetMarkerStyle(23) effL1Muon3x3TW.SetMarkerColor(colorRwthMagenta) effL1Muon3x3TW.SetLineColor(colorRwthMagenta) effL1Muon3x3TW.Draw('same') setupAxes(effL1Muon3x3) legend = TLegend(0.55,0.1,0.9,0.3) legend.AddEntry(effL1Muon3x3,'Matches to L1 Truth in 3x3 grid','ep') legend.AddEntry(effL1Muon3x3TW,'Matches to L1 Truth in 3x3 grid and time window','ep') legend.Draw() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.Update() return c, label, effL1Muon3x3, effL1Muon3x3TW, legend def plotBxidVsPtFails(self): c = TCanvas('cBxidVsPtFails','BxidVsPtFails',800,1200) c.Divide(1,2) c.cd(1).SetLogz() hist = self.fileHandler.getHistogram('hoMuonAnalyzer/time/L1Muon3x3Fail_BxIdVsPt') setupAxes(hist) hist.SetTitle('Failed matching in 3x3;p_{T} / GeV;BX ID;# entries') hist.SetStats(0) hist.GetYaxis().SetRangeUser(-3,3) histCopy = hist.DrawCopy('colz') c.Update() setupPalette(histCopy) c.Update() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.cd(2).SetLogz() hist.Scale(1,'width') hist.SetTitle(hist.GetTitle() + ', by bin width') hist.GetZaxis().SetTitle('# entries / GeV') hist.Draw('colz') c.Update() setupPalette(hist) c.Update() labelBottom = None if self.data: labelBottom = drawLabelCmsPrivateData() else: labelBottom = drawLabelCmsPrivateSimulation() c.Update() c.SaveAs('plots/efficiencyWithTime/bxIdVsPt3x3Fail.gif') return c, hist,label,labelBottom def plotBxidVsPtMatch(self): c = TCanvas('cBxidVsPtMatch','BxidVsPtMatch',800,1200) c.Divide(1,2) c.cd(1).SetLogz() hist = self.fileHandler.getHistogram('hoMuonAnalyzer/time/L1Muon3x3Match_BxIdVsPt') hist.SetStats(0) setupAxes(hist) hist.SetTitle('Successful matching in 3x3;p_{T} / GeV;BX ID;# entries') hist.GetYaxis().SetRangeUser(-3,3) histCopy = hist.DrawCopy('colz') c.Update() setupPalette(histCopy) c.Update() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.cd(2).SetLogz() hist.Scale(1,'width') hist.SetTitle(hist.GetTitle() + ', by bin width') hist.GetZaxis().SetTitle('# entries / GeV') hist.Draw('colz') c.Update() setupPalette(hist) c.Update() labelBottom = None if self.data: labelBottom = drawLabelCmsPrivateData() else: labelBottom = drawLabelCmsPrivateSimulation() c.Update() c.SaveAs('plots/efficiencyWithTime/bxIdVsPt3x3Match.gif') return c, hist,label,labelBottom
def createFileHandler(self,filename): fh = RootFileHandler(filename,debug=self.DEBUG) fh.printStatus() return fh
gROOT.Reset() from plotting.PlotStyle import setPlotStyle, getLabelCmsPrivateSimulation, getTH2D, calcSigma, setupAxes setPlotStyle() from plotting.RootFileHandler import RootFileHandler if (not os.path.exists('plots')): os.mkdir('plots') if (not os.path.exists('plots/timeCorrelation')): os.mkdir('plots/timeCorrelation') if len(sys.argv) < 2: print 'First argument has to be the file name scheme!' fileHandler = RootFileHandler(sys.argv[1]) fileHandler.printStatus() ''' Calculate the time slew for a given charge ''' def getTimeSlew(charge): if charge < 1: charge = 1 rawDelay = 23.97 - 3.18 * log(charge) timeSlew = 0 if rawDelay < 0 else (np.min([16, rawDelay])) return timeSlew #plot the timing correlation between HO and L1 in general def plotHoL1Correlation():
def createFileHandler(self,filename): fh = RootFileHandler(filename) fh.printStatus() return fh
class TimeWindow: def __init__(self,filename,debug,data = False): self.commandLine = CommandLineHandler('[TimeWindow] ') self.fileHandler = RootFileHandler(filename) self.fileHandler.printStatus() if( not os.path.exists('plots')): os.mkdir('plots') if( not os.path.exists('plots/efficiencyWithTime')): os.mkdir('plots/efficiencyWithTime') setPlotStyle() self.data = data def plotTimeWindowAlone(self): c = TCanvas('cTimeWindowAlone',"Time Window Alone") effL1Muon3x3Truth = self.fileHandler.getHistogram('efficiency/L1MuonTruthTimeWindow3x3_Efficiency') effL1Muon3x3 = self.fileHandler.getHistogram('efficiency/L1MuonTimeWindow3x3_Efficiency') effL1Muon3x3.SetMarkerStyle(22) effL1Muon3x3.SetMarkerColor(colorRwthDarkBlue) effL1Muon3x3.SetLineColor(colorRwthDarkBlue) effL1Muon3x3.SetTitle('Efficiency in 3x3 grid with time window;p_{T} / GeV;rel. fraction') effL1Muon3x3.Draw() c.Update() effL1Muon3x3.GetPaintedGraph().GetXaxis().SetRangeUser(0,40) #effL1Muon3x3.GetPaintedGraph().GetYaxis().SetRangeUser(0.996,1.001) effL1Muon3x3Truth.SetMarkerStyle(23) effL1Muon3x3Truth.SetMarkerColor(colorRwthMagenta) effL1Muon3x3Truth.SetLineColor(colorRwthMagenta) effL1Muon3x3Truth.Draw('same') setupAxes(effL1Muon3x3) legend = TLegend(0.55,0.1,0.9,0.3) legend.AddEntry(effL1Muon3x3,'Matches in 3x3 grid','ep') legend.AddEntry(effL1Muon3x3Truth,'Matches to truth in 3x3 grid','ep') legend.Draw() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.Update() c.SaveAs('plots/efficiencyWithTime/allL1AndL1Truth3x3.gif') return c, effL1Muon3x3,effL1Muon3x3Truth,label,legend def plotAllL1Together(self): c = TCanvas('cTimeWindowAllL1',"Time Window All L1") effL1Muon3x3 = self.fileHandler.getHistogram('efficiency/L1Muon3x3_Efficiency') effL1Muon3x3TW = self.fileHandler.getHistogram('efficiency/L1MuonTimeWindow3x3_Efficiency') effL1Muon3x3.SetMarkerStyle(22) effL1Muon3x3.SetMarkerColor(colorRwthDarkBlue) effL1Muon3x3.SetLineColor(colorRwthDarkBlue) effL1Muon3x3.SetTitle('Efficiency in 3x3 grid;p_{T} / GeV;rel. fraction') effL1Muon3x3.Draw() c.Update() #effL1Muon3x3.GetPaintedGraph().GetXaxis().SetRangeUser(0,40) #effL1Muon3x3.GetPaintedGraph().GetYaxis().SetRangeUser(0.996,1.001) effL1Muon3x3TW.SetMarkerStyle(23) effL1Muon3x3TW.SetMarkerColor(colorRwthMagenta) effL1Muon3x3TW.SetLineColor(colorRwthMagenta) effL1Muon3x3TW.Draw('same') setupAxes(effL1Muon3x3) legend = TLegend(0.55,0.1,0.9,0.3) legend.AddEntry(effL1Muon3x3,'Matches in 3x3 grid','ep') legend.AddEntry(effL1Muon3x3TW,'Matches in 3x3 grid and time window','ep') legend.Draw() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.Update() c.SaveAs('plots/efficiencyWithTime/allL13x3.gif') return c, label, effL1Muon3x3, effL1Muon3x3TW, legend def plotTruthL1Together(self): c = TCanvas('cTimeWindowTruthL1',"Time Window Truth L1") effL1Muon3x3 = self.fileHandler.getHistogram('efficiency/L1MuonTruth3x3_Efficiency') effL1Muon3x3TW = self.fileHandler.getHistogram('efficiency/L1MuonTruthTimeWindow3x3_Efficiency') effL1Muon3x3.SetMarkerStyle(22) effL1Muon3x3.SetMarkerColor(colorRwthDarkBlue) effL1Muon3x3.SetLineColor(colorRwthDarkBlue) effL1Muon3x3.SetTitle('Efficiency Truth in 3x3 grid;p_{T} / GeV;rel. fraction') effL1Muon3x3.Draw() c.Update() effL1Muon3x3.GetPaintedGraph().GetXaxis().SetRangeUser(0,40) #effL1Muon3x3.GetPaintedGraph().GetYaxis().SetRangeUser(0.996,1.001) effL1Muon3x3TW.SetMarkerStyle(23) effL1Muon3x3TW.SetMarkerColor(colorRwthMagenta) effL1Muon3x3TW.SetLineColor(colorRwthMagenta) effL1Muon3x3TW.Draw('same') setupAxes(effL1Muon3x3) legend = TLegend(0.55,0.1,0.9,0.3) legend.AddEntry(effL1Muon3x3,'Matches to L1 Truth in 3x3 grid','ep') legend.AddEntry(effL1Muon3x3TW,'Matches to L1 Truth in 3x3 grid and time window','ep') legend.Draw() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.Update() return c, label, effL1Muon3x3, effL1Muon3x3TW, legend def plotBxidVsPtFails(self): c = TCanvas('cBxidVsPtFails','BxidVsPtFails',800,1200) c.Divide(1,2) c.cd(1).SetLogz() hist = self.fileHandler.getHistogram('time/L1Muon3x3Fail_BxIdVsPt') setupAxes(hist) hist.SetTitle('Failed matching in 3x3;p_{T} / GeV;BX ID;# entries') hist.SetStats(0) hist.GetYaxis().SetRangeUser(-3,3) histCopy = hist.DrawCopy('colz') c.Update() setupPalette(histCopy) c.Update() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.cd(2).SetLogz() hist.Scale(1,'width') hist.SetTitle(hist.GetTitle() + ', by bin width') hist.GetZaxis().SetTitle('# entries / GeV') hist.Draw('colz') c.Update() setupPalette(hist) c.Update() labelBottom = None if self.data: labelBottom = drawLabelCmsPrivateData() else: labelBottom = drawLabelCmsPrivateSimulation() c.Update() c.SaveAs('plots/efficiencyWithTime/bxIdVsPt3x3Fail.gif') return c, hist,label,labelBottom def plotBxidVsPtMatch(self): c = TCanvas('cBxidVsPtMatch','BxidVsPtMatch',800,1200) c.Divide(1,2) c.cd(1).SetLogz() hist = self.fileHandler.getHistogram('time/L1Muon3x3Match_BxIdVsPt') hist.SetStats(0) setupAxes(hist) hist.SetTitle('Successful matching in 3x3;p_{T} / GeV;BX ID;# entries') hist.GetYaxis().SetRangeUser(-3,3) histCopy = hist.DrawCopy('colz') c.Update() setupPalette(histCopy) c.Update() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.cd(2).SetLogz() hist.Scale(1,'width') hist.SetTitle(hist.GetTitle() + ', by bin width') hist.GetZaxis().SetTitle('# entries / GeV') hist.Draw('colz') c.Update() setupPalette(hist) c.Update() labelBottom = None if self.data: labelBottom = drawLabelCmsPrivateData() else: labelBottom = drawLabelCmsPrivateSimulation() c.Update() c.SaveAs('plots/efficiencyWithTime/bxIdVsPt3x3Match.gif') return c, hist,label,labelBottom
class QualityCode: def __init__(self,filename,data =False): self.commandLine = CommandLineHandler('[QualityCode] ') self.fileHandler = RootFileHandler(filename) self.fileHandler.printStatus() if( not os.path.exists('plots')): os.mkdir('plots') if( not os.path.exists('plots/qualityCode')): os.mkdir('plots/qualityCode') setPlotStyle() self.data = data def plot3x3MatchQualityCodes(self): c = TCanvas('cMatchQC3x3','Match QC 3x3',0,0,900,700) c.SetLogz() hist = self.fileHandler.getHistogram('hoMuonAnalyzer/qualityCode/L1Muon3x3Match_QcVsPt') hist.SetStats(0) hist.Scale(1,'width') hist.Draw('colz') c.Update() setupPalette(hist) c.Update() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.Update() box = TBox(0,6.5,180,7.5) box.SetLineColor(3) box.SetLineWidth(2) box.Draw() c.Update() return hist,c,label,box def plot3x3FailQualityCodes(self): c = TCanvas('cFailQC3x3','Fail QC 3x3',910,0,900,700) c.SetLogz() hist = self.fileHandler.getHistogram('hoMuonAnalyzer/qualityCode/L1Muon3x3Fail_QcVsPt') hist.SetStats(0) hist.Scale(1,'width') hist.Draw('colz') c.Update() setupPalette(hist) c.Update() label = None if self.data: label = drawLabelCmsPrivateData() else: label = drawLabelCmsPrivateSimulation() c.Update() return hist,c,label
def createFileHandler(self, filename): fh = RootFileHandler(filename, debug=self.DEBUG) fh.printStatus() return fh