Pb in reading Trees...

From: Olivier Meplan (meplan@isn.in2p3.fr)
Date: Wed Oct 13 1999 - 11:13:31 MEST


Hi Rooters!

I have a pb in reading (and perhaps in filling) a tree.
The tree declaration I used is:
        TTree *ptree_flash   = new TTree("FLASH",argv[1]);
        event_flash = new EventFlash();
        TBranch *b_flash
=ptree_flash->Branch("EventFlash","EventFlash",
&event_flash,bufsize,split);
Then I fill the tree with:
        event_flash=new EventFlash(dim_bloc,nb_burst,&buf[i]);
        ptree_flash->Fill();
where buf is UShort_t *buf=new UShort_t[lgb], (lgb being a given
dimension).
When I fill the tree, I used the method
        event_flash->GetFlashSpectrum()->Show();
in order to check what I am reading (and so what I hope to put in the
tree).
But when I try to read again the tree, the GetFlashSpectrum()->Show()
method give me numbers which are completly different from the one I
(hope to) fill in the tree.
Is there some one who can tell me what I am doing wrong?
Thanks very much,
Olivier Meplan.
-----------------------------------------------------------------------------

The definition of the class EventFlash is given in the file
flash_flash.h, flash_spectrum.h (and the corresponding .C files):

// ========== flash_flash.h ===========
class EventFlash : public TObject
{
 private:
 Int_t  fNo_burst;  //Numero de burst
 UShort_t fNo_voie_flash;  //Numero de la voie du flash touche
        Int_t  fTps_avt_stockage; //Nb canaux entre l'origne et le 1er
canal stocke
        FlashSpectrum *fSpectrum;  //Amplitude=f(tps des coups par
rapport au burst) pour chaque voie flash

 public:

EventFlash():fNo_burst(0),fNo_voie_flash(0),fTps_avt_stockage(0){fSpectrum=new
FlashSpectrum();}
        EventFlash(Int_t dim,Int_t burst,UShort_t *event);
        ~EventFlash(){delete fSpectrum;}

        Int_t  GetNbBurt() const { return fNo_burst; }
 UShort_t GetNumVoie() const {return fNo_voie_flash; }
 Int_t  GetTemps_Avant_Stokage() const {return fTps_avt_stockage; }
        FlashSpectrum *GetFlashSpectrum()  {return fSpectrum; }

 ClassDef(EventFlash,1)

};
// ========== flash_flash.C ===========
#include "flash_flash.h"

ClassImp(EventFlash)
EventFlash::EventFlash(Int_t dim,Int_t burst,UShort_t *event) :
TObject()
{
        fNo_burst=burst;
        fSpectrum=new FlashSpectrum(dim);

        fNo_voie_flash=(*event & 0x00FF);
        fTps_avt_stockage=*(event+1);
        for(Int_t i=0 ; i<dim ; i++)
        {
                GetFlashSpectrum()->FillSpectrum(i,(event[i+2] &
0x0FFF));

        }
}
// ========== flash_spectrum.h ===========
class FlashSpectrum : public TObject
{
 private:
        UShort_t *fFlashSpectrum;
        Int_t  fSize;

 public:
 FlashSpectrum(): fSize(10)
        {
                fFlashSpectrum = new UShort_t[fSize];
       }
        FlashSpectrum( Int_t size)
        {
                fSize=size;
                fFlashSpectrum = new UShort_t[fSize];
        }

 ~FlashSpectrum(){delete [] fFlashSpectrum;}
        void  FillSpectrum(UShort_t *spectrum)
          {
                                for(Int_t i=0; i<fSize ; i++)
fFlashSpectrum[i]=spectrum[i];
          }
        void  FillSpectrum(Int_t i,UShort_t val)
          {
           fFlashSpectrum[i]=val;
          }
        UShort_t *GetSpectrum(){return fFlashSpectrum;}
        Int_t  GetSize(){return fSize;}
        void  Show()
          {
                         for(Int_t i=0; i<GetSize(); i++)
                                 cout<<"AMP:"<<fFlashSpectrum[i]<<endl;
           }
   ClassDef(FlashSpectrum,1)
};
//===============================

--
=========================================================
|Olivier Meplan             |E-mail:meplan@isn.in2p3.fr
|                           |
|ISN, 53 avenue des Martyrs |  Tel +33(0)4 76-28-41-90
|F-38026 GRENOBLE cedex     |  Fax +33(0)4 76-28-40-04
=========================================================



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:40 MET