Я пытаюсь объединить деревья, выполняя:
string filename_;
TList *list = new TList;
///Loop on all .root output files
for (int i = 1; i < 13; ++i) {
string filename_ = "file_";
string file_extension = ".root";
stringstream ss;
ss << i;
string str = ss.str();
filename_ = filename_+str+file_extension;
const char* c_filename = filename_.c_str();
TFile *file_adress = TFile::Open(c_filename);
TTree *tree_adress = (TTree*)file_adress->Get("pulses");
list->Add(tree_adress);
}
// Output tree:
TTree *TPulses = TTree::MergeTrees(list);
Но я получаю эту ошибку, которая спокойно объясняется:
Error in <TTree::Fill>: Failed filling branch:pulses.pulse_time, nbytes=-1, entry=115710
This error is symptomatic of a Tree created as a memory-resident Tree
Instead of doing:
TTree *T = new TTree(...)
TFile *f = new TFile(...)
you should do:
TFile *f = new TFile(...)
TTree *T = new TTree(...)
Но я создаю TFile до TTreeв цикле, так что я не понимаю.У кого-нибудь есть идея?