1 |
import ROOT
|
2 |
import sys
|
3 |
sys.path.append("/afs/naf.desy.de/user/n/nowaf/UserCode/nowaf/PythonScripts/")
|
4 |
import definitions as Def
|
5 |
import Scan_cff as Scan
|
6 |
import ScanDump_cff as Dump
|
7 |
|
8 |
#########################################################
|
9 |
#
|
10 |
# Reads in Scan hists and dumps out its content
|
11 |
# For limit input
|
12 |
#
|
13 |
#########################################################
|
14 |
|
15 |
if __name__ == "__main__":
|
16 |
|
17 |
#Def.SetGlobalStyles( withTitle=True )
|
18 |
#ROOT.gStyle.SetPadRightMargin( 0.11 )
|
19 |
#ROOT.gStyle.SetLabelSize( 0.03,"XYZ" )
|
20 |
#lumi = 4.533
|
21 |
lumi = 4.992
|
22 |
title = "L = " + str( round( lumi,1 ) ) + " fb^{-1}, #sqrt{s} = 7 TeV"
|
23 |
tanBeta = 40
|
24 |
|
25 |
Type = ""
|
26 |
|
27 |
#data = 28
|
28 |
#dataQCD=3.3
|
29 |
#dataMuon=26.5
|
30 |
#dataQCDSystRel=1.15
|
31 |
#dataQCDStatRel=1.12
|
32 |
#dataMuonSystRel=1.11
|
33 |
#dataMuonStatRel=1.09
|
34 |
|
35 |
#### 26. 01. 2012
|
36 |
#data = 28
|
37 |
#dataQCD=3.4
|
38 |
#dataMuon=26.9
|
39 |
#dataQCDSystRel=1.15
|
40 |
#dataQCDStatRel=1.11
|
41 |
#dataMuonSystRel=1.22
|
42 |
#dataMuonStatRel=1.08
|
43 |
|
44 |
#### 06.02.2012
|
45 |
#data = 28
|
46 |
#dataQCD=3.4
|
47 |
#dataMuon=25.4
|
48 |
#dataQCDSystRel=1.15
|
49 |
#dataQCDStatRel=1.11
|
50 |
#dataMuonSystRel=1.20
|
51 |
#dataMuonStatRel=1.09
|
52 |
|
53 |
#### 15.02.2012
|
54 |
#data = 28
|
55 |
#dataQCD=3.3
|
56 |
#dataMuon=22.4
|
57 |
#dataQCDSystRel=1.15
|
58 |
#dataQCDStatRel=1.12
|
59 |
#dataMuonSystRel=1.20
|
60 |
#dataMuonStatRel=1.09
|
61 |
|
62 |
### 20.03.2012
|
63 |
data = 28
|
64 |
dataQCD=3.4
|
65 |
dataMuon=25.9
|
66 |
dataQCDSystRel=1.29
|
67 |
dataQCDStatRel=1.12
|
68 |
dataMuonSystRel=1.09
|
69 |
dataMuonStatRel=1.09
|
70 |
|
71 |
#### histDict contains all hists needed in the end
|
72 |
datacardDir = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/ScanTanBeta40new_xix/Datacards"
|
73 |
#filename = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/ScanTanBeta40new_v_noPDF/Tau_mSUGRA_m0-220to3000_m12-100to1000_tanb-40andA0-m500_7TeV-Pythia6Z_333.root"
|
74 |
#filename = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/ScanTanBeta40new_viii/ScanTanBeta40new_viii.root"
|
75 |
filename = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/ScanTanBeta40new_xix/ScanTanBeta40new_xix.root"
|
76 |
rootfile = ROOT.TFile.Open( filename )
|
77 |
histDict = Scan.readInScanHists( rootfile )
|
78 |
filenamePDF = "/scratch/hh/lustre/cms/user/nowaf/2011Data/VersionII/Plots/ScanTanBeta40new_vi_PDF/ScanTanBeta40new_vi_PDF.root"
|
79 |
rootfilePDF = ROOT.TFile.Open( filenamePDF )
|
80 |
Scan.getPDFHists( rootfilePDF, histDict )
|
81 |
rootfile.Close()
|
82 |
|
83 |
Scan.getAccHist( histDict, "NLO", Type=Type )
|
84 |
Scan.getRateHist( histDict, "NLO", lumi=lumi, Type=Type )
|
85 |
Scan.getSignalCont( histDict, lumi=lumi, data=dataQCD, Type=Type )
|
86 |
Scan.getSignalCont( histDict, backgr="Muon", data=dataMuon, lumi=lumi, Type=Type )
|
87 |
for err in [ "JECUp", "JECDn", "TEUp", "TEDn", "NLO2", "NLO05",
|
88 |
"MuonIsoUp", "MuonIsoDn", "ElecIsoUp", "ElecIsoDn" ]:
|
89 |
Scan.getAccHist( histDict, err, Type=Type, otherApp="NLO" )
|
90 |
Scan.getRelAcc( histDict, err, "NLO", Type=Type )
|
91 |
Scan.getRateHist( histDict, err, lumi=lumi, Type=Type )
|
92 |
Scan.getRelRate( histDict, err, "NLO", Type=Type )
|
93 |
pass
|
94 |
Scan.getRelPDFErr( histDict,Type=Type )
|
95 |
Scan.getCombRelRateErr( histDict, Type=Type )
|
96 |
Scan.getCombRelAccErr( histDict, Type=Type )
|
97 |
|
98 |
#### now prepare dump
|
99 |
for xbin in range( 1, histDict[ "ScanAnalyzerNLO" ].GetNbinsX() + 1 ):
|
100 |
for ybin in range( 1, histDict[ "ScanAnalyzerNLO" ].GetNbinsY() + 1 ):
|
101 |
if( histDict[ "ScanAnalyzerNLO" ].GetBinContent( xbin, ybin ) == 0 ):
|
102 |
continue
|
103 |
|
104 |
m0 = histDict[ "ScanAnalyzerNLO" ].GetXaxis().GetBinCenter( xbin )
|
105 |
#### temporary scan only small part
|
106 |
if m0 > 800:
|
107 |
continue
|
108 |
#if not m0 == 400:
|
109 |
# continue
|
110 |
|
111 |
m12 = histDict[ "ScanAnalyzerNLO" ].GetYaxis().GetBinCenter( ybin )
|
112 |
#### temporary scan only small part
|
113 |
if m12 > 800:
|
114 |
continue
|
115 |
#if not m12 == 280:
|
116 |
# continue
|
117 |
|
118 |
fileName = datacardDir + "/Datacard_" + str( int( m0 ) ) + "_" + str( int( m12 ) ) + "_" + str( int( tanBeta ) ) + ".txt"
|
119 |
|
120 |
rateErr = ROOT.Double( 0 )
|
121 |
contRealErr = ROOT.Double( 0 )
|
122 |
contFakeErr = ROOT.Double( 0 )
|
123 |
rate = histDict[ "ScanAnalyzerNLO" ].IntegralAndError( xbin, xbin, ybin, ybin, rateErr )
|
124 |
contReal = histDict[ "SignalContMuon" ].IntegralAndError( xbin, xbin, ybin, ybin, contRealErr )
|
125 |
contFake = histDict[ "SignalContQCD" ].IntegralAndError( xbin, xbin, ybin, ybin, contFakeErr )
|
126 |
|
127 |
#print "rate=", rate, " contReal=", contReal, " contFake=", contFake
|
128 |
|
129 |
cleanedRate = rate - contReal - contFake
|
130 |
if cleanedRate < 0:
|
131 |
cleanedRate = 0
|
132 |
cleanedRateErr = rateErr/rate + 1
|
133 |
|
134 |
|
135 |
JECUp = histDict[ "RateRelJECUp" ].GetBinContent( xbin, ybin )
|
136 |
JECDn = histDict[ "RateRelJECDn" ].GetBinContent( xbin, ybin )
|
137 |
#print "JEC up=", JECUp, " JEC dn=", JECDn
|
138 |
TEUp = histDict[ "RateRelTEUp" ].GetBinContent( xbin, ybin )
|
139 |
TEDn = histDict[ "RateRelTEDn" ].GetBinContent( xbin, ybin )
|
140 |
#print "TE up=", TEUp, " TE dn=", TEDn
|
141 |
NLOUp = histDict[ "RateRelNLO2" ].GetBinContent( xbin, ybin )
|
142 |
NLODn = histDict[ "RateRelNLO05" ].GetBinContent( xbin, ybin )
|
143 |
#print "NLO up=", NLOUp, " NLO05 dn=", NLODn
|
144 |
MIUp = histDict[ "RateRelMuonIsoUp" ].GetBinContent( xbin, ybin )
|
145 |
MIDn = histDict[ "RateRelMuonIsoDn" ].GetBinContent( xbin, ybin )
|
146 |
#print "MI up=", MIUp +1 , " MI dn=", MIDn + 1
|
147 |
EIUp = histDict[ "RateRelElecIsoUp" ].GetBinContent( xbin, ybin )
|
148 |
EIDn = histDict[ "RateRelElecIsoDn" ].GetBinContent( xbin, ybin )
|
149 |
#print "EI up=", EIUp +1 , " EI dn=", EIDn + 1
|
150 |
PDFUp = histDict[ "RateRelPDFUp" ].GetBinContent( xbin, ybin )
|
151 |
PDFDn = histDict[ "RateRelPDFDn" ].GetBinContent( xbin, ybin )
|
152 |
#print "PDF up=", PDFUp +1 , " PDF dn=", PDFDn + 1
|
153 |
|
154 |
contRealRel = histDict[ "SignalContMuonRel" ].GetBinContent( xbin, ybin )
|
155 |
contFakeRel = histDict[ "SignalContQCDRel" ].GetBinContent( xbin, ybin )
|
156 |
|
157 |
#if m0 > 500 and m0 < 600 and m12 > 200 and m12 < 300:
|
158 |
# print "m0=", m0, " m12=", m12, " rate=", rate, " contReal=", contReal, " contFake=", contFake
|
159 |
# print "JECUp=", JECUp
|
160 |
# pass
|
161 |
|
162 |
|
163 |
d = Dump.PrintFile( fileName )
|
164 |
d.setObservation( data )
|
165 |
d.setRate( cleanedRate, dataMuon, dataQCD )
|
166 |
#d.setUncert( "uncertLumi", 1.036, [ 0 ] )
|
167 |
#d.setUncert( "uncertTrig", 1.063, [ 0 ] )
|
168 |
d.setUncert( "uncertLumi", 1.022, [ 0 ] )
|
169 |
d.setUncert( "uncertTrig", 1.025, [ 0 ] ) ### new
|
170 |
#d.setUncert( "uncertPDF", 1.3, [ 0 ] ) ###### currently flat
|
171 |
d.setUncert( "uncertPDF", PDFUp +1, [ 0 ] ) ### are these guys in or out??
|
172 |
d.setUncert( "uncertJEC", JECUp, [ 0 ] )
|
173 |
d.setUncert( "uncertTE", TEUp, [ 0 ] )
|
174 |
####d.setUncert( "uncertNLO05", NLODn, [ 0 ] ) ### left out because of new policy
|
175 |
d.setUncert( "uncertMI", MIUp + 1, [ 0 ] )
|
176 |
d.setUncert( "uncertEI", EIUp + 1, [ 0 ] )
|
177 |
d.setUncert( "uncertSignalStat", cleanedRateErr, [ 0 ] )
|
178 |
#d.setUncert( "uncertRealStat", contRealErr, [ 1 ] )
|
179 |
#d.setUncert( "uncertFakeStat", contFakeErr, [ 2 ] )
|
180 |
d.setUncert( "uncertFakeStat", dataQCDStatRel, [ 2 ] )
|
181 |
d.setUncert( "uncertRealStat", dataMuonStatRel, [ 1 ] )
|
182 |
d.setUncert( "uncertFakeSyst", dataQCDSystRel, [ 2 ] )
|
183 |
d.setUncert( "uncertRealSyst", dataMuonSystRel, [ 1 ] )
|
184 |
d.write()
|
185 |
pass
|
186 |
pass
|
187 |
|