Re: TTree problem in version 2.00.12

Rene Brun (Rene.Brun@cern.ch)
Fri, 23 Oct 1998 15:05:10 +0200


Hi Alberto,
We have identified a nasty problem in 2.00/12 when saving multiple
copies of the same object in one file. You are hitting this problem in
your example below. Your program will work if you store only one copy
of the Tree header.
The version 2.00/12 has been released with 3 unfortunate problems:
1- Objects with more than one cycle
2- A memory leak affecting programs opening a large number of TTrees
3- A change in the TBrowser class affecting subdirectories.

All these problems have been fixed in our development version.
We are planning to introduce the corrected version early next week.
Sorry for the inconvenience.

Rene Brun

Alberto Baldisseri wrote:
>
> Hi rooters,
>
> I have a problem when I create a TTree in batch mode. My program
> create and fill 10 events in a TTree, the result is stored in a TFile.
>
> When I try to read the file (ntu.root) in root I get this curious
> output :
>
> root [0] TFile file("ntu.root")
> root [1] .ls
> TFile** ntu.root
> TFile* ntu.root
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;2 Pixel Occupancy
> KEY: TTree tree;1 Pixel Occupancy
>
> root [2] tree.GetEntries()
> (Stat_t)2.000000000000e+00
>
> root [3] tree.Scan()
> ************************************************************************
> * Row * run * na50burst * na50trig * pixev * burstsize *
> ************************************************************************
> * 0 * 9 * 13 * 18 * 27 * 90 *
> * 1 * 8 * 12 * 16 * 24 * 80 *
> ************************************************************************
>
> When I try to draw a variable (tree.Draw("run")) I got only 2 entries,
>
> rather than 10 that I put in the batch program. What is wrong ?
>
> I am using version 2.00.12 for Linux egcs1.02. Here also the code I use and
>
> the makefile. By the wai this code work with the version 2.00.08.
>
> Thanks,
>
> Alberto
>
> --
> +-------------------------------+------------------------------------+
> | Alberto BALDISSERI | Tel : (33-1) 69 08 93 33 |
> | DAPNIA/SPhN, Bat 703 piece 42 | Fax : (33-1) 69 08 75 84 |
> | CEA Saclay | E-mail : baldiss@hep.saclay.cea.fr |
> | F 91191 Gif-sur-Yvette cedex | |
> +-------------------------------+------------------------------------+
>
>
>
> ---------------------------------------------------------------
>
> CXX = g++
> CXXFLAGS = -g -I$(ROOTSYS)/include
> ROOTLIBS = -L$(ROOTSYS)/lib -lNew -lBase -lCint -lClib -lCont -lFunc \
> -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta -lMinuit -lNet \
> -lPostscript -lProof -lTree -lUnix -lZip -lm -ldl -rdynamic
>
> all : pixoff
>
> pixoff : pixoff.cxx
> $(CXX) $(CXXFLAGS) pixoff.cxx $(ROOTLIBS) -o $@
>
> ---------------------------------------------------------------
> /*
>
> NA50 pixel Offline data reading
>
> A. Baldisseri : March 98
>
> */
> #include <stdio.h>
> #include <pixdecode.h>
> #include <pixhisto.h> /* include hbook.h */
>
> _PixBurst Burst;
> int RunNumber = 1;
>
> int main()
> {
> int i = 10;
> _PixBurstRec burst;
> Burst = &burst;
>
> Burst->header.na50burst = 0;
> Burst->header.na50triggers = 2;
> Burst->header.pixevents = 3;
> Burst->header.burstsize = 4;
>
> /* ROOT ntu book */
>
>
> /* ROOT ntu fill */
> while(i--)
> ntu_fill__Fv();
>
> /* ROOT ntu end */
> ntu_end__Fv();
>
> } /* end of main */
>
>