Hi Jiri,
Yes, MakeCode is an obsolete function. One should used MakeClass
or MakeSelector instead.
In the development version, I have added a Warning message when calling
the MakeCode function.
Rene Brun
Jiri Bystricky wrote:
>
> The following script Test.C shows a problem in
> TTree::MakeCode, which is correctly treated in
> TTree::MakeClass.
> {
> gROOT->Reset();
> TFile f("TestFile.root","recreate");
> TTree * ntuple= new TTree("Test","test MakeCode");
> Int_t NN[] = {1,2};
> cout << ">>> Input values NN[0]="<<NN[0]<<" NN[1]="<<NN[1]<<endl;
> ntuple->Branch("TwoInt",NN,"n1/I:n2/I");
> ntuple->Fill();
> ntuple->Write();
> ntuple->MakeCode("TestCode.C");
> ntuple->MakeClass("TestClass");
> gROOT->ProcessLine(".x TestCode.C");
> Test->Show(0);
> Test->GetEntry(0);
> cout << ">>> MakeCode test n1="<<TwoInt_n1<<" n2="<<TwoInt_n2<<endl;
> gROOT->ProcessLine(".L TestClass.C");
> TestClass t;
> t.Show(0);
> t.GetEntry(0);
> cout << ">>> MakeClass test n1="<<t.TwoInt_n1<<" n2="<<t.TwoInt_n2<<endl;
> }
> The ouput is
>
> root [0] .x Test.C
> >>> Input values NN[0]=1 NN[1]=2
> Macro: TestCode.C generated from Tree: Test
> Files: TestClass.h and TestClass.C generated from Tree: Test
> ======> EVENT:0
> n1 = 1
> n2 = 2
> >>> MakeCode test n1=0 n2=1
> ======> EVENT:0
> n1 = 1
> n2 = 2
> >>> MakeClass test n1=1 n2=2
>
> The TestCode.C behaviour is explained by two lines
> in the generated code:
> Test->SetBranchAddress("TwoInt",&TwoInt_n1);
> Test->SetBranchAddress("TwoInt",&TwoInt_n2);
>
> Is MakeCode considered as obsolete and should not be used?
>
> Jiri
> P.S. May ROOT version is 3.01/06 on OSF1 system.
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:03 MET