Вы можете вызвать метод TTree::Branch
на существующем TTree так же, как и для нового TTree. Просто для заполнения вам нужно убедиться, что вы только заполните ветку. (это сильно урезанный пример из https://github.com/pseyfert/tmva-branch-adder)
void AddABranch(TTree* tree) {
Float_t my_local_variable;
TBranch* my_new_branch = tree->AddBranch( ... /* use address of my_local_variable */ );
for (Long64_t entry = 0 ; entry < tree->GetEntries() ; ++e ) {
tree->GetEntry();
/* something to compute my_local_variable */
my_new_branch->Fill();
}
}
В качестве альтернативы вы можете обратиться к root учебникам для друзей по дереву.
В качестве примечания: в зависимости от того, что вы хотите сделать с деревом / которому вы даете дерево, я советую не использовать .
в именах ветвей, поскольку они вызывают головную боль при выполнении MakeClass
(имена ветвей могут содержать точки, но Переменные c ++ не могут, поэтому автоматически сгенерированные члены класса для каждой ветви будут заменены символами go.