11from ParseCurrentFile
import ReadCurrentHistograms
15from itertools
import groupby
17 return [int(
''.join(g))
if k
else ''.join(g)
for k, g
in groupby(s[0], str.isdigit)]
20jetreplacements = {
"AntiKt4EMTopo":
"AntiKt4Topo_EMJES",
"AntiKt4LCTopo":
"AntiKt4Topo_LCJES"}
31replacements[
"/cluster/warehouse/kpachal/JetCalibration/JetUncertainties/JetUncertainties/inputs/AFII/AFII_Uncertainty_4EM.root"] = {
32 "RelativeNonClosure_AFII" :
"RelativeNonClosure_AFII",
36deletions = [
"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"
52inputFile = sys.argv[1]
53outBaselineFile = sys.argv[2]
56if not outBaselineFile.endswith(
".root"):
57 print "Output ROOT file doesn't appear to be a root file:",outBaselineFile
59if not os.path.exists(inputFile):
60 print "Input file does not exist:",inputFile
62for filename
in replacements.keys():
63 if not os.path.exists(filename) :
64 print "Replacement input file does not exist:",filename
68print "Reading inputs..."
71theCurrentHistos = ReadCurrentHistograms(inputFile,jetreplacements.keys())
73import ParseFlavourInput
74import ParseNonClosureInput
75theReplacementHistos = {}
76for 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
83 thisset = ReadCurrentHistograms(filename,jetreplacements.keys())
85 theReplacementHistos.update(thisset)
88print "Merging inputs..."
89jetDefs = [
"AntiKt4EMTopo"]
92for aJetDef
in jetDefs :
93 systematics[aJetDef] = dict(
94 theCurrentHistos[aJetDef].items()
98print "Writing to output file",outBaselineFile,
"..."
99baselineFile = TFile(outBaselineFile,
"RECREATE")
100for 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())