24 |
|
#os.mkdir(path+'/sys') |
25 |
|
|
26 |
|
for job in info: |
27 |
< |
if job.type != 'DATA': |
28 |
< |
print '\t - %s' %(job.name) |
29 |
< |
input = TFile.Open(job.getpath(),'read') |
30 |
< |
output = TFile.Open(job.path+'/sys/'+job.prefix+job.identifier+'.root','recreate') |
31 |
< |
|
32 |
< |
input.cd() |
33 |
< |
obj = ROOT.TObject |
34 |
< |
for key in ROOT.gDirectory.GetListOfKeys(): |
27 |
> |
if eval(job.active): |
28 |
> |
if job.type != 'DATA': |
29 |
> |
print '\t - %s' %(job.name) |
30 |
> |
input = TFile.Open(job.getpath(),'read') |
31 |
> |
output = TFile.Open(job.path+'/sys/'+job.prefix+job.identifier+'.root','recreate') |
32 |
> |
|
33 |
|
input.cd() |
34 |
< |
obj = key.ReadObj() |
35 |
< |
#print obj.GetName() |
36 |
< |
if obj.GetName() == job.tree: |
37 |
< |
continue |
38 |
< |
output.cd() |
39 |
< |
#print key.GetName() |
40 |
< |
obj.Write(key.GetName()) |
34 |
> |
obj = ROOT.TObject |
35 |
> |
for key in ROOT.gDirectory.GetListOfKeys(): |
36 |
> |
input.cd() |
37 |
> |
obj = key.ReadObj() |
38 |
> |
#print obj.GetName() |
39 |
> |
if obj.GetName() == job.tree: |
40 |
> |
continue |
41 |
> |
output.cd() |
42 |
> |
#print key.GetName() |
43 |
> |
obj.Write(key.GetName()) |
44 |
|
|
45 |
< |
tree = input.Get(job.tree) |
46 |
< |
nEntries = tree.GetEntries() |
47 |
< |
|
48 |
< |
job.addpath('/sys') |
49 |
< |
job.SYS = ['Nominal','JER_up','JER_down','JES_up','JES_down','beff_up','beff_down','bmis_up','bmis_down'] |
45 |
> |
tree = input.Get(job.tree) |
46 |
> |
nEntries = tree.GetEntries() |
47 |
> |
|
48 |
> |
job.addpath('/sys') |
49 |
> |
job.SYS = ['Nominal','JER_up','JER_down','JES_up','JES_down','beff_up','beff_down','bmis_up','bmis_down'] |
50 |
|
|
51 |
< |
output.cd() |
52 |
< |
newtree = tree.CloneTree(0) |
53 |
< |
|
54 |
< |
hJ0 = ROOT.TLorentzVector() |
55 |
< |
hJ1 = ROOT.TLorentzVector() |
56 |
< |
|
57 |
< |
#JER branches |
58 |
< |
hJet_pt_JER_up = array('f',[0]*2) |
59 |
< |
newtree.Branch('hJet_pt_JER_up',hJet_pt_JER_up,'hJet_pt_JER_up[2]/F') |
60 |
< |
hJet_pt_JER_down = array('f',[0]*2) |
61 |
< |
newtree.Branch('hJet_pt_JER_down',hJet_pt_JER_down,'hJet_pt_JER_down[2]/F') |
62 |
< |
hJet_e_JER_up = array('f',[0]*2) |
63 |
< |
newtree.Branch('hJet_e_JER_up',hJet_e_JER_up,'hJet_e_JER_up[2]/F') |
64 |
< |
hJet_e_JER_down = array('f',[0]*2) |
65 |
< |
newtree.Branch('hJet_e_JER_down',hJet_e_JER_down,'hJet_e_JER_down[2]/F') |
66 |
< |
H_JER = array('f',[0]*4) |
67 |
< |
newtree.Branch('H_JER',H_JER,'mass_up:mass_down:pt_up:pt_down/F') |
68 |
< |
|
69 |
< |
#JES branches |
70 |
< |
hJet_pt_JES_up = array('f',[0]*2) |
71 |
< |
newtree.Branch('hJet_pt_JES_up',hJet_pt_JES_up,'hJet_pt_JES_up[2]/F') |
72 |
< |
hJet_pt_JES_down = array('f',[0]*2) |
73 |
< |
newtree.Branch('hJet_pt_JES_down',hJet_pt_JES_down,'hJet_pt_JES_down[2]/F') |
74 |
< |
hJet_e_JES_up = array('f',[0]*2) |
75 |
< |
newtree.Branch('hJet_e_JES_up',hJet_e_JES_up,'hJet_e_JES_up[2]/F') |
76 |
< |
hJet_e_JES_down = array('f',[0]*2) |
77 |
< |
newtree.Branch('hJet_e_JES_down',hJet_e_JES_down,'hJet_e_JES_down[2]/F') |
78 |
< |
H_JES = array('f',[0]*4) |
79 |
< |
newtree.Branch('H_JES',H_JES,'mass_up:mass_down:pt_up:pt_down/F') |
80 |
< |
|
81 |
< |
#Add training Flag |
82 |
< |
EventForTraining = array('f',[0]) |
83 |
< |
newtree.Branch('EventForTraining',EventForTraining,'EventForTraining/F') |
84 |
< |
|
85 |
< |
#iter=0 |
86 |
< |
|
87 |
< |
TFlag=ROOT.TTreeFormula("EventForTraining","EVENT.event%2",tree) |
88 |
< |
|
89 |
< |
for entry in range(0,nEntries): |
90 |
< |
tree.GetEntry(entry) |
51 |
> |
output.cd() |
52 |
> |
newtree = tree.CloneTree(0) |
53 |
> |
|
54 |
> |
hJ0 = ROOT.TLorentzVector() |
55 |
> |
hJ1 = ROOT.TLorentzVector() |
56 |
> |
|
57 |
> |
#JER branches |
58 |
> |
hJet_pt_JER_up = array('f',[0]*2) |
59 |
> |
newtree.Branch('hJet_pt_JER_up',hJet_pt_JER_up,'hJet_pt_JER_up[2]/F') |
60 |
> |
hJet_pt_JER_down = array('f',[0]*2) |
61 |
> |
newtree.Branch('hJet_pt_JER_down',hJet_pt_JER_down,'hJet_pt_JER_down[2]/F') |
62 |
> |
hJet_e_JER_up = array('f',[0]*2) |
63 |
> |
newtree.Branch('hJet_e_JER_up',hJet_e_JER_up,'hJet_e_JER_up[2]/F') |
64 |
> |
hJet_e_JER_down = array('f',[0]*2) |
65 |
> |
newtree.Branch('hJet_e_JER_down',hJet_e_JER_down,'hJet_e_JER_down[2]/F') |
66 |
> |
H_JER = array('f',[0]*4) |
67 |
> |
newtree.Branch('H_JER',H_JER,'mass_up:mass_down:pt_up:pt_down/F') |
68 |
> |
|
69 |
> |
#JES branches |
70 |
> |
hJet_pt_JES_up = array('f',[0]*2) |
71 |
> |
newtree.Branch('hJet_pt_JES_up',hJet_pt_JES_up,'hJet_pt_JES_up[2]/F') |
72 |
> |
hJet_pt_JES_down = array('f',[0]*2) |
73 |
> |
newtree.Branch('hJet_pt_JES_down',hJet_pt_JES_down,'hJet_pt_JES_down[2]/F') |
74 |
> |
hJet_e_JES_up = array('f',[0]*2) |
75 |
> |
newtree.Branch('hJet_e_JES_up',hJet_e_JES_up,'hJet_e_JES_up[2]/F') |
76 |
> |
hJet_e_JES_down = array('f',[0]*2) |
77 |
> |
newtree.Branch('hJet_e_JES_down',hJet_e_JES_down,'hJet_e_JES_down[2]/F') |
78 |
> |
H_JES = array('f',[0]*4) |
79 |
> |
newtree.Branch('H_JES',H_JES,'mass_up:mass_down:pt_up:pt_down/F') |
80 |
> |
|
81 |
> |
#Add training Flag |
82 |
> |
EventForTraining = array('f',[0]) |
83 |
> |
newtree.Branch('EventForTraining',EventForTraining,'EventForTraining/F') |
84 |
> |
|
85 |
> |
#iter=0 |
86 |
> |
|
87 |
> |
TFlag=ROOT.TTreeFormula("EventForTraining","EVENT.event%2",tree) |
88 |
> |
|
89 |
> |
for entry in range(0,nEntries): |
90 |
> |
tree.GetEntry(entry) |
91 |
> |
|
92 |
> |
#fill training flag |
93 |
> |
#iter+=1 |
94 |
> |
#if (iter%2==0): |
95 |
> |
# EventForTraining[0]=1 |
96 |
> |
#else: |
97 |
> |
# EventForTraining[0]=0 |
98 |
> |
#iter+=1 |
99 |
> |
|
100 |
> |
EventForTraining[0]=int(not TFlag.EvalInstance()) |
101 |
|
|
102 |
< |
#fill training flag |
103 |
< |
#iter+=1 |
104 |
< |
#if (iter%2==0): |
105 |
< |
# EventForTraining[0]=1 |
106 |
< |
#else: |
107 |
< |
# EventForTraining[0]=0 |
108 |
< |
#iter+=1 |
109 |
< |
|
110 |
< |
EventForTraining[0]=int(not TFlag.EvalInstance()) |
111 |
< |
|
112 |
< |
#get |
113 |
< |
hJet_pt0 = tree.hJet_pt[0] |
114 |
< |
hJet_pt1 = tree.hJet_pt[1] |
115 |
< |
hJet_eta0 = tree.hJet_eta[0] |
116 |
< |
hJet_eta1 = tree.hJet_eta[1] |
117 |
< |
hJet_genPt0 = tree.hJet_genPt[0] |
118 |
< |
hJet_genPt1 = tree.hJet_genPt[1] |
119 |
< |
hJet_e0 = tree.hJet_e[0] |
120 |
< |
hJet_e1 = tree.hJet_e[1] |
121 |
< |
hJet_phi0 = tree.hJet_phi[0] |
122 |
< |
hJet_phi1 = tree.hJet_phi[1] |
123 |
< |
hJet_JECUnc0 = tree.hJet_JECUnc[0] |
124 |
< |
hJet_JECUnc1 = tree.hJet_JECUnc[1] |
125 |
< |
|
126 |
< |
|
127 |
< |
for updown in ['up','down']: |
128 |
< |
#JER |
129 |
< |
if updown == 'up': |
130 |
< |
inner = 0.06 |
131 |
< |
outer = 0.1 |
132 |
< |
if updown == 'down': |
133 |
< |
inner = -0.06 |
134 |
< |
outer = -0.1 |
135 |
< |
#Calculate |
136 |
< |
if abs(hJet_eta0)<1.1: res0 = inner |
137 |
< |
else: res0 = outer |
138 |
< |
if abs(hJet_eta1)<1.1: res1 = inner |
139 |
< |
else: res1 = outer |
140 |
< |
rPt0 = hJet_pt0 + (hJet_pt0-hJet_genPt0)*res0 |
141 |
< |
rPt1 = hJet_pt1 + (hJet_pt1-hJet_genPt1)*res1 |
142 |
< |
rE0 = hJet_e0*rPt0/hJet_pt0 |
143 |
< |
rE1 = hJet_e1*rPt1/hJet_pt1 |
144 |
< |
hJ0.SetPtEtaPhiE(rPt0,hJet_eta0,hJet_phi0,rE0) |
145 |
< |
hJ1.SetPtEtaPhiE(rPt1,hJet_eta1,hJet_phi1,rE1) |
146 |
< |
#Set |
147 |
< |
if updown == 'up': |
148 |
< |
hJet_pt_JER_up[0]=rPt0 |
149 |
< |
hJet_pt_JER_up[1]=rPt1 |
150 |
< |
hJet_e_JER_up[0]=rE0 |
151 |
< |
hJet_e_JER_up[1]=rE1 |
152 |
< |
H_JER[0]=(hJ0+hJ1).M() |
153 |
< |
H_JER[2]=(hJ0+hJ1).Pt() |
154 |
< |
if updown == 'down': |
155 |
< |
hJet_pt_JER_down[0]=rPt0 |
156 |
< |
hJet_pt_JER_down[1]=rPt1 |
157 |
< |
hJet_e_JER_down[0]=rE0 |
158 |
< |
hJet_e_JER_down[1]=rE1 |
159 |
< |
H_JER[1]=(hJ0+hJ1).M() |
160 |
< |
H_JER[3]=(hJ0+hJ1).Pt() |
102 |
> |
#get |
103 |
> |
hJet_pt0 = tree.hJet_pt[0] |
104 |
> |
hJet_pt1 = tree.hJet_pt[1] |
105 |
> |
hJet_eta0 = tree.hJet_eta[0] |
106 |
> |
hJet_eta1 = tree.hJet_eta[1] |
107 |
> |
hJet_genPt0 = tree.hJet_genPt[0] |
108 |
> |
hJet_genPt1 = tree.hJet_genPt[1] |
109 |
> |
hJet_e0 = tree.hJet_e[0] |
110 |
> |
hJet_e1 = tree.hJet_e[1] |
111 |
> |
hJet_phi0 = tree.hJet_phi[0] |
112 |
> |
hJet_phi1 = tree.hJet_phi[1] |
113 |
> |
hJet_JECUnc0 = tree.hJet_JECUnc[0] |
114 |
> |
hJet_JECUnc1 = tree.hJet_JECUnc[1] |
115 |
> |
|
116 |
> |
|
117 |
> |
for updown in ['up','down']: |
118 |
> |
#JER |
119 |
> |
if updown == 'up': |
120 |
> |
inner = 0.06 |
121 |
> |
outer = 0.1 |
122 |
> |
if updown == 'down': |
123 |
> |
inner = -0.06 |
124 |
> |
outer = -0.1 |
125 |
> |
#Calculate |
126 |
> |
if abs(hJet_eta0)<1.1: res0 = inner |
127 |
> |
else: res0 = outer |
128 |
> |
if abs(hJet_eta1)<1.1: res1 = inner |
129 |
> |
else: res1 = outer |
130 |
> |
rPt0 = hJet_pt0 + (hJet_pt0-hJet_genPt0)*res0 |
131 |
> |
rPt1 = hJet_pt1 + (hJet_pt1-hJet_genPt1)*res1 |
132 |
> |
rE0 = hJet_e0*rPt0/hJet_pt0 |
133 |
> |
rE1 = hJet_e1*rPt1/hJet_pt1 |
134 |
> |
hJ0.SetPtEtaPhiE(rPt0,hJet_eta0,hJet_phi0,rE0) |
135 |
> |
hJ1.SetPtEtaPhiE(rPt1,hJet_eta1,hJet_phi1,rE1) |
136 |
> |
#Set |
137 |
> |
if updown == 'up': |
138 |
> |
hJet_pt_JER_up[0]=rPt0 |
139 |
> |
hJet_pt_JER_up[1]=rPt1 |
140 |
> |
hJet_e_JER_up[0]=rE0 |
141 |
> |
hJet_e_JER_up[1]=rE1 |
142 |
> |
H_JER[0]=(hJ0+hJ1).M() |
143 |
> |
H_JER[2]=(hJ0+hJ1).Pt() |
144 |
> |
if updown == 'down': |
145 |
> |
hJet_pt_JER_down[0]=rPt0 |
146 |
> |
hJet_pt_JER_down[1]=rPt1 |
147 |
> |
hJet_e_JER_down[0]=rE0 |
148 |
> |
hJet_e_JER_down[1]=rE1 |
149 |
> |
H_JER[1]=(hJ0+hJ1).M() |
150 |
> |
H_JER[3]=(hJ0+hJ1).Pt() |
151 |
> |
|
152 |
> |
#JES |
153 |
> |
if updown == 'up': |
154 |
> |
variation=1 |
155 |
> |
if updown == 'down': |
156 |
> |
variation=-1 |
157 |
> |
#calculate |
158 |
> |
rPt0 = hJet_pt0*(1+variation*hJet_JECUnc0) |
159 |
> |
rPt1 = hJet_pt1*(1+variation*hJet_JECUnc1) |
160 |
> |
rE0 = hJet_e0*(1+variation*hJet_JECUnc0) |
161 |
> |
rE1 = hJet_e1*(1+variation*hJet_JECUnc1) |
162 |
> |
hJ0.SetPtEtaPhiE(rPt0,hJet_eta0,hJet_phi0,rE0) |
163 |
> |
hJ1.SetPtEtaPhiE(rPt1,hJet_eta1,hJet_phi1,rE1) |
164 |
> |
#Fill |
165 |
> |
if updown == 'up': |
166 |
> |
hJet_pt_JES_up[0]=rPt0 |
167 |
> |
hJet_pt_JES_up[1]=rPt1 |
168 |
> |
hJet_e_JES_up[0]=rE0 |
169 |
> |
hJet_e_JES_up[1]=rE1 |
170 |
> |
H_JES[0]=(hJ0+hJ1).M() |
171 |
> |
H_JES[2]=(hJ0+hJ1).Pt() |
172 |
> |
if updown == 'down': |
173 |
> |
hJet_pt_JES_down[0]=rPt0 |
174 |
> |
hJet_pt_JES_down[1]=rPt1 |
175 |
> |
hJet_e_JES_down[0]=rE0 |
176 |
> |
hJet_e_JES_down[1]=rE1 |
177 |
> |
H_JES[1]=(hJ0+hJ1).M() |
178 |
> |
H_JES[3]=(hJ0+hJ1).Pt() |
179 |
|
|
180 |
< |
#JES |
181 |
< |
if updown == 'up': |
182 |
< |
variation=1 |
183 |
< |
if updown == 'down': |
184 |
< |
variation=-1 |
185 |
< |
#calculate |
157 |
< |
rPt0 = hJet_pt0*(1+variation*hJet_JECUnc0) |
158 |
< |
rPt1 = hJet_pt1*(1+variation*hJet_JECUnc1) |
159 |
< |
rE0 = hJet_e0*(1+variation*hJet_JECUnc0) |
160 |
< |
rE1 = hJet_e1*(1+variation*hJet_JECUnc1) |
161 |
< |
hJ0.SetPtEtaPhiE(rPt0,hJet_eta0,hJet_phi0,rE0) |
162 |
< |
hJ1.SetPtEtaPhiE(rPt1,hJet_eta1,hJet_phi1,rE1) |
163 |
< |
#Fill |
164 |
< |
if updown == 'up': |
165 |
< |
hJet_pt_JES_up[0]=rPt0 |
166 |
< |
hJet_pt_JES_up[1]=rPt1 |
167 |
< |
hJet_e_JES_up[0]=rE0 |
168 |
< |
hJet_e_JES_up[1]=rE1 |
169 |
< |
H_JES[0]=(hJ0+hJ1).M() |
170 |
< |
H_JES[2]=(hJ0+hJ1).Pt() |
171 |
< |
if updown == 'down': |
172 |
< |
hJet_pt_JES_down[0]=rPt0 |
173 |
< |
hJet_pt_JES_down[1]=rPt1 |
174 |
< |
hJet_e_JES_down[0]=rE0 |
175 |
< |
hJet_e_JES_down[1]=rE1 |
176 |
< |
H_JES[1]=(hJ0+hJ1).M() |
177 |
< |
H_JES[3]=(hJ0+hJ1).Pt() |
178 |
< |
|
179 |
< |
newtree.Fill() |
180 |
< |
|
181 |
< |
newtree.AutoSave() |
182 |
< |
output.Close() |
180 |
> |
newtree.Fill() |
181 |
> |
|
182 |
> |
newtree.AutoSave() |
183 |
> |
output.Close() |
184 |
> |
|
185 |
> |
else: #(is data) |
186 |
|
|
187 |
< |
else: #(is data) |
188 |
< |
|
189 |
< |
print '\t - %s' %(job.name) |
190 |
< |
input = TFile.Open(job.getpath(),'read') |
191 |
< |
output = TFile.Open(job.path+'/sys/'+job.prefix+job.identifier+'.root','recreate') |
192 |
< |
#input.cd() |
193 |
< |
obj = ROOT.TObject |
194 |
< |
for key in ROOT.gDirectory.GetListOfKeys(): |
195 |
< |
input.cd() |
196 |
< |
obj = key.ReadObj() |
197 |
< |
if obj.GetName() == job.tree: |
198 |
< |
continue |
187 |
> |
print '\t - %s' %(job.name) |
188 |
> |
input = TFile.Open(job.getpath(),'read') |
189 |
> |
output = TFile.Open(job.path+'/sys/'+job.prefix+job.identifier+'.root','recreate') |
190 |
> |
#input.cd() |
191 |
> |
obj = ROOT.TObject |
192 |
> |
for key in ROOT.gDirectory.GetListOfKeys(): |
193 |
> |
input.cd() |
194 |
> |
obj = key.ReadObj() |
195 |
> |
if obj.GetName() == job.tree: |
196 |
> |
continue |
197 |
> |
output.cd() |
198 |
> |
obj.Write(key.GetName()) |
199 |
> |
#output.cd() |
200 |
> |
tree = input.Get(job.tree) |
201 |
> |
nEntries = tree.GetEntries() |
202 |
> |
job.addpath('/sys') |
203 |
|
output.cd() |
204 |
< |
obj.Write(key.GetName()) |
205 |
< |
#output.cd() |
206 |
< |
tree = input.Get(job.tree) |
207 |
< |
nEntries = tree.GetEntries() |
208 |
< |
job.addpath('/sys') |
209 |
< |
output.cd() |
210 |
< |
newtree = tree.CloneTree(0) |
211 |
< |
#Add training Flag |
212 |
< |
EventForTraining = array('f',[0]) |
213 |
< |
newtree.Branch('EventForTraining',EventForTraining,'EventForTraining/F') |
207 |
< |
for entry in range(0,nEntries): |
208 |
< |
tree.GetEntry(entry) |
209 |
< |
EventForTraining[0]=0 |
210 |
< |
newtree.Fill() |
211 |
< |
newtree.AutoSave() |
212 |
< |
output.Close() |
204 |
> |
newtree = tree.CloneTree(0) |
205 |
> |
#Add training Flag |
206 |
> |
EventForTraining = array('f',[0]) |
207 |
> |
newtree.Branch('EventForTraining',EventForTraining,'EventForTraining/F') |
208 |
> |
for entry in range(0,nEntries): |
209 |
> |
tree.GetEntry(entry) |
210 |
> |
EventForTraining[0]=0 |
211 |
> |
newtree.Fill() |
212 |
> |
newtree.AutoSave() |
213 |
> |
output.Close() |
214 |
|
|
215 |
|
|
216 |
|
#dump info |