Re: saving a TClonesArray in a TTree

From: Rene Brun <Rene.Brun_at_cern.ch>
Date: Tue, 30 May 2006 16:44:05 +0200


Pietro,

It looks like you do not create a dictionary for your classes (your tar file had no Makefile).
Just using ACLIC (see below), I can create a Tree with your class.

Rene

//file test.C
{
  gROOT->ProcessLine(".L BlockClasses.cc+");

  m_file = new TFile ("junk.root","RECREATE") ;
  m_tree = new TTree ("T","Analysis tree") ;
  m_tree->SetAutoSave (10000000) ;

  TClonesArray *m_data = new TClonesArray (TRootCalibObj::Class(), 1) ;   m_data->ExpandCreateFast (1) ;

  m_tree->Branch ("EGCO", &m_data, 64000, 2) ;   m_tree->Print () ;
}

root -b test.C

produces:



*Tree :T : Analysis
tree                                          *

*Entries : 0 : Total = 26114 bytes File Size
= 0 *
* : : Tree compression factor =
1.00 *
******************************************************************************
*Br 0 :EGCO :
EGCO_ *
*Entries : 0 : Total Size= 26256 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 1 :EGCO.fUniqueID :
fUniqueID[EGCO_] *
*Entries : 0 : Total Size= 752 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 2 :EGCO.fBits :
fBits[EGCO_] *
*Entries : 0 : Total Size= 728 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 3 :EGCO.electronSCEnocorr_ :
electronSCEnocorr_[EGCO_] *
*Entries : 0 : Total Size= 806 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 4 :EGCO.electronSCE_ :
electronSCE_[EGCO_] *
*Entries : 0 : Total Size= 770 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 5 :EGCO.electronSCEta_ :
electronSCEta_[EGCO_] *
*Entries : 0 : Total Size= 782 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 6 :EGCO.electronSCPhi_ :
electronSCPhi_[EGCO_] *
*Entries : 0 : Total Size= 782 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 7 :EGCO.electronSCNDigis_ :
electronSCNDigis_[EGCO_] *
*Entries : 0 : Total Size= 800 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 8 :EGCO.electronSCNClus_ :
electronSCNClus_[EGCO_] *
*Entries : 0 : Total Size= 794 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 9 :EGCO.electronTRvhits_ :
electronTRvhits_[EGCO_] *
*Entries : 0 : Total Size= 794 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 10 :EGCO.electronTRlhits_ :
electronTRlhits_[EGCO_] *
*Entries : 0 : Total Size= 794 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 11 :EGCO.electronTRihits_ :
electronTRihits_[EGCO_] *
*Entries : 0 : Total Size= 794 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 12 :EGCO.electronTRinvps_ :
electronTRinvps_[EGCO_] *
*Entries : 0 : Total Size= 794 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 13 :EGCO.electronTRdegOfFreedom_ :
electronTRdegOfFreedom_[EGCO_] *
*Entries : 0 : Total Size= 836 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 14 :EGCO.electronTRcharge_ :
electronTRcharge_[EGCO_] *
*Entries : 0 : Total Size= 800 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 15 :EGCO.electronTRtip_ :
electronTRtip_[EGCO_] *
*Entries : 0 : Total Size= 782 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 16 :EGCO.electronTRlip_ :
electronTRlip_[EGCO_] *
*Entries : 0 : Total Size= 782 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 17 :EGCO.electronISiso_ :
electronISiso_[EGCO_] *
*Entries : 0 : Total Size= 782 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 18 :EGCO.electronPXLlines_ :
electronPXLlines_[EGCO_] *
*Entries : 0 : Total Size= 800 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 19 :EGCO.electron_Tr_Pmag_ :
electron_Tr_Pmag_[EGCO_] *
*Entries : 0 : Total Size= 800 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 20 :EGCO.electron_Tr_Peta_ :
electron_Tr_Peta_[EGCO_] *
*Entries : 0 : Total Size= 800 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 21 :EGCO.electron_Tr_Pphi_ :
electron_Tr_Pphi_[EGCO_] *
*Entries : 0 : Total Size= 800 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 22 :EGCO.electron_Tr_Out_Pmag_ :
electron_Tr_Out_Pmag_[EGCO_] *
*Entries : 0 : Total Size= 824 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 23 :EGCO.electron_Tr_Out_Peta_ :
electron_Tr_Out_Peta_[EGCO_] *
*Entries : 0 : Total Size= 824 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 24 :EGCO.electron_Tr_Out_Pphi_ :
electron_Tr_Out_Pphi_[EGCO_] *
*Entries : 0 : Total Size= 824 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 25 :EGCO.electronHoE_ :
electronHoE_[EGCO_] *
*Entries : 0 : Total Size= 770 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 26 :EGCO.electronTRstat_ :
electronTRstat_[EGCO_] *
*Entries : 0 : Total Size= 788 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 27 :EGCO.myCalibrationMap[11][21] :
myCalibrationMap[EGCO_] *
*Entries : 0 : Total Size= 818 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 28 :EGCO.centralCrystalIndex_ :
centralCrystalIndex_[EGCO_] *
*Entries : 0 : Total Size= 818 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 29 :EGCO.centralCrystalEnergy_ :
centralCrystalEnergy_[EGCO_] *
*Entries : 0 : Total Size= 824 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 30 :EGCO.centralCrystalEta_ :
centralCrystalEta_[EGCO_] *
*Entries : 0 : Total Size= 806 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 31 :EGCO.centralCrystalPhi_ :
centralCrystalPhi_[EGCO_] *
*Entries : 0 : Total Size= 806 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
*Br 32 :EGCO.mcEle_ :
mcEle_[EGCO_] *
*Entries : 0 : Total Size= 734 bytes One basket in
memory *
*Baskets : 0 : Basket Size= 64000 bytes Compression=
1.00 *
*............................................................................*
root [1] .q
(p
Pietro Govoni wrote:
> Dear Rene,
>
> thank you very much for your quick answer; please find in
>
> /afs/cern.ch/user/g/govoni/public/TClonesArraySaving.tar.gz
>
> the class code.
>
> pietro
>
>
> On 30 May, 2006, at 15:36, Rene Brun wrote:
>
>> What you do should work. However, you forgot to attach your class (at 
>> least the class header),
>> so it is difficult to come with better diagnostics.
>>
>> Rene Brun
>>
>> Pietro Govoni wrote:
>>> dear Rooters,
>>>
>>> I am trying to save a TClonesArray in a TTree in the following way:
>>>
>>> CalibTree::CalibTree (const std::string & fileName,
>>>                       const std::string & treeName):
>>>   m_file (0), m_tree (0), m_data (0), m_dataSize (0)
>>> {
>>>   TDirectory *dir = gDirectory;
>>>   m_file = new TFile (fileName.c_str (),"RECREATE") ;
>>>   m_file->cd () ;
>>>   m_tree = new TTree (treeName.c_str(),"Analysis tree") ;
>>>   m_tree->SetAutoSave (10000000) ;
>>>   dir->cd();
>>>
>>> //  m_tree->cd () ;
>>>   m_data = new TClonesArray (TRootCalibObj::Class(), 1) ;
>>>   m_data->ExpandCreateFast (1) ;
>>>
>>>   m_tree->Branch ("EGCO", &m_data, 64000, 2) ;
>>>   m_tree->Print () ;
>>> }
>>>
>>>
>>> The content of the TClonesArray, that is a TRootCalibObj, inherits 
>>> from a TObject.
>>> As far as I understood, I would expect the TTree to be filled by a 
>>> set of branches, each of them corresponding to a variable of the 
>>> TRootCalibObj.
>>> Nevertheless, the Print () of the Tree only gives as output:
>>>
>>> Warning in <TTree::Bronch>: Using split mode on a class: TObject 
>>> with a custom Streamer
>>> ****************************************************************************** 
>>>
>>> *Tree    :Analysis  : Analysis 
>>> tree                                          *
>>> *Entries :        0 : Total =            2591 bytes  File  Size 
>>> =          0 *
>>> *        :          : Tree compression factor =   
>>> 1.00                       *
>>> ****************************************************************************** 
>>>
>>> *Br    0 :EGCO      : 
>>> EGCO_                                                  *
>>> *Entries :        0 : Total  Size=       2726 bytes  One basket in 
>>> memory    *
>>> *Baskets :        0 : Basket Size=      64000 bytes  Compression=   
>>> 1.00     *
>>> *............................................................................* 
>>>
>>> *Br    1 :EGCO.fUniqueID : 
>>> fUniqueID[EGCO_]                                  *
>>> *Entries :        0 : Total  Size=        766 bytes  One basket in 
>>> memory    *
>>> *Baskets :        0 : Basket Size=      64000 bytes  Compression=   
>>> 1.00     *
>>> *............................................................................* 
>>>
>>> *Br    2 :EGCO.fBits : 
>>> fBits[EGCO_]                                          *
>>> *Entries :        0 : Total  Size=        742 bytes  One basket in 
>>> memory    *
>>> *Baskets :        0 : Basket Size=      64000 bytes  Compression=   
>>> 1.00     *
>>> *............................................................................* 
>>>
>>>
>>>
>>> What I am missing?
>>>
>>>
>>> Thank you very much,
>>>
>>> pietro
>
Received on Tue May 30 2006 - 16:44:12 MEST

This archive was generated by hypermail 2.2.0 : Mon Jan 01 2007 - 16:31:58 MET