ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/OSUT3Analysis/Configuration/scripts/RatioCalculator.py
Revision: 1.2
Committed: Tue Sep 3 08:52:04 2013 UTC (11 years, 8 months ago) by lantonel
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
State: FILE REMOVED
Log Message:
moved to DisplacedSUSY/Configuration/scripts/calculateQCDfakerate.py

File Contents

# Content
1 #!/usr/bin/env python
2 from array import *
3 import sys
4 import os
5 import math
6 from OSUT3Analysis.Configuration.configurationOptions import *
7
8 sys.path.append(os.getcwd())
9 sys.argv.pop(0)
10
11 for arg in sys.argv:
12 exec("from " + arg.rstrip('.py') + " import *")
13
14 from ROOT import TFile, gROOT, gStyle, gDirectory, TStyle, THStack, TH1F, TCanvas, TString, TLegend, TArrow, THStack, TIter, TKey, TGraphErrors, Double
15
16 def calculator(DenominatorIntegral,DenominatorIntegralError,MiddleIntegral,MiddleIntegralError):
17 out = []
18 if not (DenominatorIntegral == 0 or MiddleIntegral == 0):
19 Ratio = round(MiddleIntegral/DenominatorIntegral,4)
20 Error = round(math.sqrt((DenominatorIntegralError**2)/(DenominatorIntegral**2)+(MiddleIntegralError**2)/(MiddleIntegral**2)),4)
21 out.append(Ratio)
22 out.append(Error)
23 return out
24 else:
25 print "T_T!!! Zeros in denominator detected!!"
26 out.append(0)
27 out.append(0)
28 return out
29 for upperValue in upperValues:
30
31 controlChannels = []
32 preChannels = []
33 print "Integrate up to " + str(upperValue)
34
35 testFile = TFile(preSelectionFile +".root")
36 testFile.cd()
37 for key in testFile.GetListOfKeys():
38 if (key.GetClassName() != "TDirectoryFile"):
39 continue
40 rootDirectory = key.GetName()
41 testFile.cd(key.GetName())
42 for key2 in gDirectory.GetListOfKeys():
43 if (key2.GetClassName() != "TDirectoryFile"):
44 continue
45 preChannels.append(key2.GetName())
46
47 for channel in preChannels: # loop over final states, which each have their own directory
48
49 testFile.cd(rootDirectory+"/"+channel)
50 subDirectories = []
51 for key in gDirectory.GetListOfKeys():
52 if (key.GetClassName() != "TDirectoryFile"):
53 continue
54 subDirectories.append(key.GetName())
55
56 DenominatorIntegral = 0
57 DenominatorIntegralError = 0
58 MiddleIntegral = 0
59 MiddleIntegralError = 0
60 inputFile = TFile(preSelectionFile+".root")
61 if(inputFile.IsZombie()):
62 continue
63 if (len(subDirectories) != 0):
64 Histogram = inputFile.Get(rootDirectory+"/"+channel+"/"+subDirectories[len(subDirectories)-1]+"/"+preHistogramName).Clone()
65 else:
66 Histogram = inputFile.Get(rootDirectory+"/"+channel+"/"+preHistogramName).Clone()
67 Histogram.SetDirectory(0)
68 inputFile.Close()
69
70 upperBin = Histogram.FindBin (upperValue)
71 DenominatorIntegralError = Double (0.0)
72 middleBin = Histogram.FindBin (criticalValue)
73 MiddleIntegralError = Double (0.0)
74 DenominatorIntegral = Histogram.IntegralAndError(middleBin, upperBin + 1,DenominatorIntegralError)
75 MiddleIntegral = Histogram.IntegralAndError(0,middleBin,MiddleIntegralError)
76 print channel
77 preOut = calculator(DenominatorIntegral,DenominatorIntegralError,MiddleIntegral,MiddleIntegralError)
78 print "Pre Below Critical/Above Critical = " + str(preOut[0]) + " +- " + str(preOut[1]*100) +"%"
79
80
81 testFile = TFile(controlFile +".root")
82 testFile.cd()
83 for key in testFile.GetListOfKeys():
84 if (key.GetClassName() != "TDirectoryFile"):
85 continue
86 rootDirectory = key.GetName()
87 testFile.cd(key.GetName())
88 for key2 in gDirectory.GetListOfKeys():
89 if (key2.GetClassName() != "TDirectoryFile"):
90 continue
91 controlChannels.append(key2.GetName())
92
93
94
95 for channel in controlChannels: # loop over final states, which each have their own directory
96
97 testFile.cd(rootDirectory+"/"+channel)
98 subDirectories = []
99 for key in gDirectory.GetListOfKeys():
100 if (key.GetClassName() != "TDirectoryFile"):
101 continue
102 subDirectories.append(key.GetName())
103
104 DenominatorIntegral = 0
105 DenominatorIntegralError = 0
106 MiddleIntegral = 0
107 MiddleIntegralError = 0
108 inputFile = TFile(controlFile+".root")
109 if(inputFile.IsZombie()):
110 continue
111 if (len(subDirectories) != 0):
112 Histogram = inputFile.Get(rootDirectory+"/"+channel+"/"+subDirectories[len(subDirectories)-1]+"/"+histogramName).Clone()
113 else:
114 Histogram = inputFile.Get(rootDirectory+"/"+channel+"/"+histogramName).Clone()
115 Histogram.SetDirectory(0)
116 inputFile.Close()
117
118 nBins = Histogram.GetNbinsX()
119 upperBin = Histogram.FindBin (upperValue)
120 DenominatorIntegralError = Double (0.0)
121 middleBin = Histogram.FindBin (criticalValue)
122 MiddleIntegralError = Double (0.0)
123 DenominatorIntegral = Histogram.IntegralAndError(middleBin, upperBin-1,DenominatorIntegralError)
124 MiddleIntegral = Histogram.IntegralAndError(0,middleBin-1,MiddleIntegralError)
125 print channel
126 controlOut = calculator(DenominatorIntegral,DenominatorIntegralError,MiddleIntegral,MiddleIntegralError)
127 print "Control Below Critical/Above Critical = " + str(controlOut[0]) + " +- " + str(controlOut[1]*100) +"%"
128