def getPlotter(blind=True,datadriven=False,control=False): plotter = Plotter('Hpp4l') plotter.setSelectionMap(sampleCuts) if datadriven: plotter.addHistogramToStack('datadriven',datadrivenSamples) mcSamples = samples if datadriven else allsamples signalMap = sigMapDD if datadriven else sigMap for s in mcSamples: plotter.addHistogramToStack(s,signalMap[s]) if not control: for signal in signals: plotter.addHistogram(signal,signalMap[signal],signal=True) if not blind: plotter.addHistogram('data',signalMap['data']) return plotter
'GluGluToContinToZZTo4e_13TeV_MCFM701_pythia8', 'GluGluToContinToZZTo4mu_13TeV_MCFM701_pythia8', 'GluGluToContinToZZTo4tau_13TeV_MCFM701_pythia8', 'ZZTo2L2Nu_13TeV_powheg_pythia8', 'ZZTo2L2Q_13TeV_amcatnloFXFX_madspin_pythia8'], 'VVV' : ['WZZ_TuneCUETP8M1_13TeV-amcatnlo-pythia8'], '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'], } for s in ['TT','TTV','Z','ZG','WW','VVV','ZZ','WZ']: hpp4lPlotter.addHistogramToStack(s,sigMap[s]) hpp4lPlotter.addHistogram('HppHmm500GeV',sigMap['HppHmm500GeV']) if not blind: hpp4lPlotter.addHistogram('data',sigMap['data']) for plot in ['hppMass']: hpp4lPlotter.plot(plot,plot,logy=True,numcol=2,legendpos=34)
"TTJets_SingleLeptFromT_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "TTJets_SingleLeptFromTbar_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", ], "data": ["DoubleMuon", "DoubleEG", "MuonEG", "SingleMuon", "SingleElectron"], "HppHmm200GeV": ["HPlusPlusHMinusMinusHTo4L_M-200_13TeV-pythia8"], "HppHmm300GeV": ["HPlusPlusHMinusMinusHTo4L_M-300_13TeV-pythia8"], "HppHmm400GeV": ["HPlusPlusHMinusMinusHTo4L_M-400_13TeV-pythia8"], "HppHmm500GeV": ["HPlusPlusHMinusMinusHTo4L_M-500_13TeV-pythia8"], "HppHmm600GeV": ["HPlusPlusHMinusMinusHTo4L_M-600_13TeV-pythia8"], "HppHmm700GeV": ["HPlusPlusHMinusMinusHTo4L_M-700_13TeV-pythia8"], "HppHmm800GeV": ["HPlusPlusHMinusMinusHTo4L_M-800_13TeV-pythia8"], "HppHmm900GeV": ["HPlusPlusHMinusMinusHTo4L_M-900_13TeV-pythia8"], "HppHmm1.0TeV": ["HPlusPlusHMinusMinusHTo4L_M-1000_13TeV-pythia8"], } effPlotter.addHistogram("Z", sigMap["Z"], style={"name": "DY (prompt)"}) effPlotter.addHistogram("TT", sigMap["TT"], style={"name": "t#bar{t} (from jet)"}) effPlotter.addHistogram("QCD", sigMap["QCD"], style={"name": "QCD (unmatched)"}) effPlotter.addHistogram("HppHmm500GeV", sigMap["HppHmm500GeV"], style={"name": "#Phi^{++}#Phi^{--} (prompt)"}) sigcolors = [ ROOT.TColor.GetColor("#000000"), # ROOT.TColor.GetColor('#1A0000'), ROOT.TColor.GetColor("#330000"), # ROOT.TColor.GetColor('#4C0000'), ROOT.TColor.GetColor("#660000"), ROOT.TColor.GetColor("#800000"), ROOT.TColor.GetColor("#990000"), ROOT.TColor.GetColor("#B20000"), ROOT.TColor.GetColor("#CC0000"), # ROOT.TColor.GetColor('#E60000'),
ROOT.TColor.GetColor('#CC0000'), #ROOT.TColor.GetColor('#E60000'), ROOT.TColor.GetColor('#FF0000'), #ROOT.TColor.GetColor('#FF1919'), ROOT.TColor.GetColor('#FF3333'), #ROOT.TColor.GetColor('#FF4D4D'), ROOT.TColor.GetColor('#FF6666'), ROOT.TColor.GetColor('#FF8080'), ROOT.TColor.GetColor('#FF9999'), ROOT.TColor.GetColor('#FFB2B2'), ROOT.TColor.GetColor('#FFCCCC'), ] mPlotter.addHistogram('sig', sigMap['HppHmm1000GeV'], style={ 'name': 'Match to gen', 'linecolor': ROOT.kBlue }) mPlotter.addHistogram('fake', sigMap['QCD'], style={ 'name': 'Fake', 'linecolor': ROOT.kBlue, 'linestyle': 2 }) idNames = [ 'isLooseMuon_looseIso', 'isMediumMuon_looseIso', 'isMediumMuon_tightIso', 'isTightMuon_tightIso',
ROOT.TColor.GetColor('#B20000'), ROOT.TColor.GetColor('#CC0000'), #ROOT.TColor.GetColor('#E60000'), ROOT.TColor.GetColor('#FF0000'), #ROOT.TColor.GetColor('#FF1919'), ROOT.TColor.GetColor('#FF3333'), #ROOT.TColor.GetColor('#FF4D4D'), ROOT.TColor.GetColor('#FF6666'), ROOT.TColor.GetColor('#FF8080'), ROOT.TColor.GetColor('#FF9999'), ROOT.TColor.GetColor('#FFB2B2'), ROOT.TColor.GetColor('#FFCCCC'), ] #ePlotter.addHistogram('HppHmm500GeV',sigMap['HppHmm500GeV']) ePlotter.addHistogram('HppHmm500GeVBarrel',sigMap['HppHmm500GeV'],style={'name':'#Phi^{++}#Phi^{--} (Barrel)','linecolor':sigcolors[3],'fillcolor':sigcolors[3]}) ePlotter.addHistogram('HppHmm500GeVEndcap',sigMap['HppHmm500GeV'],style={'name':'#Phi^{++}#Phi^{--} (Endcap)','linecolor':sigcolors[6],'fillcolor':sigcolors[6]}) # #ePlotter.addHistogram('HppHmm200GeV', sigMap['HppHmm200GeV'],style={'name':'#Phi^{++}#Phi^{--} (200 GeV)', 'linecolor':sigcolors[0], 'fillcolor':sigcolors[0]}) #ePlotter.addHistogram('HppHmm300GeV', sigMap['HppHmm300GeV'],style={'name':'#Phi^{++}#Phi^{--} (300 GeV)', 'linecolor':sigcolors[1], 'fillcolor':sigcolors[1]}) #ePlotter.addHistogram('HppHmm400GeV', sigMap['HppHmm400GeV'],style={'name':'#Phi^{++}#Phi^{--} (400 GeV)', 'linecolor':sigcolors[2], 'fillcolor':sigcolors[2]}) #ePlotter.addHistogram('HppHmm500GeV', sigMap['HppHmm500GeV'],style={'name':'#Phi^{++}#Phi^{--} (500 GeV)', 'linecolor':sigcolors[3], 'fillcolor':sigcolors[3]}) #ePlotter.addHistogram('HppHmm600GeV', sigMap['HppHmm600GeV'],style={'name':'#Phi^{++}#Phi^{--} (600 GeV)', 'linecolor':sigcolors[4], 'fillcolor':sigcolors[4]}) #ePlotter.addHistogram('HppHmm700GeV', sigMap['HppHmm700GeV'],style={'name':'#Phi^{++}#Phi^{--} (700 GeV)', 'linecolor':sigcolors[5], 'fillcolor':sigcolors[5]}) #ePlotter.addHistogram('HppHmm800GeV', sigMap['HppHmm800GeV'],style={'name':'#Phi^{++}#Phi^{--} (800 GeV)', 'linecolor':sigcolors[6], 'fillcolor':sigcolors[6]}) #ePlotter.addHistogram('HppHmm900GeV', sigMap['HppHmm900GeV'],style={'name':'#Phi^{++}#Phi^{--} (900 GeV)', 'linecolor':sigcolors[7], 'fillcolor':sigcolors[7]}) #ePlotter.addHistogram('HppHmm1.0TeV', sigMap['HppHmm1.0TeV'],style={'name':'#Phi^{++}#Phi^{--} (1 TeV)', 'linecolor':sigcolors[8], 'fillcolor':sigcolors[8]}) plots = { 'dxy' : {'legendpos':34,'numcol':3,'invert':True},
#'hppDeltaR' : {'yaxis': '#DeltaR(l^{+}l^{+})', 'xaxis': 'm_{#Phi^{#pm#pm}} (GeV)', 'legendpos':13, 'numcol': 1}, #'met' : {'yaxis': 'E_{T}^{miss} (GeV)', 'xaxis': 'm_{#Phi^{#pm#pm}} (GeV)', 'legendpos':13, 'numcol': 1}, #'mllMinusZ' : {'yaxis': '|m_{l^{+}l^{-}}-m_{Z}| (GeV)', 'xaxis': 'm_{#Phi^{#pm#pm}} (GeV)', 'legendpos':13, 'numcol': 1}, } ############################ ### MC based BG estimate ### ############################ if plotMC: for s in allsamples: hpp4lPlotter.addHistogramToStack(s,sigMap[s]) for signal in signals: hpp4lPlotter.addHistogram(signal,sigMap[signal],signal=True) if not blind: hpp4lPlotter.addHistogram('data',sigMap['data']) if plotCount: plotCounts(hpp4lPlotter,baseDir='default',saveDir='mc') for plot in plots: kwargs = deepcopy(plots[plot]) plotWithCategories(hpp4lPlotter,plot,baseDir='default',saveDir='mc',perCatBins=True,**kwargs) if plot=='hppMass' or plotAllChannels: plotChannels(hpp4lPlotter,plot,baseDir='default',saveDir='mc',**kwargs) # selection assuming 500 if plotSig500: if plotCount: plotCounts(hpp4lPlotter,baseDir='nMinusOne/massWindow/500/hpp2hmm2',saveDir='sig500') for plot in plots:
'metPhi' : {'xaxis': '#phi(E_{T}^{miss})', 'yaxis': 'Events', 'rebin': 5}, 'mass' : {'xaxis': 'm_{4l} (GeV)', 'yaxis': 'Events / 20 GeV', 'rebin': 2, 'rangex': [0,1000]}, 'st' : {'xaxis': '#Sigma p_{T}^{l} (GeV)', 'yaxis': 'Events / 20 GeV', 'rebin': 2, 'rangex': [0,1000]}, 'nJets' : {'xaxis': 'Number of jets (p_{T} > 30 GeV)', 'yaxis': 'Events'}, } ############################ ### MC based BG estimate ### ############################ if plotMC: for s in allsamples: zzPlotter.addHistogramToStack(s,sigMap[s]) 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()
'GluGluToContinToZZTo4e_13TeV_MCFM701_pythia8', 'GluGluToContinToZZTo4mu_13TeV_MCFM701_pythia8', 'GluGluToContinToZZTo4tau_13TeV_MCFM701_pythia8', 'ZZTo2L2Nu_13TeV_powheg_pythia8', 'ZZTo2L2Q_13TeV_amcatnloFXFX_madspin_pythia8'], 'VVV' : ['WZZ_TuneCUETP8M1_13TeV-amcatnlo-pythia8'], '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'], } for s in ['TT','TTV','Z','ZG','WW','VVV','ZZ','WZ']: wzPlotter.addHistogramToStack(s,sigMap[s]) wzPlotter.addHistogram('data',sigMap['data']) plotStyles = { 'zMass': {'xaxis': 'm_{l^{+}l^{#font[122]{\55}}}', 'yaxis': 'Events/1 GeV'}, } for plot in ['zMass']: wzPlotter.plot(plot,plot,**plotStyles[plot])
ROOT.TColor.GetColor('#FF0000'), #ROOT.TColor.GetColor('#FF1919'), ROOT.TColor.GetColor('#FF3333'), #ROOT.TColor.GetColor('#FF4D4D'), ROOT.TColor.GetColor('#FF6666'), ROOT.TColor.GetColor('#FF8080'), ROOT.TColor.GetColor('#FF9999'), ROOT.TColor.GetColor('#FFB2B2'), ROOT.TColor.GetColor('#FFCCCC'), ] #tPlotter.addHistogram('signew',sigMap['HppHmm1000GeV'],style={'name': 'New DMs (match tau gen jet)','linecolor':ROOT.kRed}) #tPlotter.addHistogram('sigold',sigMap['HppHmm1000GeV'],style={'name': 'Old DMs (match tau gen jet)','linecolor':ROOT.kBlue}) tPlotter.addHistogram('sigold', sigMap['Z'], style={ 'name': 'Old DMs (match tau gen jet)', 'linecolor': ROOT.kBlue }) #tPlotter.addHistogram('fakenew',sigMap['QCD'],style={'name':'New DMs (fake)','linecolor':ROOT.kRed,'linestyle':2}) #tPlotter.addHistogram('fakeold',sigMap['QCD'],style={'name':'Old DMs (fake)','linecolor':ROOT.kRed,'linestyle':2}) tPlotter.addHistogram('fakeold', sigMap['TT'], style={ 'name': 'Old DMs (fake)', 'linecolor': ROOT.kRed, 'linestyle': 2 }) idNames = [ #'{0}_vlooseElectron_looseMuon_vvlooseIsolation', '{0}_vlooseElectron_looseMuon_neg0p8Isolation',
######################## ### plot definitions ### ######################## plots = { 'Pt' : {'xaxis': 'p_{T} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10, 'numcol': 3, 'legendpos':34, 'rangex': [10,250]}, } ############################ ### MC based BG estimate ### ############################ for s in allsamples: plotter.addHistogramToStack(s,sigMap[s]) if not blind: plotter.addHistogram('data',sigMap['data']) lepChan = { 'e1': ['3e0m','2e1m','1e2m'], 'e2': ['3e0m','2e1m'], 'm1': ['2e1m','1e2m','0e3m'], 'm2': ['1e2m','0e3m'], } for lep in lepChan: for plot in plots: kwargs = deepcopy(plots[plot]) plotname = ['{0}/{1}{2}'.format(chan,lep,plot) for chan in lepChan[lep]] savename = 'mc/{0}{1}'.format(lep,plot) plotter.plot(plotname,savename,**kwargs)
'GluGluToContinToZZTo4e_13TeV_MCFM701_pythia8', 'GluGluToContinToZZTo4mu_13TeV_MCFM701_pythia8', 'GluGluToContinToZZTo4tau_13TeV_MCFM701_pythia8', 'ZZTo2L2Nu_13TeV_powheg_pythia8', 'ZZTo2L2Q_13TeV_amcatnloFXFX_madspin_pythia8' ], 'VVV': ['WZZ_TuneCUETP8M1_13TeV-amcatnlo-pythia8'], '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'], } for s in ['TT', 'TTV', 'Z', 'ZG', 'WW', 'VVV', 'ZZ', 'WZ']: hpp3lPlotter.addHistogramToStack(s, sigMap[s]) hpp3lPlotter.addHistogram('HppHmm500GeV', sigMap['HppHmm500GeV']) if not blind: hpp3lPlotter.addHistogram('data', sigMap['data']) for plot in ['hppMass']: hpp3lPlotter.plot(plot, plot, logy=True, numcol=2, legendpos=34)
'SingleElectron', ], } sigMap['BG'] = [] for s in ['WZ', 'ZZ', 'VVV', 'TTV']: sigMap['BG'] += sigMap[s] samples = ['TT', 'TTV', 'WZ', 'VVV', 'ZZ', 'Z'] selections = ['default', 'tight'] channels = ['e', 'm'] channelMap = {'e': ['eee', 'mme'], 'm': ['eem', 'mmmm']} 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' }) denom = 'default'
], 'data': [ 'DoubleMuon', 'DoubleEG', 'SingleMuon', 'SingleElectron', ], } #samples = ['WW','TT','Z'] samples = ['TT', 'Z'] for s in samples: chargePlotter.addHistogramToStack(s, sigMap[s]) chargePlotter.addHistogram('data', sigMap['data']) # plot definitions plots = { # z cand 'zMass': { 'xaxis': 'm_{l^{+}l^{-}} (GeV)', 'yaxis': 'Events / 1 GeV', 'rebin': range(81, 101, 1) }, 'zLeadingLeptonPt': { 'xaxis': 'p_{T}^{Z_{lead}} (GeV)', 'yaxis': 'Events / 1 GeV', 'rebin': range(0, 150, 1) }, 'zLeadingLeptonEta': {
], 'data': [ 'SingleMuon', 'DoubleMuon', 'SingleElectron', 'DoubleEG', ], } samples = ['W','T','TT','Z','WW','WZ','ZZ','TTV'] subsamples = ['WZ','ZZ','TTV'] for s in samples: fakeratePlotter.addHistogramToStack(s,sigMap[s]) fakeratePlotter.addHistogram('data',sigMap['data']) plots = { # z cand 'zMass' : {'xaxis': 'm_{l^{+}l^{-}} (GeV)', 'yaxis': 'Events / 1 GeV', 'rebin': 1}, 'zLeadingLeptonPt' : {'xaxis': 'p_{T}^{Z leading} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10}, 'zLeadingLeptonEta' : {'xaxis': '#eta^{Z leading}', 'yaxis': 'Events', 'rebin': 10}, 'zSubLeadingLeptonPt' : {'xaxis': 'p_{T}^{Z subleading} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10}, 'zSubLeadingLeptonEta' : {'xaxis': '#eta^{Z subleading}', 'yaxis': 'Events', 'rebin': 10}, # t cand 'wtMt' : {'xaxis': 'm_{T}^{#tau} (GeV)', 'yaxis': 'Events / 5 GeV', 'rebin': 5}, 'tPt' : {'xaxis': 'p_{T}^{#tau} (GeV)', 'yaxis': 'Events / 5 GeV', 'rebin': 5}, 'tEta' : {'xaxis': '#eta^{#tau}', 'yaxis': 'Events', 'rebin': 5}, 'tDM' : {'xaxis': '#tau Decay Mode', 'yaxis': 'Events',}, # event 'numVertices' : {'xaxis': 'Reconstructed Vertices', 'yaxis': 'Events'},
#ROOT.TColor.GetColor('#E60000'), ROOT.TColor.GetColor('#FF0000'), #ROOT.TColor.GetColor('#FF1919'), ROOT.TColor.GetColor('#FF3333'), #ROOT.TColor.GetColor('#FF4D4D'), ROOT.TColor.GetColor('#FF6666'), ROOT.TColor.GetColor('#FF8080'), ROOT.TColor.GetColor('#FF9999'), ROOT.TColor.GetColor('#FFB2B2'), ROOT.TColor.GetColor('#FFCCCC'), ] #tPlotter.addHistogram('signew',sigMap['HppHmm1000GeV'],style={'name': 'New DMs (match tau gen jet)','linecolor':ROOT.kRed}) #tPlotter.addHistogram('sigold',sigMap['HppHmm1000GeV'],style={'name': 'Old DMs (match tau gen jet)','linecolor':ROOT.kBlue}) tPlotter.addHistogram('sigold',sigMap['Z'],style={'name': 'Old DMs (match tau gen jet)','linecolor':ROOT.kBlue}) #tPlotter.addHistogram('fakenew',sigMap['QCD'],style={'name':'New DMs (fake)','linecolor':ROOT.kRed,'linestyle':2}) #tPlotter.addHistogram('fakeold',sigMap['QCD'],style={'name':'Old DMs (fake)','linecolor':ROOT.kRed,'linestyle':2}) tPlotter.addHistogram('fakeold',sigMap['TT'],style={'name':'Old DMs (fake)','linecolor':ROOT.kRed,'linestyle':2}) idNames = [ #'{0}_vlooseElectron_looseMuon_vvlooseIsolation', '{0}_vlooseElectron_looseMuon_neg0p8Isolation', '{0}_vlooseElectron_looseMuon_neg0p6Isolation', '{0}_vlooseElectron_looseMuon_neg0p4Isolation', '{0}_vlooseElectron_looseMuon_neg0p2Isolation', '{0}_vlooseElectron_looseMuon_neg0p0Isolation', '{0}_vlooseElectron_looseMuon_looseIsolation', '{0}_vlooseElectron_looseMuon_tightIsolation', '{0}_vlooseElectron_looseMuon_vtightIsolation', #'{0}_tightElectron_tightMuon_vvlooseIsolation',
], 'VVV': ['WZZ_TuneCUETP8M1_13TeV-amcatnlo-pythia8'], '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)
'VVV' : ['WZZ_TuneCUETP8M1_13TeV-amcatnlo-pythia8'], '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)
'ST_tW_top_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1', ], 'data': [ 'DoubleMuon', 'DoubleEG', ], } samples = ['TT','Z','W','T','WW'] allSamplesDict = {'MC':[]} for s in samples: allSamplesDict['MC'] += sigMap[s] dijetFakeRatePlotter.addHistogram('MC',allSamplesDict['MC']) dijetFakeRatePlotter.addHistogram('data',sigMap['data'],style={'linecolor':ROOT.kBlack,'name':'EWK Corrected'}) dijetFakeRatePlotter.addHistogram('data_uncorrected',sigMap['data'],style={'linecolor':ROOT.kRed,'name':'Uncorrected'}) channels = ['e','m'] dirName = { 'e': 'electron', 'm': 'muon', 't': 'tau' } labelMap = { 'e': 'e',
'QCD_Pt_3200toInf_TuneCUETP8M1_13TeV_pythia8', ], 'data': [ 'SingleMuon', 'SingleElectron', ], } chans = ['me','em','mm','ee'] samples = ['W','T','TT','Z','WW'] for s in samples: fakeratePlotter.addHistogramToStack(s,sigMap[s]) fakeratePlotter.addHistogram('data',sigMap['data']) plots = { # z cand 'zMass' : {'xaxis': 'm_{l^{+}l^{-}} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10}, # m cand 'wtMt' : {'xaxis': 'm_{T}^{tag} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10}, 'tPt' : {'xaxis': 'p_{T}^{tag} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10}, 'tEta' : {'xaxis': '#eta^{tag}', 'yaxis': 'Events', 'rebin': 10}, # t cand 'wlMt' : {'xaxis': 'm_{T}^{l} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10}, 'lPt' : {'xaxis': 'p_{T}^{l} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10}, 'lEta' : {'xaxis': '#eta^{l}', 'yaxis': 'Events', 'rebin': 10}, # event #'numVertices' : {'xaxis': 'Reconstructed Vertices', 'yaxis': 'Events'}, 'met' : {'xaxis': 'E_{T}^{miss} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10},
if p not in toPlot: special[s].pop(p) ############################ ### MC based BG estimate ### ############################ if doMC: for sel in sels: plotter.clearHistograms() for s in samples: plotter.addHistogramToStack(s,sigMap[s]) if 'lowmass' not in sel and 'highmass' not in sel: for signal in signals: plotter.addHistogram(signal,sigMap[signal],signal=True) if not blind or 'regionA' not in sel or 'lowmass' in sel or 'highmass' in sel: plotter.addHistogram('data',sigMap['data']) for plot in plots: kwargs = deepcopy(plots[plot]) plotname = '{0}/{1}'.format(sel,plot) savename = '{0}/mc/{1}'.format(sel,plot) plotter.plot(plotname,savename,**kwargs) if blind and 'regionA' in sel and 'lowmass' not in sel and 'highmass' not in sel: plotter.addHistogram('data',sigMap['data']) for s in special: for plot in special[s]: kwargs = deepcopy(special[s][plot]) plotname = '{0}/{1}'.format(sel,plot)
'z1Pt' : {'xaxis': 'm^{#mu#mu} #mu_{1} p_{T} (GeV)', 'yaxis': 'Events / 5 GeV', 'numcol': 2, 'lumipos': 11, 'legendpos':34, 'rebin': range(0,150,5), 'logy': False, 'overflow': True}, 'z2Pt' : {'xaxis': 'm^{#mu#mu} #mu_{2} p_{T} (GeV)', 'yaxis': 'Events / 5 GeV', 'numcol': 2, 'lumipos': 11, 'legendpos':34, 'rebin': range(0,150,5), 'logy': False, 'overflow': True}, # t 'mPt' : {'xaxis': '#mu p_{T} (GeV)', 'yaxis': 'Events / 5 GeV', 'numcol': 2, 'lumipos': 11, 'legendpos':34, 'rebin': range(0,150,5), 'logy': True, 'overflow': True}, # event #'numVertices' : {'xaxis': 'Reconstructed Vertices', 'yaxis': 'Events'}, #'met' : {'xaxis': 'E_{T}^{miss} (GeV)', 'yaxis': 'Events / 20 GeV', 'rebin': range(0,320,20), 'numcol': 2, 'logy': False, 'overflow': True}, } ############################ ### 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'})
'MuonEG', 'SingleMuon', 'SingleElectron', ], 'HppHmm200GeV' : ['HPlusPlusHMinusMinusHTo4L_M-200_13TeV-pythia8'], 'HppHmm300GeV' : ['HPlusPlusHMinusMinusHTo4L_M-300_13TeV-pythia8'], 'HppHmm400GeV' : ['HPlusPlusHMinusMinusHTo4L_M-400_13TeV-pythia8'], 'HppHmm500GeV' : ['HPlusPlusHMinusMinusHTo4L_M-500_13TeV-pythia8'], 'HppHmm600GeV' : ['HPlusPlusHMinusMinusHTo4L_M-600_13TeV-pythia8'], 'HppHmm700GeV' : ['HPlusPlusHMinusMinusHTo4L_M-700_13TeV-pythia8'], 'HppHmm800GeV' : ['HPlusPlusHMinusMinusHTo4L_M-800_13TeV-pythia8'], 'HppHmm900GeV' : ['HPlusPlusHMinusMinusHTo4L_M-900_13TeV-pythia8'], 'HppHmm1.0TeV' : ['HPlusPlusHMinusMinusHTo4L_M-1000_13TeV-pythia8'], } effPlotter.addHistogram('Z',sigMap['Z'],style={'name':'DY (prompt)'}) effPlotter.addHistogram('TT',sigMap['TT'],style={'name':'t#bar{t} (from jet)'}) effPlotter.addHistogram('QCD',sigMap['QCD'],style={'name':'QCD (unmatched)'}) effPlotter.addHistogram('HppHmm500GeV',sigMap['HppHmm500GeV'],style={'name':'#Phi^{++}#Phi^{--} (prompt)'}) sigcolors = [ ROOT.TColor.GetColor('#000000'), #ROOT.TColor.GetColor('#1A0000'), ROOT.TColor.GetColor('#330000'), #ROOT.TColor.GetColor('#4C0000'), ROOT.TColor.GetColor('#660000'), ROOT.TColor.GetColor('#800000'), ROOT.TColor.GetColor('#990000'), ROOT.TColor.GetColor('#B20000'), ROOT.TColor.GetColor('#CC0000'), #ROOT.TColor.GetColor('#E60000'),
], 'data': [ 'DoubleMuon', 'DoubleEG', 'SingleMuon', 'SingleElectron', ], } #samples = ['WW','TT','Z'] samples = ['TT','Z'] for s in samples: chargePlotter.addHistogramToStack(s,sigMap[s]) chargePlotter.addHistogram('data',sigMap['data']) # plot definitions plots = { # z cand 'zMass' : {'xaxis': 'm_{l^{+}l^{-}} (GeV)', 'yaxis': 'Events / 1 GeV', 'rebin': range(81,101,1)}, 'zLeadingLeptonPt' : {'xaxis': 'p_{T}^{Z_{lead}} (GeV)', 'yaxis': 'Events / 1 GeV', 'rebin': range(0,150,1)}, 'zLeadingLeptonEta' : {'xaxis': '|#eta^{Z_{lead}}|', 'yaxis': 'Events',}, 'zSubLeadingLeptonPt' : {'xaxis': 'p_{T}^{Z_{sublead}} (GeV)', 'yaxis': 'Events / 1 GeV', 'rebin': range(0,150,1)}, 'zSubLeadingLeptonEta' : {'xaxis': '|#eta^{Z_{sublead}}|', 'yaxis': 'Events',}, } # signal region for plot in plots: for sign in ['SS','OS','SS1','SS2','SSEE','SSBB','OSEE','OSBB']: for chan in chans:
ROOT.TColor.GetColor('#B20000'), ROOT.TColor.GetColor('#CC0000'), #ROOT.TColor.GetColor('#E60000'), ROOT.TColor.GetColor('#FF0000'), #ROOT.TColor.GetColor('#FF1919'), ROOT.TColor.GetColor('#FF3333'), #ROOT.TColor.GetColor('#FF4D4D'), ROOT.TColor.GetColor('#FF6666'), ROOT.TColor.GetColor('#FF8080'), ROOT.TColor.GetColor('#FF9999'), ROOT.TColor.GetColor('#FFB2B2'), ROOT.TColor.GetColor('#FFCCCC'), ] mPlotter.addHistogram('sig',sigMap['HppHmm1000GeV'],style={'name': 'Match to gen','linecolor':ROOT.kBlue}) mPlotter.addHistogram('fake',sigMap['QCD'],style={'name':'Fake','linecolor':ROOT.kBlue,'linestyle':2}) idNames = [ 'isLooseMuon_looseIso', 'isMediumMuon_looseIso', 'isMediumMuon_tightIso', 'isTightMuon_tightIso', 'isHighPtMuon_tightIso', 'wzLooseMuon', 'wzMediumMuon', ] binning = [0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,350,400,450,500,550,600,650,700,800,900,1000] binning = [0,20,40,60,80,100,120,140,160,180,200,240,300,400,500,600,800,1000] for idName in idNames:
], } #samples = ['TT','Z','W','T','WW','QCD'] samples = ['TT','Z','W','T','WW'] allSamplesDict = {'MC':[]} for s in samples: if s=='QCD': continue allSamplesDict['MC'] += sigMap[s] for s in samples: dijetFakeRatePlotter.addHistogramToStack(s,sigMap[s]) dijetFakeRatePlotter.addHistogram('data',sigMap['data']) # plot definitions plots = { 'pt' : {'xaxis': 'p_{T} (GeV)', 'yaxis': 'Events/0.5 GeV', 'rebin': 5, 'rangex': [0,150]}, '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)
'xaxis': 'p_{T} (GeV)', 'yaxis': 'Events / 10 GeV', 'rebin': 10, 'numcol': 3, 'legendpos': 34, 'rangex': [10, 250] }, } ############################ ### MC based BG estimate ### ############################ for s in allsamples: plotter.addHistogramToStack(s, sigMap[s]) if not blind: plotter.addHistogram('data', sigMap['data']) lepChan = { 'e1': ['3e0m', '2e1m', '1e2m'], 'e2': ['3e0m', '2e1m'], 'm1': ['2e1m', '1e2m', '0e3m'], 'm2': ['1e2m', '0e3m'], } for lep in lepChan: for plot in plots: kwargs = deepcopy(plots[plot]) plotname = [ '{0}/{1}{2}'.format(chan, lep, plot) for chan in lepChan[lep] ] savename = 'mc/{0}{1}'.format(lep, plot) plotter.plot(plotname, savename, **kwargs)