Hi,
I am trying to write some STL vectors in a Tree. Apparently this should be
easy, however it does not work for me. I tried to find some examples but
I could only find quite an old one:
http://root.cern.ch/cgi-bin/print_hit_bold.pl/root/roottalk/roottalk99/2746.html
I tried to remplement it as enclosed here; it seems to write the tree
correctly, but when I read it back the vector size is always 0...
I tried to play with split level, Bronch instead that Branch, etc., with
no luck.
I am using 3.03.07.
What I do wrong? Is there any simple example to do something
similar?
Thanks!
Nicola
//------------------file EventSTL.h
#include "TObject.h"
#include <vector>
class EventSTL : public TObject
{
public:
EventSTL();
virtual ~EventSTL();
void Electron(Double_t x);
void VI();
void Clear();
vector<Double_t> A;
ClassDef(EventSTL,1)
};
//------------------file EventSTL.cxx
#include "EventSTL.h"
ClassImp(EventSTL)
EventSTL::EventSTL() {}
EventSTL::~EventSTL() {}
void EventSTL::Electron(Double_t x)
{
A.push_back(x);
}
void EventSTL::Clear()
{
A.clear();
}
void EventSTL::VI()
{
cout << "Size: " << A.size() << " - Contents : " ;
for (Int_t i=0;i<A.size();i++)
{
cout << " " << A[i];
}
cout << endl;
}
//------------------file myLinkDef.h
#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ class EventSTL;
#endif
//------------------file STLW.C
//
{
gSystem->Load("EventSTL.so");
TFile myfile("STL.root","RECREATE","TTree Dynamic ROOT file");
EventSTL *CC = new EventSTL;
TTree *mytree = new TTree("T","My tree");
mytree->Branch("abc","EventSTL",&CC,16000,0);
for (Int_t i=0;i<20;++i) {
for (Int_t j=0;j<i;++j) {
CC->Electron(i);
}
mytree->Fill();
CC->VI();
CC->Clear();
}
mytree->Write();
mytree->Print();
}
//------------------file STLr.C
//
{
gSystem->Load("EventSTL.so");
TFile myfile("STL.root");
EventSTL *CC = 0;
TTree *T = (TTree*)myfile.Get("T");
T->SetBranchAddress("abc",&CC);
T->Print();
T->GetEntry(15);
CC->VI();
}
-----------------------------------
Nicola Amapane []=-
INFN +39-011-6707374 // _-=__-=
CERN +41-22-7671519 _/|] ) ___ \
Mobile/SMS +39-(0)3471411410 (_) \___/_(___)_|
mailto:nicola.amapane@cern.ch @ @
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:05 MET