Мне нужно сделать дерево с заголовками событий.Я читаю из файла ROOT на два ntuple.Каждый из этих 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 ... ...
и т. Д. Индекс работает до двух миллионов.
Формат, который я использовал для создания 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 у меня возникает проблема, заключающаяся в том, что анализ, который я хочу выполнить, становится невероятно трудоемким.Я хотел бы, чтобы мои данные были структурированы так же, как и данные, которые я читаю, то есть дерево с двумя ветвями (для моих двух «файлов»), каждое из которых содержит четный заголовок, чтобы я мог циклически перебирать события в одномфайл и впоследствии вложите цикл во второй файл только для тех же событий.Относится к предыдущему вопросу.
У меня нет кода того, как был сконструирован исходный файл, что позволило использовать описанный выше способ записи данных.