Thanks guys! I was trying to avoid using class. Guess it is time to grow over pure C. Yiqun Wang > Don't use typedefs, like in your original example, plain structs like > this should work too (struct is an all public class in c++): > > struct SmdPeak { > Float_t peakPos; > Float_t peakEnerg; > Float_t sigmaPeak; > Int_t corSimuPeak; > bool used; > > SmdPeak() {} > > ClassDef (SmdPeak,1) > }; > > > -- Fons > > > On Thu, 2002-11-21 at 16:25, Rene Brun wrote: >> Hi, >> >> Create classes instead of struct as shown below >> >> Rene Brun >> >> >> #include "TTree.h" >> #include "TFile.h" >> #include "TRandom.h" >> >> class SmdPeak { >> >> public: >> Float_t peakPos; >> Float_t peakEnerg; >> Float_t sigmaPeak; >> Int_t corSimuPeak; >> bool used; >> >> SmdPeak() {} >> >> ClassDef (SmdPeak,1) >> }; >> >> class FitEvent { >> >> public: >> UInt_t runnumber; >> Int_t event; >> Int_t numbXPeaks; >> Int_t numbYPeaks; >> Float_t tower[4][3]; >> Float_t smdX[61]; >> Float_t smdY[101]; >> SmdPeak xPeak[4]; >> >> ClassDef(FitEvent,1) >> }; >> >> void struct2() >> { >> TFile f("struct.root","recreate"); >> TTree T("T","test struct"); >> FitEvent *event = new FitEvent; >> >> T.Branch("first","FitEvent",&event); >> for (Int_t i=0;i<1000;i++) { >> event->event = i; >> event->runnumber = (UInt_t)(100*gRandom->Rndm()); >> //for (Int_t j=0;j<event.count;j++) event.meas[j] = i+j; >> T.Fill(); >> } >> T.Print(); >> T.Show(45); >> T.Write(); >> } >> >> >> On Wed, 20 Nov 2002, Yiqun Wang wrote: >> >> > Hi, >> > >> > Is there a way to create a branch that is an array of C structure? >> The online reference on >> > >> > TBranch(const char *name, void *address, const char *leaflist, Int_t >> basketsize, Int_t compress) :TNamed(name,leaflist) >> > >> > only talked about a C structure branch. >> > >> > My header file is like this: >> > >> > >> > typedef struct{ >> > Float_t peakPos; >> > Float_t peakEnerg; >> > Float_t sigmaPeak; >> > Int_t corSimuPeak; >> > bool used; >> > } SmdPeak; >> > >> > typedef struct{ >> > >> > UInt_t runnumber; >> > Int_t event; >> > Int_t numbXPeaks; >> > Int_t numbYPeaks; >> > Float_t tower[4][3]; >> > Float_t smdX[61]; >> > Float_t smdY[101]; >> > SmdPeak xPeak[4]; >> > SmdPeak xPeak[4]; >> > } FitEvent; >> > >> > >> > > -- > Org: CERN, European Laboratory for Particle Physics. > Mail: 1211 Geneve 23, Switzerland > E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 WWW: > http://root.cern.ch/~rdm/ Fax: +41 22 7679480
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:20 MET