Hi Jacek,
What you do is extremely innefficient. You destroy the Root cache.
Instead, open the same file twice (in addition to the selector) with
double x0, x2; //global variables or class variables
TFile *f0 = new TFile("myfile.root")
TTree *T0= (TTree*)f0->Get("myntuple");
TBranch *b_x0 = T0->GetBranch("x");
b_x0->SetBranchAddress(&x0);
TFile *f2 = new TFile("myfile.root")
TTree *T2= (TTree*)f2->Get("myntuple");
TBranch *b_x2 = T2->GetBranch("x");
b_x2->SetBranchAddress(&x2);
,
then in ProcessFill, do;
b_x->GetEntry(entry);
b_x0->GetEntry(entry - 100000);
b_x2->GetEntry(entry + 100000);
you can now use x,x0 and x2
Rene Brun
Jacek M. Holeczek wrote:
>
> Hi,
> I have met a stupid problem ...
> I use TSelector to analyze a disk resident TNtuple.
> The TNtuple has a "simple" branch :
> Float_t x;
> TBranch *b_x;
> In my "TSelector::ProcessFill(Int_t entry)" I need, however, to access not
> only the "entry", but also "entry - 100000" and "entry + 100000" for that
> specific branch :
> b_x->GetEntry(entry); x1 = x;
> b_x->GetEntry(entry - 100000); x0 = x;
> b_x->GetEntry(entry + 100000); x2 = x;
> The result is that the analysis ("Process") of the ntuple takes ages ...
> Can I somehow speed it up ?
> Thanks in advance,
> Jacek.
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:50 MET