I have tested the code once again, this time with only 1 iteration.
The last working version is
from ROOT import TFile, TTree, TList, TLorentzVector
from array import array
def ConvertTree(tree):
outputTree = TTree('TMVA_input', '')
metTST = array('d', [0])
outputTree.Branch("metTST", metTST, "metTST/D")
for event in tree:
if event.n_jet >= 2:
metTlv = TLorentzVector()
metTlv.SetPtEtaPhiE(event.metTST_pt, 0, event.metTST_phi, event.metTST_pt)
phTlv = TLorentzVector()
phTlv.SetPtEtaPhiM(event.ph_pt, event.ph_eta, event.ph_phi, 0)
leadJetTlv = TLorentzVector()
leadJetTlv.SetPtEtaPhiE(event.jet_lead_pt, event.jet_lead_eta, event.jet_lead_phi, event.jet_lead_E)
subleadJetTlv = TLorentzVector()
subleadJetTlv.SetPtEtaPhiE(event.jet_sublead_pt, event.jet_sublead_eta, event.jet_sublead_phi, event.jet_sublead_E)
metTST[0] = metTlv.Pt()
outputTree.Fill()
return outputTree
for i in range(1):
print i
pathList = ['test.root',]
treeList = TList()
outputFile = TFile('MergeTest.root', 'recreate')
pyfilelist = []
pytreelist = []
for path in pathList:
print("Path", path)
inputFile = TFile(path, 'read')
pyfilelist.append(inputFile) # Make this TFile survive the loop!
inputTree = inputFile.Get('output_tree')
pytreelist.append(inputTree) # Make this TTree survive the loop!
outputFile.cd()
outputTree = ConvertTree(inputTree) #instead of extensive processing
treeList.Add(outputTree)
outputFile.cd()
outputTree = TTree.MergeTrees(treeList)
outputFile.Write()
outputFile.Close()
But when I change the variable I’m writing to the branch to (leadJetTlv + subleadJetTlv).M()
from ROOT import TFile, TTree, TList, TLorentzVector, TMath
from array import array
def ConvertTree(tree):
outputTree = TTree('TMVA_input', '')
mJJ = array('d',[0])
outputTree.Branch("mJJ", mJJ, "mJJ/D")
for event in tree:
if event.n_jet >= 2:
metTlv = TLorentzVector()
metTlv.SetPtEtaPhiE(event.metTST_pt, 0, event.metTST_phi, event.metTST_pt)
phTlv = TLorentzVector()
phTlv.SetPtEtaPhiM(event.ph_pt, event.ph_eta, event.ph_phi, 0)
leadJetTlv = TLorentzVector()
leadJetTlv.SetPtEtaPhiE(event.jet_lead_pt, event.jet_lead_eta, event.jet_lead_phi, event.jet_lead_E)
subleadJetTlv = TLorentzVector()
subleadJetTlv.SetPtEtaPhiE(event.jet_sublead_pt, event.jet_sublead_eta, event.jet_sublead_phi, event.jet_sublead_E)
mJJ[0] = (leadJetTlv + subleadJetTlv).M()
outputTree.Fill()
return outputTree
for i in range(1):
print i
pathList = ['test.root',]
treeList = TList()
outputFile = TFile('MergeTest.root', 'recreate')
pyfilelist = []
pytreelist = []
for path in pathList:
print("Path", path)
inputFile = TFile(path, 'read')
pyfilelist.append(inputFile) # Make this TFile survive the loop!
inputTree = inputFile.Get('output_tree')
pytreelist.append(inputTree) # Make this TTree survive the loop!
outputFile.cd()
outputTree = ConvertTree(inputTree) #instead of extensive processing
treeList.Add(outputTree)
outputFile.cd()
outputTree = TTree.MergeTrees(treeList)
outputFile.Write()
outputFile.Close()
The code starts to break sometimes on the outputTree = TTree.MergeTrees(treeList)
line with the following message:
*** glibc detected *** python: malloc(): smallbin double linked list corrupted: 0x0000000005b65ff0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x75e5e)[0x7fcd2b653e5e]
/lib64/libc.so.6(+0x7a528)[0x7fcd2b658528]
/lib64/libc.so.6(__libc_malloc+0x5c)[0x7fcd2b658b1c]
/cvmfs/sft.cern.ch/lcg/releases/gcc/6.2.0-b9934/x86_64-slc6/lib64/libstdc++.so.6(_Znwm+0x18)[0x7fcd21103a08]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libTree.so(_ZN6TLeafD10SetAddressEPv+0x15c)[0x7fcd240cd29c]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libTree.so(_ZN7TBranch12ResetAddressEv+0x58)[0x7fcd2407ec28]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libTree.so(_ZN5TTree10MergeTreesEP5TListPKc+0x287)[0x7fcd240dec37]
[0x7fcd2c73a04c]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libPyROOT.so(_Z8FastCalllPvS_S_+0x701)[0x7fcd25093bf1]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libPyROOT.so(_ZN5Cppyy5CallRElPvS0_+0x20)[0x7fcd250949b0]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libPyROOT.so(_ZN6PyROOT18TCppObjectExecutor7ExecuteElPvPNS_12TCallContextE+0x39)[0x7fcd25097cf9]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libPyROOT.so(_ZN6PyROOT13TMethodHolder8CallSafeEPvlPNS_12TCallContextE+0x72)[0x7fcd250bb782]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libPyROOT.so(_ZN6PyROOT13TMethodHolder7ExecuteEPvlPNS_12TCallContextE+0x29)[0x7fcd250bb1f9]
/cvmfs/sft.cern.ch/lcg/releases/LCG_94/ROOT/6.14.04/x86_64-slc6-gcc62-opt/lib/libPyROOT.so(+0x65d19)[0x7fcd2509dd19]
/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x43)[0x7fcd2c26eaf3]
/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/../lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5bab)[0x7fcd2c32602b]
/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x8bc)[0x7fcd2c32a3ec]
/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7fcd2c32a4e9]
/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/../lib/libpython2.7.so.1.0(PyRun_FileExFlags+0x8a)[0x7fcd2c34e8ba]
/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/../lib/libpython2.7.so.1.0(PyRun_SimpleFileExFlags+0xd5)[0x7fcd2c34fc95]
/cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/../lib/libpython2.7.so.1.0(Py_Main+0xc61)[0x7fcd2c3663d1]
/lib64/libc.so.6(__libc_start_main+0x100)[0x7fcd2b5fcd20]
python[0x400641]
======= Memory map: ========
00400000-00401000 r-xp 00000000 00:31 69381916 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/python2.7
00600000-00601000 r--p 00000000 00:31 69381916 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/python2.7
00601000-00602000 rw-p 00001000 00:31 69381916 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/bin/python2.7
02302000-05d04000 rw-p 00000000 00:00 0 [heap]
7fcd00000000-7fcd00021000 rw-p 00000000 00:00 0
7fcd00021000-7fcd04000000 ---p 00000000 00:00 0
7fcd06363000-7fcd08000000 rw-p 00000000 00:00 0
7fcd08000000-7fcd08045000 rw-p 00000000 00:00 0
7fcd08045000-7fcd0c000000 ---p 00000000 00:00 0
7fcd0ccee000-7fcd0e98b000 rw-p 00000000 00:00 0
7fcd0e98b000-7fcd0e995000 r-xp 00000000 00:31 69380260 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/lib/python2.7/lib-dynload/array.so
7fcd0e995000-7fcd0eb94000 ---p 0000a000 00:31 69380260 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/lib/python2.7/lib-dynload/array.so
7fcd0eb94000-7fcd0eb95000 r--p 00009000 00:31 69380260 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/lib/python2.7/lib-dynload/array.so
7fcd0eb95000-7fcd0eb97000 rw-p 0000a000 00:31 69380260 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/lib/python2.7/lib-dynload/array.so
7fcd0eb97000-7fcd0ebde000 r-xp 00000000 00:31 68768353 /cvmfs/sft.cern.ch/lcg/releases/ROOT/6.14.04-0d8dc/x86_64-slc6-gcc62-opt/lib/libPhysics.so
7fcd0ebde000-7fcd0edde000 ---p 00047000 00:31 68768353 /cvmfs/sft.cern.ch/lcg/releases/ROOT/6.14.04-0d8dc/x86_64-slc6-gcc62-opt/lib/libPhysics.so
7fcd0edde000-7fcd0ede1000 r--p 00047000 00:31 68768353 /cvmfs/sft.cern.ch/lcg/releases/ROOT/6.14.04-0d8dc/x86_64-slc6-gcc62-opt/lib/libPhysics.so
7fcd0ede1000-7fcd0ede2000 rw-p 0004a000 00:31 68768353 /cvmfs/sft.cern.ch/lcg/releases/ROOT/6.14.04-0d8dc/x86_64-slc6-gcc62-opt/lib/libPhysics.so
7fcd0ede2000-7fcd0ede3000 rw-p 00000000 00:00 0
7fcd0ede3000-7fcd0ede4000 ---p 00000000 00:00 0
7fcd0ede4000-7fcd0f7e4000 rw-p 00000000 00:00 0
7fcd0f7e4000-7fcd0f7e8000 r-xp 00000000 00:31 69380355 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/lib/python2.7/lib-dynload/time.so
7fcd0f7e8000-7fcd0f9e7000 ---p 00004000 00:31 69380355 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/lib/python2.7/lib-dynload/time.so
7fcd0f9e7000-7fcd0f9e8000 r--p 00003000 00:31 69380355 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/lib/python2.7/lib-dynload/time.so
7fcd0f9e8000-7fcd0f9ea000 rw-p 00004000 00:31 69380355 /cvmfs/sft.cern.ch/lcg/releases/Python/2.7.15-2cba0/x86_64-slc6-gcc62-opt/lib/python2.7/lib-dynload/time.so
7fcd0f9ea000-7fcd0fa2a000 rw-p 00000000 00:00 0
7fcd0fa2a000-7fcd0fa2f000 r-xp 00000000 fc:01 40792 /usr/lib64/libXfixes.so.3.1.0
7fcd0fa2f000-7fcd0fc2e000 ---p 00005000 fc:01 40792 /usr/lib64/libXfixes.so.3.1.0
7fcd0fc2e000-7fcd0fc2f000 rw-p 00004000 fc:01 40792 /usr/lib64/libXfixes.so.3.1.0Aborted (core dumped)