23def ReadCrossCalHistograms(dirName,scaleCrossCalVal=1.0,freezeCrossCalAll=False,freezeCrossCalBarrel=False,freezeCrossCalCentral=False):
24 if not dirName.endswith("/"):
25 dirName = dirName + "/"
26
27
28 histos = {}
29 files = sorted(glob.glob(dirName+"*.root"))
30 for aFileName in files:
31
32 jetDef = ""
33 for aFileDef,aJetDef in jetDefDict.iteritems():
34 if aFileDef in aFileName:
35 jetDef = aJetDef
36 break
37 if jetDef == "":
38 print "Failed to determine jet definition for file:",aFileName
39 return None
40
41 histos[jetDef] = {}
42
43
44 inFile = TFile(aFileName,"READ")
45
46 for histName in inFile.GetKeyNames():
47
48
49 if 'valid' in histName :
50 continue
51
52 systematicName = SystematicNameDictionary[histName]+"_"+jetDef
53 histo = inFile.Get(histName)
54 if histo is None:
55 print "Failed to get histogram:",systematicName
56 return None
57 histo.SetName(systematicName+"_old")
58
59 if freezeCrossCalAll or freezeCrossCalBarrel or freezeCrossCalCentral :
60
61 for xbin in range(histo.GetNbinsX()+2) :
62
63 freezeval = 0
64 for ybin in range(histo.GetNbinsY()+2) :
65
66
67 eta = abs(histo.GetYaxis().GetBinCenter(ybin))
68 if eta < 0.8 :
69 freezeval = histo.GetBinContent(xbin,ybin)
70 else :
71 if (eta < 2.5 and freezeCrossCalBarrel) or freezeCrossCalAll :
72 histo.SetBinContent(xbin,ybin,freezeval*scaleCrossCalVal)
73 else :
74 histo.SetBinContent(xbin,ybin,0)
75
76
77
80 histoSym.SetDirectory(0)
81
82
83 if '50nsVs25ns' in histName :
84 CentralHist = histo.Clone()
85 CentralHist.SetName("Central_holder")
86 ForwardHist = histo.Clone()
87 ForwardHist.SetName("Forward_holder")
88
89 for xbin in range(histo.GetNbinsX()+2) :
90
91 freezeval = 0
92 for ybin in range(histo.GetNbinsY()+2) :
93
94
95 eta = abs(histo.GetYaxis().GetBinCenter(ybin))
96 if eta < 0.8 :
97 freezeval = histo.GetBinContent(xbin,ybin)
98 ForwardHist.SetBinContent(xbin,ybin,0.0)
99 CentralHist.SetBinContent(xbin,ybin,freezeval)
100 else :
101 ForwardHist.SetBinContent(xbin,ybin,freezeval)
102 CentralHist.SetBinContent(xbin,ybin,0.0)
103
104
107 CentralSym.SetDirectory(0)
108 histos[jetDef][SystematicNameDictionary[histName]+"_Central"] = CentralSym
111 ForwardSym.SetDirectory(0)
112 histos[jetDef][SystematicNameDictionary[histName]+"_Forward"] = ForwardSym
113
114
115 if 'EarlyData' in histName :
116 ForwardHist = histo.Clone()
117 ForwardHist.SetName("EarlyData_Forward_holder")
118
119 for xbin in range(histo.GetNbinsX()+2) :
120
121 for ybin in range(histo.GetNbinsY()+2) :
122
123
124 eta = abs(histo.GetYaxis().GetBinCenter(ybin))
125 if eta < 0.8 :
126 ForwardHist.SetBinContent(xbin,ybin,0.0)
127
128
131 ForwardSym.SetDirectory(0)
132 histos[jetDef][SystematicNameDictionary[histName]+"_Forward"] = ForwardSym
133 histos[jetDef][SystematicNameDictionary[histName]] = histoSym
134
135 else :
136 histos[jetDef][SystematicNameDictionary[histName]] = histoSym
137
138
139 inFile.Close()
140
141 return histos
142
ExtendPtRangeOfHisto(histo, histoName)
SymmetrizeHistoInEta(histo, histoName)