Hi Damir, in new TH1 class no method SetPainter(TVirtualHistPainter *userPainter); If Rene & Fons will add it, then you can create your painter object derived from TVirtualHistPainter and set it to histogram. As a temporary solution you can use the following "barbaric" function to add your method to histogram. When rene will add SetPainter to TH1 then you can remove it. void SetPainter(TH1 *h,TVirtualHistPainter *p) { TVirtualHistPainter **s = (TVirtualHistPainter **)((int*)h+117); p->SetHistogram(h); *s = p; } Victor "Valeri Fine (Faine)" wrote: > > ----- Original Message ----- > From: Valeri Fine (Faine) <fine@bnl.gov> > To: Damir Buskulic <buskulic@lapp.in2p3.fr>; ROOT mailing list <roottalk@hpsalo.cern.ch> > Subject: Re: painting an object derived from TH1 > > ----- Original Message ----- > From: Damir Buskulic <buskulic@lapp.in2p3.fr> > To: ROOT mailing list <roottalk@hpsalo.cern.ch> > Subject: painting an object derived from TH1 > > > Hi, > > > > with the new library scheme of ROOT, the Painter and Hist are separated. > > I have a class that derives from TH1F, but I would like to paint some > > parts differently, namely the stat box. Before, I was just overloading > > the TH1::PaintStats method. > > How can I do it now ? Do I have to specify a completely different > > painter that I have to rewrite ? I looked a little bit at the code and > > found that the static member fgPainter was holding the class description > > of the current Painter. Since it is static, I cannot change it without > > changing also the painter for regular TH1. > > I suppose I'll just put regular stats off and overlay my own stat box. > > > > Any other ideas ? > > I missed one essential point, one has to add > fPainter->StHistogram(this) ; > statement to get: > > > class TMyHist : public TH1 { > public: > TVirtualHistPainter * Painter(TVirtualHistPainter *myPainter) { > TVirtualHistPainter * old = fPainter; > fPainter = myPainter; > if (fPainter) fPainter->SetHistogram(this) ; > return old; > } > } > > Afterwards you can define your own painter and attach it to your particular > histogram. This way you may use either standard or your own Painter with each > other Update step or for different TPads. > > Another solution: > > class TMyHist : public TH1 { > public: > TVirtualHistPainter * Painter(TVirtualHistPainter *myPainter) { > delete fPainter; fPainter = 0; > if (myPainter) { > fPainter = myPainter; > fPainter->SetHistogram(this) ; > } > return fPainter ; > } > } > > Valery -- Victor M. Perevoztchikov perev@bnl.gov perev@vxcern.cern.ch Brookhaven National Laboratory MS 510A PO Box 5000 Upton NY 11973-5000 tel office : 516-344-7894; fax 516-344-4206; home 516-345-2690
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:41 MET