def configure_draw(): gROOT.SetStyle('Plain') gStyle.SetEndErrorSize(0.) gStyle.SetOptStat(0) gStyle.SetPalette(1) gStyle.SetTitleBorderSize(0) gStyle.SetTitleFont(22, '') gStyle.SetTitleSize(0.06, '') gStyle.SetTitleX(0.1) gStyle.SetTitleW(0.8)
def setStyle(): gROOT.Reset() icol = 0 # WHITE font = 42 # Helvetica tsize = 0.05 gStyle.SetFrameBorderMode(icol) gStyle.SetFrameFillColor(icol) gStyle.SetCanvasBorderMode(icol) gStyle.SetCanvasColor(icol) gStyle.SetPadBorderMode(icol) gStyle.SetPadColor(icol) gStyle.SetStatColor(icol) gStyle.SetPaperSize(20, 26) gStyle.SetPadTopMargin(0.05) gStyle.SetPadRightMargin(0.08) gStyle.SetPadBottomMargin(0.15) gStyle.SetPadLeftMargin(0.12) gStyle.SetTitleXOffset(1.05) gStyle.SetTitleYOffset(0.95) gStyle.SetTextFont(font) gStyle.SetTextSize(tsize) gStyle.SetLabelFont(font, "x") gStyle.SetTitleFont(font, "x") gStyle.SetLabelFont(font, "y") gStyle.SetTitleFont(font, "y") gStyle.SetLabelFont(font, "z") gStyle.SetTitleFont(font, "z") gStyle.SetLabelSize(tsize * 0.85, "x") gStyle.SetTitleSize(tsize * 1.10, "x") gStyle.SetLabelSize(tsize * 0.85, "y") gStyle.SetTitleSize(tsize * 1.10, "y") gStyle.SetLabelSize(tsize * 0.85, "z") gStyle.SetTitleSize(tsize * 1.10, "z") gStyle.SetMarkerStyle(20) gStyle.SetMarkerSize(1.) gStyle.SetHistLineWidth(2) gStyle.SetLineStyleString(2, "[12 12]") # postscript dashes gStyle.SetEndErrorSize(0.) # gStyle.SetOptTitle(0); gStyle.SetOptStat(0) gStyle.SetOptFit(0) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetPaintTextFormat("4.1f")
def __init__(self): # Setup argument parser self.parser = argparse.ArgumentParser() #self.parser.add_argument("--infile", default="histos.root", help="input file (default: %(default)s)") self.parser.add_argument( "--outdir", default="figures/", help="output directory (default: %(default)s)") self.parser.add_argument("-v", "--verbose", action="count", default=0, help="verbosity (default: %(default)s)") self.options = self.parser.parse_args() if not self.options.outdir.endswith("/"): self.options.outdir += "/" if not os.path.exists(self.options.outdir): os.makedirs(self.options.outdir) #if not os.path.isfile(self.options.infile): # raise Exception("File does not exist: %s" % self.options.infile) #self.options.tfile = TFile.Open(self.options.infile) self.options.palette = ("#333333", "#377eb8", "#e41a1c", "#984ea3", "#ff7f00", "#4daf4a") # Setup basic drawer gROOT.LoadMacro("tdrstyle.C") gROOT.ProcessLine("setTDRStyle();") #gROOT.ProcessLine("gErrorIgnoreLevel = kWarning;") gROOT.SetBatch(True) gStyle.SetNdivisions(510, "Y") gStyle.SetEndErrorSize(0) gStyle.SetPadGridX(True) gStyle.SetPadGridY(True) #gStyle.SetOptStat(111110) gStyle.SetPadRightMargin(0.05) gStyle.SetTitleOffset(1.1, "Y") gStyle.SetPalette(57) # kBird gStyle.SetNumberContours(50)
def __init__(self): # ROOT gROOT.LoadMacro("tdrstyle.C") gROOT.LoadMacro("../interface/HelperMath.h") gROOT.LoadMacro("../../AMSimulationIO/src/AMSimulationIOLinkDef.h") gROOT.ProcessLine("setTDRStyle()") gStyle.SetEndErrorSize(2) gStyle.SetPadRightMargin(0.05) gStyle.SetTitleOffset(1.1, "Y") gStyle.SetLabelSize(0.04, "Y") gStyle.SetLabelSize(0.04, "Z") gStyle.SetNdivisions(505, "XY") gStyle.SetPalette(55) # rainbow color map gStyle.SetNumberContours(100) gStyle.SetOptStat(111110) gStyle.SetStatX(0.94) gStyle.SetStatY(0.93) gStyle.SetStatH(0.30) gStyle.SetStatW(0.28) TH1.SetDefaultSumw2()
def setTDRStyle(force): gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetCanvasDefH(600) gStyle.SetCanvasDefW(600) gStyle.SetCanvasDefX(0) gStyle.SetCanvasDefY(0) gStyle.SetPadBorderMode(0) gStyle.SetPadColor(kWhite) gStyle.SetPadGridX(False) gStyle.SetPadGridY(False) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(0) gStyle.SetFrameFillStyle(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) gStyle.SetFrameLineWidth(1) if force: gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(1) gStyle.SetEndErrorSize(2) gStyle.SetErrorX(0.) gStyle.SetMarkerStyle(20) gStyle.SetOptFit(1) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) gStyle.SetOptDate(0) gStyle.SetOptFile(0) gStyle.SetOptStat(0) gStyle.SetStatColor(kWhite) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.04) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.2) gStyle.SetPadTopMargin(0.05) gStyle.SetPadBottomMargin(0.13) gStyle.SetPadLeftMargin(0.16) gStyle.SetPadRightMargin(0.04) gStyle.SetOptTitle(0) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1) gStyle.SetTitleTextColor(1) gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.05) gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.06, "XYZ") gStyle.SetTitleXOffset(0.9) gStyle.SetTitleYOffset(1.25) gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.05, "XYZ") gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(True) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetOptLogx(0) gStyle.SetOptLogy(0) gStyle.SetOptLogz(0) gStyle.SetPaperSize(20.,20.) gROOT.ForceStyle()
def draw(self, *args, **kwargs): """Central method of Plot class: make plot with canvas, axis, error, ratio...""" # https://root.cern.ch/doc/master/classTHStack.html # https://root.cern.ch/doc/master/classTHistPainter.html#HP01e verbosity = LOG.getverbosity(self, kwargs) xtitle = (args[0] if args else self.xtitle) or "" ratio = kwargs.get('ratio', self.ratio) # make ratio plot square = kwargs.get('square', False) # square canvas lmargin = kwargs.get('lmargin', 1.) # canvas left margin rmargin = kwargs.get('rmargin', 1.) # canvas righ margin tmargin = kwargs.get('tmargin', 1.) # canvas bottom margin bmargin = kwargs.get('bmargin', 1.) # canvas top margin errbars = kwargs.get('errbars', True) # add error bars to histogram staterr = kwargs.get('staterr', False) # create stat. error band sysvars = kwargs.get('sysvars', []) # create sys. error band from variations errtitle = kwargs.get('errtitle', None) # title for error band norm = kwargs.get('norm', self.norm) # normalize all histograms title = kwargs.get('title', self.title) # title for legend xtitle = kwargs.get('xtitle', xtitle) # x axis title ytitle = kwargs.get( 'ytitle', self.ytitle ) # y axis title (if None, automatically set by Plot.setaxis) rtitle = kwargs.get('rtitle', "Ratio") # y axis title of ratio panel latex = kwargs.get( 'latex', self.latex) # automatically format strings as LaTeX with makelatex xmin = kwargs.get('xmin', self.xmin) xmax = kwargs.get('xmax', self.xmax) ymin = kwargs.get('ymin', self.ymin) ymax = kwargs.get('ymax', self.ymax) rmin = kwargs.get('rmin', self.rmin) or 0.45 # ratio ymin rmax = kwargs.get('rmax', self.rmax) or 1.55 # ratio ymax ratiorange = kwargs.get('rrange', self.ratiorange) # ratio range around 1.0 binlabels = kwargs.get( 'binlabels', self.binlabels) # list of alphanumeric bin labels ytitleoffset = kwargs.get('ytitleoffset', 1.0) xtitleoffset = kwargs.get('xtitleoffset', 1.0) logx = kwargs.get('logx', self.logx) logy = kwargs.get('logy', self.logy) ymargin = kwargs.get( 'ymargin', self.ymargin) # margin between hist maximum and plot's top logyrange = kwargs.get( 'logyrange', self.logyrange) # log(y) range from hist maximum to ymin grid = kwargs.get('grid', True) tsize = kwargs.get('tsize', _tsize) # text size for axis title pair = kwargs.get('pair', False) triple = kwargs.get('triple', False) lcolors = kwargs.get('colors', None) lcolors = kwargs.get('lcolors', lcolors) or self.lcolors # line colors fcolors = kwargs.get('fcolors', None) or self.fcolors # fill colors lstyles = kwargs.get('lstyle', None) lstyles = kwargs.get('lstyles', lstyles) or self.lstyles # line styles lwidth = kwargs.get('lwidth', 2) # line width mstyle = kwargs.get('mstyle', None) # marker style option = kwargs.get('option', 'HIST') # draw option for every histogram options = kwargs.get('options', []) # draw option list per histogram roption = kwargs.get('roption', None) # draw option of ratio plot enderrorsize = kwargs.get('enderrorsize', 2.0) # size of line at end of error bar errorX = kwargs.get('errorX', True) # horizontal error bars dividebins = kwargs.get('dividebins', self.dividebins) lcolors = ensurelist(lcolors) fcolors = ensurelist(fcolors) lstyles = ensurelist(lstyles) self.ratio = ratio self.lcolors = lcolors self.fcolors = fcolors self.lstyles = lstyles if not xmin: xmin = self.xmin if not xmax: xmax = self.xmax hists = self.hists denom = ratio if isinstance(ratio, int) and (ratio != 0) else False denom = max(0, min(len(hists), kwargs.get( 'denom', denom))) # denominator histogram in ratio plot # NORMALIZE if norm: if ytitle == None: ytitle = "A.U." scale = 1.0 if isinstance(norm, bool) else norm normalize(self.hists, scale=scale) # DIVIDE BY BINSIZE if dividebins: for i, oldhist in enumerate(self.hists): newhist = dividebybinsize(oldhist, zero=True, zeroerrs=False) if oldhist != newhist: LOG.verb( "Plot.draw: replace %s -> %s" % (oldhist, newhist), verbosity, 2) self.hists[i] = newhist self.garbage.append(oldhist) #if sysvars: # histlist = sysvars.values() if isinstance(sysvars,dict) else sysvars # for (histup,hist,histdown) in histlist: # dividebybinsize(histup, zero=True,zeroerrs=False) # dividebybinsize(histdown,zero=True,zeroerrs=False) # if hist not in self.hists: # dividebybinsize(hist,zero=True,zeroerrs=False) # DRAW OPTIONS if errbars: option = 'E0 ' + option #E01 if not roption: roption = 'HISTE' if len(options) == 0: options = [option] * len(hists) if staterr: options[0] = 'HIST' # E3' else: while len(options) < len(hists): options.append(options[-1]) #if not self.histsD and staterr and errbars: # i = denominator-1 if denominator>0 else 0 # options[i] = options[i].replace('E0','') gStyle.SetEndErrorSize(enderrorsize) if errorX: gStyle.SetErrorX(0.5) else: gStyle.SetErrorX(0) # CANVAS self.canvas = self.setcanvas(square=square, ratio=ratio, lmargin=lmargin, rmargin=rmargin, tmargin=tmargin, bmargin=bmargin) # DRAW self.canvas.cd(1) #self.frame.Draw('AXIS') # 'AXIS' breaks grid for i, (hist, option1) in enumerate(zip(hists, options)): if triple and i % 3 == 2: option1 = 'E1' option1 += " SAME" hist.Draw(option1) LOG.verb( "Plot.draw: i=%s, hist=%s, option=%r" % (i, hist, option1), verbosity, 2) # STYLE lhists, mhists = [], [] for hist, opt in zip(hists, options): if 'H' in opt: lhists.append(hist) else: mhists.append(hist) self.setlinestyle(lhists, colors=lcolors, styles=lstyles, mstyle=mstyle, width=lwidth, pair=pair, triple=triple) self.setmarkerstyle(*mhists, colors=lcolors) # CMS STYLE if CMSStyle.lumiText: #mainpad = self.canvas.GetPad(1 if ratio else 0) CMSStyle.setCMSLumiStyle(gPad, 0) # ERROR BAND if staterr or sysvars: #seterrorbandstyle(hists[0],fill=False) self.errband = geterrorband(self.hists[0], sysvars=sysvars, color=self.hists[0].GetLineColor(), name=makehistname( "errband", self.name), title=errtitle) self.errband.Draw('E2 SAME') # AXES self.setaxes(self.frame, *hists, xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, logy=logy, logx=logx, xtitle=xtitle, ytitle=ytitle, ytitleoffset=ytitleoffset, xtitleoffset=xtitleoffset, binlabels=binlabels, ymargin=ymargin, logyrange=logyrange, main=ratio, grid=grid, latex=latex) # RATIO if ratio: self.canvas.cd(2) self.ratio = Ratio(*hists, errband=self.errband, denom=denom, drawzero=True, option=roption) self.ratio.draw(roption, xmin=xmin, xmax=xmax) self.setaxes(self.ratio, xmin=xmin, xmax=xmax, ymin=rmin, ymax=rmax, logx=logx, binlabels=binlabels, center=True, nydiv=506, rrange=ratiorange, xtitle=xtitle, ytitle=rtitle, xtitleoffset=xtitleoffset, grid=grid, latex=latex) self.canvas.cd(1)
def SED(flist): gStyle.SetOptLogx() gStyle.SetOptLogy() gStyle.SetPadGridX(True) gStyle.SetPadGridY(True) gStyle.SetEndErrorSize(10) l = TLegend(.65, .6, .96, .95) g = [] gUL = [] pubdir = "/home/smasuda/storage/.Fermi2/Data/DataPoint/GammaCygni/" # g.append(GetPubData(pubdir+"GCyg_FermiLande_data.csv", # pubdir+"GCyg_FermiLande_error.csv")) # g[-1].SetName('gLande12') # g[-1].SetLineColor(kCyan) # g[-1].SetMarkerColor(g[-1].GetLineColor()) # g[-1].SetMarkerStyle(21) # gUL.append(TGraph(0)) # l.AddEntry(g[-1],'Lande+ \'12','p') g.append( GetPubData(pubdir + "GCyg_FermiFraija_data.csv", pubdir + "GCyg_FermiFraija_error.csv")) g[-1].SetName('gFraija16') g[-1].SetLineColor(kPink + 1) g[-1].SetLineColor(kCyan) g[-1].SetMarkerColor(g[-1].GetLineColor()) g[-1].SetMarkerStyle(22) gUL1 = GetPubData(pubdir + "GCyg_FermiFraija_UL.csv") gUL1.SetName('gFraija16UL') gUL1.SetLineColor(g[-1].GetLineColor()) gUL1.SetMarkerColor(g[-1].GetLineColor()) gUL.append(gUL1) l.AddEntry(g[-1], 'Fraija+ \'16', 'p') # g.append(GetPubData(pubdir+"GCyg_MAGIC_data.csv", # pubdir+"GCyg_MAGIC_error.csv")) # g[-1].SetLineColor(kMagenta) # g[-1].SetMarkerColor(kMagenta) # g[-1].SetMarkerStyle(29) # gUL.append(TGraph(0)) def ConvertFluxUnit(glist): g = glist[-1] n = g.GetN() x = g.GetX() y = g.GetY() ey = g.GetEY() for i in range(n): y[i] *= x[i] * x[i] * 1e-6 * 1e-4 if g.ClassName() == "TGraphErrors": ey[i] *= x[i] * x[i] * 1e-6 * 1e-4 rfile = TFile( "/home/smasuda/storage/Fermi/Data/GammaCygni2017/VERJ2019p407_spec.root" ) gVER = rfile.Get("gVER") gVERUL = rfile.Get("gVERUL") fVER = rfile.Get("fVER") rfile.Close() g.append(gVER) gUL.append(gVERUL) fVER.SetParameter(0, fVER.GetParameter(0) * 1e-4) fVER.SetParameter(1, fVER.GetParameter(1) - 2.) ConvertFluxUnit(g) ConvertFluxUnit(gUL) colV = kGreen gVER.SetMarkerColor(colV) gVER.SetLineColor(colV) gVERUL.SetMarkerColor(colV) gVERUL.SetLineColor(colV) fVER.SetLineColor(colV) l.AddEntry(g[-1], 'VER J2019+407', 'p') rfile = TFile( '/home/smasuda/storage/MAGIC/GammaCygni2017_ST7/analysis/flute/CombAll/Unfolding_Output_combunfold_2-Tikhonov.root' ) g.append(rfile.Get("fGraph1E2")) rfile.Close() g[-1].SetMarkerStyle(21) g[-1].SetMarkerColor(kMagenta + 1) g[-1].SetLineColor(g[-1].GetMarkerColor()) gUL.append(TGraph(0)) l.AddEntry(g[-1], 'MAGIC this work', 'lp') rfile = TFile( "/home/smasuda/storage/Fermi/Data/GammaCygni2017/MarcelFermi.root") gtmp = [] for key in rfile.GetListOfKeys(): obj = key.ReadObj() if obj.InheritsFrom(TGraph.Class()): gtmp.append(obj) # g.append(gtmp[0]) # gUL.append(TGraph(0)) # g.append(gtmp[1]) # gUL.append(TGraph(0)) # l.AddEntry(g[-1],'Marcel disk','lp') # g.append(gtmp[2]) # gUL.append(gtmp[3]) # l.AddEntry(g[-1],'Marcel gaus','lp') # g.append(TGraph(0)) # gUL.append(gtmp[4]) # l.AddEntry(gUL[-1],'Marcel arc','lp') # arr1=rfile.Get("aGausUL") # arr2=rfile.Get("aArcUL") rfile.Close() # XX=np.array([1.]) # YY=np.array([1.e-10]) # g.append(TGraph(1,XX,YY)) # gUL.append(TGraph(0)) for f in flist: tmpg, tmpgUL = GetData(f.file, f.scale, title=f.title) tmpg.SetLineColor(f.col) tmpg.SetMarkerColor(f.col) tmpg.SetMarkerStyle(f.sty) tmpgUL.SetLineColor(f.col) if f.leg != '': l.AddEntry(tmpg, f.leg, 'p') g.append(tmpg) gUL.append(tmpgUL) # l.AddEntry('p') ng = len(g) mg = TMultiGraph() for i in range(ng): if g[i].GetName() == 'gLP': mg.Add(g[i], '3') else: mg.Add(g[i], 'pz') if gUL[i].GetN() > 0: if gUL[i].GetName() == 'gGausUL' or gUL[i].GetName() == 'gArcUL': mg.Add(gUL[i], 'pz') else: mg.Add(gUL[i], 'p') xbin = np.logspace(np.log10(0.9), np.log10(8079.765852892145), 101) # ybin=np.logspace(np.log10(1.565210892602076e-14),np.log10(1.675199606589398e-10),101) ybin = np.logspace(np.log10(3.786556805899183e-14), np.log10(1.05e-10), 101) frame = TH2F("frame", "SED;Energy [GeV];E^{2}dN/dE [TeV cm^{-2} s^{-1}]", 100, xbin, 100, ybin) frame.SetStats(False) frame.SetDirectory(0) frame.Draw("0") mg.SetTitle("SED;Energy [GeV];E^{2}dN/dE [TeV cm^{-2} s^{-1}]") mg.Draw() fVER.Draw("same") arr = [] for i in range(len(gUL)): if gUL[i].GetN() > 0: arr.append(DrawUL(gUL[i])) # arr.append(arr1) # arr.append(arr2) # arr1.Draw() # arr2.Draw() l.Draw() gROOT.frame = frame gROOT.mg = mg gROOT.arr = arr gROOT.l = l gROOT.fVER = fVER gStyle.SetOptLogx(False) gStyle.SetOptLogy(False)
def plot_central_and_systematics(channel): global variable, translate_options, k_value, b_tag_bin, maximum, categories ROOT.TH1.SetDefaultSumw2(False) ROOT.gROOT.SetBatch(True) ROOT.gROOT.ProcessLine('gErrorIgnoreLevel = 1001;') plotting.setStyle() gStyle.SetTitleYOffset(1.4) ROOT.gROOT.ForceStyle() canvas = Canvas(width=700, height=500) canvas.SetLeftMargin(0.15) canvas.SetBottomMargin(0.15) canvas.SetTopMargin(0.05) canvas.SetRightMargin(0.05) legend = plotting.create_legend(x0=0.6, y1=0.5) hist_data_central = read_xsection_measurement_results( 'central', channel)[0]['unfolded'] hist_data_central.GetXaxis().SetTitle(translate_options[variable] + ' [GeV]') hist_data_central.GetYaxis().SetTitle('#frac{1}{#sigma} #frac{d#sigma}{d' + translate_options[variable] + '} [GeV^{-1}]') hist_data_central.GetXaxis().SetTitleSize(0.05) hist_data_central.GetYaxis().SetTitleSize(0.05) hist_data_central.SetMinimum(0) hist_data_central.SetMaximum(maximum[variable]) hist_data_central.SetMarkerSize(1) hist_data_central.SetMarkerStyle(20) # plotAsym = TGraphAsymmErrors(hist_data) # plotStatErr = TGraphAsymmErrors(hist_data) gStyle.SetEndErrorSize(20) hist_data_central.Draw('P') # plotStatErr.Draw('same P') # plotAsym.Draw('same P Z') legend.AddEntry(hist_data_central, 'measured (unfolded)', 'P') for systematic in categories: if systematic != 'central': hist_data_systematic = read_xsection_measurement_results( systematic, channel)[0]['unfolded'] hist_data_systematic.SetMarkerSize(0.5) hist_data_systematic.SetMarkerStyle(20) colour_number = categories.index(systematic) + 1 if colour_number == 10: colour_number = 42 hist_data_systematic.SetMarkerColor(colour_number) hist_data_systematic.Draw('same P') legend.AddEntry(hist_data_systematic, systematic, 'P') # for central_generator in ['MADGRAPH', 'POWHEG', 'MCATNLO']: # hist_MC = read_xsection_measurement_results('central', channel)[0][central_generator] # hist_MC.SetLineStyle(7) # hist_MC.SetLineWidth(2) # #setting colours # if central_generator == 'POWHEG': # hist_MC.SetLineColor(kBlue) # elif central_generator == 'MADGRAPH': # hist_MC.SetLineColor(kRed + 1) # elif central_generator == 'MCATNLO': # hist_MC.SetLineColor(kMagenta + 3) # hist_MC.Draw('hist same') #legend.AddEntry(hist_MC, translate_options[central_generator], 'l') legend.Draw() mytext = TPaveText(0.5, 0.97, 1, 1.01, "NDC") channelLabel = TPaveText(0.18, 0.97, 0.5, 1.01, "NDC") if channel == 'electron': channelLabel.AddText( "e, %s, %s, k_v = %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin], k_value)) elif channel == 'muon': channelLabel.AddText( "#mu, %s, %s, k_v = %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin], k_value)) else: channelLabel.AddText( "combined, %s, %s, k_v = %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin], k_value)) mytext.AddText("CMS Preliminary, L = %.1f fb^{-1} at #sqrt{s} = 8 TeV" % (5.8)) mytext.SetFillStyle(0) mytext.SetBorderSize(0) mytext.SetTextFont(42) mytext.SetTextAlign(13) channelLabel.SetFillStyle(0) channelLabel.SetBorderSize(0) channelLabel.SetTextFont(42) channelLabel.SetTextAlign(13) mytext.Draw() if not channel == 'combination': channelLabel.Draw() canvas.Modified() canvas.Update() path = save_path + '/' + variable make_folder_if_not_exists(path) canvas.SaveAs(path + '/normalised_xsection_' + channel + '_altogether_kv' + str(k_value) + '.png') canvas.SaveAs(path + '/normalised_xsection_' + channel + '_altogether_kv' + str(k_value) + '.pdf')
def tdrstyle(): gROOT.SetStyle("Plain") gStyle.SetAxisColor(1, "XYZ") gStyle.SetCanvasColor(0) #gStyle.SetCanvasBorderSize(10) gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasDefH(700) gStyle.SetCanvasDefW(700) gStyle.SetCanvasDefX(0) gStyle.SetCanvasDefY(0) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillStyle(0) gStyle.SetFrameFillColor(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) # 0? gStyle.SetFrameLineWidth(1) # 1? gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) #gStyle.SetHistFillColor(1) #gStyle.SetHistFillStyle(0) gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(1) gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42,"XYZ") gStyle.SetLabelOffset(0.007,"XYZ") # 0.010? gStyle.SetLabelSize(0.05,"XYZ") # 0.04? gStyle.SetLegendBorderSize(0) gStyle.SetLegendFillColor(0) gStyle.SetLegendFont(42) gStyle.SetMarkerSize(1.0) gStyle.SetMarkerStyle(20) gStyle.SetLineColor(1) gStyle.SetLineWidth(2) #gStyle.SetLineScalePS(2) gStyle.SetOptDate(0) gStyle.SetOptFile(0) gStyle.SetOptFit(1) gStyle.SetOptStat(0) gStyle.SetOptTitle(0) #gStyle.SetOptLogx(0) #gStyle.SetOptLogy(0) #gStyle.SetOptLogz(0) gStyle.SetPadColor(0) gStyle.SetPadBorderMode(0) gStyle.SetPadBorderSize(10) gStyle.SetPadTopMargin(0.05) # 0.08? gStyle.SetPadBottomMargin(0.13) gStyle.SetPadLeftMargin(0.16) gStyle.SetPadRightMargin(0.03) # 0.05? gStyle.SetPadGridX(0) gStyle.SetPadGridY(0) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetStatColor(0) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.025) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.15) #gStyle.SetStatX(0) #gStyle.SetStatY(0) #gStyle.SetTextSize(0.055) gStyle.SetTextFont(42) gStyle.SetTitleBorderSize(0) gStyle.SetTitleColor(1) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1,"XYZ") gStyle.SetTitleFont(42,"XYZ") gStyle.SetTitleSize(0.06,"XYZ") # 0.05? #gStyle.SetTitleOffset(1.4,"XYZ") gStyle.SetTitleOffset(0.9,"X") gStyle.SetTitleOffset(1.20,"Y") gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.05) gStyle.SetTitleTextColor(1) #gStyle.SetTitleH(0) #gStyle.SetTitleW(0) #gStyle.SetTitleX(0) #gStyle.SetTitleY(0.985) #gStyle.SetTitleStyle(1001) gStyle.SetPalette(1) #gStyle.SetNdivisions(510, "XYZ") # 505? gStyle.SetNdivisions(505, "XYZ") gStyle.SetEndErrorSize(2) # 2? #gStyle.SetErrorMarker(20) #gStyle.SetErrorX(0.) #gStyle.SetPaperSize(20.,20.) gStyle.SetStripDecimals(1) gStyle.SetTickLength(0.03, "XYZ") return 1
def plot_fit_results(histograms, category, channel): global variable, translate_options, b_tag_bin, save_path #ROOT.TH1.SetDefaultSumw2(False) ROOT.gROOT.SetBatch(True) ROOT.gROOT.ProcessLine('gErrorIgnoreLevel = 1001;') plotting.setStyle() gStyle.SetTitleYOffset(1.4) ROOT.gROOT.ForceStyle() for variable_bin in variable_bins_ROOT[variable]: path = save_path + '/' + variable + '/' + category + '/fit_results/' make_folder_if_not_exists(path) plotname = path + channel + '_bin_' + variable_bin + '.png' # check if template plots exist already if os.path.isfile(plotname): continue canvas = Canvas(width=700, height=500) canvas.SetLeftMargin(0.15) canvas.SetBottomMargin(0.15) canvas.SetTopMargin(0.05) canvas.SetRightMargin(0.05) legend = plotting.create_legend(x0=0.7, y1=0.8) h_data = histograms[variable_bin]['data'] h_signal = histograms[variable_bin]['signal'] h_background = histograms[variable_bin]['background'] h_data.GetXaxis().SetTitle('Lepton #eta') h_data.GetYaxis().SetTitle('Number of Events') h_data.GetXaxis().SetTitleSize(0.05) h_data.GetYaxis().SetTitleSize(0.05) h_data.SetMinimum(0) h_data.SetMarkerSize(1) h_data.SetMarkerStyle(20) gStyle.SetEndErrorSize(20) h_data.Draw('P') h_signal.SetFillColor(kRed + 1) h_background.SetFillColor(kGreen - 3) h_signal.SetLineWidth(2) h_background.SetLineWidth(2) h_signal.SetFillStyle(1001) h_background.SetFillStyle(1001) mcStack = THStack("MC", "MC") mcStack.Add(h_background) mcStack.Add(h_signal) mcStack.Draw('hist same') h_data.Draw('error P same') legend.AddEntry(h_data, 'data', 'P') legend.AddEntry(h_signal, 'signal', 'F') legend.AddEntry(h_background, 'background', 'F') legend.Draw() mytext = TPaveText(0.5, 0.97, 1, 1.01, "NDC") channelLabel = TPaveText(0.18, 0.97, 0.5, 1.01, "NDC") if channel == 'electron': channelLabel.AddText("e, %s, %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin])) elif channel == 'muon': channelLabel.AddText("#mu, %s, %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin])) else: channelLabel.AddText("combined, %s, %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin])) mytext.AddText( "CMS Preliminary, L = %.1f fb^{-1} at #sqrt{s} = 8 TeV" % (5.8)) mytext.SetFillStyle(0) mytext.SetBorderSize(0) mytext.SetTextFont(42) mytext.SetTextAlign(13) channelLabel.SetFillStyle(0) channelLabel.SetBorderSize(0) channelLabel.SetTextFont(42) channelLabel.SetTextAlign(13) mytext.Draw() channelLabel.Draw() canvas.Modified() canvas.Update() canvas.SaveAs(plotname) canvas.SaveAs(plotname.replace('png', 'pdf'))
def CLICdpStyle(): gROOT.SetStyle("Plain") gStyle.SetCanvasColor(root.kWhite) gStyle.SetFrameFillColor(root.kWhite) gStyle.SetStatColor(root.kWhite) gStyle.SetPadColor(root.kWhite) gStyle.SetFillColor(10) gStyle.SetTitleFillColor(root.kWhite) gStyle.SetPaperSize(20, 26) gStyle.SetDrawBorder(0) gStyle.SetCanvasBorderMode(0) gStyle.SetPadBorderMode(0) gStyle.SetFrameBorderMode(0) gStyle.SetLegendBorderSize(0) gStyle.SetTextSize(0.05) gStyle.SetTitleSize(0.06, "xyz") gStyle.SetLabelSize(0.06, "xyz") gStyle.SetLabelOffset(0.015, "xyz") gStyle.SetTitleOffset(1.2, "yz") gStyle.SetTitleOffset(1.17, "x") font = 42 gStyle.SetTitleFont(font) gStyle.SetTitleFontSize(0.06) gStyle.SetStatFont(font) gStyle.SetStatFontSize(0.07) gStyle.SetTextFont(font) gStyle.SetLabelFont(font, "xyz") gStyle.SetTitleFont(font, "xyz") gStyle.SetTitleBorderSize(0) gStyle.SetStatBorderSize(1) gStyle.SetMarkerStyle(1) gStyle.SetLineWidth(2) gStyle.SetMarkerSize(1.2) gStyle.SetPalette(1) gStyle.SetOptTitle(0) gStyle.SetOptStat(0) gStyle.SetOptFit(0) gStyle.SetEndErrorSize(5) gStyle.SetHistLineWidth(2) gStyle.SetFrameLineWidth(2) gStyle.SetFuncWidth(2) gStyle.SetHistLineColor(root.kBlack) gStyle.SetFuncColor(root.kBlack) gStyle.SetLabelColor(root.kBlack, "xyz") gStyle.SetPadBottomMargin(0.18) gStyle.SetPadTopMargin(0.11) gStyle.SetPadRightMargin(0.08) gStyle.SetPadLeftMargin(0.17) gStyle.SetNdivisions(506, "xy") gStyle.SetPadGridX(0) gStyle.SetPadGridY(0) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetCanvasDefW(800) gStyle.SetCanvasDefH(700) gROOT.ForceStyle()
def initStyle(): gROOT.SetStyle("Plain") # For the canvas: gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetCanvasDefH(700) #Height of canvas gStyle.SetCanvasDefW(700) #Width of canvas gStyle.SetCanvasDefX(0) #Position on screen gStyle.SetCanvasDefY(0) # For the line: gStyle.SetLineWidth(2) # For the Pad: gStyle.SetPadBorderMode(0) # gStyle.SetPadBorderSize(Width_t size = 1) gStyle.SetPadColor(kWhite) gStyle.SetPadGridX(True) gStyle.SetPadGridY(True) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) # For the frame: gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(0) gStyle.SetFrameFillStyle(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) gStyle.SetFrameLineWidth(1) # For the histo: # gStyle.SetHistFillColor(1) # gStyle.SetHistFillStyle(0) gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(2) # gStyle.SetLegoInnerR(Float_t rad = 0.5) # gStyle.SetNumberContours(Int_t number = 20) gStyle.SetEndErrorSize(2) #gStyle.SetErrorMarker(20) gStyle.SetErrorX(0.) gStyle.SetMarkerStyle(8) gStyle.SetMarkerSize(1) #For the fit/function: gStyle.SetOptFit(0) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) #For the date: gStyle.SetOptDate(0) # gStyle.SetDateX(Float_t x = 0.01) # gStyle.SetDateY(Float_t y = 0.01) # For the statistics box: gStyle.SetOptFile(0) gStyle.SetOptStat(0) # To display the mean and RMS: SetOptStat("mr") gStyle.SetStatColor(kWhite) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.025) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.15) # gStyle.SetStatStyle(Style_t style = 1001) # gStyle.SetStatX(Float_t x = 0) # gStyle.SetStatY(Float_t y = 0) # Margins: gStyle.SetPadTopMargin(0.11) gStyle.SetPadBottomMargin(0.13) gStyle.SetPadLeftMargin(0.17) gStyle.SetPadRightMargin(0.07) # For the Global title: gStyle.SetOptTitle(0) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1) gStyle.SetTitleTextColor(1) gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.04) # gStyle.SetTitleH(0) # Set the height of the title box # gStyle.SetTitleW(0) # Set the width of the title box #gStyle.SetTitleX(0.35) # Set the position of the title box #gStyle.SetTitleY(0.986) # Set the position of the title box # gStyle.SetTitleStyle(Style_t style = 1001) #gStyle.SetTitleBorderSize(0) # For the axis titles: gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.05, "XYZ") # gStyle.SetTitleXSize(Float_t size = 0.02) # Another way to set the size? # gStyle.SetTitleYSize(Float_t size = 0.02) gStyle.SetTitleXOffset(1.) gStyle.SetTitleYOffset(1.3) #gStyle.SetTitleOffset(1.1, "Y") # Another way to set the Offset # For the axis labels: gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.035, "XYZ") # For the axis: gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(True) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX( 1) # To get tick marks on the opposite side of the frame gStyle.SetPadTickY(1) # Change for log plots: gStyle.SetOptLogx(0) gStyle.SetOptLogy(0) gStyle.SetOptLogz(0) gStyle.SetPalette(1) #(1,0) # another top group addition gStyle.SetHatchesSpacing(1.0) # Postscript options: gStyle.SetPaperSize(20., 20.) #gStyle.SetPaperSize(TStyle.kA4) #gStyle.SetPaperSize(27., 29.7) #TGaxis.SetMaxDigits(3) # gStyle.SetLineScalePS(Float_t scale = 3) # gStyle.SetLineStyleString(Int_t i, const char* text) # gStyle.SetHeaderPS(const char* header) # gStyle.SetTitlePS(const char* pstitle) #gStyle.SetColorModelPS(1) # gStyle.SetBarOffset(Float_t baroff = 0.5) # gStyle.SetBarWidth(Float_t barwidth = 0.5) # gStyle.SetPaintTextFormat(const char* format = "g") # gStyle.SetPalette(Int_t ncolors = 0, Int_t* colors = 0) # gStyle.SetTimeOffset(Double_t toffset) # gStyle.SetHistMinimumZero(kTRUE) #gStyle.cd() print "TDR Style initialized"
def initialize(fitresults=True, grid=False): gROOT.SetStyle("Plain") gStyle.SetOptFit() gStyle.SetOptStat(0) # For the canvas: gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetCanvasDefH(600) #Height of canvas gStyle.SetCanvasDefW(600) #Width of canvas gStyle.SetCanvasDefX(0) #POsition on screen gStyle.SetCanvasDefY(0) # For the Pad: gStyle.SetPadBorderMode(0) gStyle.SetPadColor(kWhite) gStyle.SetPadGridX(False) gStyle.SetPadGridY(False) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) # For the frame: gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(kWhite) gStyle.SetFrameFillStyle(1000) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) gStyle.SetFrameLineWidth(1) # For the histo: gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(2) gStyle.SetEndErrorSize(2) gStyle.SetErrorX(0.) gStyle.SetMarkerStyle(20) #For the fit/function: gStyle.SetOptFit(1) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) #For the date: gStyle.SetOptDate(0) # For the statistics box: gStyle.SetOptFile(0) gStyle.SetOptStat(0) # To display the mean and RMS: SetOptStat("mr") gStyle.SetStatColor(kWhite) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.025) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.15) # Margins: gStyle.SetPadTopMargin(0.05) gStyle.SetPadLeftMargin(0.16) gStyle.SetPadRightMargin(0.04) # top group adaption, original is 0.02 gStyle.SetPadBottomMargin(0.13) # For the Global title: gStyle.SetOptTitle(0) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1) gStyle.SetTitleTextColor(1) gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.05) # For the axis titles: gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.06, "XYZ") gStyle.SetTitleXOffset(0.9) gStyle.SetTitleYOffset(1.25) # For the axis labels: gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.05, "XYZ") #gStyle.SetLabelSize(0.04, "XYZ") # For the axis: gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(True) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX(1) # To get tick marks on the opposite side of the frame gStyle.SetPadTickY(1) # Change for log plots: gStyle.SetOptLogx(0) gStyle.SetOptLogy(0) gStyle.SetOptLogz(0) gStyle.SetPalette(1) #(1,0) # another top group addition gStyle.SetHatchesSpacing(1.0) # Postscript options: gStyle.SetPaperSize(20., 20.) # For graphs gStyle.SetErrorX(0) # suppress error along x if grid: gStyle.SetPadGridX(gridOn) gStyle.SetPadGridY(gridOn) gStyle.SetGridColor(kGray)
#----------------------------------------------------------------------------- # title #----------------------------------------------------------------------------- gStyle.SetOptTitle(0) gStyle.SetTitleColor(1) gStyle.SetTitleFillColor(0) gStyle.SetTitleStyle(0) gStyle.SetTitleBorderSize(0) gStyle.SetTitleY(0.99) gStyle.SetTitleX(.1) #----------------------------------------------------------------------------- # error bars #----------------------------------------------------------------------------- #gStyle.SetErrorX(0.001) # get rid of x error bars gStyle.SetEndErrorSize(0.) # get rid of error bar caps #----------------------------------------------------------------------------- # pad ticks #----------------------------------------------------------------------------- gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) #gStyle.SetTickLength(0.03, 'x') #gStyle.SetTickLength(0.03, 'y') #gStyle.SetTickLength(0.03, 'z') #gStyle.SetLineWidth(3) # set tick width gStyle.SetMarkerStyle(20) gStyle.SetMarkerSize(1.2) #-----------------------------------------------------------------------------
def initialize2(self): # For the canvas: gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetCanvasDefH(600) #Height of canvas gStyle.SetCanvasDefW(600) #Width of canvas gStyle.SetCanvasDefX(0) #POsition on screen gStyle.SetCanvasDefY(0) # For the Pad: gStyle.SetPadBorderMode(0) # gStyle.SetPadBorderSize(Width_t size = 1) gStyle.SetPadColor(kWhite) gStyle.SetPadGridX(False) gStyle.SetPadGridY(False) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) # For the frame: gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillStyle(1000) gStyle.SetFrameFillColor(0) gStyle.SetFrameFillStyle(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) gStyle.SetFrameLineWidth(1) # For the histo: # gStyle.SetHistFillColor(1) # gStyle.SetHistFillStyle(0) gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(1) # gStyle.SetLegoInnerR(Float_t rad = 0.5) # gStyle.SetNumberContours(Int_t number = 20) gStyle.SetEndErrorSize(2) # gStyle.SetErrorMarker(20) gStyle.SetErrorX(0.) gStyle.SetMarkerStyle(20) #For the fit/function: gStyle.SetOptFit(1) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) #For the date: gStyle.SetOptDate(0) # gStyle.SetDateX(Float_t x = 0.01) # gStyle.SetDateY(Float_t y = 0.01) # For the statistics box: gStyle.SetOptFile(0) gStyle.SetOptStat( 0) # To display the mean and RMS: SetOptStat("mr") gStyle.SetStatColor(kWhite) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.025) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.15) # gStyle.SetStatStyle(Style_t style = 1001) # gStyle.SetStatX(Float_t x = 0) # gStyle.SetStatY(Float_t y = 0) # Margins: gStyle.SetPadTopMargin(0.05) gStyle.SetPadBottomMargin(0.13) gStyle.SetPadLeftMargin(0.16) gStyle.SetPadRightMargin(0.02) # For the Global title: gStyle.SetOptTitle(0) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1) gStyle.SetTitleTextColor(1) gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.05) # gStyle.SetTitleH(0) # Set the height of the title box # gStyle.SetTitleW(0) # Set the width of the title box # gStyle.SetTitleX(0) # Set the position of the title box # gStyle.SetTitleY(0.985) # Set the position of the title box # gStyle.SetTitleStyle(Style_t style = 1001) # gStyle.SetTitleBorderSize(2) # For the axis titles: gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.06, "XYZ") # gStyle.SetTitleXSize(Float_t size = 0.02) # Another way to set the size? # gStyle.SetTitleYSize(Float_t size = 0.02) gStyle.SetTitleXOffset(0.9) gStyle.SetTitleYOffset(1.25) # gStyle.SetTitleOffset(1.1, "Y") # Another way to set the Offset # For the axis labels: gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.05, "XYZ") # For the axis: gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(True) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX( 1) # To get tick marks on the opposite side of the frame gStyle.SetPadTickY(1) # Change for log plots: gStyle.SetOptLogx(0) gStyle.SetOptLogy(0) gStyle.SetOptLogz(0) # Postscript options: gStyle.SetPaperSize(20., 20.)
def make_plots_ROOT(histograms, category, save_path, histname, channel): global variable, translateOptions, k_value, b_tag_bin, maximum ROOT.TH1.SetDefaultSumw2(False) ROOT.gROOT.SetBatch(True) ROOT.gROOT.ProcessLine('gErrorIgnoreLevel = 1001;') plotting.setStyle() gStyle.SetTitleYOffset(2.) ROOT.gROOT.ForceStyle() canvas = Canvas(width=700, height=500) canvas.SetLeftMargin(0.18) canvas.SetBottomMargin(0.15) canvas.SetTopMargin(0.05) canvas.SetRightMargin(0.05) legend = plotting.create_legend(x0=0.6, y1=0.5) hist_data = histograms['unfolded'] hist_data.GetXaxis().SetTitle(translate_options[variable] + ' [GeV]') hist_data.GetYaxis().SetTitle('#frac{1}{#sigma} #frac{d#sigma}{d' + translate_options[variable] + '} [GeV^{-1}]') hist_data.GetXaxis().SetTitleSize(0.05) hist_data.GetYaxis().SetTitleSize(0.05) hist_data.SetMinimum(0) hist_data.SetMaximum(maximum[variable]) hist_data.SetMarkerSize(1) hist_data.SetMarkerStyle(8) plotAsym = TGraphAsymmErrors(hist_data) plotStatErr = TGraphAsymmErrors(hist_data) xsections = read_unfolded_xsections(channel) bins = variable_bins_ROOT[variable] assert (len(bins) == len(xsections['central'])) for bin_i in range(len(bins)): scale = 1 # / width centralresult = xsections['central'][bin_i] fit_error = centralresult[1] uncertainty = calculateTotalUncertainty(xsections, bin_i) uncertainty_total_plus = uncertainty['Total+'][0] uncertainty_total_minus = uncertainty['Total-'][0] uncertainty_total_plus, uncertainty_total_minus = symmetriseErrors( uncertainty_total_plus, uncertainty_total_minus) error_up = sqrt(fit_error**2 + uncertainty_total_plus**2) * scale error_down = sqrt(fit_error**2 + uncertainty_total_minus**2) * scale plotStatErr.SetPointEYhigh(bin_i, fit_error * scale) plotStatErr.SetPointEYlow(bin_i, fit_error * scale) plotAsym.SetPointEYhigh(bin_i, error_up) plotAsym.SetPointEYlow(bin_i, error_down) gStyle.SetEndErrorSize(20) plotAsym.SetLineWidth(2) plotStatErr.SetLineWidth(2) hist_data.Draw('P') plotStatErr.Draw('same P') plotAsym.Draw('same P Z') legend.AddEntry(hist_data, 'unfolded', 'P') hist_measured = histograms['measured'] hist_measured.SetMarkerSize(1) hist_measured.SetMarkerStyle(20) hist_measured.SetMarkerColor(2) #hist_measured.Draw('same P') #legend.AddEntry(hist_measured, 'measured', 'P') for key, hist in sorted(histograms.iteritems()): if not 'unfolded' in key and not 'measured' in key: hist.SetLineStyle(7) hist.SetLineWidth(2) # setting colours if 'POWHEG' in key or 'matchingdown' in key: hist.SetLineColor(kBlue) elif 'MADGRAPH' in key or 'matchingup' in key: hist.SetLineColor(kRed + 1) elif 'MCATNLO' in key or 'scaleup' in key: hist.SetLineColor(kGreen - 3) elif 'scaledown' in key: hist.SetLineColor(kMagenta + 3) hist.Draw('hist same') legend.AddEntry(hist, translate_options[key], 'l') legend.Draw() mytext = TPaveText(0.5, 0.97, 1, 1.01, "NDC") channelLabel = TPaveText(0.18, 0.97, 0.5, 1.01, "NDC") if 'electron' in histname: channelLabel.AddText( "e, %s, %s, k = %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin], k_value)) elif 'muon' in histname: channelLabel.AddText( "#mu, %s, %s, k = %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin], k_value)) else: channelLabel.AddText( "combined, %s, %s, k = %s" % ("#geq 4 jets", b_tag_bins_latex[b_tag_bin], k_value)) mytext.AddText("CMS Preliminary, L = %.1f fb^{-1} at #sqrt{s} = 8 TeV" % (5.8)) mytext.SetFillStyle(0) mytext.SetBorderSize(0) mytext.SetTextFont(42) mytext.SetTextAlign(13) channelLabel.SetFillStyle(0) channelLabel.SetBorderSize(0) channelLabel.SetTextFont(42) channelLabel.SetTextAlign(13) mytext.Draw() channelLabel.Draw() canvas.Modified() canvas.Update() path = save_path + '/' + variable + '/' + category make_folder_if_not_exists(path) canvas.SaveAs(path + '/' + histname + '_kv' + str(k_value) + '.png') canvas.SaveAs(path + '/' + histname + '_kv' + str(k_value) + '.pdf')
relEnergyErrorVec.append( reso[1]/reso[0] ) # relEnergyErrorErrorVec.append( reso[3]/reso[0] ) small=1.e-5 c1.Divide(1,2,small,small) c1.cd(1) gPad.SetPad(small, 0.3, 1.-small, 1.-small) gPad.SetBottomMargin(small) labelSize=10 makerSize = 0.3 gStyle.SetEndErrorSize(0) gr = TGraphErrors( n, energyVec, recoEnergyVec, energyErrorVec, recoEnergyErrorVec ) gr.SetName('gr') gr.SetLineColor( 1 ) gr.SetLineWidth( 1 ) gr.SetLineStyle( 2 ) gr.SetMarkerColor( 2 ) gr.SetMarkerStyle( 20 ) gr.SetMarkerSize( makerSize ) textsize = labelSize/(gPad.GetWh()*gPad.GetAbsHNDC()) gr.SetTitle( '' ) gr.GetXaxis().SetTitle( 'E_{particle} (GeV)' ) gr.GetYaxis().SetTitle( 'E_{reco} (GeV)' ) gr.GetYaxis().SetTitleSize(textsize) gr.GetYaxis().SetLabelSize(textsize)
def setgstyle(): # Zero horizontal error bars gStyle.SetErrorX(0) # For the canvas gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(0) gStyle.SetCanvasDefH(800) # Height of canvas gStyle.SetCanvasDefW(800) # Width of canvas gStyle.SetCanvasDefX(0) # Position on screen gStyle.SetCanvasDefY(0) # For the frame gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(1) gStyle.SetFrameFillStyle(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(0) gStyle.SetFrameLineWidth(1) # For the Pad gStyle.SetPadBorderMode(0) gStyle.SetPadColor(0) gStyle.SetPadGridX(False) gStyle.SetPadGridY(False) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) # Margins gStyle.SetPadTopMargin(0.08) gStyle.SetPadBottomMargin(0.19) gStyle.SetPadLeftMargin(0.17) #gStyle.SetPadRightMargin(0.07) # For the histo: gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(2) gStyle.SetMarkerSize(1.4) gStyle.SetEndErrorSize(4) # For the statistics box: gStyle.SetOptStat(0) # For the axis gStyle.SetAxisColor(1, "XYZ") gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetStripDecimals(False) # For the axis labels and titles gStyle.SetTitleColor(1, "XYZ") gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.045, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.06, "XYZ") # For the legend gStyle.SetLegendBorderSize(0)