def CMSPrelim(dataset, channel, lowX, lowY): cmsprel = TPaveText(lowX, lowY + 0.06, lowX + 0.30, lowY + 0.16, "NDC") cmsprel.SetBorderSize(0) cmsprel.SetFillStyle(0) cmsprel.SetTextAlign(12) cmsprel.SetTextSize(0.04) cmsprel.SetTextColor(1) cmsprel.SetTextFont(62) cmsprel.AddText(dataset) ## lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") ## lumi.SetBorderSize( 0 ) ## lumi.SetFillStyle( 0 ) ## lumi.SetTextAlign( 12 ) ## lumi.SetTextSize ( 0.04 ) ## lumi.SetTextColor( 1 ) ## lumi.SetTextFont ( 62 ) ## lumi.AddText(dataset) chan = TPaveText(lowX + 0.68, lowY + 0.061, lowX + 0.80, lowY + 0.161, "NDC") chan.SetBorderSize(0) chan.SetFillStyle(0) chan.SetTextAlign(12) chan.SetTextSize(0.05) chan.SetTextColor(1) chan.SetTextFont(62) chan.AddText(channel) return cmsprel, chan
def drawenergy1D(is2017, text_="Work in progress 2018", data=True): pt = TPaveText(0.0877181,0.9,0.9580537,0.96,"brNDC") pt.SetBorderSize(0) pt.SetTextAlign(12) pt.SetFillStyle(0) pt.SetTextFont(52) cmstextSize = 0.07 preliminarytextfize = cmstextSize * 0.7 lumitextsize = cmstextSize *0.7 pt.SetTextSize(cmstextSize) text = pt.AddText(0.063,0.57,"#font[61]{CMS}") pt1 = TPaveText(0.0877181,0.9,0.9580537,0.96,"brNDC") pt1.SetBorderSize(0) pt1.SetTextAlign(12) pt1.SetFillStyle(0) pt1.SetTextFont(52) pt1.SetTextSize(preliminarytextfize) text1 = pt1.AddText(0.215,0.4,text_) pt2 = TPaveText(0.0877181,0.9,0.9580537,0.96,"brNDC") pt2.SetBorderSize(0) pt2.SetTextAlign(12) pt2.SetFillStyle(0) pt2.SetTextFont(52) pt2.SetTextFont(42) pt2.SetTextSize(lumitextsize) # text3 = pt2.AddText(0.53,0.5,"#sqrt{s} = 13 TeV(2017)") #pavetext = '' #if is2017: pavetext = "#sqrt{s} = 13 TeV(2017)" #if not is2017: pavetext = "#sqrt{s} = 13 TeV(2018)" #text3 = pt2.AddText(0.61,0.5,pavetext) pavetext = '' if is2017 and data: pavetext = "(13 TeV)" if (not is2017) and data: pavetext = "(13 TeV)" if is2017 and not data: pavetext = "13 TeV" if (not is2017) and not data: pavetext = "13 TeV" if data: text3 = pt2.AddText(0.81,0.5,pavetext) if not data: text3 = pt2.AddText(0.85,0.5,pavetext) return [pt,pt1,pt2] return [pt,pt1,pt2]
def plot(obj, plot_name, plot_notes=[]): canvas = TCanvas('canvas' + plot_name, "Canvas", 450, 450) gPad.SetLeftMargin(.13) gPad.SetTopMargin(.05) gStyle.SetOptStat(11) gStyle.SetOptFit(1111) if 'TH2' in obj.ClassName(): gPad.SetRightMargin(.13) draw_options = 'COLZ' if 'profile' in obj.GetName(): gPad.SetRightMargin(.05) draw_options = '' if 'graph' in obj.GetName(): gPad.SetRightMargin(.05) draw_options = 'APE' obj.SetMarkerSize(.7) obj.SetMarkerStyle(21) note = TPaveText(.2, .7, .5, .9, "brNDC") note.SetFillStyle(0) note.SetFillColor(0) note.SetBorderSize(0) note.SetTextColor(1) note.SetTextFont(42) note.SetTextAlign(11) for note_text in plot_notes: note.AddText(note_text) obj.Draw(draw_options) note.Draw() canvas.Print('output/' + plot_name + '.pdf')
def CreateLabel(self, xmin, ymin, xmax, ymax): label = TPaveText(xmin, ymin, xmax, ymax, "NDC") label.SetBorderSize(0) label.SetFillStyle(0) label.SetTextFont(42) label.AddText("Trigger: %s" % (self.__triggername)) return label
def checklatex(texts, tag=""): """Check legend entries: colors, titles, ...""" # https://root.cern.ch/doc/master/classTPaveText.html LOG.header("checklegend" + tag.replace('_', ' ')) output = ensuredir('plots') fname = "%s/testLatex%s" % (output, tag) xdim = 500 ydim = 50 * (len(texts) + 2.5) print ">>> Canvas: %sx%s (nlines=%d)" % (xdim, ydim, len(texts)) canvas = TCanvas('canvas', 'canvas', xdim, int(ydim)) #pave1 = TPaveText(0.0,0,0.5,1,'ARC') #,'BR') pave2 = TPaveText(0.04, 0.04, 0.96, 0.96) #'ARC') #,'BR') #pave1.SetBorderSize(0) pave2.SetBorderSize(0) #pave1.SetTextAlign(12) pave2.SetTextAlign(12) #pave1.SetTextFont(42) pave2.SetTextFont(42) #pave1.SetFillColor(0) pave2.SetFillColor(0) #pave1.SetCornerRadius(0.05) #pave2.SetCornerRadius(0.05) #pave1.SetMargin(0.12) #pave1.SetTextSize(tsize) #pave2.Copy(pave1) for line in texts: latex = makelatex(line) print ">>> %r -> %r" % (line, latex) #pave1.AddText(line) pave2.AddText(latex) #pave1.Draw() pave2.Draw() canvas.SaveAs(fname + ".png") #canvas.SaveAs(fname+".pdf") canvas.Close()
def add_desc_to_canvas(config, xmin, ymin, xmax, ymax, size, content): txt1 = TPaveText(xmin, ymin, xmax, ymax, "NDC") txt1.SetFillColor(kWhite) txt1.SetFillStyle(0) txt1.SetBorderSize(0) txt1.SetTextAlign(12) # middle,left txt1.SetTextFont(42) # helvetica txt1.SetTextSize(size) if content["add_alice"]: txt1.AddText("ALICE work in progress") if content["add_gran"]: gran_desc = "#it{n}_{#it{#varphi}} #times #it{n}_{#it{r}} #times #it{n}_{#it{z}}" gran_str = "%d #times %d #times %d" % (config.grid_phi, config.grid_r, config.grid_z) txt1.AddText("%s = %s" % (gran_desc, gran_str)) if content["add_inputs"]: if config.opt_train[0] == 1 and config.opt_train[1] == 1: txt1.AddText("inputs: #it{#rho}_{SC} - <#it{#rho}_{SC}>, <#it{#rho}_{SC}>") elif config.opt_train[1] == 1: txt1.AddText("inputs: #it{#rho}_{SC} - <#it{#rho}_{SC}>") if content["add_events"]: txt1.AddText("#it{N}_{ev}^{training} = %d" % config.train_events) # txt1.AddText("#it{N}_{ev}^{validation} = %d" % config.test_events) # txt1.AddText("#it{N}_{ev}^{apply} = %d" % config.apply_events) if config.name == "dnn": txt1.AddText("%d epochs" % config.epochs) return txt1
def exampleDataPlot(bx, shape, comp): kBird() f = TFile.Open('DataAnalysisBunch' + bx + shape + '_new_StronRescale.root') if f: hist = f.Get('dataHist' + comp) hist.SetTitle('') hist.SetName(bx + shape + '_dataHist' + comp) canvas = TCanvas('c_' + hist.GetName(), '', 600, 600) canvas.SetFrameFillColor(0) hist.Draw("COLZ") canvas.Update() hist.GetXaxis().SetTitle('x [cm]') hist.GetXaxis().SetLabelSize(0.025) hist.GetYaxis().SetTitle('y [cm]') hist.GetYaxis().SetLabelSize(0.025) hist.GetYaxis().SetTitleOffset(1.3) hist.GetZaxis().SetTitle('Number of Vertices') hist.GetZaxis().SetLabelSize(0.025) hist.GetZaxis().SetTitleOffset(0.7) hist.GetZaxis().SetRangeUser(0.0, 240.0) hist.GetZaxis().CenterTitle() hist.GetZaxis().SetNdivisions(1, False) palette = hist.GetListOfFunctions().FindObject('palette') palette.SetX2NDC(0.929) pave = TPaveText(0.65, 0.82, 0.88, 0.88, 'NDC') pave.SetTextFont(42) pave.SetTextSize(0.025) pave.AddText('Scan ' + comp + ', BX ' + bx) pave.AddText('Measured data') pave.Draw('same') drawCMS() canvas.Modified() canvas.Update() canvas.SaveAs('summaryPlots/' + canvas.GetName() + '.pdf') canvas.SaveAs('summaryPlots/' + canvas.GetName() + '.C')
def radialResidualPlots(crossings, shapes, chiSq, dof): kBird() gStyle.SetOptStat(0) components = ('X1', 'Y1', 'X2', 'Y2') for shape in shapes: for bx in crossings: f = TFile.Open('DataAnalysisBunch' + bx + shape + '_new_StronRescale.root') if not f: continue for comp in components: dataHist = f.Get('dataHist' + comp) modelHist = f.Get('modelHist' + comp) nbinsx = dataHist.GetXaxis().GetNbins() nbinsy = dataHist.GetYaxis().GetNbins() radialDat = TH1D('radialDat_'+shape+bx+comp, '', nbinsx/2, 0.0, \ dataHist.GetXaxis().GetXmax()) radialMod = TH1D('radialMod_'+shape+bx+comp, '', nbinsx/2, 0.0, \ dataHist.GetXaxis().GetXmax()) hist = TH1D('radialRes_'+shape+bx+comp, '', nbinsx/2, 0.0, \ dataHist.GetXaxis().GetXmax()) radialDat.Sumw2() for xbin in range(nbinsx + 1): for ybin in range(nbinsy + 1): r = (dataHist.GetXaxis().GetBinCenter(xbin)**2 + \ dataHist.GetYaxis().GetBinCenter(ybin)**2) ** 0.5 radialDat.Fill(r, dataHist.GetBinContent(xbin, ybin)) radialMod.Fill(r, modelHist.GetBinContent(xbin, ybin)) for rbin in range(nbinsx / 2 + 1): err = radialDat.GetBinError(rbin) if err > 0.0: pull = (radialDat.GetBinContent(rbin) - \ radialMod.GetBinContent(rbin)) / err else: pull = 0.0 hist.SetBinContent(rbin, pull) canvas = TCanvas('c_' + hist.GetName(), '', 600, 600) hist.Draw('HF') canvas.Update() hist.SetFillColor(4) hist.SetLineColor(1) hist.GetXaxis().SetTitle('r [cm]') hist.GetXaxis().SetLabelSize(0.025) hist.GetYaxis().SetTitle('Pulls') hist.GetYaxis().SetLabelSize(0.025) hist.GetYaxis().SetTitleOffset(1.1) hist.GetYaxis().SetRangeUser(-1.5, 5.0) pave = TPaveText(0.15, 0.79, 0.42, 0.88, 'NDC') pave.SetTextFont(42) pave.SetTextSize(0.025) pave.AddText('Scan ' + comp + ', BX ' + bx) pave.AddText(shapeNames[shape] + ' fit') redChiSq = chiSq[shape][bx] / dof[shape][bx] pave.AddText('#chi^{2}/d.o.f. = %6.4f' % (redChiSq)) pave.Draw('same') drawCMS() canvas.Modified() canvas.Update() canvas.SaveAs('summaryPlots/' + canvas.GetName() + '.pdf') canvas.SaveAs('summaryPlots/' + canvas.GetName() + '.C')
def PaveText(x1,y1,x2,y2): txt = TPaveText(x1,y1,x2,y2) txt.SetFillStyle(0) txt.SetLineWidth(0) txt.SetLineStyle(0) txt.SetTextFont(52) txt.SetTextSize(0.033) return txt
def plotTriggerEfficiency(self, passesHist, totalHist, label=""): if self._fout and self._canvas: passesHist = passesHist.Rebin(self._rebinFactor, "passesHist") totalHist = totalHist.Rebin(self._rebinFactor, "totalHist") self.makePassesConsistentWithTotal(passesHist, totalHist) metGraph = TGraphAsymmErrors(passesHist, totalHist) metGraph.SetEditable(0) pt = TPaveText(0.409774, 0.843023, 0.809524, 0.890827, "brNDC") pt.SetBorderSize(0) pt.SetFillStyle(0) pt.SetTextFont(42) pt.SetTextSize(0.0387597) pt.AddText(str(self._plotLabel)) cmsLabel = TPaveText(0.134085, 0.937984, 0.418546, 0.984496, "brNDC") cmsLabel.SetBorderSize(0) cmsLabel.SetFillStyle(0) cmsLabel.SetTextFont(62) cmsLabel.SetTextSize(0.0387597) cmsLabel.AddText("CMS Preliminary") lumiLabel = TPaveText(0.575188, 0.937339, 0.874687, 0.992894, "brNDC") lumiLabel.SetBorderSize(0) lumiLabel.SetFillStyle(0) lumiLabel.SetTextFont(42) lumiLabel.SetTextSize(0.0387597) lumiLabel.AddText(str(self._luminosityLabel)) setStyle(metGraph) self._canvas.cd() metGraph.Draw("ap") setAxisStyle(metGraph, "E_{T}^{miss, no #mu} [GeV]", label + " trigger efficiency", (0.0, 500.0), (0.0, 1.4)) pt.Draw("same") cmsLabel.Draw("same") lumiLabel.Draw("same") self._fout.cd() self._canvas.Write("triggerEfficiency_" + label) else: print "A TFile and TCanvas must be added. Not making plots..."
def makeStats(mean,rms): label = TPaveText( 0.25, 0.7, 0.3, 0.8, 'NB NDC' ) label.SetTextSize( 0.035 ) label.SetTextFont( 42 ) label.SetFillStyle( 0 ) label.SetLineWidth( 0 ) label.AddText( 'Mean = ' + str(mean) ) label.AddText( 'RMS = ' + str(rms) ) return label
def identification(config): text = TPaveText(0.0, 0.95, 1.0, 1.0, "blNDC") text.AddText(config.message) text.SetBorderSize(0) text.SetTextAlign(12) text.SetTextSizePixels(10) text.SetTextFont(82) text.SetFillColor(0) return text
def addText(): label = TPaveText( 0.7, 0.7, 0.75, 0.8, 'NB NDC' ) label.SetTextSize( 0.04 ) label.SetTextFont( 42 ) label.SetFillStyle( 0 ) label.SetLineWidth( 0 ) label.AddText( "Elastic #gamma#gamma#rightarrow#gamma#gamma" ) label.AddText( "FPMC, BSM pred." ) return label
def drawenergy(is2017, data=True): pt = TPaveText(0.0877181, 0.9, 0.9580537, 0.96, "brNDC") pt.SetBorderSize(0) pt.SetTextAlign(12) pt.SetFillStyle(0) pt.SetTextFont(52) cmstextSize = 0.07 preliminarytextfize = cmstextSize * 0.7 lumitextsize = cmstextSize * 0.7 pt.SetTextSize(cmstextSize) text = pt.AddText(0.01, 0.57, "#font[61]{CMS}") pt1 = TPaveText(0.0877181, 0.904, 0.9580537, 0.96, "brNDC") pt1.SetBorderSize(0) pt1.SetTextAlign(12) pt1.SetFillStyle(0) pt1.SetTextFont(52) pt1.SetTextSize(preliminarytextfize) #text1 = pt1.AddText(0.155,0.4,"Preliminary") text1 = pt1.AddText(0.125, 0.4, " Internal") pt2 = TPaveText(0.0877181, 0.9, 0.7280537, 0.96, "brNDC") pt2.SetBorderSize(0) pt2.SetTextAlign(12) pt2.SetFillStyle(0) pt2.SetTextFont(52) pt2.SetTextFont(42) pt2.SetTextSize(lumitextsize) # text3 = pt2.AddText(0.53,0.5,"#sqrt{s} = 13 TeV(2017)") pavetext = '' if is2017 and data: pavetext = "41.1 fb^{-1} (13 TeV)" if (not is2017) and data: pavetext = "(13 TeV)" if is2017 and not data: pavetext = "(13 TeV)" if (not is2017) and not data: pavetext = "(13 TeV)" if data: text3 = pt2.AddText(0.735, 0.5, pavetext) if not data: text3 = pt2.AddText(0.75, 0.5, pavetext) return [pt, pt1, pt2]
def getPavetext(): addInfo = TPaveText(0.3010112, 0.2066292, 0.4202143, 0.3523546, "NDC") addInfo.SetFillColor(0) addInfo.SetLineColor(0) addInfo.SetFillStyle(0) addInfo.SetBorderSize(0) addInfo.SetTextFont(42) addInfo.SetTextSize(0.040) addInfo.SetTextAlign(12) return addInfo
def __MakeLabel(self, xmin, xmax, ymin, ymax, trigger): """ Add label with trigger, cuts and pileup """ lab = TPaveText(xmin, xmax, ymin, ymax, "NDC") lab.SetBorderSize(0) lab.SetFillStyle(0) lab.SetTextFont(42) lab.SetTextAlign(12) lab.AddText("Trigger: %s" %(trigger)) return lab
def add_pave(self, x1, y1, x2, y2, border=False): """Creates a pave and adds it to the plot.""" pave = TPaveText(x1, y1, x2, y2, 'NDC') n = len(self._container_draw) pave.SetTextFont(42) pave.SetTextSize(0.025) if border: pave.SetBorderSize(1) pave.SetFillColor(0) self.add(pave) return (lambda n: lambda s: self._container_draw[n].AddText(s))(n)
def lumiLabel(): label = TPaveText( 0.72, 0.9, 0.8, 0.92, 'NB NDC' ) label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.AddText( "37.19 fb^{-1} (13 TeV)" ) label.SetTextSize( 0.03 ) label.SetTextAlign(11) label.SetTextFont( 42 ) label.SetTextColor( 1 ) return label
def draw_text(lines, coordinates=[0.1, 0.8, 0.5, 0.9], colour=36, border=1): text = TPaveText(coordinates[0], coordinates[1], coordinates[2], coordinates[3], "brNDC") text.SetFillColorAlpha(0, 0) text.SetBorderSize(border) text.SetTextFont(62) for line in lines: text.AddText("#color[" + str(colour) + "]{" + line + "}") print(line) text.Draw() ROOT.SetOwnership(text, False) return text
def condLabel(): label = TPaveText(0.63, 0.9, 0.8, 0.92, 'NB NDC') label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.AddText("2017 PU cond. (13 TeV)") label.SetTextSize(0.034) label.SetTextAlign(11) label.SetTextFont(42) label.SetTextColor(1) return label
def prelimLabel(): label = TPaveText(0.1, 0.91, 0.2, 0.93, 'NB NDC') label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.SetTextAlign(11) label.AddText("#font[62]{CMS} #font[52]{Preliminary}") label.SetTextSize(0.048) label.SetTextFont(52) label.SetTextColor(1) return label
def simLabel(): label = TPaveText( 0.12, 0.9, 0.18, 0.92, 'NB NDC' ) label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.SetTextAlign(11) label.AddText( "#font[62]{CMS} #font[52]{Simulation}" ) label.SetTextSize(0.035) label.SetTextFont( 52 ) label.SetTextColor( 1 ) return label
def condLabel(): label = TPaveText( 0.67, 0.9, 0.81, 0.93, 'NB NDC' ) label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.AddText( "%s cond. (13 TeV)" % era ) label.SetTextSize( 0.034 ) label.SetTextAlign(11) label.SetTextFont( 42 ) label.SetTextColor( 1 ) return label
def selectionLabel(text): label = TPaveText( 0.15, 0.9, 0.23, 0.92, 'NB NDC' ) label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.AddText( text ) label.SetTextSize( 0.048 ) label.SetTextAlign(11) label.SetTextFont( 52 ) label.SetTextColor( 1 ) return label
def selectionLabel(text,ratio,log,maximum): label = TPaveText( 0.1, 0.9, 0.18, 0.92, 'NB NDC' ) label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.AddText( text ) if ratio: label.SetTextSize( 0.048 ) else: label.SetTextSize( 0.034 ) label.SetTextAlign(11) label.SetTextFont( 52 ) label.SetTextColor( 1 ) return label
def drawDate(filename): from ROOT import TPaveText day,month,year = extractDate(filename) date_string = "%s %s %s" % (day, month, year) pave = TPaveText(0.005, 0.005, 0.1, 0.02, 'NDC') pave.SetTextFont(42) pave.SetTextSize(0.03) pave.SetFillStyle(1001) pave.SetFillColor(0) pave.SetBorderSize(0) pave.SetTextAlign(12) pave.AddText(date_string) return pave
def prelimLabel(): label = TPaveText( 0.14, 0.8, 0.2, 0.87, 'NB NDC' ) label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.SetTextAlign(11) label.AddText( "#font[62]{CMS}" ) #label.AddText( "#scale[0.75]{#font[52]{Preliminary}}" ) label.AddText( "#scale[0.75]{#font[52]{Inteneral}}" ) label.SetTextSize(0.043) label.SetTextFont( 52 ) label.SetTextColor( 1 ) return label
def descriptionLabel(): label = TPaveText( 0.73, 0.65, 0.81, 0.8, 'NB NDC' ) label.SetFillStyle(0) label.SetBorderSize(0) label.SetLineWidth(0) label.SetLineStyle(0) label.AddText( "Elastic #gamma#gamma#rightarrow#gamma#gamma" ) label.AddText( "FPMC BSM pred." ) label.AddText( "#sigma_{bd} = 30 #murads" ) label.SetTextSize( 0.032 ) label.SetTextAlign(11) label.SetTextFont( 42 ) label.SetTextColor( 1 ) return label
def add_desc_to_canvas(self): txt1 = TPaveText(0.15, 0.8, 0.4, 0.92, "NDC") txt1.SetFillColor(kWhite) txt1.SetFillStyle(0) txt1.SetBorderSize(0) txt1.SetTextAlign(12) # middle,left txt1.SetTextFont(42) # helvetica txt1.SetTextSize(0.04) txt1.AddText("#varphi slice = %d, r slice = %d, z slice = %d" % \ (self.grid_phi, self.grid_r, self.grid_z)) if self.opt_train[0] == 1 and self.opt_train[1] == 1: txt1.AddText("inputs: #rho_{SC} - <#rho_{SC}>, <#rho_{SC}>") elif self.opt_train[1] == 1: txt1.AddText("inputs: #rho_{SC} - <#rho_{SC}>") txt1.Draw()
def DrawLabel(self, xmin, ymin, xmax, ymax, text): """ Add a new label to the pad and draw it @param xmin: Min. x value of the label @param xmin: Max. x value of the label @param xmin: Min. y value of the label @param xmin: Max. y value of the label @param text: Label text """ label = TPaveText(xmin, ymin, xmax, ymax, "NDC") label.SetBorderSize(0) label.SetFillStyle(0) label.SetTextFont(42) label.AddText(text) label.Draw() self.__labels.append(label)