TProofOutputFile not merged in TPySelector

Hi,

I have a simple example using TPySelector. But the TProofOutputFile was not merged at the end of proof job. It seems that the TProofOutputFile corresponding ROOT files are removed prior to the merging. On the client side, the printout of TOutputList gvies “MissingFiles”:

[quote]py: terminating
Collection name=‘TList’, class=‘TList’, size=4
Collection name=‘MissingFiles’, class=‘TList’, size=0
OBJ: TStatus PROOF_Status OK
OBJ: TOutputListSelectorDataMap PROOF_TOutputListSelectorDataMap_objectConverter from output list to TSelector data members
Info in TProofOutputFile::Print: -------------- myfilename.root : start (acas1007.usatlas.bnl.gov:1093) ------------
Info in TProofOutputFile::Print: dir: root://acas1007.usatlas.bnl.gov//data/p … 366-28868/
Info in TProofOutputFile::Print: raw dir: /data/proofbox/yesw2000/session-acas0786-1282319363-3900/worker-0.6-acas1007-1282319366-28868/
Info in TProofOutputFile::Print: file name: myfilename.root
Info in TProofOutputFile::Print: run type: create a merged file
Info in TProofOutputFile::Print: merging option: keep remote
Info in TProofOutputFile::Print: output file name: myfilename.root
Info in TProofOutputFile::Print: ordinal: 0.6
Info in TProofOutputFile::Print: -------------- myfilename.root : done -------------[/quote]

I have a similar code in C++ version, but it works fine. In addition, memory-resident TH1 and TTree objects added to TOutputList are merged properly in TPySelector. Any idea?

–Shuwei

Dear Shuwei,

I have no idea why this happens. In the standard C++ version the files are removed after merging.
You should address your question to the PyROOT section of the forum.
You should also specify the ROOT version and Os that you are using.

G. Ganis

Hi Gerri,

I made a mistake in my test (and hence in my previous statement). Actually it does not work either in C++ version for PROOF. But it always works for PROOF-Lite.

The ROOT version is 5.27.04, and OS is SL5.3.

–Shuwei

Hi Shuwei,

Can you try to run the ‘ntuple’ tutorial on your cluster?

~$ root -l
root [] .L tutorials/proof/runProof.C+
root [] runProof("ntuple", "<master>")

This creates the final ntuple by merging TProofOutputFile objects. If this works, then we have to understand what’s wrong in your code or where the bug is.

Gerri

Hi Gerri,

I tried the example under tutorials/proof, and did see the merged file “ProofNtuple.root” at the client side.

But my own example does not work. Actually it is very simple:

Anything wrong with my code?

–Shuwei

Hi Shuwei,

I did not have time to try, but one problem is for sure that you add the newTree to the output list.
You should just add the TProofOutputFile object to the output list (fProofFile) .
Please give a try.
Anyhow, I will work out a working example of creating the output tree from cloning the input one.
It looks like a needed use-case.

Gerri

Hi Gerri,

I intend to make my code work for both PROOF and local ROOT. I register “newTree” to fOutput only when fFile is NULL.

–Shuwei

Sorry, I have overlooked that.
Ok, I need to try by myself.
I will try to do it asap, but I will be almost offline the coming days, so it will not happen before Tuesday.

Cheers, Gerri

Hi Gerri,

Finally I have located the problem myself. The problem arose from that I did not specify an absolute path to output filename, and the merged output got lost, I guess. Many thanks for providing the proof ntuple example, which gave me some hints in locating my problem.

Cheers

–Shuwei

Hi Shuwei,

Ok, thanks for the feedback.

Gerri