Макрос для загрузки нескольких корневых файлов

У меня есть некоторый код, который загружается в ROOT-файл, из которого я могу извлечь ветви из указанного ROOT-файла и построить гистограммы и т. Д. Код выглядит примерно так:

void MakePlots(string filename) {
TChain Data("clusters");
Data.Add(filename.c_str());

Double_t rr, rx, ry, rz, rrho, rtheta, rphi;

Data.SetBranchAddress("laben.recon.r", &rr);
Data.SetBranchAddress("laben.recon.rho", &rrho);
Data.SetBranchAddress("laben.recon.latitude", &rtheta);
Data.SetBranchAddress("laben.recon.longitude", &rphi);
Data.SetBranchAddress("laben.recon.z", &rz);
Data.SetBranchAddress("laben.recon.y", &ry);
Data.SetBranchAddress("laben.recon.x", &rx);

int NumEvents = Data.GetEntries();

for(int event = 0; event < NumEvents; event++) {
if(event % 1000 == 0) cout << "Processing Event " << event << endl;
Data.GetEvent(event);
}
}

Это прекрасно работает и просто для загрузки в одном файле и создания графиков из этого файла. Тем не менее, я хотел бы загрузить в n файлов и делать те же операции. Более конкретно, если у меня есть каталог, заполненный всеми файлами ROOT, которые я хочу загрузить, могу ли я написать программу, которая будет загружать каждый файл из этого каталога. Любая помощь будет оценена.

0

Решение

вы загружаете несколько файлов, используя повторный вызов Data.Add (…):

Data.Add("file1.root");
Data.Add("file2.root");
...

Data.Add("fileN.root");

Тогда вам следует позвонить:

Data.GetEntries();

Который инициализирует TChain. После этого вы устанавливаете адреса филиалов и т. Д. ПРИМЕЧАНИЕ.
Когда вы звоните:

TChain Data("clusters");

параметр «cluster» — это имя TTree, которое должно быть одинаковым во всех добавляемых вами файлах.

0

Другие решения


По вопросам рекламы [email protected]