Hi Zaldy,
On Tue, 8 Jul 2003, zaldy wrote:
>
> Dear ROOT Experts,
>
> I want to understand how ROOT implemets accessing a specific pad which is
> defined in some class primitives and access at another class methods.
>
> For instance, I have 3 classes A, B, and C.
> Say, A defines all that is necessary for the creation of a Canvases/Pads,
> while B and C have only methods which dump the information to the
> active pad via:
>
> gPad->GetThePadNeeded();
>
> I found this mailing list useful to start with:
> http://root.cern.ch/cgi-bin/print_hit_bold.pl/root/roottalk/roottalk02/4941.html?GetPad#first_hit
>
> IN MY UNDERSTANDING of THESE LINES,
>
> //---------------------------------------------------------------<========
> To access a subpad of a pad, eg subpad 4 of pad with name "p1", do:
> TPad *subpad = (TPad*)pad->GetPrimitive("p1_4");
>
> To access a subpad N of a pad in general, you can do (eg in a loop):
> TPad *subpad=(TPad*)pad->GetPrimitive(Form(%s_%d",pad->GetName(),N));
>
> In the development version in CVS, I have added a new function
> TVirtualPad *TVirtualPad::GetPad(Int_t subpadnumber);
> such that you can do
> TPad *subpad = pad->GetPad(N);
> //-----------------------------------------------------------------<=======
>
> THE USER HAS CREATED A METHOD THAT DIVIDES THE PAD INTO say, 8 pads LIKE:
>
> TheMostWantedPad->Divide(2,4);
> TheMostWantedPad->cd(1);
> ...
> TheMostWantedPad->cd(2);
> ...
> TheMostWantedPad->cd(8);
>
> Then one can access a specific pad, because there is always
> this method:
> TheMostWantedPad->cd(Pad_Number);
>
> THE PAD_NUMBER HERE IS IMPORTATNT AND IS USED TO TIE UP AGAIN THE PREVIOUS
> (say, the 5th pad) PAD OF INTEREST.
>
> Is this correct?
Yes, it is correct.
>
> --------------------------
> What if the user do not use the Divide method (like in the "canvas.C" at
> tutorial section. Just create the pad, then activate it using
> padWhateverName->cd(), without an integer argument as an ID to this Pad)
> ), how do we access say the 5th pad if one wants to dump some data
> coming from another class object?
You can do:
padWhatEvername->SetNumber(someNumber);
then later, retrieve a pointer to this pad with:
TPad *pad = parentPad->GetPad(someNumber);
TPad::Divide calls automatically TPad::SetNumber.
Rene Brun
>
> Thank you very much.
>
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:13 MET