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