Hi Anthony, If the only thing you want to do is to sort histograms, you do not need to create a derived class from TH1F. The following macro is a short example. Rene Brun //example of macro illustrating how to sort histograms by their bin contents void hsort() { //create 100 histograms and fill them with a gaus distribution const Int_t nh = 100; TH1F *h[nh]; Int_t i,j; char name[8]; for (i=0;i<nh;i++) { sprintf(name,"h%d",i); h[i] = new TH1F(name,"",100,-4,4); for (j=0;j<10000;j++) h[i]->Fill(gRandom->Gaus(0,1)); } //get maximum of each histogram into a local array Float_t hmax[nh]; for (i=0;i<nh;i++) hmax[i] = h[i]->GetMaximum(); //sort histograms. Store in a TObjArray Int_t index[nh]; TMath::Sort(nh,hmax,index); TObjArray *hlist = new TObjArray(nh); //will contain sorted histograms for (i=0;i<nh;i++) { printf("i=%d, index=%d, max=%f\n",i,index[i],hmax[index[i]]); hlist->Add(h[i]); } } Anthony Faust wrote: > > Hello > > I have defined a sortable histogram class, derived from TH1F, which will > sort based on the maximum bin content. My first try at writing the IsEqual and > Compare functions are as follows > > Bool_t TH1Fs::IsEqual(TObject *obj) > { > Float_t a = GetMaximum(); > Float_t b = ((TH1F*)obj)->GetMaximum(); > return ( a == b ) ; > } > > Int_t TH1Fs::Compare(TObject* obj) > { > Float_t a = TH1F::GetMaximum(); > Float_t b = ((TH1F*)obj)->GetMaximum(); > return ( (a == b) ? 0 : ( (a > b) ? 1 : -1 ) ) ; > } > > I then load up a TObjArray with TH1Fs objects and call the Sort function, but > it crashes in IsEqual when it tries to call > > Float_t b = ((TH1F*)obj)->GetMaximum(); > > The cast seems to match the one in define in TObjNum of > http://root.cern.ch/root/html/examples/tcollex.C.html, except the example > referenced a data member and did not call a function. > > What am I missing? Thanks for any help. > > _____________ > Dr. Anthony A. Faust | Anthony.Faust@dres.dnd.ca > Defence Research Establishment Suffield | PH: (403) 544-5362 > Box 4000, Medicine Hat, Alberta, CANADA T1A 8K6 | FAX: (403) 544-4704
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:44 MET