void ZoomPad() { if(!gPad) return; int event = gPad->GetEvent(); TVirtualPad* p = gPad->GetSelectedPad(); if(event==53 && p){ TList* l = p->GetListOfExecs(); if(l && !(l->FindObject("zoomer"))) p->AddExec("zoomer","ZoomPad()"); return; } if(event != 61) return; TObject* o = gPad->GetSelected(); if(!o) return; cout<GetName()<<" "<GetName()<<" "; if(p) cout<GetName()<<" "; cout<InheritsFrom(TH1::Class()) || o->InheritsFrom(TGraph::Class()) || o->InheritsFrom(TF1::Class()) ){ clone = o->Clone(); drawoption = o->GetDrawOption(); } else if(!p->InheritsFrom(TCanvas::Class())){ TPad* clonep = (TPad*)(p->Clone()); clonep->SetPad(0,0,1,1); clone = clonep; } if(clone){ clone->SetBit(TObject::kCanDelete,true); TCanvas* c = new TCanvas; c->cd(); clone->Draw(); c->AddExec("zoomer","ZoomPad()"); gPad->cd(); } } void zoomer() { new TCanvas; c1->Divide(2,2); c1->cd(1); TH1F* h[3]; for(int i=0; i<3; ++i){ char name[20]; sprintf(name,"h%d",i); h[i] = new TH1F(name,name,10,0,10); c1->cd(i+1); h[i]->FillRandom("pol0",10); h[i]->SetLineColor(i+1); h[i]->Draw(); } double x[] = {1,2,3,4,5}; double y[] = {3,6,8,1,5}; TGraph* g = new TGraph(5,x,y); c1->cd(4); g->Draw("alp"); c1->AddExec("zoomer","ZoomPad()"); c1->Update(); }