Dear Gerri,
thanks for your reply.
I am using root version|rev|tag : 5.18/00d|r24036|5.20/00, as utilized in the current atlas software which I need for my application.
I am working in a homogeneous cluster of computers, which all have access to my working area, so that I don’t need to use PAR packages.
Even if I don’t explicitely load my library (“myLib”) containing “myClass”, proof seems to load it automatically, since the following works:
proof->Exec(“TSelector* sel = TSelector::GetSelector(“myClass”)”) ;
I have set up LD_LIBRARY_PATH on all workers to include the path to my library and its dictionary (by using the env variable PROOF_INITCMD), which might be the reason (can you confirm whether this is sufficient?).
However, I also explicitely loaded myLib (and additionally myLibDict) to be sure. I tried one of the following:
proof->Load(“path_to_myLib”)
proof->Exec(“gSystem->Load(“myLib.so”)”)
I also tried to load myLib by copying it (and its dictionary) in a PAR package and adding these lines in the SETUP() function of the SETUP.C script:
gSystem->Load(“myLib.so”)
gSystem->Load(“myLibDict.so”)
Whatever the method, the loading succeeds on all workers. I get 0 as returned value, for each worker, and no error message.
Since myClass uses a Reflex dictionary, I also ensured that libCintex is loaded (either with TProof::Load(), TProof::Exec(“gSystem->Load()”) or gSystem->Load() within the SETUP.C script) and Cintex::Enable() is called (with TProof::Exec() or gROOT->ProcessLine() in the SETUP.C script). Actually, libCintex was already loaded before in my program since the preceding loading commands returned 1.
Whatever I did to load myLib, the TProof::Process() method wasn’t able to recognize myClass. I saw that TProof::Process() calls TVirtualProofPlayer::Process(), in which TSelector::GetSelector() is called in order to compile the selector source or load the selector class. What puzzles me is that the following works:
proof->Exec(“TSelector* sel = TSelector::GetSelector(“myClass”)”) ;
but not:
proof->Process(set_mc, “myClass”)
I have no problem using a selector class the same way, when the ccorresponding library does not need a Reflex dictionary. Are there some limitations using Reflex with proof?
Cheers,
Philippe