'eta' : {'xaxis': '#eta', 'yaxis': 'Events', 'rebin': 5, 'rangex': [-2.5,2.5]}, #'met' : {'xaxis': 'E_{T}^{miss} (GeV)', 'yaxis': 'Events/0.2 GeV', 'rebin': 2, 'rangex': [0,200]}, 'wMass' : {'xaxis': 'm_{T}^{l^{+},MET} (GeV)', 'yaxis': 'Events/0.5 GeV', 'rebin': 5, 'rangex': [0,200]}, } # signal region for plot in plots: for lepton in ['loose','medium','tight']: for chan in chans: plotname = '{0}/{1}/{2}'.format(lepton,chan,plot) savename = '{0}/{1}/{2}'.format(lepton,chan,plot) dijetFakeRatePlotter.plot(plotname,savename,**plots[plot]) # plots of multiple ptcuts on same plot dijetFakeRatePlotter.clearHistograms() jetPts = [20,25,30,35,40,45,50] jetPts = [20,30,40,50] dRs = [0.5,0.75,1.,1.25,1.5] jetPtColors = { 10 : ROOT.TColor.GetColor('#000000'), 15 : ROOT.TColor.GetColor('#330000'), 20 : ROOT.TColor.GetColor('#660000'), 25 : ROOT.TColor.GetColor('#800000'), 30 : ROOT.TColor.GetColor('#990000'), 35 : ROOT.TColor.GetColor('#B20000'), 40 : ROOT.TColor.GetColor('#CC0000'), 45 : ROOT.TColor.GetColor('#FF0000'), 50 : ROOT.TColor.GetColor('#FF3333'), } for jetPt in jetPts:
### MC based BG estimate ### ############################ for s in samples: plotter.addHistogramToStack(s, sigMap[s]) if not blind: plotter.addHistogram('data', sigMap['data']) for plot in plots: for sel in sels: kwargs = deepcopy(plots[plot]) plotname = '{0}/{1}'.format(sel, plot) savename = '{0}/mc/{1}'.format(sel, plot) plotter.plot(plotname, savename, **kwargs) # ratios of tight/loose as func of pt/eta plotter.clearHistograms() plotter.addHistogram('MC', sigMap['BG']) plotter.addHistogram('Z', sigMap['Z']) plotter.addHistogram('data', sigMap['data'], style={ 'linecolor': ROOT.kBlack, 'name': 'Data' }) plotter.addHistogram('data_uncorrected', sigMap['data'], style={ 'linecolor': ROOT.kRed, 'name': 'Uncorrected' })
# partially blinded plots if blind: hpp3lPlotter.addHistogram('data',sigMap['data']) for plot in blind_cust: kwargs = deepcopy(plots[plot]) kwargs.update(blind_cust[plot]) plotWithCategories(hpp3lPlotter,plot,saveDir='mc',baseDir='default',postfix='blinder',perCatBins=True,**kwargs) ############################## ### datadriven backgrounds ### ############################## if plotDatadriven: hpp3lPlotter.clearHistograms() hpp3lPlotter.addHistogramToStack('datadriven',datadrivenSamples) for s in samples: hpp3lPlotter.addHistogramToStack(s,sigMapDD[s]) for signal in signals: hpp3lPlotter.addHistogram(signal,sigMapDD[signal],signal=True) if not blind: hpp3lPlotter.addHistogram('data',sigMapDD['data']) if plotCount: plotCounts(hpp3lPlotter,baseDir='default',saveDir='datadriven',datadriven=True) for plot in plots: kwargs = deepcopy(plots[plot])
# #hpp4lPlotter.plot(plotvars,savename,**kwargs) # for cat in cats: # plotvars = {} # for mode in ['default','zveto']: # plotvars[mode] = [] # for subcat in subCatChannels[cat]: # plotvars[mode] += ['{0}/{1}/{2}'.format(mode,chan,plot) for chan in subCatChannels[cat][subcat]] # savename = 'zVeto/{0}/{1}'.format(cat,plot) # if doCat: hpp4lPlotter.plotNormalized(plotnames,savename,**kwargs) # #if doCat: hpp4lPlotter.plot(plotnames,savename,**kwargs) ############################## ### datadriven backgrounds ### ############################## if plotDatadriven: hpp4lPlotter.clearHistograms() hpp4lPlotter.addHistogramToStack('datadriven',datadrivenSamples) for s in samples: hpp4lPlotter.addHistogramToStack(s,sigMapDD[s]) for signal in signals: hpp4lPlotter.addHistogram(signal,sigMapDD[signal],signal=True) if not blind: hpp4lPlotter.addHistogram('data',sigMapDD['data']) if plotCount: plotCounts(hpp4lPlotter,baseDir='default',saveDir='datadriven',datadriven=True) for plot in plots: kwargs = deepcopy(plots[plot])
savename = '{0}/{1}/{2}'.format(sign,chan,plot) chargePlotter.plot(plotname,savename,**plots[plot]) # sum gen matched for plot in plots: for chan in chans: plotnames = {} for sample in samples: plotnames[sample] = ['{0}/{1}/{2}'.format('SS1',chan,plot), '{0}/{1}/{2}'.format('SS2',chan,plot)] plotnames['data'] = ['{0}/{1}/{2}'.format('SS',chan,plot)] savename = '{0}/{1}/{2}'.format('SS12',chan,plot) chargePlotter.plot(plotnames,savename,**plots[plot]) # ratios of SS/OS as func of pt/eta chargePlotter.clearHistograms() allSamplesDict = {'MC':[]} for s in samples: allSamplesDict['MC'] += sigMap[s] chargePlotter.addHistogram('MC',allSamplesDict['MC'],style={'linecolor': ROOT.kRed}) chargePlotter.addHistogram('data',sigMap['data'],style={'linecolor':ROOT.kBlack}) ptbins = [10,20,30,40,50,60,80,100,200,1000] etabins = [-2.5,-2.0,-1.479,-1.0,-0.5,0.,0.5,1.0,1.479,2.0,2.5] ratio_cust = { 'zLeadingLeptonPt' : {'yaxis': 'N_{SS}/N', 'rebin': ptbins}, 'zLeadingLeptonEta' : {'yaxis': 'N_{SS}/N', 'rebin': etabins},
zzPlotter.addHistogram('data',sigMap['data']) if plotCount: plotCounts(zzPlotter,baseDir='default',saveDir='mc') if plotCount: plotCounts(zzPlotter,baseDir='zWindow',saveDir='mc-zWindow') for plot in plots: kwargs = deepcopy(plots[plot]) plotWithChannels(zzPlotter,plot,baseDir='default',saveDir='mc',**kwargs) plotWithChannels(zzPlotter,plot,baseDir='zWindow',saveDir='mc-zWindow',**kwargs) ############################## ### datadriven backgrounds ### ############################## if plotDatadriven: zzPlotter.clearHistograms() zzPlotter.addHistogramToStack('datadriven',datadrivenSamples) for s in samples: zzPlotter.addHistogramToStack(s,sigMapDD[s]) zzPlotter.addHistogram('data',sigMapDD['data']) if plotCount: plotCounts(zzPlotter,baseDir='',saveDir='datadriven',datadriven=True) if plotCount: plotCounts(zzPlotter,baseDir='zWindow',saveDir='datadriven-zWindow',datadriven=True) for plot in plots: kwargs = deepcopy(plots[plot]) plotWithChannels(zzPlotter,plot,baseDir='',saveDir='datadriven',datadriven=True,**kwargs) plotWithChannels(zzPlotter,plot,baseDir='zWindow',saveDir='datadriven-zWindow',datadriven=True,**kwargs)
for s in samples: plotter.addHistogramToStack(s,sigMap[s]) if not blind: plotter.addHistogram('data',sigMap['data']) for plot in plots: for sel in sels: kwargs = deepcopy(plots[plot]) plotname = '{0}/{1}'.format(sel,plot) savename = '{0}/mc/{1}'.format(sel,plot) plotter.plot(plotname,savename,**kwargs) # ratios of tight/loose as func of pt/eta plotter.clearHistograms() plotter.addHistogram('MC',sigMap['BG']) plotter.addHistogram('Z',sigMap['Z']) plotter.addHistogram('data',sigMap['data'],style={'linecolor':ROOT.kBlack,'name':'Data'}) plotter.addHistogram('data_uncorrected',sigMap['data'],style={'linecolor':ROOT.kRed,'name':'Uncorrected'}) ptbins = [3,5,10,15,20,25,30,50,100] etabins = [-2.4,-1.5,-1.0,0.,1.0,1.5,2.4] cust = { 'mPt' : {'rebin': ptbins, 'overflow': False, 'logy': False}, #'mEta' : {'rebin': etabins}, } numDenoms = [('iso0.15','default'),('iso0.25','default'),('iso0.40','default'),('iso0.15','iso0.40'),] numDenoms += [('iso0.15trig','defaulttrig'),('iso0.25trig','defaulttrig'),('iso0.40trig','defaulttrig'),('iso0.15trig','iso0.40trig'),]
plotname = '{0}/{1}/{2}'.format(region,chan,plot) savename = '{0}/{1}/{2}'.format(region,chan,plot) fakeratePlotter.plot(plotname,savename,**plots[plot]) #for sel in ['SS','ZVeto','WMt','full']: for sel in ['WVeto','WMt','ZVeto','full']: plotname = '{0}/{1}/{2}/{3}'.format(region,sel,chan,plot) savename = '{0}/{1}/{2}/{3}'.format(region,sel,chan,plot) fakeratePlotter.plot(plotname,savename,**plots[plot]) # ratios of tight/loose as func of pt/eta sigMap['MC'] = [] for sample in ['TTsub','Z','WWsub']: sigMap['MC'] += sigMap[sample] fakeratePlotter.clearHistograms() fakeratePlotter.addHistogram('MC',sigMap['MC']) fakeratePlotter.addHistogram('W',sigMap['W']) fakeratePlotter.addHistogram('data',sigMap['data'],style={'linecolor':ROOT.kBlack,'name':'Corrected'}) fakeratePlotter.addHistogram('data_uncorrected',sigMap['data'],style={'linecolor':ROOT.kRed,'name':'Uncorrected'}) ptbins = [0,10,15,20,25,30,50,100]#,200,1000] etabins = [-2.5,-2.0,-1.479,-1.0,-0.5,0.,0.5,1.0,1.479,2.0,2.5] cust = { 'lPt' : {'yaxis': 'N_{{{num}}} / N_{{{denom}}}', 'rebin': ptbins, 'xrange': [0,100]}, 'lEta' : {'yaxis': 'N_{{{num}}} / N_{{{denom}}}', 'rebin': etabins}, } numDenom = [('medium','loose'),('tight','loose'),('tight','medium')]
'TTV' : ['TTWJetsToLNu_TuneCUETP8M1_13TeV-amcatnloFXFX-madspin-pythia8'], 'ZG' : ['ZGTo2LG_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8'], 'WW' : ['WWTo2L2Nu_13TeV-powheg'], 'Z' : ['DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8', 'DYJetsToLL_M-10to50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8'], 'TT' : ['TTJets_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8'], 'data': ['DoubleMuon', 'DoubleEG', 'MuonEG', 'SingleMuon', 'SingleElectron'], 'HppHmm500GeV' : ['HPlusPlusHMinusMinusHTo4L_M-500_13TeV-pythia8'], } mPlotter.addHistogram('HppHmm500GeV',sigMap['HppHmm500GeV']) plots = { 'pt_v_dxy': {'xaxis':'p_{T} (GeV)', 'yaxis': '|#Delta_{xy}|'}, 'pt_v_dz' : {'xaxis':'p_{T} (GeV)', 'yaxis': '|#Delta_{z}|'}, } for plot,kwargs in plots.iteritems(): mPlotter.plot2D(plot,'hpp_{0}'.format(plot),logz=0,**kwargs) mPlotter.clearHistograms() mPlotter.addHistogram('Z',sigMap['Z']) for plot,kwargs in plots.iteritems(): mPlotter.plot2D(plot,'dy_{0}'.format(plot),logz=1,**kwargs)
'TTV' : ['TTWJetsToLNu_TuneCUETP8M1_13TeV-amcatnloFXFX-madspin-pythia8'], 'ZG' : ['ZGTo2LG_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8'], 'WW' : ['WWTo2L2Nu_13TeV-powheg'], 'Z' : ['DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8', 'DYJetsToLL_M-10to50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8'], 'TT' : ['TTJets_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8'], 'data': ['DoubleMuon', 'DoubleEG', 'MuonEG', 'SingleMuon', 'SingleElectron'], 'HppHmm500GeV' : ['HPlusPlusHMinusMinusHTo4L_M-500_13TeV-pythia8'], } ePlotter.addHistogram('HppHmm500GeV',sigMap['HppHmm500GeV']) plots = { 'pt_v_dxy': {'xaxis':'p_{T} (GeV)', 'yaxis': '|#Delta_{xy}|'}, 'pt_v_dz' : {'xaxis':'p_{T} (GeV)', 'yaxis': '|#Delta_{z}|'}, } for plot,kwargs in plots.iteritems(): ePlotter.plot2D(plot,'hpp_{0}'.format(plot),logz=0,**kwargs) ePlotter.clearHistograms() ePlotter.addHistogram('Z',sigMap['Z']) for plot,kwargs in plots.iteritems(): ePlotter.plot2D(plot,'dy_{0}'.format(plot),logz=1,**kwargs)
'DYJetsToLL_M-10to50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8' ], 'TT': ['TTJets_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8'], 'data': ['DoubleMuon', 'DoubleEG', 'MuonEG', 'SingleMuon', 'SingleElectron'], 'HppHmm500GeV': ['HPlusPlusHMinusMinusHTo4L_M-500_13TeV-pythia8'], } ePlotter.addHistogram('HppHmm500GeV', sigMap['HppHmm500GeV']) plots = { 'pt_v_dxy': { 'xaxis': 'p_{T} (GeV)', 'yaxis': '|#Delta_{xy}|' }, 'pt_v_dz': { 'xaxis': 'p_{T} (GeV)', 'yaxis': '|#Delta_{z}|' }, } for plot, kwargs in plots.iteritems(): ePlotter.plot2D(plot, 'hpp_{0}'.format(plot), logz=0, **kwargs) ePlotter.clearHistograms() ePlotter.addHistogram('Z', sigMap['Z']) for plot, kwargs in plots.iteritems(): ePlotter.plot2D(plot, 'dy_{0}'.format(plot), logz=1, **kwargs)
# sum gen matched for plot in plots: for chan in chans: plotnames = {} for sample in samples: plotnames[sample] = [ '{0}/{1}/{2}'.format('SS1', chan, plot), '{0}/{1}/{2}'.format('SS2', chan, plot) ] plotnames['data'] = ['{0}/{1}/{2}'.format('SS', chan, plot)] savename = '{0}/{1}/{2}'.format('SS12', chan, plot) chargePlotter.plot(plotnames, savename, **plots[plot]) # ratios of SS/OS as func of pt/eta chargePlotter.clearHistograms() allSamplesDict = {'MC': []} for s in samples: allSamplesDict['MC'] += sigMap[s] chargePlotter.addHistogram('MC', allSamplesDict['MC'], style={'linecolor': ROOT.kRed}) chargePlotter.addHistogram('data', sigMap['data'], style={'linecolor': ROOT.kBlack}) ptbins = [10, 20, 30, 40, 50, 60, 80, 100, 200, 1000] etabins = [-2.5, -2.0, -1.479, -1.0, -0.5, 0., 0.5, 1.0, 1.479, 2.0, 2.5]