{ unsigned int iMaxFolders = 500; unsigned int iMaxHists = 100; TH1* pDummyHist = new TH3D("h3_dummy","dummy",30,0,1,30,0,1,30,0,1); TFolder* pBase = new TFolder("root","root"); TFolder* pSubfolder = 0; TH1* h = 0; for(int i = 0; i < iMaxFolders; ++i) { cout << i << endl; pSubfolder = new TFolder(TString::Format("subfolder_%d",i).Data(),TString::Format("subfolder_%d",i).Data()); for(int j = 0; j < iMaxHists; ++j) { h = (TH1*)pDummyHist->Clone(TString::Format("subfolder_%d_hist_%d",i,j).Data()); h->FillRandom("gaus",10000); pSubfolder->Add(h); } pBase->Add(pSubfolder); } TFile* out = TFile::Open("output.root","RECREATE"); out->cd(); pBase->Write(); out->Close(); }