ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/Configuration/scripts/makePlots.py
Revision: 1.34
Committed: Tue Apr 30 09:34:47 2013 UTC (12 years ago) by jbrinson
Content type: text/x-python
Branch: MAIN
CVS Tags: V02-01-00, V01-01-00, V01-00-00, V02-00-00, V00-01-00
Changes since 1.33: +4 -6 lines
Log Message:
Fixed bug in adding yields to legends

File Contents

# Content
1 #!/usr/bin/env python
2 import sys
3 import os
4 import re
5 from math import *
6 from array import *
7 from decimal import *
8 from optparse import OptionParser
9 from OSUT3Analysis.Configuration.configurationOptions import *
10 from OSUT3Analysis.Configuration.processingUtilities import *
11
12 parser = OptionParser()
13 parser = set_commandline_arguments(parser)
14 (arguments, args) = parser.parse_args()
15
16 if arguments.localConfig:
17 sys.path.append(os.getcwd())
18 exec("from " + arguments.localConfig.rstrip('.py') + " import *")
19
20
21 outputFileName = "stacked_histograms.root"
22 if arguments.outputFileName:
23 outputFileName = arguments.outputFileName
24
25 condor_dir = set_condor_output_dir(arguments)
26
27
28
29 #### deal with conflicting arguments
30 if arguments.normalizeToData and arguments.normalizeToUnitArea:
31 print "Conflicting normalizations requsted, will normalize to unit area"
32 arguments.normalizeToData = False
33 if arguments.normalizeToData and arguments.noStack:
34 print "You have asked to scale non-stacked backgrounds to data. This is a very strange request. Will normalize to unit area instead"
35 arguments.normalizeToData = False
36 arguments.normalizeToUnitArea = True
37 if arguments.makeRatioPlots and arguments.makeDiffPlots:
38 print "You have requested both ratio and difference plots. Will make just ratio plots instead"
39 arguments.makeRatioPlots = False
40
41 from ROOT import TFile, gROOT, gStyle, gDirectory, TStyle, THStack, TH1F, TCanvas, TString, TLegend, TLegendEntry, TArrow, THStack, TIter, TKey, TPaveLabel, gPad
42
43 gROOT.SetBatch()
44 gStyle.SetOptStat(0)
45 gStyle.SetCanvasBorderMode(0)
46 gStyle.SetPadBorderMode(0)
47 gStyle.SetPadColor(0)
48 gStyle.SetCanvasColor(0)
49 gStyle.SetTextFont(42)
50 gROOT.ForceStyle()
51 outputFile = TFile(condor_dir + "/" + outputFileName, "RECREATE")
52
53 channels = []
54 processed_datasets = []
55
56 #### check which input datasets have valid output files
57 for sample in datasets:
58 fileName = condor_dir + "/" + sample + ".root"
59 if not os.path.exists(fileName):
60 continue
61 testFile = TFile(fileName)
62 if testFile.IsZombie() or not testFile.GetNkeys():
63 continue
64 processed_datasets.append(sample)
65
66 if len(processed_datasets) is 0:
67 sys.exit("No datasets have been processed")
68
69 #### open first input file and re-make its directory structure in the output file
70 testFile = TFile(condor_dir + "/" + processed_datasets[0] + ".root")
71 testFile.cd()
72 for key in testFile.GetListOfKeys():
73 if (key.GetClassName() != "TDirectoryFile"):
74 continue
75 outputFile.cd()
76 outputFile.mkdir(key.GetName())
77 rootDirectory = key.GetName()
78
79 testFile.cd(key.GetName())
80 for key2 in gDirectory.GetListOfKeys():
81 if (key2.GetClassName() != "TDirectoryFile"):
82 continue
83 outputFile.cd(key.GetName())
84 gDirectory.mkdir(key2.GetName())
85 channels.append(key2.GetName())
86
87
88 ## weight = intLumi / 10000.0
89 ## for dataset in processed_datasets:
90 ## dataset_file = "%s/%s.root" % (condor_dir,dataset)
91 ## fin = TFile (dataset_file)
92 ## flags = fin.Get ("flags")
93 ## noWeights = flags and flags.GetBinContent (1)
94 ## fin.Close ()
95
96 ## if types[dataset] != "data" and not noWeights:
97 ## os.system("mergeTFileServiceHistograms -i %s -o %s -w %g" % (dataset_file, dataset_file + "_tmp", weight))
98 ## else:
99 ## os.system("mergeTFileServiceHistograms -i %s -o %s -w %g" % (dataset_file, dataset_file + "_tmp", 1.0))
100
101
102 for channel in channels: # loop over final states, which each have their own directory
103
104 testFile.cd(rootDirectory+"/"+channel)
105
106 for key in gDirectory.GetListOfKeys(): # loop over histograms in the current directory
107 histogramName = key.GetName()
108
109 if re.match ('TH1', key.GetClassName()): # plot a 1-D histogram
110
111 numBgMCSamples = 0
112 numDataSamples = 0
113 numSignalSamples = 0
114
115 Stack = THStack("stack",histogramName)
116
117 if(intLumi < 1000.):
118 LumiText = "L_{int} = " + str(intLumi) + " pb^{-1}"
119 else:
120 getcontext().prec = 2
121 LumiInFb = intLumi/1000.
122 LumiText = "L_{int} = " + str(LumiInFb) + " fb^{-1}"
123
124 LumiLabel = TPaveLabel(0.1,0.8,0.34,0.9,LumiText,"NDC")
125 LumiLabel.SetBorderSize(0)
126 LumiLabel.SetFillColor(0)
127 LumiLabel.SetFillStyle(0)
128
129 BgMCLegend = TLegend()
130 BgTitle = BgMCLegend.AddEntry(0, "Data & Bkgd. MC", "H")
131 BgTitle.SetTextAlign(21)
132 BgTitle.SetTextFont(62)
133 BgMCLegend.SetBorderSize(0)
134 BgMCLegend.SetFillColor(0)
135 BgMCLegend.SetFillStyle(0)
136 SignalMCLegend = TLegend()
137 SignalTitle = SignalMCLegend.AddEntry(0, "Signal MC", "H")
138 SignalTitle.SetTextAlign(21)
139 SignalTitle.SetTextFont(62)
140 SignalMCLegend.SetBorderSize(0)
141 SignalMCLegend.SetFillColor(0)
142 SignalMCLegend.SetFillStyle(0)
143
144 outputFile.cd(rootDirectory+"/"+channel)
145 Canvas = TCanvas(histogramName)
146 BgMCHistograms = []
147 BgMCLegendEntries = []
148 SignalMCHistograms = []
149 SignalMCLegendEntries = []
150 DataHistograms = []
151 DataLegendEntries = []
152
153
154 backgroundIntegral = 0
155 dataIntegral = 0
156 scaleFactor = 1
157
158 for sample in processed_datasets: # loop over different samples as listed in configurationOptions.py
159 dataset_file = "%s/%s.root" % (condor_dir,sample)
160 inputFile = TFile(dataset_file)
161 Histogram = inputFile.Get(rootDirectory+"/"+channel+"/"+histogramName).Clone()
162 Histogram.SetDirectory(0)
163 if arguments.rebinFactor:
164 RebinFactor = int(arguments.rebinFactor)
165 if Histogram.GetNbinsX() >= RebinFactor*10:
166 Histogram.Rebin(RebinFactor)
167 inputFile.Close()
168 xAxisLabel = Histogram.GetXaxis().GetTitle()
169 histoTitle = Histogram.GetTitle()
170
171 legLabel = labels[sample]
172 if (arguments.printYields):
173 yieldHist = Histogram.Integral()
174 legLabel = legLabel + " (%.1f)" % yieldHist
175
176 if( types[sample] == "bgMC"):
177
178 numBgMCSamples += 1
179 backgroundIntegral += Histogram.Integral()
180
181 Histogram.SetLineStyle(1)
182 if(arguments.noStack):
183 Histogram.SetFillStyle(0)
184 Histogram.SetLineColor(colors[sample])
185 Histogram.SetLineWidth(2)
186 else:
187 Histogram.SetFillStyle(1001)
188 Histogram.SetFillColor(colors[sample])
189 Histogram.SetLineColor(1)
190 Histogram.SetLineWidth(1)
191
192 BgMCLegendEntries.append(legLabel)
193 BgMCHistograms.append(Histogram)
194
195
196 elif( types[sample] == "signalMC"):
197
198 numSignalSamples += 1
199
200 Histogram.SetFillStyle(0)
201 Histogram.SetLineColor(colors[sample])
202 Histogram.SetLineStyle(1)
203 Histogram.SetLineWidth(2)
204 if(arguments.normalizeToUnitArea and Histogram.Integral() > 0):
205 Histogram.Scale(1./Histogram.Integral())
206
207 SignalMCLegendEntries.append(legLabel)
208 SignalMCHistograms.append(Histogram)
209
210 elif( types[sample] == "data"):
211
212 numDataSamples += 1
213 dataIntegral += Histogram.Integral()
214
215 Histogram.SetFillStyle(0)
216 Histogram.SetLineColor(colors[sample])
217 Histogram.SetLineStyle(1)
218 Histogram.SetLineWidth(2)
219 if(arguments.normalizeToUnitArea and Histogram.Integral() > 0):
220 Histogram.Scale(1./Histogram.Integral())
221
222 DataLegendEntries.append(legLabel)
223 DataHistograms.append(Histogram)
224
225 if dataIntegral > 0 and backgroundIntegral > 0:
226 scaleFactor = dataIntegral/backgroundIntegral
227 for bgMCHist in BgMCHistograms:
228 if arguments.normalizeToData:
229 bgMCHist.Scale(scaleFactor)
230 if arguments.normalizeToUnitArea and not arguments.noStack and backgroundIntegral > 0:
231 bgMCHist.Scale(1./backgroundIntegral)
232 elif arguments.normalizeToUnitArea and arguments.noStack and bgMCHist.Integral() > 0:
233 bgMCHist.Scale(1./bgMCHist.Integral())
234 if not arguments.noStack:
235 Stack.Add(bgMCHist)
236
237
238
239
240
241 ### formatting data histograms and adding to legend
242 counter = 0
243 for Histogram in DataHistograms:
244 BgMCLegend.AddEntry(Histogram,DataLegendEntries[counter],"LEP").SetTextFont (42)
245 counter = counter+1
246
247
248 ### creating the histogram to represent the statistical errors on the stack
249 if numBgMCSamples is not 0 and not arguments.noStack:
250 ErrorHisto = BgMCHistograms[0].Clone("errors")
251 ErrorHisto.SetFillStyle(3001)
252 ErrorHisto.SetFillColor(13)
253 ErrorHisto.SetLineWidth(0)
254 BgMCLegend.AddEntry(ErrorHisto,"Stat. Errors","F").SetTextFont (42)
255 for Histogram in BgMCHistograms:
256 if Histogram is not BgMCHistograms[0]:
257 ErrorHisto.Add(Histogram)
258
259
260 ### formatting bgMC histograms and adding to legend
261 counter = numBgMCSamples-1
262 for Histogram in reversed(BgMCHistograms):
263 if(arguments.noStack):
264 BgMCLegend.AddEntry(Histogram,BgMCLegendEntries[counter],"L").SetTextFont (42)
265 else:
266 BgMCLegend.AddEntry(Histogram,BgMCLegendEntries[counter],"F").SetTextFont (42)
267 counter = counter-1
268
269 ### formatting signalMC histograms and adding to legend
270 counter = 0
271 for Histogram in SignalMCHistograms:
272 SignalMCLegend.AddEntry(Histogram,SignalMCLegendEntries[counter],"L").SetTextFont (42)
273 counter = counter+1
274
275
276
277 ### finding the maximum value of anything going on the canvas, and know how to set the y-axis
278 finalMax = 0
279 if numBgMCSamples is not 0 and not arguments.noStack:
280 finalMax = ErrorHisto.GetMaximum() + ErrorHisto.GetBinError(ErrorHisto.GetMaximumBin())
281 else:
282 for bgMCHist in BgMCHistograms:
283 if(bgMCHist.GetMaximum() > finalMax):
284 finalMax = bgMCHist.GetMaximum()
285 for signalMCHist in SignalMCHistograms:
286 if(signalMCHist.GetMaximum() > finalMax):
287 finalMax = signalMCHist.GetMaximum()
288 for dataHist in DataHistograms:
289 if(dataHist.GetMaximum() > finalMax):
290 finalMax = dataHist.GetMaximum() + dataHist.GetBinError(dataHist.GetMaximumBin())
291 finalMax = 1.1*finalMax
292
293
294 ### Drawing histograms to canvas
295
296
297 outputFile.cd(rootDirectory+"/"+channel)
298
299 makeRatioPlots = arguments.makeRatioPlots
300 makeDiffPlots = arguments.makeDiffPlots
301
302 if numBgMCSamples is 0 or numDataSamples is not 1:
303 makeRatioPlots = False
304 makeDiffPlots = False
305 if makeRatioPlots or makeDiffPlots:
306 Canvas.SetFillStyle(0)
307 Canvas.Divide(1,2)
308 Canvas.cd(1)
309 gPad.SetPad(0.01,0.25,0.99,0.99)
310 gPad.SetMargin(0.1,0.05,0.02,0.07)
311 gPad.SetFillStyle(0)
312 gPad.Update()
313 gPad.Draw()
314 Canvas.cd(2)
315 gPad.SetPad(0.01,0.01,0.99,0.25)
316 #format: gPad.SetMargin(l,r,b,t)
317 gPad.SetMargin(0.1,0.05,0.4,0.02)
318 gPad.SetFillStyle(0)
319 gPad.SetGridy(1)
320 gPad.Update()
321 gPad.Draw()
322
323 Canvas.cd(1)
324
325 if numBgMCSamples is not 0:
326
327 if not arguments.noStack:
328 Stack.SetTitle(histoTitle)
329 Stack.Draw("HIST")
330 Stack.GetXaxis().SetTitle(xAxisLabel)
331 Stack.SetMaximum(finalMax)
332 Stack.SetMinimum(0.0001)
333 if makeRatioPlots or makeDiffPlots:
334 Stack.GetHistogram().GetXaxis().SetLabelSize(0)
335 #draw shaded error bands
336 ErrorHisto.Draw("A E2 SAME")
337
338
339 else:
340 BgMCHistograms[0].SetTitle(histoTitle)
341 BgMCHistograms[0].Draw("HIST")
342 BgMCHistograms[0].GetXaxis().SetTitle(xAxisLabel)
343 BgMCHistograms[0].SetMaximum(finalMax)
344 BgMCHistograms[0].SetMinimum(0.0001)
345 for bgMCHist in BgMCHistograms:
346 bgMCHist.Draw("A HIST SAME")
347 for signalMCHist in SignalMCHistograms:
348 signalMCHist.Draw("A HIST SAME")
349 for dataHist in DataHistograms:
350 dataHist.Draw("A E SAME")
351
352 elif numSignalSamples is not 0:
353 SignalMCHistograms[0].SetTitle(histoTitle)
354 SignalMCHistograms[0].Draw("HIST")
355 SignalMCHistograms[0].GetXaxis().SetTitle(xAxisLabel)
356 SignalMCHistograms[0].SetMaximum(finalMax)
357 SignalMCHistograms[0].SetMinimum(0.0001)
358 for signalMCHist in SignalMCHistograms:
359 if(signalMCHist is not SignalMCHistograms[0]):
360 signalMCHist.Draw("A HIST SAME")
361 for dataHist in DataHistograms:
362 dataHist.Draw("A E SAME")
363
364 elif(numDataSamples is not 0):
365 DataHistograms[0].SetTitle(histoTitle)
366 DataHistograms[0].Draw("E")
367 DataHistograms[0].GetXaxis().SetTitle(xAxisLabel)
368 DataHistograms[0].SetMaximum(finalMax)
369 DataHistograms[0].SetMinimum(0.0001)
370 for dataHist in DataHistograms:
371 if(dataHist is not DataHistograms[0]):
372 dataHist.Draw("A E SAME")
373
374
375 if(numBgMCSamples is not 0 or numDataSamples is not 0):
376 BgMCLegend.SetX1NDC(0.75)
377 if numBgMCSamples is 0:
378 BgMCLegend.SetY1NDC(0.9-0.05*(1+numDataSamples))
379 else:
380 BgMCLegend.SetY1NDC(0.9-0.05*(2+numBgMCSamples+numDataSamples))
381 BgMCLegend.SetX2NDC(0.9)
382 BgMCLegend.SetY2NDC(0.9)
383 BgMCLegend.Draw()
384 if(numSignalSamples is not 0):
385 SignalMCLegend.SetX1NDC(0.6)
386 SignalMCLegend.SetY1NDC(0.9-0.05*(1+numSignalSamples))
387 SignalMCLegend.SetX2NDC(0.75)
388 SignalMCLegend.SetY2NDC(0.9)
389 SignalMCLegend.Draw()
390 elif numSignalSamples is not 0:
391 SignalMCLegend.SetX1NDC(0.75)
392 SignalMCLegend.SetY1NDC(0.9-0.05*(1+numSignalSamples))
393 SignalMCLegend.SetX2NDC(0.9)
394 SignalMCLegend.SetY2NDC(0.9)
395 SignalMCLegend.Draw()
396
397 if not arguments.normalizeToUnitArea or numDataSamples > 0:
398 LumiLabel.Draw()
399 if arguments.normalizeToData and numBgMCSamples > 0 and numDataSamples > 0:
400 if numSignalSamples is 0:
401 NormLabel = TPaveLabel(0.6,0.85,0.75,0.9,"MC scaled to data","NDC")
402 else:
403 NormLabel = TPaveLabel(0.45,0.85,0.6,0.9,"MC scaled to data","NDC")
404 NormLabel.SetBorderSize(0)
405 NormLabel.SetFillColor(0)
406 NormLabel.SetFillStyle(0)
407 NormLabel.Draw()
408 elif arguments.normalizeToUnitArea:
409 if (numBgMCSamples is not 0 or numDataSamples is not 0) and numSignalSamples is 0:
410 NormLabel = TPaveLabel(0.6,0.85,0.75,0.9,"Scaled to unit area","NDC")
411 else:
412 NormLabel = TPaveLabel(0.45,0.85,0.6,0.9,"Scaled to unit area","NDC")
413 NormLabel.SetBorderSize(0)
414 NormLabel.SetFillColor(0)
415 NormLabel.SetFillStyle(0)
416 NormLabel.Draw()
417
418
419 if makeRatioPlots or makeDiffPlots:
420 Canvas.cd(2)
421 BgSum = Stack.GetStack().Last()
422 Comparison = DataHistograms[0].Clone()
423 Comparison.Add(BgSum,-1)
424 if not makeDiffPlots:
425 Comparison.Divide(BgSum)
426 Comparison.SetTitle("")
427 Comparison.GetXaxis().SetTitle(xAxisLabel)
428 if makeRatioPlots:
429 Comparison.GetYaxis().SetTitle("#frac{Data-MC}{MC}")
430 elif makeDiffPlots:
431 Comparison.GetYaxis().SetTitle("Data-MC")
432 Comparison.GetYaxis().CenterTitle()
433 Comparison.GetYaxis().SetTitleSize(0.1)
434 Comparison.GetYaxis().SetTitleOffset(0.35)
435 Comparison.GetXaxis().SetTitleSize(0.15)
436 Comparison.GetYaxis().SetLabelSize(0.1)
437 Comparison.GetXaxis().SetLabelSize(0.15)
438 if makeRatioPlots:
439 Comparison.GetYaxis().SetRangeUser(-1.15,1.15)
440 elif makeDiffPlots:
441 YMax = Comparison.GetMaximum()
442 YMin = Comparison.GetMinimum()
443 if YMax <= 0 and YMin <= 0:
444 Comparison.GetYaxis().SetRangeUser(-1.2*YMin,0)
445 elif YMax >= 0 and YMin >= 0:
446 Comparison.GetYaxis().SetRangeUser(0,1.2*YMax)
447 else: #axis crosses y=0
448 if abs(YMax) > abs(YMin):
449 Comparison.GetYaxis().SetRangeUser(-1.2*YMax,1.2*YMax)
450 else:
451 Comparison.GetYaxis().SetRangeUser(-1.2*YMin,1.2*YMin)
452
453 Comparison.GetYaxis().SetNdivisions(205)
454 Comparison.Draw()
455 Canvas.Write()
456
457 if re.match ('TH2', key.GetClassName()) and arguments.draw2DPlots: # plot a 2-D histogram
458
459 numBgMCSamples = 0
460 numDataSamples = 0
461 numSignalSamples = 0
462
463 if(intLumi < 1000.):
464 LumiText = "L_{int} = " + str(intLumi) + " pb^{-1}"
465 else:
466 getcontext().prec = 2
467 LumiInFb = intLumi/1000.
468 LumiText = "L_{int} = " + str(LumiInFb) + " fb^{-1}"
469
470 LumiLabel = TPaveLabel(0.1,0.8,0.34,0.9,LumiText,"NDC")
471 LumiLabel.SetBorderSize(0)
472 LumiLabel.SetFillColor(0)
473 LumiLabel.SetFillStyle(0)
474
475 BgMCLegend = TLegend(0.76,0.65,0.99,0.9)
476 BgMCLegend.AddEntry (0, "Data & Bkgd. MC", "H").SetTextFont (62)
477 BgMCLegend.SetBorderSize(0)
478 BgMCLegend.SetFillColor(0)
479 BgMCLegend.SetFillStyle(0)
480 SignalMCLegend = TLegend(0.76,0.135,0.99,0.377)
481 SignalMCLegend.AddEntry (0, "Signal MC", "H").SetTextFont (62)
482 SignalMCLegend.SetBorderSize(0)
483 SignalMCLegend.SetFillColor(0)
484 SignalMCLegend.SetFillStyle(0)
485
486 outputFile.cd(rootDirectory+"/"+channel)
487 Canvas = TCanvas(histogramName)
488 Canvas.SetRightMargin(0.2413793);
489 BgMCHistograms = []
490 SignalMCHistograms = []
491 DataHistograms = []
492
493 for sample in processed_datasets: # loop over different samples as listed in configurationOptions.py
494 dataset_file = "%s/%s.root" % (condor_dir,sample)
495 inputFile = TFile(dataset_file)
496 Histogram = inputFile.Get(rootDirectory+"/"+channel+"/"+histogramName).Clone()
497 Histogram.SetDirectory(0)
498 RebinFactor = int(arguments.rebinFactor)
499 if arguments.rebinFactor and Histogram.GetNbinsX() >= RebinFactor*10 and Histogram.GetNbinsY() >= RebinFactor*10:
500 Histogram.Rebin2D(RebinFactor)
501 inputFile.Close()
502 xAxisLabel = Histogram.GetXaxis().GetTitle()
503 yAxisLabel = Histogram.GetYaxis().GetTitle()
504 histoTitle = Histogram.GetTitle()
505
506 if( types[sample] == "bgMC"):
507
508 numBgMCSamples += 1
509 Histogram.SetMarkerColor(colors[sample])
510 Histogram.SetFillColor(colors[sample])
511 BgMCLegend.AddEntry(Histogram,labels[sample],"F").SetTextFont (42)
512 BgMCHistograms.append(Histogram)
513
514 elif( types[sample] == "signalMC"):
515
516 numSignalSamples += 1
517 Histogram.SetMarkerColor(colors[sample])
518 Histogram.SetFillColor(colors[sample])
519 SignalMCLegend.AddEntry(Histogram,labels[sample],"F").SetTextFont (42)
520 SignalMCHistograms.append(Histogram)
521
522 elif( types[sample] == "data"):
523
524 numDataSamples += 1
525 Histogram.SetMarkerColor(colors[sample])
526 Histogram.SetFillColor(colors[sample])
527 BgMCLegend.AddEntry(Histogram,labels[sample],"F").SetTextFont (42)
528 DataHistograms.append(Histogram)
529
530
531 outputFile.cd(rootDirectory+"/"+channel)
532
533 if(numBgMCSamples is not 0):
534 BgMCHistograms[0].SetTitle(histoTitle)
535 BgMCHistograms[0].GetXaxis().SetTitle(xAxisLabel)
536 BgMCHistograms[0].GetYaxis().SetTitle(yAxisLabel)
537 BgMCHistograms[0].Draw()
538 for signalMCHist in SignalMCHistograms:
539 signalMCHist.Draw("SAME")
540 for dataHist in DataHistograms:
541 dataHist.Draw("SAME")
542
543 elif(numSignalSamples is not 0):
544 SignalMCHistograms[0].SetTitle(histoTitle)
545 SignalMCHistograms[0].Draw()
546 SignalMCHistograms[0].GetXaxis().SetTitle(xAxisLabel)
547 SignalMCHistograms[0].GetYaxis().SetTitle(yAxisLabel)
548 for signalMCHist in SignalMCHistograms:
549 if(signalMCHist is not SignalMCHistograms[0]):
550 signalMCHist.Draw("SAME")
551 for dataHist in DataHistograms:
552 dataHist.Draw("SAME")
553
554 elif(numDataSamples is not 0):
555 DataHistograms[0].SetTitle(histoTitle)
556 DataHistograms[0].GetXaxis().SetTitle(xAxisLabel)
557 DataHistograms[0].GetYaxis().SetTitle(yAxisLabel)
558 DataHistograms[0].Draw()
559 for dataHist in DataHistograms:
560 if(dataHist is not DataHistograms[0]):
561 dataHist.Draw("SAME")
562
563
564 if(numBgMCSamples is not 0 or numDataSamples is not 0):
565 BgMCLegend.Draw()
566 if(numSignalSamples is not 0):
567 SignalMCLegend.Draw()
568 if not arguments.normalizeToUnitArea or numDataSamples > 0:
569 LumiLabel.Draw()
570
571 Canvas.Write()
572
573
574 #for dataset in processed_datasets:
575 # dataset_file = "%s/%s.root_tmp" % (condor_dir,dataset)
576 # os.remove(dataset_file)
577
578 outputFile.Close()