Dear ROOTers, I have stumbled upon a ROOT behavior that I don't understand. Here's the story -- I've got a TTree (acutally a TChain of TTrees, but that shouldn't make a difference), and I've used MakeClass to get some skeleton code. In the .h file, I declare what I believe are arrays of pointers to histograms, such as: TH1F* hnh[48]; Then, in the Loop() method, I actually create the histograms: for (int i = 0; i < 48; i++) { ostringstream hid,htit; hid << "hnh" << i; htit << "Nhits for wedge " << i; hnh[i] = new TH1F(hid.str().c_str(),htit.str().c_str(),5,-0.5,4.5); hnh[i]->Print(); } With the Print() there, I can see that I successfully create the histogram. When I execute Loop(), I see TH1.Print Name= hnh0, Entries= 0, Total sum= 0 TH1.Print Name= hnh1, Entries= 0, Total sum= 0 TH1.Print Name= hnh2, Entries= 0, Total sum= 0 ... and thus I think I'm happy. Then I start looping over the entries of the tree, and I get into trouble -- the TH1F* pointers seem to forget that they are pointing to histograms! I keep putting in hnh[0]->Print() statements to check on things, and I see that as soon as I call LoadTree(0), the print statement returns OBJ: TObject TObject Basic ROOT object and thus I'm screwed. And it's not that all of my pointers come back as TObject; some just seg fault when I try to print. It sounds to me like there is weird memory corruption going on. For what it is worth, I am pre-compiling the class (via .L MyClass.C+), and I'm in ROOT version 3.02/07 which, if I understand things, also has KCC v4.0 compiled in. Can someone explain what is going wrong here, and how I can get out of it? Am I making a C++ mistake in my handling of arrays of pointers (I don't believe so), or am I making a ROOT mistake. Thanks, best wishes. Ken ------------------------------------------------------------------------------ Ken Bloom, Karma Adjuster Department of Physics 734-763-2329 / 734-936-1817 (fax) University of Michigan kenbloom@umich.edu http://www.umich.edu/~kenbloom
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:56 MET