def doPlots(datasetsEmb, datasetsSig, datasetName): lumi = datasetsEmb.getLuminosity() isCorrected = isinstance(datasetsEmb, tauEmbedding.DatasetsResidual) postfix = "_residual" createPlot = tauEmbedding.PlotCreatorMany(analysisEmb, analysisSig, datasetsEmb, datasetsSig, datasetName, plotStyles, addData=True) drawPlot = tauEmbedding.PlotDrawerTauEmbeddingEmbeddedNormal( ratio=True, log=True, addLuminosityText=True) def createDrawPlot(name, *args, **kwargs): p = createPlot(name) drawPlot(p, *args, **kwargs) prefix = "embdatasigmc" + postfix + "_" + datasetName + "_" opts2def = {"ymin": 0, "ymax": 2} def drawControlPlot(path, xlabel, rebin=None, opts2=None, **kwargs): opts2_ = opts2def if opts2 != None: opts2_ = opts2 cargs = {} if rebin != None: cargs["rebin"] = rebin drawPlot(createPlot("ControlPlots/" + path, **cargs), prefix + path, xlabel, opts2=opts2_, **kwargs) def update(d1, d2): tmp = {} tmp.update(d1) tmp.update(d2) return tmp # Control plots optsdef = {} opts = optsdef drawControlPlot("SelectedTau_pT_AfterStandardSelections", taujetH + " ^{}p_{T} (GeV/c)", opts=update(opts, {"xmax": 250}), rebin=2, cutBox={ "cutValue": 40, "greaterThan": 40 }) moveLegend = {"dy": -0.6, "dx": -0.2} opts = {"SingleTop": {"ymax": 1.8}}.get(datasetName, {"ymaxfactor": 1.4}) if datasetName != "TTJets": moveLegend = {"dx": -0.32} drawControlPlot("SelectedTau_eta_AfterStandardSelections", taujetH + " #eta", opts=update(opts, { "xmin": -2.2, "xmax": 2.2 }), ylabel="Events / %.1f", rebin=4, log=False, moveLegend=moveLegend) drawControlPlot("SelectedTau_LeadingTrackPt_AfterStandardSelections", taujetH + " ldg. charged particle ^{}p_{T} (GeV/c)", opts=update(opts, {"xmax": 300}), rebin=2, cutBox={ "cutValue": 20, "greaterThan": True }) opts = {"ymin": 1e-1, "ymaxfactor": 5} moveLegend = {"dx": -0.22} if datasetName == "Diboson": opts["ymin"] = 1e-2 drawControlPlot("SelectedTau_Rtau_AfterStandardSelections", "R_{#tau} = p^{ldg. charged particle}/^{}p^{%s}" % taujet, opts=update(opts, { "xmin": 0.65, "xmax": 1.05 }), rebin=5, ylabel="Events / %.2f", moveLegend=moveLegend, cutBox={ "cutValue": 0.7, "greaterThan": True }) opts = optsdef drawControlPlot("Njets_AfterStandardSelections", "Number of jets", ylabel="Events") # After Njets drawControlPlot("MET", "Uncorrected PF ^{}E_{T}^{miss} (GeV)", rebin=5, opts=update(opts, {"xmax": 400}), cutLine=50, moveLegend={ "dx": -0.2, "dy": -0.55 }) # after MET moveLegend = { "WJets": {}, "DYJetsToLL": {}, "SingleTop": {}, "Diboson": {} }.get(datasetName, { "dx": -0.2, "dy": -0.5 }) drawControlPlot("NBjets", "Number of selected b jets", opts=update(opts, {"xmax": 6}), ylabel="Events", moveLegend=moveLegend, cutLine=1) # Tree cut definitions treeDraw = dataset.TreeDraw( "dummy", weight=tauEmbedding.signalNtuple.weightBTagging) tdMt = treeDraw.clone(varexp="%s >>tmp(15,0,300)" % tauEmbedding.signalNtuple.mtExpression) tdDeltaPhi = treeDraw.clone(varexp="%s >>tmp(18, 0, 180)" % tauEmbedding.signalNtuple.deltaPhiExpression) # DeltapPhi xlabel = "#Delta#phi(^{}%s, ^{}E_{T}^{miss}) (^{o})" % taujet def customDeltaPhi(h): yaxis = h.getFrame().GetYaxis() yaxis.SetTitleOffset(0.8 * yaxis.GetTitleOffset()) opts = { "WJets": { "ymax": 20 }, "DYJetsToLL": { "ymax": 5 }, "SingleTop": { "ymax": 2 }, "Diboson": { "ymax": 0.6 }, }.get(datasetName, {"ymaxfactor": 1.2}) opts2 = {"WJets": {"ymin": 0, "ymax": 3}}.get(datasetName, opts2def) selection = And(*[ getattr(tauEmbedding.signalNtuple, cut) for cut in ["metCut", "bTaggingCut"] ]) drawPlot(createPlot(tdDeltaPhi.clone(selection=selection)), prefix + "deltaPhi_3AfterBTagging", xlabel, log=False, opts=opts, opts2=opts2, ylabel="Events / ^{}%.0f^{o}", function=customDeltaPhi, moveLegend={"dx": -0.22}, cutLine=[130, 160]) # After all cuts selection = And(*[ getattr(tauEmbedding.signalNtuple, cut) for cut in ["metCut", "bTaggingCut", "deltaPhi160Cut"] ]) #opts = {"ymaxfactor": 1.4} opts = {} opts = { "EWKMC": { "ymax": 40 }, "TTJets": { "ymax": 12 }, #"WJets": {"ymax": 35}, "WJets": { "ymax": 25 }, "SingleTop": { "ymax": 2.2 }, "DYJetsToLL": { "ymax": 6.5 }, #"Diboson": {"ymax": 0.9}, "Diboson": { "ymax": 0.8 }, "W3Jets": { "ymax": 5 } }.get(datasetName, {}) opts2 = { "TTJets": { "ymin": 0, "ymax": 1.2 }, "Diboson": { "ymin": 0, "ymax": 3.2 }, }.get(datasetName, { "ymin": 0, "ymax": 2 }) p = createPlot(tdMt.clone(selection=selection)) histograms.cmsTextMode = histograms.CMSMode.PRELIMINARY p.appendPlotObject( histograms.PlotText(0.6, 0.7, "#Delta#phi(^{}%s, ^{}E_{T}^{miss}) < ^{}160^{o}" % taujet, size=20)) drawPlot(p, prefix + "transverseMass_4AfterDeltaPhi160", "m_{T}(^{}%s, ^{}E_{T}^{miss}) (GeV/^{}c^{2})" % taujet, opts=opts, opts2=opts2, ylabel="Events / %.0f GeV/^{}c^{2}", log=False) histograms.cmsTextMode = histograms.CMSMode.NONE
def doPlots(datasetsEmb, datasetsSig, datasetName): lumi = datasetsEmb.getLuminosity() createPlot = tauEmbedding.PlotCreatorMany(analysisEmb, analysisSig, datasetsEmb, datasetsSig, datasetName, createStyles()) def drawPlot(plot, name, *args, **kwargs): drawPlotCommon(plot, "mcembsig_" + datasetName + "_" + name, *args, **kwargs) def createDrawPlot(name, *args, **kwargs): p = createPlot(name) drawPlot(plot, *args, **kwargs) opts2def = {"ymin": 0, "ymax": 2} def drawControlPlot(path, xlabel, rebin=None, opts2=None, **kwargs): opts2_ = opts2def if opts2 != None: opts_ = opts2 cargs = {} if rebin != None: cargs["rebin"] = rebin drawPlot(createPlot("ControlPlots/" + path, **cargs), path, xlabel, opts2=opts2_, **kwargs) def update(d1, d2): tmp = {} tmp.update(d1) tmp.update(d2) return tmp # Control plots optsdef = {} opts = optsdef # After Njets moveLegend = { "WJEts": { "dx": 0.02 }, "DYJetsToLL": { "dx": -0.02 }, "Diboson": { "dx": -0.05 }, }.get(datasetName, {}) drawControlPlot("MET", "Uncorrected PF ^{}E_{T}^{miss} (GeV)", rebin=5, opts=update(opts, {"xmax": 400}), cutLine=50, moveLegend=moveLegend) # after MET moveLegend = {"dx": -0.15, "dy": -0.5} moveLegend = { "WJets": {}, "DYJetsToLL": { "dx": -0.02 }, "SingleTop": {}, "Diboson": { "dx": -0.02 }, }.get(datasetName, moveLegend) optsmy = {"xmax": 6} if datasetName == "SingleTop": optsmy["ymaxfactor"] = 6 elif datasetName == "WJets": optsmy["ymaxfactor"] = 3 drawControlPlot("NBjets", "Number of selected b jets", opts=update(opts, optsmy), ylabel="Events", moveLegend=moveLegend, cutLine=1) opts = optsdef # Tree cut definitions treeDraw = dataset.TreeDraw( "dummy", weight=tauEmbedding.signalNtuple.weightBTagging) tdDeltaPhi = treeDraw.clone(varexp="%s >>tmp(18, 0, 180)" % tauEmbedding.signalNtuple.deltaPhiExpression) tdMt = treeDraw.clone(varexp="%s >>tmp(15,0,300)" % tauEmbedding.signalNtuple.mtExpression) # DeltapPhi xlabel = "#Delta#phi(^{}%s, ^{}E_{T}^{miss}) (^{o})" % taujet def customDeltaPhi(h): yaxis = h.getFrame().GetYaxis() yaxis.SetTitleOffset(0.8 * yaxis.GetTitleOffset()) opts = { "WJets": { "ymax": 35 }, "DYJetsToLL": { "ymax": 12 }, "Diboson": { "ymax": 1 }, }.get(datasetName, {"ymaxfactor": 1.2}) opts2 = opts2def moveLegend = { "DYJetsToLL": { "dx": -0.24 }, "Diboson": { "dx": -0.22 }, }.get(datasetName, {"dx": -0.2}) drawPlot(createPlot( tdDeltaPhi.clone( selection=And(tauEmbedding.signalNtuple.metCut, tauEmbedding.signalNtuple.bTaggingCut))), "deltaPhi_3AfterBTagging", xlabel, log=False, opts=opts, opts2=opts2, ylabel="Events /^{} %.0f^{o}", function=customDeltaPhi, moveLegend=moveLegend, cutLine=[130, 160]) # Transverse mass selection = And(*[ tauEmbedding.signalNtuple.metCut, tauEmbedding.signalNtuple. bTaggingCut, tauEmbedding.signalNtuple.deltaPhi160Cut ]) opts = { "TTJets": { "ymax": 28 }, "SingleTop": { "ymax": 4.5 }, "DYJetsToLL": { "ymax": 18 }, "Diboson": { "ymax": 1.2 }, "WJets": { "ymax": 50 }, }.get(datasetName, {}) opts2 = {"ymin": 0, "ymax": 2} moveLegend = {"DYJetsToLL": {"dx": -0.02}}.get(datasetName, {}) p = createPlot(tdMt.clone(selection=selection)) p.appendPlotObject( histograms.PlotText(0.55, 0.7, "#Delta#phi(^{}%s, ^{}E_{T}^{miss}) < 160^{o}" % taujet, size=24)) drawPlot(p, "transverseMass_4AfterDeltaPhi160", "m_{T}(^{}%s, ^{}E_{T}^{miss}) (GeV/^{}c^{2})" % taujet, opts=opts, opts2=opts2, ylabel="Events / %.0f GeV/^{}c^{2}", log=False, moveLegend=moveLegend)
def doPlots(datasetsEmb, datasetsSig, datasetName): lumi = datasetsEmb.getLuminosity() createPlot = tauEmbedding.PlotCreatorMany(analysisEmb, analysisSig, datasetsEmb, datasetsSig, datasetName, styles.getStyles()) def drawPlot(plot, name, *args, **kwargs): drawPlotCommon(plot, "mcembsig_" + datasetName + "_" + name, *args, **kwargs) def createDrawPlot(name, *args, **kwargs): p = createPlot(name) drawPlot(plot, *args, **kwargs) opts2def = {"ymin": 0, "ymax": 2} def drawControlPlot(path, xlabel, rebin=None, opts2=None, **kwargs): opts2_ = opts2def if opts2 != None: opts_ = opts2 cargs = {} if rebin != None: cargs["rebin"] = rebin drawPlot(createPlot("ControlPlots/" + path, **cargs), path, xlabel, opts2=opts2_, **kwargs) def update(d1, d2): tmp = {} tmp.update(d1) tmp.update(d2) return tmp # Control plots optsdef = {} opts = optsdef moveLegend = {"DYJetsToLL": {"dx": -0.02}}.get(datasetName, {}) drawControlPlot("SelectedTau_pT_AfterStandardSelections", "#tau-jet p_{T} (GeV/c)", opts=update(opts, {"xmax": 250}), rebin=2, cutBox={ "cutValue": 40, "greaterThan": 40 }, moveLegend=moveLegend) opts = {"SingleTop": {"ymax": 1.8}}.get(datasetName, {"ymaxfactor": 1.4}) moveLegend = { "TTJets": { "dy": -0.6, "dx": -0.2 }, }.get(datasetName, {"dx": -0.32}) drawControlPlot("SelectedTau_eta_AfterStandardSelections", "#tau-jet #eta", opts=update(opts, { "xmin": -2.2, "xmax": 2.2 }), ylabel="Events / %.1f", rebin=4, log=False, moveLegend=moveLegend) moveLegend = {"DYJetsToLL": {"dx": -0.02}}.get(datasetName, {}) drawControlPlot("SelectedTau_LeadingTrackPt_AfterStandardSelections", "#tau-jet ldg. charged particle p_{T} (GeV/c)", opts=update(opts, {"xmax": 300}), rebin=2, cutBox={ "cutValue": 20, "greaterThan": True }, moveLegend=moveLegend) opts = {"ymin": 1e-1, "ymaxfactor": 5} if datasetName == "Diboson": opts["ymin"] = 1e-2 moveLegend = {"dx": -0.25} drawControlPlot("SelectedTau_Rtau_AfterStandardSelections", "R_{#tau} = p^{ldg. charged particle}/p^{#tau jet}", opts=update(opts, { "xmin": 0.65, "xmax": 1.05 }), rebin=5, ylabel="Events / %.2f", moveLegend=moveLegend, cutBox={ "cutValue": 0.7, "greaterThan": True }) opts = optsdef moveLegend = {"DYJetsToLL": {"dx": -0.02}}.get(datasetName, {}) drawControlPlot("Njets_AfterStandardSelections", "Number of jets", ylabel="Events", moveLegend=moveLegend) # After Njets moveLegend = {"DYJetsToLL": {"dx": -0.02}}.get(datasetName, {}) drawControlPlot("MET", "Uncorrected PF E_{T}^{miss} (GeV)", rebin=5, opts=update(opts, {"xmax": 400}), cutLine=50, moveLegend=moveLegend) # after MET moveLegend = {"dx": -0.23, "dy": -0.5} moveLegend = { "WJets": {}, "DYJetsToLL": { "dx": -0.02 }, "SingleTop": {}, "Diboson": {} }.get(datasetName, moveLegend) drawControlPlot("NBjets", "Number of selected b jets", opts=update(opts, {"xmax": 6}), ylabel="Events", moveLegend=moveLegend, cutLine=1) # After BTag xlabel = "#Delta#phi(#tau jet, E_{T}^{miss}) (^{o})" def customDeltaPhi(h): yaxis = h.getFrame().GetYaxis() yaxis.SetTitleOffset(0.8 * yaxis.GetTitleOffset()) opts2 = opts2def opts = { # "WJets": {"ymax": 20}, # "DYJetsToLL": {"ymax": 5}, # "SingleTop": {"ymax": 2}, # "Diboson": {"ymax": 0.6}, }.get(datasetName, {"ymaxfactor": 1.2}) opts2 = { # "WJets": {"ymin": 0, "ymax": 3} }.get(datasetName, opts2def) moveLegend = {"DYJetsToLL": {"dx": -0.24}}.get(datasetName, {"dx": -0.22}) drawPlot(createPlot("deltaPhi", rebin=10), "deltaPhi_3AfterBTagging", xlabel, log=False, opts=opts, opts2=opts2, ylabel="Events / %.0f^{o}", function=customDeltaPhi, moveLegend=moveLegend, cutLine=[130, 160]) # After deltaPhi opts = { # "EWKMC": {"ymax": 40}, # "TTJets": {"ymax": 12}, # #"WJets": {"ymax": 35}, # "WJets": {"ymax": 25}, # "SingleTop": {"ymax": 2.2}, # "DYJetsToLL": {"ymax": 6.5}, # #"Diboson": {"ymax": 0.9}, # "Diboson": {"ymax": 0.8}, # "W3Jets": {"ymax": 5} }.get(datasetName, {}) opts2 = { # "TTJets": {"ymin": 0, "ymax": 1.2}, # "Diboson": {"ymin": 0, "ymax": 3.2}, }.get(datasetName, opts2) moveLegend = {"DYJetsToLL": {"dx": -0.02}}.get(datasetName, {}) drawPlot(createPlot("transverseMass", rebin=10), "transverseMass_4AfterDeltaPhi160", "m_{T}(#tau jet, E_{T}^{miss}) (GeV/c^{2})", opts=opts, opts2=opts2, ylabel="Events / %.0f GeV/c^{2}", log=False, moveLegend=moveLegend) return # Tree cut definitions treeDraw = dataset.TreeDraw( "dummy", weight=tauEmbedding.signalNtuple.weightBTagging) tdDeltaPhi = treeDraw.clone(varexp="%s >>tmp(18, 0, 180)" % tauEmbedding.signalNtuple.deltaPhiExpression) tdMt = treeDraw.clone(varexp="%s >>tmp(15,0,300)" % tauEmbedding.signalNtuple.mtExpression) # DeltapPhi xlabel = "#Delta#phi(#tau jet, E_{T}^{miss}) (^{o})" def customDeltaPhi(h): yaxis = h.getFrame().GetYaxis() yaxis.SetTitleOffset(0.8 * yaxis.GetTitleOffset()) opts2 = opts2def opts = { "WJets": { "ymax": 20 }, "DYJetsToLL": { "ymax": 5 }, "SingleTop": { "ymax": 2 }, "Diboson": { "ymax": 0.6 }, }.get(datasetName, {"ymaxfactor": 1.2}) opts2 = {"WJets": {"ymin": 0, "ymax": 3}}.get(datasetName, opts2def) moveLegend = {"DYJetsToLL": {"dx": -0.24}}.get(datasetName, {"dx": -0.22}) drawPlot(createPlot( tdDeltaPhi.clone( selection=And(tauEmbedding.signalNtuple.metCut, tauEmbedding.signalNtuple.bTaggingCut))), "deltaPhi_3AfterBTagging", xlabel, log=False, opts=opts, opts2=opts2, ylabel="Events / %.0f^{o}", function=customDeltaPhi, moveLegend=moveLegend, cutLine=[160]) # Transverse mass selection = And(*[ tauEmbedding.signalNtuple.metCut, tauEmbedding.signalNtuple. bTaggingCut, tauEmbedding.signalNtuple.deltaPhi160Cut ]) opts = { "EWKMC": { "ymax": 40 }, "TTJets": { "ymax": 12 }, #"WJets": {"ymax": 35}, "WJets": { "ymax": 25 }, "SingleTop": { "ymax": 2.2 }, "DYJetsToLL": { "ymax": 6.5 }, #"Diboson": {"ymax": 0.9}, "Diboson": { "ymax": 0.8 }, "W3Jets": { "ymax": 5 } }.get(datasetName, {}) opts2 = { "TTJets": { "ymin": 0, "ymax": 1.2 }, "Diboson": { "ymin": 0, "ymax": 3.2 }, }.get(datasetName, opts2) p = createPlot(tdMt.clone(selection=selection)) p.appendPlotObject( histograms.PlotText(0.6, 0.7, "#Delta#phi(#tau jet, E_{T}^{miss}) < 160^{o}", size=20)) moveLegend = {"DYJetsToLL": {"dx": -0.02}}.get(datasetName, {}) drawPlot(p, "transverseMass_4AfterDeltaPhi160", "m_{T}(#tau jet, E_{T}^{miss}) (GeV/c^{2})", opts=opts, opts2=opts2, ylabel="Events / %.0f GeV/c^{2}", log=False, moveLegend=moveLegend)
def doTauPlots(datasetsEmb, datasetsSig, datasetName): lumi = datasetsEmb.getLuminosity() createPlot = tauEmbedding.PlotCreatorMany(tauAnalysisEmb, tauAnalysisSig, datasetsEmb, datasetsSig, datasetName, createStyles()) opts2def = { "DYJetsToLL": { "ymin": 0, "ymax": 1.5 } }.get(datasetName, { "ymin": 0.5, "ymax": 1.5 }) moveLegend = {"DYJetsToLL": {"dx": -0.02}}.get(datasetName, {}) treeDraw = dataset.TreeDraw( "dummy", weight=tauEmbedding.tauNtuple.weight[tauEmbedding.era]) def drawPlot(plot, name, *args, **kwargs): drawPlotCommon(plot, "mcembsig_" + datasetName + "_" + name, *args, **kwargs) # Decay mode finding postfix = "_1AfterDecayModeFindingIsolationPtPre" selection = And(*[ getattr(tauEmbedding.tauNtuple, cut) for cut in ["decayModeFinding", "tightIsolation", "tauPtPreCut"] ]) opts2 = opts2def drawPlot(createPlot( treeDraw.clone(varexp="taus_p4.Eta()>>tmp(25,-2.5,2.5", selection=selection)), "tauEta" + postfix, taujetH + "-candidate #eta", ylabel="Events / %.1f", opts={"ymin": 1e-1}, opts2=opts2, moveLegend={ "dx": -0.12, "dy": -0.45 }, cutLine=[-2.1, 2.1]) drawPlot(createPlot( treeDraw.clone(varexp="taus_p4.Pt()>>tmp(25,0,250)", selection=selection)), "tauPt" + postfix, taujetH + "-candidate ^{}p_{T} (GeV/c)", opts2=opts2, cutLine=40, moveLegend=moveLegend) # Eta cut postfix = "_2AfterEtaCut" selection = And(*[ getattr(tauEmbedding.tauNtuple, cut) for cut in ["decayModeFinding", "tightIsolation", "tauPtPreCut", "tauEtaCut"] ]) drawPlot(createPlot( treeDraw.clone(varexp="taus_p4.Eta()>>tmp(25,-2.5,2.5", selection=selection)), "tauEta" + postfix, taujetH + "-candidate #eta", ylabel="Events / %.1f", opts={"ymin": 1e-1}, opts2=opts2, moveLegend={ "dx": -0.12, "dy": -0.45 }, cutLine=[-2.1, 2.1]) drawPlot(createPlot( treeDraw.clone(varexp="taus_p4.Pt()>>tmp(25,0,250)", selection=selection)), "tauPt" + postfix, taujetH + "-candidate ^{}p_{T} (GeV/c)", opts2=opts2, cutLine=40, moveLegend=moveLegend) # Pt cut postfix = "_3AfterPtCut" selection = And(*[ getattr(tauEmbedding.tauNtuple, cut) for cut in ["decayModeFinding", "tightIsolation", "tauEtaCut", "tauPtCut"] ]) drawPlot(createPlot( treeDraw.clone(varexp="taus_p4.Phi()>>tmp(32,-3.2,3.2", selection=selection)), "tauPhi" + postfix, taujetH + "-candidate #phi (rad)", ylabel="Events / %.1f", opts={"ymin": 1e-1}, opts2=opts2, moveLegend={ "dx": -0.12, "dy": -0.45 }) opts2 = {"Diboson": {"ymin": 0, "ymax": 1.5}}.get(datasetName, opts2def) drawPlot(createPlot( treeDraw.clone( varexp="taus_leadPFChargedHadrCand_p4.Pt()>>tmp(25,0,250)", selection=selection)), "tauLeadingTrackPt" + postfix, taujetH + " ldg. charged particle ^{}p_{T} (GeV/c)", opts2=opts2, cutLine=20, moveLegend=moveLegend) opts2 = opts2def # Tau candidate selection postfix = "_4AfterTauCandidateSelection" selection = tauEmbedding.tauNtuple.tauCandidateSelection opts = {"ymin": 1e-2, "ymaxfactor": 20, "nbins": 5} if datasetName == "WJets": opts["ymaxfactor"] = 25 opts2 = {"EWKMC": {"ymin": 0.5, "ymax": 2}}.get(datasetName, opts2def) drawPlot( createPlot( treeDraw.clone(varexp=tauEmbedding.tauNtuple.decayModeExpression, selection=selection)), "tauDecayMode" + postfix + "", "", opts=opts, opts2=opts2, moveLegend=moveLegend, #moveLegend={"dy": 0.02, "dh": -0.02}, customise=tauEmbedding.decayModeCustomize) opts2 = opts2def # One prong postfix = "_5AfterOneProng" td = treeDraw.clone(selection=And(*[ getattr(tauEmbedding.tauNtuple, cut) for cut in ["tauCandidateSelection", "oneProng"] ])) #drawPlot(createPlot(td.clone(varexp="taus_p4.Pt()>>tmp(25,0,250)")), # "tauPt"+postfix, "#tau-jet candidate p_{T} (GeV/c)", opts2={"ymin": 0, "ymax": 2}) #drawPlot(createPlot(td.clone(varexp="taus_p4.P()>>tmp(25,0,250)")), # "tauP"+postfix, "#tau-jet candidate p (GeV/c)", opts2={"ymin": 0, "ymax": 2}) #drawPlot(createPlot(td.clone(varexp="taus_leadPFChargedHadrCand_p4.Pt()>>tmp(25,0,250)")), # "tauLeadingTrackPt"+postfix, "#tau-jet ldg. charged particle p_{T} (GeV/c)", opts2={"ymin":0, "ymax": 2}) #drawPlot(createPlot(td.clone(varexp="taus_leadPFChargedHadrCand_p4.P()>>tmp(25,0,250)")), # "tauLeadingTrackP"+postfix, "#tau-jet ldg. charged particle p (GeV/c)", opts2={"ymin":0, "ymax": 2}) moveLegend2 = { "DYJetsToLL": { "dx": -0.28 }, "Diboson": { "dx": -0.28 }, }.get(datasetName, {"dx": -0.27}) drawPlot(createPlot( td.clone(varexp=tauEmbedding.tauNtuple.rtauExpression + ">>tmp(22, 0, 1.1)")), "rtau" + postfix, "R_{#tau} = p^{ldg. charged particle}/^{}p^{%s}" % taujet, ylabel="Events / %.1f", opts={ "ymin": 1e-2, "ymaxfactor": 2 }, opts2=opts2, moveLegend=moveLegend2, cutLine=0.7) # Full ID postfix = "_6AfterTauID" selection = And(*[ getattr(tauEmbedding.tauNtuple, cut) for cut in ["tauCandidateSelection", "tauID"] ]) drawPlot(createPlot( treeDraw.clone(varexp="taus_p4.Pt()>>tmp(25,0,250)", selection=selection)), "tauPt" + postfix, taujetH + " ^{}p_{T} (GeV/c)", opts2=opts2, moveLegend=moveLegend)