23def 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
32 histos = {}
33 for aFileName in files:
34
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
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
57 for ybin in range(histo.GetNbinsY()+2) :
58
59 freezeval = 0
60 for xbin in range(histo.GetNbinsX()+2) :
61 inbin = histo.GetBinContent(xbin,ybin)
62
63
64 if inbin > -0.5 :
65 freezeval = inbin
66 else :
67 histo.SetBinContent(xbin,ybin,freezeval)
68
69
71 histoSym.SetDirectory(0)
72 histos[jetDef][aSystName] = histoSym
73 print "Added hist with name",aSystName,"for jetDef",jetDef
74
75
76
79 histos[jetDef]["RelativeNonClosure_MC15"].SetDirectory(0)
81 histos[jetDef]["CloseBy_Pythia8"].SetDirectory(0)
83 histos[jetDef]["CloseBy_AFII"].SetDirectory(0)
84
85
86 inFile.Close()
87
88 return histos