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