Hi Nicola,
Simply replace the line in LinkDef.h
#pragma link C++ class EventSTL;
by
#pragma link C++ class EventSTL+;
Rene Brun
On Wed, 21 Aug 2002, Nicola Amapane wrote:
>
> 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