Dynamic tree

From: Maurizio Ungaro (ungaro@maurizio.phys.rpi.edu)
Date: Sat Nov 20 1999 - 00:13:08 MET


Hi Rene,
thanks to your help I manage to write the code,
but here's a question I think can be of interest 
for everybody: I want a dynamic tree, id est I tried the following
code, which compiled and run but doesn't fill the tree.


//--------------------------A.h
#include "TObject.h"
#include <vector>

class Clas_event : public TObject 
{
 public:
 Clas_event();
 virtual ~Clas_event();
 Electron(Double_t x);
 VI();
 Clear();
 vector<double> A;           <<----------------- lenght if elements may vary
 ClassDef(Clas_event,1) 
};


//------------------------A.cxx
#include "A.h"

ClassImp(Clas_event)

Clas_event::Clas_event() {}
Clas_event::~Clas_event() {}
Clas_event::Electron(Double_t x) 
{
 A.push_back(x);            <<----------------- Here I put stuff in A
}

Clas_event::Clear() 
{
 A.clear();                 <<----------------- Remove from memory A
}

Clas_event::VI()            <<----------------- This to see A while the
                                                code is running. I'm
						seeing the right things 
{
 cout << "Size: " << A.size() << " - Contents : " ;
 for (Int_t i=0;i<A.size();i++)
  {
   cout << " " << A[i];
  }
 cout << endl;
}


//-----------------------AMain.cxx
#include <iostream>
using namespace std;

#include "TROOT.h"
#include "TFile.h"
#include "TObject.h"
#include "TTree.h"
#include "TBranch.h"
#include "A.h"


Clas_event *CC = new Clas_event;

TROOT Mauri("Bos_to_Root","Bos Banks to Root file conversion");
 
main()
{

TFile *myfile;
myfile = new TFile("file.root","RECREATE","TTree Dynamic ROOT file");

TTree *mytree = new TTree("T","My tree");
mytree->Branch("abcBranch","Clas_event",&CC);

for (Int_t i=0;i<10;++i)
{
 for (Int_t j=0;j<i;++j)
 {
  CC->Electron(i);
 } 
  mytree->Fill(); 
  CC->VI();
  CC->Clear();
}
 
mytree->Write();
mytree->Print();

return 0;

}


Mauri



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