Hi Fred,
With your logic, you must have an infinite loop.
Note that you get a different result with
gPad->cd(Current_Pad++);
or
gPad->cd(++Current_Pad);
In your case, you should always use gPad->cd(++Current_Pad) (increment before
the call and not after !).
Rene Brun
Frederic Sarazin wrote:
>
> Hello,
>
> I'm looking for the method which would give me the number of
> subpads which are attached to a given pad...
>
> I tried:
>
> TCanvas* Current = gPad->GetCanvas(); (From this I get a pointer to the
> Canvas in which my gPad is)
>
> then:
>
> int_t Total_Number_of_Pads = ((TList*)
> Current->GetListOfPrimitives())->GetSize();
>
> This happen to give me a number which is actually the number of pads
> attached to the canvas... however, when
> I take a random Pad in this canvas and divide it into subpads (lets say
> 4 = (2,2)) and with the following
> recursive program I try to put all of the 1D spectra in a LinY scale:
>
> Linyall()
> {
>
> // Auto Lin in Y direction for all Pads belonging
> // to the canvas in which gPad is active
>
> Int_t Current_Pad = 0, Pads = 0;
> TCanvas* Current = gPad->GetCanvas();
> Int_t Pad_Number = gPad->GetNumber();
>
> Pads = ((TList*) Current->GetListOfPrimitives())->GetSize();
> Current->cd(Current_Pad);
>
> if (Pads==0)
> {
> gPad->SetLogy(0);
> gPad->Modified();
> }
> else gPad->cd(Current_Pad++);
>
> while (Pads>0)
> {
> Pads = 0 ;
> Pads = ((TList*) gPad->GetListOfPrimitives())->GetSize();
> if (Pads==0)
> {
> gPad->SetLogy(0);
> gPad->Modified();
> }
>
> else
> {
> Current_Pad=0;
> gPad->cd(Current_Pad++);
> }
> }
>
> Current->cd(Pad_Number);
> gPad->Modified();
> }
>
> The program seems to loop endlessly, the reason is in fact that the
> command:
>
> Pads = ((TList*) gPad->GetListOfPrimitives())->GetSize();
>
> doesn't give the number of Subpads in the Pads anymore... So, I
> suspect there is
> a method that I missed which return the number of SubPads into a given
> Pad.
>
> Thanks for any help !
>
> Fred (TRIUMF - Canada)
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:41 MET