Hi jan,
You should use twice the same file as shown in a modified
version of your example below, otherwise you destroy
completly the Tree cache.
Rene Brun
UShort_t nchar=0;
Float_t px[MAX_TRACK];
TFile *fin = new TFile("oxygen.root","READ");
if (!(fin.IsOpen())) break;
TTree *oxy = (TTree*)fin->Get("oxy");
TFile *fin2 = new TFile("oxygen.root","READ");
TTree *oxy2 = (TTree*)fin2->Get("oxy");
oxy->SetBranchAddress("nchar",&nchar);
oxy->SetBranchAddress("px",px);
oxy2->SetBranchAddress("nchar",&nchar);
oxy2->SetBranchAddress("px",px);
UInt_t nevents=oxy->GetEntries();
for (UInt_t i=0; i<nevents; i++) {
oxy->GetEntry(i);
....
using nchar
using px[...]
....
for (UInt_t i2=1; i2<500; i2++) {
UShort_t event2 = (gRandom->Rndm())*nevents;
if (event2 == i) event2 = (gRandom->Rndm())*nevents;
oxy2->GetEntry(event2);
...
using nchar
using px[...]
....
} // end i2
} // end i
On Tue, 2 Jul 2002, Jan Musinsky wrote:
> Hi,
> I have met a stupid (maybe) problem.
> I use tree to analyze ...:
>
>
> UShort_t nchar=0;
> Float_t px[MAX_TRACK];
>
> TFile *fin = new TFile("oxygen.root","READ");
> if (!(fin.IsOpen())) break;
> TTree *oxy = (TTree*)fin->Get("oxy");
>
> oxy->SetBranchAddress("nchar",&nchar);
> oxy->SetBranchAddress("px",px);
>
> UInt_t nevents=oxy->GetEntries();
> for (UInt_t i=0; i<nevents; i++) {
> oxy->GetEntry(i);
> ....
> using nchar
> using px[...]
> ....
>
> for (UInt_t i2=1; i2<500; i2++) {
> UShort_t event2 = (gRandom->Rndm())*nevents;
> if (event2 == i) event2 = (gRandom->Rndm())*nevents;
> oxy->GetEntry(event2);
> ...
> using nchar
> using px[...]
> ....
> } // end i2
> } // end i
>
>
>
> The result is that the analysis of the root takes days, days, ..
> Can I somehow speed it up ?
> Thanks in advance,
> Jan
>
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:58 MET