Я работаю с ROOT через терминал в моей лаборатории, мы часто собираем данные, и у нас есть почасовые папки с крошечными .root
файлами в них.
Я пытаюсь создать ежедневный файл .root
со всеми данными, снятыми за определенный день, на данный момент у меня есть много крошечных .root
файлов внутри ежечасных папок.
Я очень новичок в ROOT и не уверен, как я могу это сделать, кто-нибудь может мне помочь?
Другими словами: Мне нужно перебрать существующие папки и создать ежедневные «короткие» файлы (то есть один файл ROOT, представляющий собой комбинацию всех файлов ROOT) и поместить их в новая папка.
Это грубый набросок того, о чем я думаю, но я просто думаю вслух ...
Основано на моем makeShort.C
файле.
РЕДАКТИРОВАТЬ : Когда я использовал «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);
}
}
}
}
}