[ROOT] problem with TTree::Print in 3.10/02

From: Robert Michaels (rom@jlab.org)
Date: Wed Apr 14 2004 - 02:17:42 MEST


Using ROOT 3.10/02 compiled with gcc 3.2.3 on a RHEL 3WS.
The following example illustrates my problem.  It is minor
but I am wondering why this occured for this newer version
of root ?  For some earlier versions of root it was not a 
problem.  Is it a new bug ?

thanks
Robert Michaels
Jefferson Lab


{
// This macro:  tsimple.C
//
// Why in this example must I have "R" instead 
// of "right" as the 1st argument of TTree ?
//   right->Print`()   fails
// but if I replace "right" by "R", then
//   R->Print()  succeeds

// This problem occurs on a RH enterprise 3WS
// with ROOT version 3.10/02  compiled with gcc 3.2.3
// kernel 2.4.21-9.0.1.EL 
//
// Most relevant is ROOT version, since 3.05/07
// compiled with same compiler on same system 
// right->Print()  works fine.
// Some earlier versions also work (3.02/07, 3.03/06).


  gROOT->Reset();

  Double_t px, py, ev, bb;
  Int_t kout = 5000;

  TFile *hfile = new TFile("t.root","RECREATE","Demo");
  
// The following works ok -- can do "R->Print()"
//  TTree *tree = new TTree("R","simple tree");

// But this does not work:
   TTree *tree = new TTree("right","simple tree");

// Failure:
// root [0] .x tsimple.C
// root [1] right->Print()
//Error: non class,struct,union object right used with . or -> FILE:(tmpfile) LINE:1
//*** Interpreter error recovered ***
// So you must:
// root [2] TTree *R = (TTree*)gROOT.FindObject("right")
// root [3] R->Print()
// (no error now)


  tree->Branch("px",&px,"px/D",kout);
  tree->Branch("py",&py,"py/D",kout);
  tree->Branch("ev",&ev,"ev/D",kout);
  tree->Branch("bb",&bb,"bb/D",kout);

  
// Fill tree randomly
  gRandom->SetSeed();

  for (Int_t i = 0; i < 5000; i++) {
     gRandom->Rannor(px,py);
     ev = ev+1;
     bb = 40*ev+1000;
     tree->Fill();
  }

  tree->Write();

}



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET