4 from array
import array
11 from ParseCurrentFile
import ReadCurrentHistograms
15 from itertools
import groupby
17 return [
int(
''.
join(g))
if k
else ''.
join(g)
for k, g
in groupby(s[0], str.isdigit)]
20 jetreplacements = {
"AntiKt4EMTopo":
"AntiKt4Topo_EMJES",
"AntiKt4LCTopo":
"AntiKt4Topo_LCJES"}
31 replacements[
"/cluster/warehouse/kpachal/JetCalibration/JetUncertainties/JetUncertainties/inputs/AFII/AFII_Uncertainty_4EM.root"] = {
32 "RelativeNonClosure_AFII" :
"RelativeNonClosure_AFII",
36 deletions = [
"Xcalib_5Vs4sample",
"Xcalib_50nsVs25ns",
37 "Xcalib_50nsVs25ns_Central",
38 "Xcalib_50nsVs25ns_Forward",
40 "Xcalib_EarlyData_Forward",
41 "Xcalib_NoiseThreshold",
42 "Xcalib_TopoClustering",
43 "Xcalib_UnderlyingEvent"]
47 print "USAGE: Expected the following arguments"
48 print " 1. Root file to use as template"
49 print " 2. Name of output root file to create"
52 inputFile = sys.argv[1]
53 outBaselineFile = sys.argv[2]
56 if not outBaselineFile.endswith(
".root"):
57 print "Output ROOT file doesn't appear to be a root file:",outBaselineFile
59 if not os.path.exists(inputFile):
60 print "Input file does not exist:",inputFile
62 for filename
in replacements.keys():
63 if not os.path.exists(filename) :
64 print "Replacement input file does not exist:",filename
68 print "Reading inputs..."
73 import ParseFlavourInput
74 import ParseNonClosureInput
75 theReplacementHistos = {}
76 for filename
in replacements.keys() :
77 if "flavor" in filename
or "Flavor" in filename
or "flavour" in filename
or "Flavour" in filename :
79 elif "AFII_Uncertainty" in filename :
81 print "Just retrieved",thisset
85 theReplacementHistos.update(thisset)
88 print "Merging inputs..."
89 jetDefs = [
"AntiKt4EMTopo"]
92 for aJetDef
in jetDefs :
93 systematics[aJetDef] = dict(
94 theCurrentHistos[aJetDef].
items()
98 print "Writing to output file",outBaselineFile,
"..."
99 baselineFile = TFile(outBaselineFile,
"RECREATE")
100 for aJetDef,aSyst
in sorted(systematics.iteritems(),key=natural_sort):
101 for aSystName,aSystHisto
in sorted(aSyst.iteritems(),key=natural_sort):
103 for filename
in replacements.keys() :
104 if aSystName
in replacements[filename].
keys() :
105 print "Writing new version of",aSystName
106 newName = replacements[filename][aSystName]
107 newHist = theReplacementHistos[jetreplacements[aJetDef]][newName]
108 newHist.SetDirectory(0)
109 newHist.SetTitle(aSystName+
"_"+aJetDef)
110 print "Giving it name",newHist.GetTitle()
111 newHist.Write(newHist.GetTitle())
112 elif aSystName
in deletions :
113 print "Deleting histogram",aSystName
116 print "Keeping original version of",aSystName
117 aSystHisto.SetTitle(aSystName+
"_"+aJetDef)
118 aSystHisto.Write(aSystHisto.GetTitle())