- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
代码应该读取一棵已创建的树,复制其分支名称并为小于或等于 0 的条目记录 0,为所有其他条目记录 1。代码很好地复制了分支,但是当要用它填充的信息填充它们时,每个分支将包含它之前所有分支的所有信息。因此,如果一棵树有 10 个条目和 10 个分支,则第十个分支将有 100 个条目,第 9 个分支将有 90 个条目,等等。下面是完整代码,填充在最后一个循环中完成。
#include <vector>
binaryTree()
{
//Creation and naming scheme
TString fileName = "binaryTree2.root";//name of file wishing to create.
TString treeName = "Binary Tree 2";//name of tree wishing to create.
TFile *file = new TFile(fileName, "RECREATE");
TTree *bTree = new TTree(treeName,"Binary Tree");
//Connection scheme
TString fileNameCopy = "hodoscopehittree7.root";//name of file you will be accessing.
TString treeNameCopy = "tree";//Name of tree within file you are accessing.
TFile *filePtr = new TFile(fileNameCopy);//points to file with previously created tree
TTree *treePtr = (TTree *) filePtr->Get(treeNameCopy);//Ptr to tree within accessed file.
TObjArray *obj = treePtr->GetListOfBranches();//Ptr to branches.
int branchNum = obj->GetEntries();//Number of branches in accessed tree.
//Vector to hold all of the information from the tree.
vector<vector<int>> dataHolder;
int* inHist;//Ptr to become the entry.
int inVal;
vector <int> entryVec;//Vector of ints that the branches will rely on.
entryVec.resize(branchNum);
TString branchName;
const int entryNum = treePtr->GetEntries();//Number of entries in each branch.
//This loop creates a branch in the binary tree with the same name as the
//branch in the tree being accessed and fills the dataHolder vector with
//vectors.
for (int i = 0; i < branchNum; i++)
{
TString temp;
temp = "entryVec[";
temp += (i);
temp += "]/I";
branchName = obj -> At(i)-> GetName();
bTree -> Branch(branchName, &entryVec[i],temp);
vector <int> tempVec;
dataHolder.push_back(tempVec);
}
//This loop reads the entries of each branch within the accessed tree. If the
//value is less than or equal to zero, 0 is added to the dataHolder and if
//not 1 is added to the dataHolder.
for (int i = 0; i < branchNum; i++)
{
branchName = obj-> At(i)-> GetName(); //Gets name of branch at index i
treePtr -> SetBranchAddress(branchName, &inHist);
for (int j = 0; j < entryNum; j++)
{
treePtr -> GetEntry(j);
inVal = inHist;
if (inVal <= 0)
{
dataHolder[i].push_back(0);
}
else
{
dataHolder[i].push_back(1);
}
}
}
//This loop fills the tree. Each inner loop reads the jth element of the
//datHolder and inputs that information int the entryVec. The outer loop fills
//the tree and then loops over all of the entries.
for (int i = 0; i < entryNum; i++)
{
for (int j = 0; j < branchNum; j++)
{
entryVec[j] = dataHolder[j][i];
}
bTree -> Fill();
}
file -> Write();
cout << "Your program has finished; " << treeName << " has been created.";
cout << endl;
filePtr-> Close();
new TBrowser();
}
最佳答案
解决方案是由与我合作的其他人解决的。分支创建临时的最后一部分应该是 branchName/I 所以当更改为:
temp = 分支名称;temp += "/I";
代码完美运行。
关于c++ - CERN 根目录 : Filling TBranches/TTree in a loop issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37592146/
在我的 ROOT 脚本中,我创建了一个 TTree,但我不想保存它。确保 TTree 永远不会保存到 TFile 的最佳方法是什么? 我曾想过为每棵我创建但不需要保存的树创建一个TFile,但感觉应该
我刚刚开始使用 pyroot 读取根文件,但无法使用 jupyter 笔记本从文件中读取数据。 TBrowser 的外观如下: 我是这样开始的: import ROOT as root import
我正在使用 CERN 的 pyROOT 模块做一些工作,我正在尝试将字符串数组存储为二叉树中的叶子。为此,我必须向它传递一个数组,显然,使用的不是列表或字典,而是数组模块。该模块支持标准 C 数组、字
在 PyROOT 中,很容易从树中读取值,即打印叶子 val : file = TFile('file.root') tree = file.Get('tree') for entry in tree
我正在尝试使用 python 简单地定义一个 Root TTree 并给它一个 TBranch。听起来很合理,对吧?我试过: from ROOT import * myvar = int() mytr
我正在尝试从 Cern ROOT TTree 文件中读取数据。我以前没有使用过 root,为此我有点挣扎。我熟悉 C++,因此可以对事物的数组方面进行排序,但我已经在线浏览了几个教程页面,但一无所获。
我正在尝试通过 python 创建一个在根部有分支的树。我有一个 .root 文件,我正在尝试创建分支,这些分支是我的 .root 文件的变量(或数据点)。这是我的尝试: f = ROOT.TFile
将字符串保存到 TTree 之后 std::string fProjNameIn, fProjNameOut; TTree *tTShowerHeader; tTShowerHeader = new
代码应该读取一棵已创建的树,复制其分支名称并为小于或等于 0 的条目记录 0,为所有其他条目记录 1。代码很好地复制了分支,但是当要用它填充的信息填充它们时,每个分支将包含它之前所有分支的所有信息。因
我是编程和 ROOT (CERN) 的新手,所以请放轻松。简单地说,我想将 ~900 MB(11M 行 x 10 列).csv 文件转换为组织良好的 .root TTree。有人可以提供解决此问题的最
我正在尝试使用 pyROOT 在 python 中为 TTree(一个 ROOT 对象)制作过滤器.我从具有多个分支的 TTree 获取信息,其中一些是 C++ 类型 vector , vector或
我是一名优秀的程序员,十分优秀!