Re: 2D hists: slices, bands and projections

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Feb 29 2000 - 18:55:02 MET


Dear Pasha,
Thanks for stating your level of ignorance and design capabilities ::)
Your point is perfectly valid. Last week, in a reply to Vincent, I 
mentionned our intention to restructure the histogram class hierarchy.
We know how to do it in a backward compatible way. The sketch below is
just to give a rough indication of what we are planning.
 - delete the existing classes TH2 and TH3
 - Add new classes TH2 and TH3 to support the following inheritance tree

                          TH1
                           ^
                           |
                           |
                           |
   -----------------------------------------------------
          |                |       |      |      |     |
          |                |      TH1C   TH1S   TH1F  TH1D
          |                |
          |                |
          |               TH2
          |                |
          |                |
          |                ------------------------------
          |                        |      |      |      |
          |                       TH2C   TH2S   TH2F   TH2D
          |
         TH3
          |
          |
          ------------------------------
                  |      |      |      |
                 TH3C   TH3S   TH3F   TH3D

 The functions Projection, etc will be moved to TH2 or TH3

Rene Brun

Pasha Murat (630)840-8237 FNAL (630)859-3463 home wrote:
> 
> Dear Rene,
> 
> sorry for being so ignorant - bring my deep apologies. Just as an excuse:
> I'd never guessed to search for a method filling the slices in Y inside
> 1D histogram class. May be I'm relying on my inuition too much, but
> intuitively Y-slice seems to be something which generic 1D hist doesn't have.
> This caused my confusion. Let me ask one question: may be it is a matter of
> me not being a very good designer, but do you think is it right for 1D
> histogram class to have methods like ProfileY(), even if they don't do
> anything?
>                                                 thanks, Pasha
> Rene Brun wrote:
> >
> > Dear Pasha,
> >
> > I am surprised by your question. Root supports ALL projections, bands,
> > slices facilities of Hbook and many more. Did you look at the TH1 specs
> > ?
> > You will find:
> >
> >     virtual void     FitSlicesX(TF1 *f1=0,Int_t binmin=1, Int_t
> > binmax=0,
> >                                 Int_t cut=0 ,Option_t *option="QNR");
> >     virtual void     FitSlicesY(TF1 *f1=0,Int_t binmin=1, Int_t
> > binmax=0,
> >                                 Int_t cut=0 ,Option_t *option="QNR");
> >     virtual void     FitSlicesZ(TF1 *f1=0,Int_t binminx=1, Int_t
> > binmaxx=0,
> >                                 Int_t binminy=1, Int_t binmaxy=0,
> >                                 Int_t cut=0 ,Option_t *option="QNR");
> >     virtual Stat_t   Integral();
> >     virtual Stat_t   Integral(Int_t binx1, Int_t binx2);
> >     virtual Stat_t   Integral(Int_t binx1, Int_t binx2, Int_t biny1,
> >                               Int_t biny2);
> >     virtual Stat_t   Integral(Int_t binx1, Int_t binx2, Int_t biny1,
> >                               Int_t biny2, Int_t binz1, Int_t binz2);
> >         TProfile    *ProfileX(const char *name="_pfx", Int_t
> > firstybin=0,
> >                               Int_t lastybin=9999, Option_t *option="");
> >         TProfile    *ProfileY(const char *name="_pfy", Int_t
> > firstxbin=0,
> >                               Int_t lastxbin=9999, Option_t *option="");
> >             TH1D    *ProjectionX(const char *name="_px", Int_t
> > firstybin=0,                                    Int_t lastybin=9999,
> > Option_t *option="");
> >             TH1D    *ProjectionY(const char *name="_py", Int_t
> > firstxbin=0,                                    Int_t lastxbin=9999,
> > Option_t *option="");
> >             TH1D    *ProjectionZ(const char *name="_pz", Int_t
> > firstxbin=0,                                    Int_t lastxbin=9999,
> > Int_t firstybin=0,
> >                                  Int_t lastybin=9999, Option_t
> > *option="");
> >             TH1     *Project3D(Option_t *option="x");
> >
> > In addition, the Root functions work from an existing 2-d or 3-d
> > histograms.
> > No need to prebook the projections, slices, etc as it was the case for
> > Hbook.
> >
> > Rene Brun
> > Pasha Murat (630)840-8237@169G wrote:
> > >
> > > Hi Rooters,
> > >
> > > in old good days of HBOOK 2D histograms had a set of nice facilities of
> > > slices, banks and projections which were extremely handy for analysis.
> > > I'm thinking if it is worth having the equivalent functionality in ROOT
> > > classes - it is certainly true that everybody can easily implement such
> > > macros for himself, but wouldn't it be nice to have a common set of such
> > > utilities ?
> > >                                                 thanks, Pasha



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:20 MET