ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/Configuration/scripts/makePlots.py
Revision: 1.1
Committed: Fri Jan 11 12:21:40 2013 UTC (12 years, 3 months ago) by lantonel
Content type: text/x-python
Branch: MAIN
CVS Tags: V01-00-01, V00-00-01
Log Message:
moved from DisplacedSUSY

File Contents

# User Rev Content
1 lantonel 1.1 #!/usr/bin/env python
2     import sys
3     import os
4     from array import *
5     from optparse import OptionParser
6     from DisplacedSUSY.Configuration.configurationOptions import *
7    
8     parser = OptionParser()
9    
10     parser.add_option("-l", "--localConfig", dest="localConfig",
11     help="local configuration file")
12    
13     parser.add_option("-c", "--condorDir", dest="condorDir",
14     help="condor output directory")
15    
16     (options, args) = parser.parse_args()
17    
18     if options.localConfig:
19     sys.path.append(os.getcwd())
20     exec("from " + options.localConfig.rstrip('.py') + " import *")
21    
22     if options.condorDir:
23     condor_dir = "condor/%s" % options.condorDir
24     else: #get most recent condor submission directory
25     dir_list = []
26     for directory in os.listdir("./condor/"):
27     if directory.find("condor_") is not -1:
28     dir_list.append(directory)
29     if len(dir_list) is 0:
30     sys.exit("Cannot find last condor working directory")
31     dir_list.sort(reverse=True)
32     condor_dir = "condor/%s" % dir_list[0]
33    
34    
35    
36    
37     from ROOT import TFile, gROOT, gStyle, gDirectory, TStyle, THStack, TH1F, TCanvas, TString, TLegend, TArrow, THStack, TIter, TKey, TPaveLabel
38    
39     gROOT.SetBatch()
40     gStyle.SetOptStat(0)
41     gStyle.SetCanvasBorderMode(0)
42     gStyle.SetPadBorderMode(0)
43     gStyle.SetPadColor(0)
44     gStyle.SetCanvasColor(0)
45     gStyle.SetTextFont(42)
46     outputFile = TFile(condor_dir + "/stacked_histograms.root", "RECREATE")
47    
48     channels = []
49     processed_datasets = []
50    
51     #### check which input datasets have valid output files
52     for sample in datasets:
53     fileName = condor_dir + "/" + sample + ".root"
54     if not os.path.exists(fileName):
55     continue
56     testFile = TFile(fileName)
57     if not (testFile.IsZombie()):
58     processed_datasets.append(sample)
59    
60     if len(processed_datasets) is 0:
61     sys.exit("No datasets have been processed")
62    
63     #### open first input file and re-make its directory structure in the output file
64     testFile = TFile(condor_dir + "/" + processed_datasets[0] + ".root")
65     testFile.cd()
66     for key in testFile.GetListOfKeys():
67     if (key.GetClassName() != "TDirectoryFile"):
68     continue
69     outputFile.cd()
70     outputFile.mkdir(key.GetName())
71     rootDirectory = key.GetName()
72    
73     testFile.cd(key.GetName())
74     for key2 in gDirectory.GetListOfKeys():
75     if (key2.GetClassName() != "TDirectoryFile"):
76     continue
77     outputFile.cd(key.GetName())
78     gDirectory.mkdir(key2.GetName())
79     channels.append(key2.GetName())
80    
81    
82    
83    
84     for channel in channels: # loop over final states, which each have their own directory
85    
86     testFile.cd(rootDirectory+"/"+channel)
87     histograms = []
88     for key in gDirectory.GetListOfKeys():
89     histograms.append(key.GetName())
90    
91     for histogramName in histograms: # loop over histograms in the current directory
92    
93     Stack = THStack("stack",histogramName)
94    
95     if(intLumi < 1000.):
96     LumiText = "L_{int} = " + str(intLumi) + " pb^{-1}"
97     else:
98     LumiInFb = int(intLumi/1000.)
99     LumiText = "L_{int} = " + str(LumiInFb) + " fb^{-1}"
100    
101     LumiLabel = TPaveLabel(0.1,0.8,0.34,0.9,LumiText,"NDC");
102     LumiLabel.SetBorderSize(0);
103     LumiLabel.SetFillColor(0);
104     LumiLabel.SetFillStyle(0);
105    
106    
107     BgMCLegend = TLegend(0.70,0.65,0.99,0.89, "Data & Bkgd. MC")
108     BgMCLegend.SetBorderSize(0);
109     BgMCLegend.SetFillColor(0);
110     BgMCLegend.SetFillStyle(0);
111     SignalMCLegend = TLegend(0.45,0.65,0.70,0.89,"Signal MC")
112     SignalMCLegend.SetBorderSize(0);
113     SignalMCLegend.SetFillColor(0);
114     SignalMCLegend.SetFillStyle(0);
115    
116    
117    
118     outputFile.cd(rootDirectory+"/"+channel)
119     Canvas = TCanvas(histogramName)
120     SignalMCHistograms = []
121     DataHistograms = []
122    
123     for sample in processed_datasets: # loop over different samples as listed in configurationOptions.py
124     inputFile = TFile(condor_dir + "/" + sample + ".root")
125     if(inputFile.IsZombie()):
126     continue
127     Histogram = inputFile.Get(rootDirectory+"/"+channel+"/"+histogramName).Clone()
128     Histogram.SetDirectory(0)
129     xAxisLabel = Histogram.GetXaxis().GetTitle()
130    
131     if( types[sample] == "bgMC"):
132    
133     Histogram.SetFillStyle(1001)
134     Histogram.SetFillColor(colors[sample])
135     Histogram.SetLineColor(1)
136     Histogram.SetLineStyle(1)
137     Histogram.SetLineWidth(1)
138    
139     BgMCLegend.AddEntry(Histogram,labels[sample],"F")
140     Stack.Add(Histogram)
141     elif( types[sample] == "signalMC"):
142    
143     Histogram.SetFillStyle(0)
144     Histogram.SetLineColor(colors[sample])
145     Histogram.SetLineStyle(1)
146     Histogram.SetLineWidth(2)
147    
148     SignalMCLegend.AddEntry(Histogram,labels[sample],"L")
149     SignalMCHistograms.append(Histogram)
150    
151     elif( types[sample] == "data"):
152    
153     Histogram.SetFillStyle(0)
154     Histogram.SetLineColor(colors[sample])
155     Histogram.SetLineStyle(1)
156     Histogram.SetLineWidth(2)
157    
158     BgMCLegend.AddEntry(Histogram,labels[sample],"LEP")
159     DataHistograms.append(Histogram)
160    
161    
162     stackMax = Stack.GetMaximum()
163     finalMax = stackMax
164     for signalMCHist in SignalMCHistograms:
165     if(signalMCHist.GetMaximum() > finalMax):
166     finalMax = signalMCHist.GetMaximum()
167     for dataHist in DataHistograms:
168     if(dataHist.GetMaximum() > finalMax):
169     finalMax = dataHist.GetMaximum()
170    
171    
172     outputFile.cd(rootDirectory+"/"+channel)
173     Stack.Draw("HIST")
174     Stack.SetMaximum(1.1*finalMax)
175     for signalMCHist in SignalMCHistograms:
176     signalMCHist.Draw("HIST SAME")
177     for dataHist in DataHistograms:
178     dataHist.Draw("E SAME")
179    
180     Stack.GetXaxis().SetTitle(xAxisLabel)
181     BgMCLegend.Draw()
182     SignalMCLegend.Draw()
183     LumiLabel.Draw()
184     Canvas.Write()
185    
186    
187     outputFile.Close()