本文整理汇总了C++中TBranch::GetListOfBranches方法的典型用法代码示例。如果您正苦于以下问题:C++ TBranch::GetListOfBranches方法的具体用法?C++ TBranch::GetListOfBranches怎么用?C++ TBranch::GetListOfBranches使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TBranch
的用法示例。
在下文中一共展示了TBranch::GetListOfBranches方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generateCodeFromStreamers
std::string generateCodeFromStreamers(std::string url, std::string treeLocation, std::vector<std::string> &classNames, std::string &errorMessage) {
TFile *tfile = TFile::Open(url.c_str());
if (tfile == nullptr || !tfile->IsOpen()) {
errorMessage = std::string("File not found: ") + url;
return std::string();
}
if (tfile->IsZombie()) {
errorMessage = std::string("Not a ROOT file: ") + url;
return std::string();
}
TTreeReader reader(treeLocation.c_str(), tfile);
if (reader.IsZombie()) {
errorMessage = std::string("Not a TTree: ") + treeLocation.c_str() + std::string(" in file: ") + url;
return std::string();
}
TTree *ttree = reader.GetTree();
std::set<std::string> includes;
std::vector<ClassStructure> classes;
TIter listOfBranches = ttree->GetListOfBranches();
for (TBranch *tbranch = (TBranch*)listOfBranches.Next(); tbranch != nullptr; tbranch = (TBranch*)listOfBranches.Next()) {
TClass *tclass = TClass::GetClass(tbranch->GetClassName());
if (tclass != nullptr && tbranch->GetListOfBranches()->GetEntries() > 0)
classesFromBranch(tbranch, tclass, classes, 0, includes);
}
for (int i = 0; i < classes.size(); i++)
classNames.push_back(classes[i].fullName);
tfile->Close();
std::string out;
for (std::set<std::string>::iterator iter = includes.begin(); iter != includes.end(); ++iter)
out += *iter + "\n";
out += "\n";
for (std::vector<ClassStructure>::iterator iter = classes.begin(); iter != classes.end(); ++iter) {
int i = 0;
for (; i < iter->splitName.size() - 1; i++)
out += std::string(i * 2, ' ') + "namespace " + iter->splitName[i] + " {\n";
out += std::string(i * 2, ' ') + "class " + iter->splitName.back() + ";\n";
i--;
for (; i >= 0; i--)
out += std::string(i * 2, ' ') + "}\n";
}
out += "\n";
for (std::vector<ClassStructure>::iterator iter = classes.begin(); iter != classes.end(); ++iter) {
int i = 0;
for (; i < iter->splitName.size() - 1; i++)
out += std::string(i * 2, ' ') + "namespace " + iter->splitName[i] + " {\n";
out += iter->cpp(i * 2) + "\n";
i--;
for (; i >= 0; i--)
out += std::string(i * 2, ' ') + "}\n";
}
for (std::vector<ClassStructure>::iterator iter = classes.begin(); iter != classes.end(); ++iter) {
int i = 0;
for (; i < iter->splitName.size() - 1; i++)
out += std::string(i * 2, ' ') + "namespace " + iter->splitName[i] + " {\n";
out += std::string(i * 2, ' ') + "ClassImp(" + iter->splitName.back() + ")\n";
i--;
for (; i >= 0; i--)
out += std::string(i * 2, ' ') + "}\n";
}
return out;
}