Я работаю с ROOT через терминал в своей лаборатории, мы часто собираем данные и имеем почасовые папки с крошечными .root
файлами в них.
Я пытаюсь создать ежедневный файл .root
со всеми данными, полученными за определенный день, на данный момент у меня много крошечных файлов .root
внутри почасовых папок.
Я очень новичок в ROOT и не знаю, как мне это сделать, может ли кто-нибудь мне помочь?
Другими словами: мне нужно прокручивать существующие папки и создавать ежедневные «короткие» файлы (т. е. один файл ROOT, представляющий собой комбинацию всех файлов ROOT) и помещать их в новую папку. .
Это грубый набросок того, что я думаю, но это скорее мои мысли вслух...
Основано на моем файле makeShort.C
.
EDIT: когда я использовал «root», я имел в виду программную среду для анализа данных, поэтому язык будет c++.
{
void makeShort();
TDatime currtime;
int curryear = currtime.GetYear();
int currmonth = currtime.GetMonth();
int currdate = currtime.GetDay();
if (curryear != 2018) {
cout << "It is not 2018 anymore. Don't blindly run this macro." << endl;
return 0;
}
TChain* c = new TChain("clusters_tree");
TChain* d = new TChain("finfo");
for (int i=7; i<=currmonth; i++){
for (int j = 1;
TString year, month, day;
int yr, mth, dy;
int nFolders = 0;
TString infolder = "/data/....../....../....../ROOT";
TSystemDirectory dir(infolder, infolder);
TList *files = dir.GetListOfFiles();
if (files) {
TSystemFile *file;
TString fname;
TIter next(files);
while ((file=(TSystemFile*)next())) {
fname = file->GetName();
if (file->IsDirectory() && fname.Contains("root_")) {
nFolders+=1;
year = fname(5,4); yr = year.Atoi();
month = fname(9,2); mth = month.Atoi();
day = fname(11,2); dy = day.Atoi();
TDatime fdate(yr,mth,dy,0,0,0);
}
}
}
}
}
hadd
от root. Вы учитывали это перед написанием собственного макроса/приложения? - person pseyfert   schedule 25.08.2018