On Fri, 14 Sep 2001, Axel Naumann wrote:
> Hi,
>
> which root version are you using,
Version 3.00/06
> what are the error messages
*** Break *** segmentation violation
Root > Function mappa_301_97() busy flag cleared
Function destroy() busy flag cleared
Function destroy() busy flag cleared
Function insert_aux() busy flag cleared
Function push_back() busy flag cleared
>and does TTrack derive from TObject,
OPS! No... I thought that TObject inheriting was compulsory
only if I used ROOT Containers, not the STL ones!!!!!
> where does it crash (exact line)
It doesn't go further
ve.push_back(tr);
> could you check wether the "tr" is filled correctly (with sensible
> data) at least for the first entry?
I use the track, just after the retrieval from the Tree and before trying
to fill the STL vector, so I'm sure it is properly filled!
Thanks & Cheers!
Tommaso
>
> Cheers, Axel.
>
> > -----Original Message-----
> > From: owner-roottalk@pcroot.cern.ch
> > [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Tommaso Chiarusi
> > Sent: Friday, September 14, 2001 11:01 AM
> > To: Root Newsgroup
> > Subject: [ROOT] Problems with CINT and STL
> >
> >
> > Dear Rooters,
> >
> > I have problems as I try to build STL vector containing objects
> > which are related to a compile Classes (libMyClass.so).
> >
> > When I was using the not-compiled class, i.e. the include files,
> > it worked good!!!!!
> >
> > I explain myself better:
> > I have my own class Track.h .
> >
> > I want to build a STL vector of Track objects,
> > so I can do:
> >
> > #include <vector>
> > #include "Track.h" // as header of the ROOT macro
> > ...
> > vector<Track> ve;
> > Track *tr=new Track(0.2,23.2);
> > ve.push_back(tr);
> >
> > THIS PROCEDURE WORKS GOOD!
> >
> > But now I need to retrieve tracks stored in a Tree, so I'm forced to use
> > the compiled class library: I have produced the libTrack.so.
> > Then, omitting the #include "Track.h" , I do:
> >
> > if(!TClassTable::GetDict("Track")){
> > gSystem->Load("mylib/libTrack.so");
> > }
> >
> >
> > vector<Track> ve;
> >
> > I make the usual opening of the Tree and addressing of the Track objects
> >
> > TTree *myTree = (TTree*)file_root->Get("t1");
> > TBranch *myBranch = myTree->GetBranch("tracks");
> >
> > Track *tr = new Track();
> > myBranch->SetAddress(&tr);
> >
> >
> > and get the entries one by one looping over the
> >
> > Int_t nevent = myTree->GetEntries();
> >
> > so:
> > for(Int_t i=0;i<nevent;i++){
> > myBranch->GetEntry(i); // get the track
> > ve.push_back(tr);
> > }
> >
> > THIS FAILS!!!!!
> >
> > What can it be?
> > Is it something related to some Errors in compiling my class?
> >
> >
> > sorry if I disturb you again with a new problem.
> >
> > Thanks and Cheers!
> >
> > Tommaso
> >
> >
>
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:00 MET