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