Hi Anton,
I could implement a set of functions in TGraph returning the x/y min/max
corresponding to an x/y range, eg:
Double_t TGraph::GetYmin(Double_t xmin, Double_t xmax);
that will return the minimum y value of any point in the x range [xmin, xmax]
etc, same for all other combinations
Double_t TGraph::GetYmax(Double_t xmin, Double_t xmax);
Double_t TGraph::GetXmin(Double_t ymin, Double_t ymax);
Double_t TGraph::GetXmax(Double_t ymin, Double_t ymax);
A possible implementation will look like the script below:
Double_t GetYmin(TGraph *gr, Double_t xmin, Double_t xmax)
{
// return the minimum y of all points of gr in the range [xmin,xmax]
Int_t np = gr->GetN();
Double_t *x = gr->GetX();
Double_t *y = gr->GetY();
Double_t ymin = 0;
Bool_t noPoints = kTRUE;
for (Int_t i=0;i<np;i++) {
if (x[i] < xmin || x[i] > xmax) continue;
if (noPoints) { noPoints = kFALSE; ymin = y[i];}
else ymin = TMath::Min(ymin,y[i]);
}
return ymin;
}
Comments/Suggestions are welcome on the proposed interface.
Rene Brun
KOSU_FOKIN@garbo.lucas.lu.se wrote:
>
> Hello!
> Well, thanks for the suggestions but they both are not quite what
> I was asking for. Assume I have a picture like this:
>
> 20 |
> |
> 15 | /\
> | / \
> 10 | / \
> | / \
> 5 | / \
> |/__________\____
> 0 5 10 15
>
> As you see Ymin = 0 and YMax = 15. Then I zoom X axis,
> say from 7.5 to 12.5
>
> 20 |
> |
> 15 | / \
> | / \
> 10 |/ \
> |
> 5 |
> |_______________
> 0 7.5 12.5
>
> Y axis range will stay the same but now Ymin = 10 and Ymax = 15 (min and
> max of the graph in the new X range, not min and max of the Y axis!).
> How can I get these numbers? If I use
>
> h2->GetYaxis()->GetXmin();
> h2->GetYaxis()->GetXmax();
>
> I will not get Ymin and Ymax of the points on the picture but min and
> max of the axis (0-15 in both cases).
>
> Regards,
> Anton
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:34 MET