15 TCanvas* c1 =
new TCanvas(
"c1",
"Dynamic Slice Example",10,10,700,500);
18 TH2F *hpxpy =
new TH2F(
"hpxpy",
"py vs px",40,-4,4,40,-4,4);
21 for (Int_t i = 0; i < 50000; i++) {
22 gRandom->Rannor(px,py);
28 c1->AddExec(
"dynamic",
"DynamicExec()");
42 TObject *select = gPad->GetSelected();
44 if (!select->InheritsFrom(TH2::Class())) {gPad->SetUniqueID(0);
return;}
45 TH2 *h = (TH2*)select;
46 gPad->GetCanvas()->FeedbackMode(kTRUE);
49 int pyold = gPad->GetUniqueID();
50 int px = gPad->GetEventX();
51 int py = gPad->GetEventY();
52 float uxmin = gPad->GetUxmin();
53 float uxmax = gPad->GetUxmax();
54 int pxmin = gPad->XtoAbsPixel(uxmin);
55 int pxmax = gPad->XtoAbsPixel(uxmax);
56 if(pyold) gVirtualX->DrawLine(pxmin,pyold,pxmax,pyold);
57 gVirtualX->DrawLine(pxmin,py,pxmax,py);
58 gPad->SetUniqueID(py);
59 Float_t upy = gPad->AbsPixeltoY(py);
60 Float_t y = gPad->PadtoY(upy);
63 TVirtualPad *padsav = gPad;
64 TCanvas *c2 = (TCanvas*)gROOT->GetListOfCanvases()->FindObject(
"c2");
65 if(c2)
delete c2->GetPrimitive(
"Projection");
66 else c2 =
new TCanvas(
"c2",
"Projection Canvas",710,10,700,500);
71 Int_t biny = h->GetYaxis()->FindBin(y);
72 TH1D *hp = h->ProjectionX(
"",biny,biny);
75 sprintf(title,
"Projection of biny=%d",biny);
76 hp->SetName(
"Projection");
79 hp->GetFunction(
"gaus")->SetLineColor(kRed);
80 hp->GetFunction(
"gaus")->SetLineWidth(6);