Hi, On Fri, 8 Aug 2003, zaldy wrote: > > Hi EveryOne, > > I have two items which are new to my experience with root now, and I > dont understand them very well. I'd appreciate very much your help. > > FIRST: ROOT Tree too large ... > ^^^^^^^^^^^^^^^^^^^^^^^^^^ > Can someone tell me how to use the tree->ChangeFile(TFile * file)? > > I just learned it from ROOT FAQ, that this is used when root tree size > exceeds the 2GB limit. Bbut I don't know how to insert them along > which line, or next to what line. Am having trouble saving a large root > file greater than 2 GByte Limit. In principle, you have nothing to do. ROOT will automatically switch to a new file when the current file is above 1.9GByte (default). see TTree::ChangeFile for more details. > > > SECOND: ROOT File Tree larger than the source file? > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > I have a source file(text file), actually 2 columns, an integer and a > Float > > Ch Time > i.e., 4 20567.90 > 8 38930.34 > 15 24523.67 > ............. > ............. > > There are about 380,000 lines of the above format. So I decided to create > a tree > like: ................... > .................... > Int_t comp = 1; > TFile * f = new TFile("out.root","NEW"); > f->SetCompression(1); > TTree * tree = new TTree("T", "myTree"); > tree->SetAutoSave(1000000000); > > tree->Branch("Ch",&Ch,"Ch/I"); > tree->Branch("Time",&Time,"Time/F"); > > while(fgets(.......)) { > > ........filling..... > > Int_t nb = 0; > nb += tree->Fill(); > tree->AutoSave(); > tree->Print(); > tree->Write > ......... > } OUIH!!!! You should not call the 3 last lines inside the loop, but do something like while (fgets(.. ) { nb += tree->Fill(); } tree->AutoSave(); tree->Print(); The Tree should be about 5 times smaller than the original text file. Rene Brun > > But during implementation, I was disturbed that the output sizeof the root > file is larger than the source text file by several (~5)factors. Do you > know what is going on here? That means that the way I created a tree is > not "efficient"; and filling of the tree takes some time. I figure out > that obtaining a histogram by directly filling the contents from the > source file maybe faster than obtaining a histogram from a rootproduced > tree (later). > > But having a root tree is still more advantageous. > How do we rewrite the above script? > > Thank you for bearing with me. > > > PS. > root version 3.05/05 > gcc 3.2.2 RedHat 9 >
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET