Echo object at mouse position and show a graphics line.
Example of macro called when a mouse event occurs in a pad.
When moving the mouse in the canvas, a second canvas shows the projection along X of the bin corresponding to the Y position of the mouse. The resulting histogram is fitted with a gaussian. A "dynamic" line shows the current bin position in Y. This more elaborated example can be used as a starting point to develop more powerful interactive applications exploiting CINT as a development engine.
void exec2()
{
Error(
"exec2",
"gPad is null, you are not supposed to run this macro");
return;
}
if(!select) return;
int pyold =
gPad->GetUniqueID();
int px =
gPad->GetEventX();
int py =
gPad->GetEventY();
float uxmin =
gPad->GetUxmin();
float uxmax =
gPad->GetUxmax();
int pxmin =
gPad->XtoAbsPixel(uxmin);
int pxmax =
gPad->XtoAbsPixel(uxmax);
if(pyold)
gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
if(
c2)
delete c2->GetPrimitive(
"Projection");
TH1D *hp =
h->ProjectionX(
"",biny,biny);
char title[80];
sprintf(title,"Projection of biny=%d",biny);
}
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
bool Update(const std::shared_ptr< ROOT::Math::Minimizer > &min, const ROOT::Fit::FitConfig &fconfig, bool isValid, unsigned int ncalls=0)
Update the fit result with a new minimization status To be run only if same fit is performed with sam...
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
1-D histogram with a double per channel (see TH1 documentation)}
virtual void SetTitle(const char *title)
See GetStatOverflows for more information.
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
virtual void SetName(const char *name)
Change the name of this histogram.
Service class for 2-D histogram classes.
Mother of all ROOT objects.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
TObject * FindObject(const char *name) const override
Search if object named name is inside this pad or in pads inside this pad.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0