Draw canvas in for loop

Dear experts,

when I try to draw several hist in different canvas pad in a for loop, I end up with 1 canvas, do you know why? For ex in [*], while if I do it outside of a loop, it works[**].

Regards,

[*]
void plot(){

TCanvas *c = new TCanvas(“c”, “”, 1000, 700);
c->Divide(4,2);
for(int i=0; i<4; i++){
c->cd(i);
hist->Draw();
}
}

[**]
void plot(){

TCanvas *c = new TCanvas(“c”, “”, 1000, 700);
c->Divide(4,2);
c->cd(0);
hist->Draw();
c->cd(1);
hist->Draw();

}

Hi,

Weird… Which version of ROOT, which OS/compiler?
And does $(ROOTSYS)/tutorials/hist/hksimple.C work? (it does more or less the same)

Cheers, Bertrand.

for(int i = 1; i <= 4; i++){

when you do

c->Divide(4,2);

you create 4x2 = 8 pads numbered from 1 to 8

this loops draws in pads number 0,1,2,3

for (int i=0; i<4; i++) {
  c->cd(i);
  hist->Draw();
}

as Wile pointed you should start at number 1 … and you can loop up to 8.

Dear experts,

thanks you, actually I should start at “1” and not “0”.

Regards