CERN ROOT Создание дерева с заголовками событий - PullRequest
0 голосов
/ 22 августа 2011

Мне нужно сделать дерево с заголовками событий.Я читаю из файла 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 Ответ

0 голосов
/ 11 октября 2011

Два миллиона не так много.

  1. Попробуйте отключить ненужные ветки.
  2. Изменить второй if на else if
  3. Кроме того, вы можете использовать Доказательство
...