Hi Norbert, TClonesArray assumes that the objects in the array have the same length (clones). You should put a TNamed object there. Replace your derivation from TNamed by TObject. In general TClonesArray are used when you deal with a large number of small physics objects. I have doubts that you want to give a name to each of these objects. Rene Brun On Tue, 13 Apr 1999, Norbert Danneberg wrote: > Hi Rooters, > > when I try to store a named object derived from TNamed in TTree and > write this > Tree to disk, I do not receive the name of the object when I try to read > it back. > All other member variables are read in correctly. > > Below is the slightly modified Event sample from the /test directory. > > I changed Track so that it is derived from TNamed. > > class Track : public TNamed { > > private: > Float_t fPx; //X component of the momentum > Float_t fPy; //Y component of the momentum > Float_t fPz; //Z component of the momentum > .... > } > > During filling a name to each Track is assigned in MainEvent.cxx: > > // Create and Fill the Track objects > for (Int_t t = 0; t < ntrack; t++){ > event->AddTrack(random); > Track* MyTrack = (Track*)event->GetTracks()->At(t); // Added Code > MyTrack->SetName("N"); //Added Code > > } > > I check after filling if the Name is set correctly: > > if (write) nb += tree->Fill(); //fill the tree > > Track* MyTrack = (Track*)event->GetTracks()->At(0); > printf("%s\n",MyTrack->GetName()); > > this gives the correct Name. > > But the following testmacro gives empty names for all Track Objects: > > { > gROOT->Reset(); > f1 = new TFile("Event.root"); > Event* ev=new Event(); > T->SetBranchAddress("event",&ev); > T->SetBranchStatus("*",1); > > for(Int_t i=0;i<1;i++){ > T->GetEvent(i); > TClonesArray* TrackList = ev->GetTracks(); > Track* MyTrack = (Track*)TrackList->At(0); > MyTrack->Inspect(); > > printf("%s\n",MyTrack->GetName()); > } > } > > I am sorry but I do not have a clue whats wrong ?? > > > Thanks, Norbert > > > > -- > > Norbert Danneberg > > ETH Zurich - Institute for Particle Physics > Laboratory for Nuclear Physics Phone.: +41-1-633-2034 > Hoenggerberg Fax.: +41-1-633-1067 > CH-8093 Zurich > > > ETH Zurich - Institute for Particle Physics > Paul Scherrer Institute Phone.: +41-56-310-3284 > CH-5232 Villigen PSI Fax.: +41-56-310-4362 > > email: Norbert.Danneberg@psi.ch > >
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:31 MET