TH1F SetBinContent on a divided canvas

Hello. I would like to ask what I missed in the following code. It only plots on TH1F *h1_0. Many thanks

const int NCHMOD = 128*12;
int visualize (char* fname, int nch) {
	int ch,counts;
  	float fc;
  	int j, k;
  	vector <float> cts;
  	
	
	TH1F *h1_0 = new TH1F ("h1_0", "Front: Top Layer",3*NCHMOD, -0.5,(3*NCHMOD+0.5));
	TH1F *h1_1 = new TH1F ("h1_1", "Front: Bottom Layer",3*NCHMOD,3*NCHMOD-0.5, 6*NCHMOD+0.5);
	TH1F *h1_2 = new TH1F ("h1_2", "Back: Top Layer", 3*NCHMOD, 6*NCHMOD-0.5, 9*NCHMOD+0.5);
	TH1F *h1_3 = new TH1F ("h1_3", "Back: Bottom Layer", 3*NCHMOD, 9*NCHMOD-0.5, 12*NCHMOD+0.5);
	
	h1_0->Sumw2();
	h1_1->Sumw2();
	h1_2->Sumw2();
	h1_3->Sumw2();
	
		
  	FILE* fp=fopen(fname,"r");
  	if (fp==NULL) {
   	printf("Could not open file %s\n",fname);
	   return -1;
  	}
  	
	//canvas creation
	Double_t w = 2000;
	Double_t h = 2000;	
	TCanvas *c1 = new TCanvas("c1","c1",w,h);
	c1->SetWindowSize( w+(w-c1->GetWw()), h+(h-c1->GetWh()) );
	c1->Divide(2,2);
	
		
	for (int j=0; j<nch; j++) {  
       fscanf(fp,"%d %f",&j,&fc);      
       cts.push_back(fc);      
   }
      
   	c1->cd(1);
			gPad->cd(1);	
			
			for(j=0; j<NCHMOD; j++) {
				k = NCHMOD-1-j;				
				h1_0->SetBinContent(k,cts[j]);							
			}				
			for(j= NCHMOD; j< NCHMOD*2; j++) {;
  				k = NCHMOD*3-1-j; 
  				h1_0->SetBinContent(k,cts[j]);    			    			
	  		}     		
			for(j= NCHMOD*2; j< NCHMOD*3; j++) {
  				k = NCHMOD*5-1-j; 
  				h1_0->SetBinContent(k,cts[j]);    				    	
			}			
			h1_0->Draw("hist");
			
			
			c1->cd(3);
				gPad->cd(3);		
			for(j=NCHMOD*3;j<NCHMOD*4; j++) {		
				k = j+2*NCHMOD;
				h1_1->SetBinContent(k,cts[j]);	
				//printf("k %d j %d counts %f\n", k,j,cts[j]); //verifying here, it reads correctly
			}	
			for(j=NCHMOD*4;j<NCHMOD*5; j++) {
				k=j;	
				h1_1->SetBinContent(k,cts[j]);
			}		
			for(j=NCHMOD*5;j<NCHMOD*6; j++) {
				k=j-2*NCHMOD;
				h1_1->SetBinContent(k,cts[j]);
			}		
			h1_1->Draw("hist");
			
						
			c1->cd(2);
				gPad->cd(2);
			for(j=NCHMOD*6;j<NCHMOD*7;j++) {
				k = NCHMOD*13-1-j;
				h1_2->SetBinContent(k,cts[j]);
				//h1_2->SetBinContent(k,fc);	
			}
			for(j=NCHMOD*7;j<NCHMOD*8;j++) {
				k = NCHMOD*15-1-j;	
				h1_2->SetBinContent(k,cts[j]);		
				//h1_2->SetBinContent(k,fc);
			}		
			for(j=NCHMOD*8;j<NCHMOD*9;j++) {
				k = NCHMOD*17-1-j;		
				h1_2->SetBinContent(k,cts[j]);	
				//h1_2->SetBinContent(k,fc);
			}		
			h1_2->Draw("hist");
			
		
			c1->cd(4);
				gPad->cd(4);
			for(j=NCHMOD*9;j<NCHMOD*10;j++) {
				k = j+2*NCHMOD;
				h1_3->SetBinContent(k,cts[j]);			
				//h1_3->SetBinContent(k,fc);	
			}
			for(j=NCHMOD*10;j<NCHMOD*11;j++) {
				k = j;
				h1_3->SetBinContent(k,cts[j]);			
				//h1_3->SetBinContent(k,fc);
			}
			for(j=NCHMOD*11;j<NCHMOD*12;j++) {
				k = j-2*NCHMOD;		
				h1_3->SetBinContent(k,cts[j]);	
				//h1_3->SetBinContent(k,fc);
			}		
			h1_3->Draw("hist");
			
	//}

	fclose(fp);
	return 0;
}

Note that, for every TH1, “X bins” are ALWAYS numbered from 1 to “MyTH1->GetNbinsX()”, plus bin number “0” which is the “underflow bin”, plus bin number “MyTH1->GetNbinsX() + 1” which is the “overflow bin”.
So, you should either use:
MyTH1->SetBinContent(SomeXBinNumber, SomeYValue);
or one of:
MyTH1->Fill(SomeXValue, SomeYValue);
MyTH1->SetBinContent(MyTH1->FindBin(SomeXValue), SomeYValue);
(Note the difference between “SomeXBinNumber” and the corresponding “SomeXValue”.)
See: http://root.cern.ch/root/html/TH1.html

Thanks