Hi Nesterov,
When calling whell->GetEntry, you request to read all the branches
of your Tree. If you want to read only one single branch, get
the pointer to the branch and call branch->GetEntry.
In your case, you should do something like:
TBranch *b_Spec = wheel->GetBranch("Spec");
TH1 *Spec=0;
b_Spec->SetAddress(&Spec);
b_Spec->GetEntry(22);
delete Spec; Spec=0; //to delete the current hist
Spec=0; // if you want to keep the current hist in memory
b_Spec->GetEntry(23); /etc..
Rene Brun
On Mon, 17 Jun 2002, Nesterov Stanislav wrote:
> Hi All,
>
> I found a strange problem arising when you are trying to read TH1F objects
> from a TTree. We have a tree with several TH1F objects as TBranches (under
> different names). I understand clearly that this kind of object is not
> suitable for keeping inside a tree, but ROOT behavior in getting these
> histograms is very strange. Below I dump simple ROOT session where I opened
> TFile, created new TH1F object, set Branch Address, and then got several
> Entries from opened tree.
> >>>>>>>>>>>>>>>>>>>>Session start<<<<<<<<<<<<<<<<<<<<<<<<<<<
> *******************************************
> * *
> * W E L C O M E to R O O T *
> * *
> * Version 3.03/05 31 May 2002 *
> * *
> * You are welcome to visit our Web site *
> * http://root.cern.ch *
> * *
> *******************************************
> root [0] TFile fl("res/run06.root")
> root [1] fl.cd()
> (Bool_t)1
> root [2] pht = new TH1F;
> root [3] .ls
> TFile** res/run06.root
> TFile* res/run06.root
> KEY: TTree wheel;1 Measurement of TRT Wheel
> root [4] wheel->Print()
> >>>>>>>>>>>>>>>bla-bla-bla<<<<<<<<<<<<<<<<<<<<<<<<<<
> *.........................................................................*
> *Br 41 :RBckgr : RBckg[3]/F *
> *Entries : 54 : Total Size= 714 bytes File Size = 0 *
> *Baskets : 0 : Basket Size= 32000 bytes Compression=1.00 *
> *.........................................................................*
> *Br 42 :Spec : *
> *Entries : 54 : Total Size= 323848 bytes File Size = 92614 *
> *Baskets : 27 : Basket Size= 16000 bytes Compression=3.50 *
> *.........................................................................*
> *Br 43 :RSpec : *
> *Entries : 54 : Total Size= 324416 bytes File Size = 103221 *
> *Baskets : 27 : Basket Size= 16000 bytes Compression= 3.14 *
> *.........................................................................*
> root [5] wheel->SetBranchAddress("Spec",&pht);
> root [6] .ls
> TFile** ../../fedin/wts_offline/res/run06.root
> TFile* ../../fedin/wts_offline/res/run06.root
> OBJ: TTree wheel Measurement of TRT Wheel : 0
> KEY: TTree wheel;1 Measurement of TRT Wheel
> root [7] wheel->GetEntry(13)
> (Int_t)12134
> root [8] .ls
> TFile** ../../fedin/wts_offline/res/run06.root
> TFile* ../../fedin/wts_offline/res/run06.root
> OBJ: TTree wheel Measurement of TRT Wheel : 0
> OBJ: TH1F s1_3_2 Spectrum L==1 C==3 R==2 : 0
> OBJ: TH1F r1_3_2 Reference spectrum L==1 C==3 R==2 : 0
> KEY: TTree wheel;1 Measurement of TRT Wheel
> root [9] wheel->GetEntry(24)
> (Int_t)12134
> root [10] .ls
> TFile** ../../fedin/wts_offline/res/run06.root
> TFile* ../../fedin/wts_offline/res/run06.root
> OBJ: TTree wheel Measurement of TRT Wheel : 0
> OBJ: TH1F s1_5_1 Spectrum L==1 C==5 R==1 : 0
> OBJ: TH1F r1_5_1 Reference spectrum L==1 C==5 R==1 : 0
> OBJ: TH1F s1_5_1 Spectrum L==1 C==5 R==1 : 0
> OBJ: TH1F r1_5_1 Reference spectrum L==1 C==5 R==1 : 0
> KEY: TTree wheel;1 Measurement of TRT Wheel
> root [11] wheel->GetEntry(2)
> (Int_t)12134
> root [12] .ls
> TFile** ../../fedin/wts_offline/res/run06.root
> TFile* ../../fedin/wts_offline/res/run06.root
> OBJ: TTree wheel Measurement of TRT Wheel : 0
> OBJ: TH1F s1_1_3 Spectrum L==1 C==1 R==3 : 0
> OBJ: TH1F r1_1_3 Reference spectrum L==1 C==1 R==3 : 0
> OBJ: TH1F s1_1_3 Spectrum L==1 C==1 R==3 : 0
> OBJ: TH1F r1_1_3 Reference spectrum L==1 C==1 R==3 : 0
> OBJ: TH1F s1_1_3 Spectrum L==1 C==1 R==3 : 0
> OBJ: TH1F r1_1_3 Reference spectrum L==1 C==1 R==3 : 0
> KEY: TTree wheel;1 Measurement of TRT Wheel
> root [13] delete pht
> root [14] .ls
> TFile** ../../fedin/wts_offline/res/run06.root
> TFile* ../../fedin/wts_offline/res/run06.root
> OBJ: TTree wheel Measurement of TRT Wheel : 0
> OBJ: TH1F r1_1_3 Reference spectrum L==1 C==1 R==3 : 0
> OBJ: TObject TObject Basic ROOT object : 0
> OBJ: TH1F r1_1_3 Reference spectrum L==1 C==1 R==3 : 0
> OBJ: TObject TObject Basic ROOT object : 0
> OBJ: TH1F r1_1_3 Reference spectrum L==1 C==1 R==3 : 0
> KEY: TTree wheel;1 Measurement of TRT Wheel
> root [15] r1_1_3->Delete()
> root [16] .ls
> TFile** ../../fedin/wts_offline/res/run06.root
> TFile* ../../fedin/wts_offline/res/run06.root
> OBJ: TTree wheel Measurement of TRT Wheel : 0
> OBJ: TObject TObject Basic ROOT object : 0
> OBJ: TObject TObject Basic ROOT object : 0
> OBJ: TObject TObject Basic ROOT object : 0
> OBJ: TObject TObject Basic ROOT object : 0
> KEY: TTree wheel;1 Measurement of TRT Wheel
> root [17] .q
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<End of Session>>>>>>>>>>>>>>>>>>
> This is getting very odd. I just tried to get ONE histogram, but have got
> ALL of them in memory. And this is not all: histograms are duplicated with
> the same names. Deleting is not good for them: strange object still in
> memory.
>
> Yes I know: TH1 and TTree objects are reading into a memory by default, but
> for tree branch it is not very good default I think.
> Best regards,
> Stanislav Nesterov.
>
>
>
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:57 MET