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();
}         
         


