181 from optparse import OptionParser
182 import eformat
183
184 parser = OptionParser(usage='%prog FILE')
185 parser.add_option('-m', '--moduleid', type='int', action='store', default=0,
186 help='Module ID of CTP fragment [%default]')
187
188 (opt, args) = parser.parse_args()
189 if len(args)!=1:
190 parser.print_help()
191 return 1
192
193 for event in eformat.istream(args[0]):
194 ctp_robs = [rob for rob in event.children()
195 if rob.source_id().subdetector_id() == eformat.helper.SubDetector.TDAQ_CTP
196 and rob.source_id().module_id() == opt.moduleid]
197
198 if len(ctp_robs)==0:
199 print(
"Cannot find CTP ROB with module ID %d" % opt.moduleid)
200 continue
201
202 rob = ctp_robs[0]
203 fe = _CTPfragment.FolderEntry()
204 fe.folderIndex = 1
205 fe.lumiBlock = 54
206
207 fe2 = _CTPfragment.FolderEntry()
208 fe2.folderIndex = 2
209 fe2.lumiBlock = 59
210
211
212 x = _CTPfragment.ExtraPayload()
213 x.setL1PSK(255)
214 x.updateFolder(fe)
215 x.updateFolder(fe2)
216 new_ctp_rob = setHltExtraPayloadWords(rob, [d for d in x.serialize()])
217 new_event = eformat.write.FullEventFragment()
218 new_event.copy_header(event)
219 for r in event.children():
220 if r.source_id().subdetector_id() != eformat.helper.SubDetector.TDAQ_CTP:
221 new_event.append(eformat.write.ROBFragment(r))
222
223 new_event.append(eformat.write.ROBFragment(new_ctp_rob))
224
225 event = new_event.readonly()
226
227
228 rob = new_ctp_rob
229
230 x = getExtraPayloadObject(rob)
231 folderUpdates = _CTPfragment.getFolderUpdates(x)
232 upd = ''
233 for f in folderUpdates:
234 upd += ('[%d,%d]' % (f.second.folderIndex,f.second.lumiBlock))
235
236 print(
"L1ID %10d, LB %4d, Version %d, Bunch %d, HLT counter: %3d, Payload #%d %s L1PSK %d BGK %d COOLUPD %s" % (
237 event.lvl1_id(),
238 event.lumi_block(),
239 ctpFormatVersion(rob),
240 lvl1AcceptBunch(rob),
241 hltCounter(rob),
242 numberHltExtraPayloadWords(rob),
243 hltExtraPayloadWords(rob),
244 x.getL1PSK(),
245 x.getBGK(),
246 upd
247 ))
248
void print(char *figname, TCanvas *c1)