8 print (
"""Change the run number in a pool file.
9 Probably only works correctly for simple, single-run MC files.
11 Usage: changerun.py NEWRUN INFILE OUTFILE
14 newrun = int (sys.argv[1])
22 os.environ[
'_ATHENABARCODEIMPL_JOBUUID'] = uuid.uuid1().hex
26 ROOT.DataModelAthenaPool.CLHEPConverters.initialize()
32 cl = ROOT.TClass.GetClass(
'Analysis::TruthInfo_p1')
35 f2=ROOT.TFile(outfile,
'RECREATE')
39 kk = [k.GetName()
for k
in f1.GetListOfKeys()]
41 if k
in [
'CollectionTree',
'MetaData']:
continue
49 types = ifo.GetTypes()
50 elts = ifo.GetElements()
51 for i
in range(ifo.GetNdata()):
52 if elts[i].GetName() ==
'm_athenabarcode' and types[i] == 217:
54 for bb
in b.GetListOfBranches():
57 for b
in t2.GetListOfBranches():
61 for i
in range(t1.GetEntries()):
63 oldrun = t1.EventInfo_p3_McEventInfo.m_AllTheData[1]
64 t1.EventInfo_p3_McEventInfo.m_AllTheData[1] = newrun
70 if xrun <= 0
or xrun > 1000000:
return x
71 return ((xrun-oldrun) + newrun) * (1<<32) + (x & ((1<<32)-1))
74 for i
in range(m1.GetEntries()):
76 for b
in m1.GetListOfBranches():
78 if bn.startswith (
'IOVMetaDataContainer_'):
79 pv = getattr (m1, bn).m_payload.m_payloadVec
81 if p.m_hasRunLumiBlockTime:
82 p.m_start = adjust_run (p.m_start)
83 p.m_stop = adjust_run (p.m_stop)
84 for pa
in p.m_attrLists:
86 r.m_start = adjust_run (r.m_start)
87 r.m_stop = adjust_run (r.m_stop)