void c20() { //create a canvas and divide it in 20 x 20 pads TCanvas *c1 = new TCanvas("c1","c1",10,10,800,800); c1->Divide(20,20,0,0); Int_t ipad = 0; for (Int_t i=0;i<20;i++) { for (Int_t j=0;j<20;j++) { ipad++; c1->cd(ipad); gPad->AddExec("zoom","myzoom()"); TH1F *h = new TH1F(Form("h%d_%d",i,j),"test",100,-3,3); h->FillRandom("gaus",(ipad+1)*3); h->Draw(); } } } void myzoom() { //this function is executed whenever the mouse is moved in a pad TPad * pad = gPad; TCanvas *big = (TCanvas*)gROOT->GetListOfCanvases()->FindObject("big"); if (!big) big = new TCanvas("big","big",600,10,600,600); big->cd(); TIter next(pad->GetListOfPrimitives()); while (obj=next())) { if (obj->InheritsFrom("TH1")) obj->Draw(); } big->Update(); }