Dear Philippe Thank you for your explanation. The reason why I am asking is that I have a couple of simple objects like MyData, which represent my data to be stored in different branches of a tree. However, when I store 100,000 entries in this way in many trees there is a huge memory overhead because of the inherited object members fUniqueID and fBits, which are then stored 100,000 times with each branch. Is this correct, or does compression level=1 eliminate this overhead? Best regards Christian Philippe Canal wrote: > Hi Christian, > > Saving any objects in a TTree requires that you have a compiled version of the class. We do not support the case where the class in interpreted. Hence your > macro can only work when compiled with ACLiC. > > The advantage is derived from TObject is that you inherit some of the tools provided by the TObject interface (like Dump). You also can store them > in ROOT Collection (in particular only TObjects can be stored in TClonesArray). > > >>a, Interestingly, only the first call to CreateTrees() gives an >>error message, but not the second call. > > > Because the error message is issed at the time of the creation of > the TClass object describing your class (hence only once). > > >>b, It is not clear to me why CINT can only set the first two >>branch addresses and than crashes? > > > There are missing protection in this case. We will try to improve > the situation. > > Cheers, > Philippe. > > > -----Original Message----- > From: owner-roottalk@pcroot.cern.ch > [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of cstrato > Sent: Sunday, April 25, 2004 7:54 AM > To: roottalk@pcroot.cern.ch > Subject: [ROOT] Branches with objects and tree friends > > > Dear Rooters > > 1) First, I have a question regarding branches with objects, e.g. > tree->Branch("MyBranch", "MyData", &data, 64000, 99); > > where MyData is defined as: > > class MyData { > //class MyData: public TObject { > protected: > Int_t fID; > Double_t fX; > public: > MyData() {} > virtual ~MyData() {} > }; > > With the old branch style, MyData must derive from TObject, but > this is no longer necessary. My question is: > Are there still advantages to derive MyClass from TObject? > Under which circumstances would you derive an object from TObject? > > 2) The enclosed macro "macroFriends.C" works fine when compiled > with ACLiC, but with CINT I get the following output: > root [0] .x macroFriends.C > ------MyClass::MyClass------ > ------MyClass::CreateTrees------ > Error in <TClass::BuildRealData>: can not find any ShowMembers function > for MyData! > ------MyClass::CreateTrees------ > ------MyClass::AddTree------ > ------MyClass::AddTree------ > ------MyClass::AddTree------ > ------MyClass::AddTree------ > ------MyClass::AddTree------ > ------MyClass::AddTree------ > ------MyClass::AddTree------ > ------MyClass::AddTree------ > ------MyClass::CopyTrees1------ > nfriends(fTree) = 7 > nentries(fTree) = 100 > treej[0] = TreeX0 > treej[1] = TreeX1 > treej[2] = TreeX2 > > *** Break *** bus error > Root > Function macroFriends() busy flag cleared > Function CopyTrees1() busy flag cleared > > a, Interestingly, only the first call to CreateTrees() gives an > error message, but not the second call. > > b, It is not clear to me why CINT can only set the first two > branch addresses and than crashes? > > My system: root 4.00/03 from 26 March 2004 on MacOS X 10.3.1 > > Thank you in advance for your help. > > Best regards > Christian > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- > C.h.r.i.s.t.i.a.n. .S.t.r.a.t.o.w.a > V.i.e.n.n.a. .A.u.s.t.r.i.a > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- > > >
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET