Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ROOT / CERN ROOT book.pdf
Скачиваний:
1
Добавлен:
14.12.2025
Размер:
433.58 Кб
Скачать

16

Глава 4. Работа с деревьями (Trees)

27 file->Close();

4.2.2Дерево с массивами

1 // Переменные для массивов

2 const int maxTracks = 100;

3int nTracks;

4

float

trackPt[maxTracks];

5

float

trackEta[maxTracks];

6float trackPhi[maxTracks];

7

8// Создание ветвей для массивов

9tree->Branch("nTracks", &nTracks, "nTracks/I");

10tree->Branch("trackPt", trackPt, "trackPt[nTracks]/F");

11tree->Branch("trackEta", trackEta, "trackEta[nTracks]/F");

12tree->Branch("trackPhi", trackPhi, "trackPhi[nTracks]/F");

13

14// Заполнение событий с переменным числом треков

15for(int event = 0; event < 1000; event++) {

16nTracks = gRandom->Poisson(10); // Случайное число треков

17

18for(int track = 0; track < nTracks; track++) {

19trackPt[track] = gRandom->Exp(2);

20trackEta[track] = gRandom->Uniform(-2.5, 2.5);

21trackPhi[track] = gRandom->Uniform(-TMath::Pi(), TMath::Pi());

22}

23

24tree->Fill();

25}

4.3Чтение деревьев

4.3.1Простое чтение

1// Открытие файла

2 TFile* file = new TFile("data.root", "READ");

3TTree* tree = (TTree*)file->Get("myTree");

4

5 // Переменные для чтения

6 float x, y, z;

7int eventID;

8

9// Установка адресов ветвей

10tree->SetBranchAddress("x", &x);

11tree->SetBranchAddress("y", &y);

12tree->SetBranchAddress("z", &z);

13tree->SetBranchAddress("eventID", &eventID);

14

15 // Чтение всех событий

Соседние файлы в папке ROOT