Hi, Your histograms are stored in the top directory because you put them explicitly there with: f->Append(h1); f->Append(h2); You can simplify your program like shown below void testDir(void){ TBrowser *b = new TBrowser(); TH1F *h1 = new TH1F("h1", "h1", 100, -10, 10); TH1F *h2 = new TH1F("h2", "h2", 100, -10, 10); h1->FillRandom("gaus",1000); h2->FillRandom("gaus",1000); TFile *f = new TFile("xxxDir.root", "Recreate"); TDirectory *d1 = f->mkdir("d1"); TDirectory *d2 = f->mkdir("d2"); //d1->cd(); //not needed d1->Append(h1); //d2->cd(); d2->Append(h2); f->Write(); f->Close(); f = new TFile("xxxDir.root"); } Rene Brun On Thu, 5 Dec 2002, Yiqun Wang wrote: > Hi, > > I am using root 3.03.09b (compiled myself). I want to add objects to > certain directories of a root file, after the objects are created (not > before). Here is my script: > > void testDir(void){ > > TBrowser *b = new TBrowser(); > > TH1F *h1 = new TH1F("h1", "h1", 100, -10, 10); > TH1F *h2 = new TH1F("h2", "h2", 100, -10, 10); > > h1->FillRandom("gaus",1000); > h2->FillRandom("gaus",1000); > > TFile *f; > > f = new TFile("xxxDir.root", "Recreate"); > > f->mkdir("d1"); > f->mkdir("d2"); > > f->cd("d1"); > f->Append(h1); > > f->cd(); > > f->cd("d2"); > f->Append(h2); > > f->Write(); > f->Close(); > > f = new TFile("xxxDir.root"); > > } > > > When I run to the following script, in the root file created, objects "h1" > and "h2" are listed along side folders "d1" and "d2", not in them. > > Please tell me what I did wrong! Thanks! > > Yiqun Wang > > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:22 MET