Re: [ROOT] Number of SubPads in a Pad ?

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Feb 15 2002 - 21:29:57 MET


Hi Fred,

Below a small script computing the number of pads in a pad.

Rene Brun

Int_t countpads(TVirtualPad *pad) {
   //count the number of pads in pad
   if (!pad) return 0;
   Int_t npads = 0;
   TObject *obj;
   TIter next(pad->GetListOfPrimitives());
   while ((obj = next())) {
      if (obj->InheritsFrom(TVirtualPad::Class())) npads++;
   }
   return npads;
}


On Fri, 15 Feb 2002, Frederic Sarazin wrote:

> 
> Dear Rene,
> 
> thanks for the bug, but I still have the problem of getting the number of pads
> attached
> to a subpad. To be maybe more specific, I want to create a spectra viewer and
> make
> a few basic "automatic" command... one of them would be to be able to put all
> the spectra
> displayed in one canvas in a lin or log scale.
> 
> By typing the command:
> 
> Pads = ((TList*) MyCanvas->GetListOfPrimitives())->GetSize();
> 
> I get the number of pads attached to my canvas (at the first level) probably
> because no other objects than pads are attached to the canvas. Now, the
> problem is: when I point to a pad which contains some other objects (that's what
> is
> going to happen when the spectra will be displayed !), the command:
> 
> Pads = ((TList*)  gPad->GetListOfPrimitives())->GetSize();
> 
> would give me the number of objects in the pad, this includes the TPad*
> (if any) but also the TH1F* etc...
> 
> Exemple for one histo with title and stat... but no other subpad:
> 
> root [21] ((TList*) gPad->GetListOfPrimitives())->ls()
> 
> TFrame  X1= -3.000000 Y1=-0.301030 X2=3.000000 Y2=2.739947
> OBJ: TH1F       hi1     Random histo : 0
> TPaveText  X1= -3.675000 Y1=2.911002 X2=-1.950000 Y2=3.101063 title
> TPaveStats  X1= 2.100000 Y1=2.435849 X2=3.600000 Y2=3.044045 stats
> 
> Now for a Pad which contains 2 subpads, 2 histos etc...
> 
> root [22] ((TList*) gPad->GetListOfPrimitives())->ls()
> 
> TPad fXlowNDC=0.01 fYlowNDC=0.01 fWNDC=0.48 fHNDC=0.98 Name= Beta_3_1 Title=
> Beta_3_1 Option=
>  TFrame  X1= -3.000000 Y1=-0.301030 X2=3.000000 Y2=2.739947
>  OBJ: TH1F      hi1     Random histo : 0
>  TPaveText  X1= -3.655610 Y1=2.916956 X2=-1.940148 Y2=3.107686 title
>  TPaveStats  X1= 2.087458 Y1=2.440131 X2=3.579164 Y2=3.050467 stats
> TPad fXlowNDC=0.51 fYlowNDC=0.01 fWNDC=0.48 fHNDC=0.98 Name= Beta_3_2 Title=
> Beta_3_2 Option=
>  TFrame  X1= -3.000000 Y1=0.000000 X2=3.000000 Y2=322.380856
>  OBJ: TH1F      hi1     Random histo : 0
>  TPaveText  X1= -3.675000 Y1=340.514782 X2=-1.950000 Y2=360.663586 title
>  TPaveStats  X1= 2.100000 Y1=290.142780 X2=3.600000 Y2=354.618951 stats
> 
> 
> So, my question is:
> 
> is there a method which allows me to get a "Int_t" telling me how many
> TPad* there is in a given Pad  (0 in the first example and 2 for the second) ?
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:41 MET