ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
Jet
JetUncertainties
testingMacros
InputScripts
ICHEP2016
ICHEP2016/ParseNonClosureInput.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
11
SystematicNameDictionary = {
12
'RelativeNonClosure_AFII_AntiKt4EMTopo'
:
'RelativeNonClosure_AFII'
,
13
'RelativeNonClosure_AFII_AntiKt4LCTopo'
:
'RelativeNonClosure_AFII'
14
}
15
16
jetDefDict = {
17
'4EM'
:
'AntiKt4Topo_EMJES'
,
18
# '6EM' : 'AntiKt6Topo_EMJES',
19
'4LC'
:
'AntiKt4Topo_LCJES'
,
20
# '6LC' : 'AntiKt6Topo_LCJES'
21
}
22
23
def
ReadNonClosureHistograms
(dirName,freezepT=False):
24
if
dirName.endswith(
".root"
) :
25
files = [dirName]
26
27
elif
not
dirName.endswith(
"/"
) :
28
dirName = dirName +
"/"
29
files = sorted(glob.glob(dirName+
"*.root"
))
30
31
# Run over each file (one per jet definition)
32
histos = {}
33
for
aFileName
in
files:
34
# Determine the jet definition
35
jetDef =
""
36
for
aFileDef,aJetDef
in
jetDefDict.iteritems():
37
if
aFileDef
in
aFileName:
38
jetDef = aJetDef
39
break
40
if
jetDef ==
""
:
41
print
"Failed to determine jet definition for file:"
,aFileName
42
return
None
43
histos[jetDef] = {}
44
45
# Read in the histogram from the file
46
inFile = TFile(aFileName,
"READ"
)
47
for
aName,aSystName
in
SystematicNameDictionary.iteritems():
48
if
not
aFileDef
in
aName :
continue
49
systematicName = aSystName +
"_"
+ jetDef
50
histo = inFile.Get(aName)
51
if
histo
is
None
:
52
print
"Failed to get histogram:"
,systematicName
53
return
None
54
55
if
freezepT :
56
# Loop over eta bins.
57
for
ybin
in
range(histo.GetNbinsY()+2) :
58
# Loop out in pT.
59
freezeval = 0
60
for
xbin
in
range(histo.GetNbinsX()+2) :
61
inbin = histo.GetBinContent(xbin,ybin)
62
#print "Bin at pT ",histo.GetXaxis().GetBinCenter(xbin)," and [ylow,y,yhigh] = ", binYLow, histo.GetYaxis().GetBinCenter(ybin), binYHigh
63
# Store bin contents as we go out: last one is one we want as frozen value.
64
if
inbin > -0.5 :
65
freezeval = inbin
66
else
:
67
histo.SetBinContent(xbin,ybin,freezeval)
68
69
70
histoSym =
ProviderHistoHelpers.SymmetrizeHistoInEta
(histo,systematicName)
71
histoSym.SetDirectory(0)
72
histos[jetDef][aSystName] = histoSym
73
print
"Added hist with name"
,aSystName,
"for jetDef"
,jetDef
74
75
# Also add a blank nonclosure histo for Pythia8
76
# Also add a blank Closeby histo for both AFII and Pythia8
77
etaBins = [
min
(
ProviderHistoHelpers.GetDefaultEtaBins
()),0,
max
(
ProviderHistoHelpers.GetDefaultEtaBins
())]
78
histos[jetDef][
"RelativeNonClosure_MC15"
] =
ProviderHistoHelpers.MakeProviderHisto
(
"RelativeNonClosure_MC15"
,ptBins=[15,1000,2500],etaBins=etaBins)
79
histos[jetDef][
"RelativeNonClosure_MC15"
].SetDirectory(0)
80
histos[jetDef][
"CloseBy_Pythia8"
] =
ProviderHistoHelpers.MakeProviderHisto
(
"CloseBy_MC15"
,ptBins=[15,1000,2500],etaBins=etaBins)
81
histos[jetDef][
"CloseBy_Pythia8"
].SetDirectory(0)
82
histos[jetDef][
"CloseBy_AFII"
] =
ProviderHistoHelpers.MakeProviderHisto
(
"CloseBy_AFII"
,ptBins=[15,1000,2500],etaBins=etaBins)
83
histos[jetDef][
"CloseBy_AFII"
].SetDirectory(0)
84
85
# Done reading, close the file
86
inFile.Close()
87
88
return
histos
min
#define min(a, b)
Definition
cfImp.cxx:40
max
#define max(a, b)
Definition
cfImp.cxx:41
ParseNonClosureInput.ReadNonClosureHistograms
ReadNonClosureHistograms(dirName)
Definition
Final2012/ParseNonClosureInput.py:22
ProviderHistoHelpers.GetDefaultEtaBins
GetDefaultEtaBins()
Definition
Final2012/ProviderHistoHelpers.py:18
ProviderHistoHelpers.SymmetrizeHistoInEta
SymmetrizeHistoInEta(histo, histoName)
Definition
Final2012/ProviderHistoHelpers.py:127
ProviderHistoHelpers.MakeProviderHisto
MakeProviderHisto(histoName, ptBins=GetDefaultPtBins(), etaBins=GetDefaultEtaBins())
Definition
Final2012/ProviderHistoHelpers.py:40
Generated on
for ATLAS Offline Software by
1.17.0