I have a very frustrating problem using PROOF-Lite in compiled code.
However, it seems to be reproducible using CINT too, so I created a example. If I run the following code:
#include "TChain.h"
#include "TProof.h"
#include "TCollection.h"
#include "include/rfacQuantumNumberLister.hh"
#include "include/rfacQuantumNumberContainer.hh"
#include <iostream>
using namespace std;
void prooftest()
{
TChain * myChain = new TChain("T");
myChain->Add("output_small.root");
TProof::Open("");
gProof->Exec("gSystem->Load(\"/home/rikard/fac/Work/hbar_cfac_rikard/DataTool/Dictionary.so\")");
//myChain->SetProof();
rfacQuantumNumberLister * myQuantumNumberLister = new rfacQuantumNumberLister();
myQuantumNumberLister->SetInputList(new TList());
myQuantumNumberLister->GetInputList()->Add(new TObjString("SFACbranch"));
myChain->Process(myQuantumNumberLister);
rfacQuantumNumberContainer myQMContainer;
TIter centralQ(myQuantumNumberLister->GetOutputList());
while(TCollection * cobj = dynamic_cast< TCollection* > (centralQ()))
{
cobj->Print();
myQMContainer.Merge(cobj);
}
cout << "Found :" << myQMContainer.size() << endl;
delete myQuantumNumberLister;
}
everything works as it should; the TSelector object is invoked and the output list contains the expected output object.
However, if I remove the comment from the line
//myChain->SetProof();
to actually use PROOF-Lite in the processing, suddenly the TSelector is not invoked at all, and the output list only consists of an object
Collection name='MissingFiles', class='TList', size=1
file:///home/rikard/fac/Work/hbar_cfac_rikard/DataTool/output_small.root /T|TTree|125 md5-undef
So I was wondering how I should do to make this work? I have tried looking into the log files.
There seems to be an error on Master:
Error in <TTree::SetBranchAddress>: unknown branch -> FeedbackList
However I don’t know what this means, or how I should correct it?