ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
Jet
JetUncertainties
testingMacros
InputScripts
Final2012
Final2012/ParseInsituInput.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
2
3
from
ROOT
import
*
4
from
array
import
array
5
import
glob
6
import
re
7
import
math
8
import
ProviderHistoHelpers
9
10
# Dictionary to translate from Bogan's names to provider names
11
SystematicNameDictionary = {
12
'gammajetdphi'
:
'Gjet_dPhi'
,
13
'gammajetgenerator'
:
'Gjet_Generator'
,
14
'gammajetoutofcone'
:
'Gjet_OOC'
,
15
'gammajetphscalemat'
:
'Gjet_GamESmaterial'
,
16
'gammajetphscaleps'
:
'Gjet_GamESpresampler'
,
17
'gammajetphscalez'
:
'Gjet_GamESZee'
,
18
'gammajetphsmear'
:
'Gjet_GamEsmear'
,
19
'gammajetpurity'
:
'Gjet_Purity'
,
20
'gammajetstat1'
:
'Gjet_Stat1'
,
21
'gammajetstat2'
:
'Gjet_Stat2'
,
22
'gammajetstat3'
:
'Gjet_Stat3'
,
23
'gammajetstat4'
:
'Gjet_Stat4'
,
24
'gammajetstat5'
:
'Gjet_Stat5'
,
25
'gammajetstat6'
:
'Gjet_Stat6'
,
26
'gammajetstat7'
:
'Gjet_Stat7'
,
27
'gammajetstat8'
:
'Gjet_Stat8'
,
28
'gammajetstat9'
:
'Gjet_Stat9'
,
29
'gammajetstat10'
:
'Gjet_Stat10'
,
30
'gammajetstat11'
:
'Gjet_Stat11'
,
31
'gammajetstat12'
:
'Gjet_Stat12'
,
32
'gammajetstat13'
:
'Gjet_Stat13'
,
33
'gammajetsubleadingjet'
:
'Gjet_Veto'
,
34
'mjbalpha'
:
'MJB_Alpha'
,
35
'mjbbeta'
:
'MJB_Beta'
,
36
'mjbmodelling'
:
'MJB_Fragmentation'
,
37
'mjbptasymm'
:
'MJB_Asym'
,
38
'mjbptthreshold'
:
'MJB_Threshold'
,
39
'mjbstat1'
:
'MJB_Stat1'
,
40
'mjbstat2'
:
'MJB_Stat2'
,
41
'mjbstat3'
:
'MJB_Stat3'
,
42
'mjbstat4'
:
'MJB_Stat4'
,
43
'mjbstat5'
:
'MJB_Stat5'
,
44
'mjbstat6'
:
'MJB_Stat6'
,
45
'mjbstat7'
:
'MJB_Stat7'
,
46
'mjbstat8'
:
'MJB_Stat8'
,
47
'mjbstat9'
:
'MJB_Stat9'
,
48
'mjbstat10'
:
'MJB_Stat10'
,
49
'mjbstat11'
:
'MJB_Stat11'
,
50
'zjetdphi'
:
'Zjet_dPhi'
,
51
'zjetescalemat'
:
'Zjet_ElecESmaterial'
,
52
'zjetescaleps'
:
'Zjet_ElecESpresampler'
,
53
'zjetescalez'
:
'Zjet_ElecESZee'
,
54
'zjetesmear'
:
'Zjet_ElecEsmear'
,
55
'zjetgenerator'
:
'Zjet_MC'
,
56
'zjetjvf'
:
'Zjet_JVF'
,
57
'zjetmuscale'
:
'Zjet_MuScale'
,
58
'zjetmusmearid'
:
'Zjet_MuSmearID'
,
59
'zjetmusmearms'
:
'Zjet_MuSmearMS'
,
60
'zjetoutofcone'
:
'Zjet_KTerm'
,
61
'zjetstat1'
:
'Zjet_Stat1'
,
62
'zjetstat2'
:
'Zjet_Stat2'
,
63
'zjetstat3'
:
'Zjet_Stat3'
,
64
'zjetstat4'
:
'Zjet_Stat4'
,
65
'zjetstat5'
:
'Zjet_Stat5'
,
66
'zjetstat6'
:
'Zjet_Stat6'
,
67
'zjetstat7'
:
'Zjet_Stat7'
,
68
'zjetstat8'
:
'Zjet_Stat8'
,
69
'zjetstat9'
:
'Zjet_Stat9'
,
70
'zjetstat10'
:
'Zjet_Stat10'
,
71
'zjetstat11'
:
'Zjet_Stat11'
,
72
'zjetsubleadingjet'
:
'Zjet_Veto'
73
}
74
75
jetDefDict = {
76
'EMJES_R4'
:
'AntiKt4Topo_EMJES'
,
77
'EMJES_R6'
:
'AntiKt6Topo_EMJES'
,
78
'LCJES_R4'
:
'AntiKt4Topo_LCJES'
,
79
'LCJES_R6'
:
'AntiKt6Topo_LCJES'
80
}
81
82
def
ReadInSituHistograms
(dirName):
83
if
not
dirName.endswith(
"/"
):
84
dirName = dirName +
"/"
85
86
# Run over each subdirectory (one per jet definition)
87
histos = {}
88
subDirs = sorted(glob.glob(dirName+
"*"
))
89
for
aSubDirName
in
subDirs:
90
# Determine the jet definition
91
jetDef =
""
92
for
aDirDef,aJetDef
in
jetDefDict.iteritems():
93
if
aDirDef
in
aSubDirName:
94
jetDef = aJetDef
95
break
96
if
jetDef ==
""
:
97
print
"Failed to determine jet definition for directory:"
,aSubDirName
98
return
None
99
histos[jetDef] = {}
100
101
# Loop over the systematic files in the subdirectory
102
systFiles = sorted(glob.glob(aSubDirName+
"/SystError_*.txt"
))
103
for
aSystFile
in
systFiles:
104
# Figure out which component this is
105
systematicNameHandle = re.sub(aSubDirName+
"/SystError_"
,
""
,aSystFile)
106
systematicNameHandle = re.sub(
".txt"
,
""
,systematicNameHandle)
107
systematicName = SystematicNameDictionary[systematicNameHandle]
108
#print "Making histogram %s --> %s"%(systematicNameHandle,systematicName)
109
110
# Open the file
111
systematicFile = open(aSystFile,
"r"
)
112
113
# Read the lines of the file into arrays
114
lowBinEdges = []
115
systValues = []
116
for
line
in
systematicFile.readlines():
117
line = line.strip(
"\r\n"
)
118
lowEdge = float(line.split()[0])
119
systVal = float(line.split()[2].
strip
())
120
121
lowBinEdges.append(lowEdge)
122
systValues.append(systVal)
123
124
# Done reading, close the file
125
systematicFile.close()
126
127
# Make the last bin go up to 2500
128
lowBinEdges.append(2500.)
129
systValues.append(systValues[-1])
130
131
# Turn the lists into arrays and build the 1D histogram
132
lowBinEdgesArray =
array
(
'd'
,lowBinEdges)
133
systValuesArray =
array
(
'd'
,systValues)
134
histoName = systematicName+
"_"
+jetDef
135
histo1D = TH1D(histoName+
"_1D"
,histoName+
"_1D"
,len(lowBinEdges)-1,lowBinEdgesArray)
136
137
# Fill it from the file values
138
for
iBin
in
xrange
(1,histo1D.GetNbinsX()+1):
139
histo1D.SetBinContent(iBin,systValues[iBin-1])
140
141
# Convert to a 2D provider-stlye histo
142
histo =
ProviderHistoHelpers.ConvertPtHistoToProviderHisto
(histo1D,histoName)
143
histo.SetDirectory(0)
144
histos[jetDef][systematicName] = histo
145
146
# EM has 10 stat parameters, LC has 11
147
# So for EM algorithms, make an empty histo for stat 11
148
if
"EM"
in
jetDef:
149
systematicName = SystematicNameDictionary[
'mjbstat11'
]
150
histos[jetDef][systematicName] =
ProviderHistoHelpers.MakeProviderHisto
(systematicName+
"_"
+jetDef)
151
histos[jetDef][systematicName].SetDirectory(0)
152
153
154
# Done, return dictionary of histos
155
return
histos
156
157
158
159
SiliconTech::strip
@ strip
Definition
FPGATrackSimTypes.h:25
xrange
void xrange(TH1 *h, bool symmetric)
Definition
computils.cxx:518
ParseInsituInput.ReadInSituHistograms
ReadInSituHistograms(dirName)
Definition
Final2012/ParseInsituInput.py:82
ProviderHistoHelpers.ConvertPtHistoToProviderHisto
ConvertPtHistoToProviderHisto(histo1D, histoName)
Definition
Final2012/ProviderHistoHelpers.py:44
ProviderHistoHelpers.MakeProviderHisto
MakeProviderHisto(histoName, ptBins=GetDefaultPtBins(), etaBins=GetDefaultEtaBins())
Definition
Final2012/ProviderHistoHelpers.py:40
array
Generated on
for ATLAS Offline Software by
1.17.0