118def GetDQEfficiency( rundict ):
119
121 for runnum in rundict.keys():
122 runset.add(runnum)
123
124 s = xmlrpc.client.ServerProxy(SERVER)
125 flaginfo = s.get_dqmf_summary_flags_lb({'run_list': list(runset)}, FLAGS_WE_CARE_ABOUT, 'SHIFTOFL')
126
127 record = {}
128 for flag in FLAGS_WE_CARE_ABOUT:
129 record[flag] = []
130 for run in runset:
131 if str(run) not in flaginfo:
132 print ('%s not in flaginfo' % run)
133 del rundict[run]
134 continue
135 for sublb in rundict[run]:
136 for flag, periods in flaginfo[str(run)].items():
137 for period in periods:
138 ip = _intersect(period, sublb)
139 if ip is not None:
140
141
142 record[flag].append((ip[1]-ip[0], period[2], lumi(run, ip)))
143
144
145 totallum = 0
146 for run in rundict:
147 for pair in rundict[run]:
148 totallum += lumi(run, pair)
149 print ('Total lumi:', totallum)
150
151 flagsum = {}
152
153 for flag in FLAGS_WE_CARE_ABOUT:
154 flagsum[flag] = {}
155 lr = record[flag]
156 cols =
set([x[1]
for x
in lr])
157 accounted = 0
158 for col in cols:
159 llum = sum([x[2] for x in lr if x[1] == col])
160 accounted += llum
161 print (flag, col, llum, '%.2f%%' % (llum/totallum*100))
162 flagsum[flag][col] = (llum/totallum*100)
163 if abs(accounted-totallum) > 1e-8:
164 print (flag, 'n.a.', totallum-accounted, '%.2f%%' % ((1-accounted/totallum)*100))
165 flagsum[flag]['n.a.'] = ((1-accounted/totallum)*100)
166
167 def _sum(d1, d2):
168 rv = {}
169 for key
in set(d1.keys() + d2.keys()):
170 rv[key] = d1.get(key, 0) + d2.get(key, 0)
171
172 return rv
173
174 for flagtop, flaggroup in FLAGGROUPS.items():
175 vals =
reduce(_sum, [flagsum[f]
for f
in flaggroup], {})
176 print (flagtop)
177 for typ in vals:
178 print (' %s: %.2f%%' % (typ, vals[typ]/len(flaggroup)))
179
static void reduce(HepMC::GenEvent *ge, HepMC::GenParticle *gp)
Remove an unwanted particle from the event, collapsing the graph structure consistently.