Hi,
So I try to compile the attached "test.cc". If I do not comment out those
"ClassDef(FitEvent,1)", I got an error:
/tmp/cc3seyVF.o: In function `SmdPeak::SmdPeak(void)':
/home/yqwang/working/K0-short/test.cc:14: undefined reference to `FitEvent
virtual table'
collect2: ld returned 1 exit status
gmake: *** [test] Error 1
If I comment out "ClassDef(FitEvent,1)", compilation is successful.
However, when I run the program, I will get this error:
Error in <TTree::Bronch>: Cannot find class:FitEvent
and I will not get the branch in the root file.
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