我需要使用事件标题创建一个Tree。我从一个ROOT文件读到两个ntuples。这些ntuples中的每一个都具有以下格式:
Index Event SubEvent Characteristic1 Characteristic2 ....
1 1 1 322 234
2 1 2 453 324
3 1 3 ... ...
. . . ... ...
. . . ... ...
100 1 100 ... ...
101 2 1 ... ...
102 2 2 ... ...
. . . ... ...
. . . ... ...
. . . ... ...
207 2 107 ... ...
208 3 1 ... ...
209 3 2 ... ...
等等,该指数运行至约200万。
我用来创建ntuples的格式:
TNtuple *tp = new TNtuple("tp","tp","x:y:z");
TNtuple *tn = new TNtuple("tn","tn","x:y:z");
for(Int_t n = 0; n < nEvents; n++) {
inTree->GetEntry(n);
Int_t nTracks = trackArray->GetEntries();
for(Int_t i = 0; i < nTracks; i++) {
Track* trackData = (Track*)trackArray->At(i);
if(trackData->fCharge == 1)
tp->Fill(trackData->x,trackData->y,trackData->z);
if(trackData->fCharge == -1)
tn->Fill(trackData->x,trackData->y,trackData->z);
}
}
然而,对于ntuples,我遇到的问题是我想对其进行的分析变得不可能耗费时间。我希望我的数据结构与我正在阅读的数据相同,即一个带有两个braches的树(对于我的两个“文件”),每个包含一个偶数标题,这样我就可以将事件循环到一个文件并随后在第二个文件上嵌套循环仅用于相同的事件。与previous question.
相关我没有关于如何构造原始文件的代码,这使得上述编写数据的方式成为可能。
答案 0 :(得分:0)
两百万不是那么多。
if
更改为else if