Hi, I am trying to use TProofLite to have some level of (simple) parallelism in an application. For this I am short of following the pythia8 example. Without getting into much detail, at this early stage I would just like to have the MySelector::Process(Lont64_t entry) called only once per worker (core), where MySelector is derived from TSelector. Inside this function I have my fMyLongProcess->Exec(fnTimes/fnCores) which (function call) before doing its long loop is normally creating a file with a tree and fills the tree while looping. So the idea is that instead of having one unique file with the output of fnTimes, to have fnCores files with fnTimes/fnCores events each. With this scheme I am not declaring any objects/trees to be merged etc. However, my sessions got stack at
This until I saw that my fMyLongProcess did not have //! in the MySelector.h file. Is this the expected behaviour? I have not declared this object to be in any output list. Just putting the //! fixes the problem and I return to the root prompt normally after gProof->Process terminates.
Another question, I would like ofcourse to automatize the merging of the files in the end, opting for the fast tree merging, without unzipping that is. I assume this call must be made in the MySelector::Terminate but then what would be the proper way. I will need the full paths of the fnCores files and then issue a TTree::CloneTree(-1, “fast”) for each one of the files. What would be the way to get the real file pathnames from gProof while inside MySelector::Terminate? Thanks,