У меня есть каталог trial
, в котором содержатся сотни гистограмм и макрос.Каждый называется так: hists09876_blinded.root
или hists12365_blinded.root
.Порядок, однако, не такой.Есть несколько неправильных гистограмм, таких как hists10467_blinded.root
hists10468_blinded.root
hists10470_blinded.root
.Конечная цель состоит в том, чтобы получить одну гистограмму на холсте, которая представляет все те, которые объединены вместе.Хитрость заключается в том, что в каждом hists*****_blinded.root
содержится около 15 одномерных гистосов, мне нужно вытащить только по одному из каждого, называемого sc*****
.
У меня есть 2 идеи, но я думаю, что мне следует объединить их вместечтобы получить окончательный результат.
Первая идея состояла в том, чтобы открыть гисто с помощью гисто, но поскольку в заказе есть некоторые пропущенные гистосы, это не работает.
void overlap()
{
TCanvas *time = new TCanvas("c1", "overlap", 0, 0, 800, 600);
const char* histoname = "sc";
const int NFiles = 256;
for (int fileNumber = 09675; fileNumber < NFiles; fileNumber++)
{
TFile* myFile = TFile::Open(Form("hists%i_blinded.root", fileNumber));
if (!myFile)
{
printf("Nope, no such file!\n");
return;
}
TH1* h1 = (TH1*)myFile->Get(histoname);
if (!h1)
{
printf("Nope, no such histogram!\n");
return;
}
h1->SetDirectory(gROOT);
h1->Draw("same");
myFile->Close();
}
}