I have a Selector that is created from TTree::MakeSelector. I want to write a class in Python that inherits from this Selector and Process my tree with it in Python as well. (Actually I the derived tree is C++, but CINT doesn’t understand it, so I want to re-implement it in Python)
I have the following simple Program
from ROOT import gSystem
gSystem.Load('MySelector_C')
from ROOT import MySelector, TSelector
class MyPythonSelector(MySelector):
def __init__(self):
print dir(self)
def SlaveBegin(self, tree):
MySelector.SlaveBegin(self, tree)
self.Init(tree)
def Process(self, entry):
print dir(self)
return True
def Terminate(self):
pass
def SlaveTerminate(self):
pass
def Init(self, tree):
pass
I can instantiate the class, but tree->Process() dies with
(after it successfully completes the first iteration of Process())
*** Break *** segmentation violation
Generating stack trace...
0x01022630 in PyROOT::TRootObjectConverter::SetArg(_object*, G__CallFunc*) + 0xa2 from /u1/local/root/lib/root/libPyROOT.so
0x0102a1ed in PyROOT::TMethodHolder::SetMethodArgs(_object*) + 0xad from /u1/local/root/lib/root/libPyROOT.so
0x0102a431 in PyROOT::TMethodHolder::operator()(PyROOT::ObjectProxy*, _object*, _object*) + 0x5b from /u1/local/root/lib/root/libPyROOT.so
0x0102ad8f in PyROOT::(anonymous namespace)::mp_call(PyROOT::MethodProxy*, _object*, _object*) + 0x173 from /u1/local/root/lib/root/libPyROOT.so
0x0805bd60 in PyObject_Call + 0x1c from /u1/local/bin/python
0x080a927f in <unknown> from /u1/local/bin/python
0x080a8d37 in <unknown> from /u1/local/bin/python
0x080a73b3 in PyEval_EvalFrame + 0x223b from /u1/local/bin/python
0x080a7e6e in PyEval_EvalCodeEx + 0x40a from /u1/local/bin/python
0x080aa2c4 in <unknown> from /u1/local/bin/python
0x080a6977 in PyEval_EvalFrame + 0x17ff from /u1/local/bin/python
0x080a7e6e in PyEval_EvalCodeEx + 0x40a from /u1/local/bin/python
0x080a913d in <unknown> from /u1/local/bin/python
0x080a8da7 in <unknown> from /u1/local/bin/python
0x080a73b3 in PyEval_EvalFrame + 0x223b from /u1/local/bin/python
0x080a7e6e in PyEval_EvalCodeEx + 0x40a from /u1/local/bin/python
0x080a913d in <unknown> from /u1/local/bin/python
0x080a8da7 in <unknown> from /u1/local/bin/python
0x080a73b3 in PyEval_EvalFrame + 0x223b from /u1/local/bin/python
0x080a91b9 in <unknown> from /u1/local/bin/python
0x080a8da7 in <unknown> from /u1/local/bin/python
0x080a73b3 in PyEval_EvalFrame + 0x223b from /u1/local/bin/python
0x080a7e6e in PyEval_EvalCodeEx + 0x40a from /u1/local/bin/python
0x080a913d in <unknown> from /u1/local/bin/python
0x080a8da7 in <unknown> from /u1/local/bin/python
0x080a73b3 in PyEval_EvalFrame + 0x223b from /u1/local/bin/python
0x080a7e6e in PyEval_EvalCodeEx + 0x40a from /u1/local/bin/python
0x080a913d in <unknown> from /u1/local/bin/python
0x080a8da7 in <unknown> from /u1/local/bin/python
0x080a73b3 in PyEval_EvalFrame + 0x223b from /u1/local/bin/python
0x080a7e6e in PyEval_EvalCodeEx + 0x40a from /u1/local/bin/python
0x080a913d in <unknown> from /u1/local/bin/python
0x080a8da7 in <unknown> from /u1/local/bin/python
0x080a73b3 in PyEval_EvalFrame + 0x223b from /u1/local/bin/python
0x080a7e6e in PyEval_EvalCodeEx + 0x40a from /u1/local/bin/python
0x080aa8ca in PyEval_EvalCode + 0x22 from /u1/local/bin/python
0x080d22a5 in <unknown> from /u1/local/bin/python
0x080d1b09 in PyRun_SimpleFileExFlags + 0x191 from /u1/local/bin/python
0x080554cb in Py_Main + 0x56b from /u1/local/bin/python
0x08054f5b in main + 0x17 from /u1/local/bin/python
0x0012678a in __libc_start_main + 0xda from /lib/tls/libc.so.6
0x08054eb9 in ldexp + 0x61 from /u1/local/bin/python
Aborted
Any help is greatly appreciated.
This is ROOT from CVS as of 12-Oct-2005