[ROOT] string in tree

From: Nicolas Produit (Nicolas.Produit@obs.unige.ch)
Date: Thu Mar 27 2003 - 11:44:27 MET


Hi,

I try to have a tree with some string members.
According to the doc the "/C" is used for that.
But it is not clear to me how exactly to use it.
I have tried many variations around following code all without success:

#include "TFile.h"
#include "TTree.h"

main(int argc, char **argv){
    TFile hfile("htree.root","RECREATE","Test for char");

    typedef struct {
      Float_t x,y,z;
      Char_t c[4];
      Float_t t;
    } POINT;
    static POINT point;

    TTree *tree = new TTree("T","Bla");
    tree->Branch("tree",&point,"x/F:y/F:z/F:c/C4:t/F");

    for ( Int_t i=1; i<10; i++) {
      point.x = i;
      point.y = 5*i;
      point.z = 20*i;
      point.t = 100*i;
      sprintf(point.c,"bl%d",i);
      tree->Fill();
    }
    tree->Print();
    hfile.Write();
    hfile.Close();

    return 0;
}

Compiling it then
Running it gives:
isdcpc7:~/investigate 213> ./a.out 
 
******************************************************************************
*Tree    :T         : Bla 
      *
*Entries :        9 : Total =           13113 bytes  File  Size = 
    0 *
*        :          : Tree compression factor =   1.00 
      *
******************************************************************************
*Br    0 :tree      : x/F:y/F:z/F:c/C4:t/F 
      *
*Entries :        9 : Total  Size=      12883 bytes  File Size  = 
    0 *
*Baskets :        0 : Basket Size=      32000 bytes  Compression=   1.00 
     *
*............................................................................*

But then:
isdcpc7:~/investigate 214> root 
 
*******************************************
   *                                         *
   *        W E L C O M E  to  R O O T       *
   *                                         *
   *   Version   3.04/02      5 March 2003   *
   *                                         *
   *  You are welcome to visit our Web site  *
   *          http://root.cern.ch            *
   *                                         *
   *******************************************

Compiled for linux with thread support.

CINT/ROOT C/C++ Interpreter version 5.15.68, Dec 12 2002
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] a = new TFile("htree.root")
(class TFile*)0x875a220
root [1] T->Scan()
************************************************************************
*    Row   *         x *         y *         z *         c *         t *
************************************************************************
*        0 *         1 *         5 *        20 *       bl1 * 1.772e-41 *
*        1 *         2 *        10 *        40 *       bl2 * 1.808e-41 *
*        2 *         3 *        15 *        60 *       bl3 *  1.84e-41 *
*        3 *         4 *        20 *        80 *       bl4 * 1.880e-41 *
*        4 *         5 *        25 *       100 *       bl5 * 1.916e-41 *
*        5 *         6 *        30 *       120 *       bl6 * 1.952e-41 *
*        6 *         7 *        35 *       140 *       bl7 * 1.988e-41 *
*        7 *         8 *        40 *       160 *       bl8 *  2.02e-41 *
*        8 *         9 *        45 *       180 *       bl9 * 2.059e-41 *
************************************************************************
(Int_t)9



-- 
Nicolas Produit
INTEGRAL Science Data Center    Phone:  +41 22 950 91 40
16, Chemin d'Ecogia             Fax:    +41 22 950 91 33
CH-1290 Versoix                 www:    http://isdc.unige.ch/



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET