Hi @eguiraud ,
I have written a piece of code where I pass a pointer from different TThreads and trying to write a merged file from the files written over multiple TThreads.
Kindly have a look. I am facing some issue, I mean it is not working.
void* write_outfile(void* ptr){
gROOT->cd();
Long64_t* N = (Long64_t*) ptr;
gROOT->SetBatch();
ROOT::EnableThreadSafety();
std::string fileName = oname;
ROOT::Experimental::TBufferMerger merger("testfile.root", "RECREATE");
auto file = merger.GetFile();
for(auto j=N[1]; j<N[2]; j++){
auto tree = new TTree("data","data");
tree->Branch("q",&qcalib,"qcalib[1024]/F");
tree->Branch("t",&tcalib,"tcalib[1024]/l");
chain[N[0]]->GetEntry(j);
for(CHID=channel_start;CHID<=channel_end;CHID++){
if(CHID >63 && CHID <320){continue;}
if(q[CHID]>0 ){
//Float_t S= pow(q[CHID],par[CHID][2]);
//qcalib[CHID]=par[CHID][0]*pow(par[CHID][1],S)+par[CHID][3]*q[CHID]-par[CHID][0];
qcalib[CHID] = q[CHID]*S[CHID];
}
else{continue;}
}
tree->Fill();
}
file->Write();
return 0;
}