Hi Harufumi,
You have two solutions to your problem:
solution 1
=========
remove the statement Double_t x1,x2 from GetDist.C
in your root session, do:
root > Double_t x1, x2;
root > myhisto->Draw();
root > c1->AddExec("ex1", ".x GetDist.C")
solution 2 (recommended)
==========
replace the line:
Double_t x1, x2;
by
static Double_t x1, x2;
root > .L GetDist.C
root > myhisto->Draw();
root > c1->AddExec("ex1", "GetDist()");
Rene Brun
On Sun, 10 Nov 2002, Harufumi TSUCHIYA wrote:
> Hello.
>
> Thank you for you reply.
>
> What I would like to do is the follwing.
>
> I have the histogram which has time as x-axis and count as y-axis.
> When I zoom in along xaxis, I would like to know the points
> where I press and release to obtain time range of my zoom selection.
>
> So, I made the attached macro and I used this macro in my compiled
> code using c1->AddExec("ex1", ".x GetDist.C").
> But, in this case, x1 always 0.
> So, Can I get both x1 and x2 in the follwing code ?
>
> Harufumi Tsuchiya
>
> ROOT v3.03.09
> g++ 2.95.3
> FreeBSD 4.6.2-RELEASE
>
> ------------------ GetDist.C ---------------------------
> void GetDist() {
> Double_t x1, x2;
> Int_t event = gPad->GetEvent();
> if ( event != kButton1Up && event != kButton1Down ) return;
> TObject *select = gPad->GetSelected();
> if ( strcmp(select->GetName(), "xaxis") != 0 )return;
> Int_t px = gPad->GetEventX();
> Double_t xp = gPad->AbsPixeltoX(px);
> if ( event == kButton1Down ) {
> // Get x1 //
> x1 = gPad->PadtoX(xp);
> }
> else if ( event == kButton1Up ) {
> // Get x2 //
> x2 = gPad->PadtoX(xp);
> Double_t dist = x2 - x1;
> cout << "x1, x2, dist " << x1 << " " << x2 << " " << dist << endl;
> }
> }
>
>
> > Hi Harufumi,
> > Assuming that
> > Int_t px1,py1 are the mouse pixel coordinates of the point
> > where you press the button and px2,py2 where you release
> > the button, you can compute the user coordinates with
> > Double_t x1 = gPad->AbsPixeltoX(px1);
> > Double_t y1 = gPad->AbsPixeltoX(py1);
> > same for x2,y2
> >
> > Rene Brun
> >
> >
> >
> > On Sat, 9 Nov 2002, Harufumi TSUCHIYA wrote:
> >
> > >
> > > Hello ROOTers
> > >
> > > I am now trying to modify exec1.C in $ROOT/tutorials to
> > > calculate distance two points along x-axis of my histogram.
> > > The two points are pushed and released by mouse, respectively.
> > >
> > > I succeeded in knowing pushed points and released points
> > > using return values of gPad->GetEvent()(kButton1Down and kButton1Up).
> > >
> > > But, the distance between two points could not be obtained.
> > >
> > > So, is there the way to get the distance of the two points ?
> > >
> > > Harufumi Tsuchiya
> > >
> > > ROOT v3.03.09
> > > g++ 2.95.3
> > > FreeBSD 4.6.2
> > >
> >
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:17 MET