ROOT logo
void testAxis()
{
  const Int_t   nCenter = 56;
  const Int_t   nSat    = 10;
  const Int_t   nBins   = 2*nSat + nCenter;
  Float_t bins[nBins+1];
  
  for (Int_t i = 0; i < nSat;i++) {
    bins[i] = (i-nSat-.5) * 37.5;
    printf("bins[%2d]=%+6.2f\n", i, bins[i]);
  }
  for (Int_t i = nSat; i < nSat+nCenter+1; i++) {
    bins[i] = -nCenter + (i-nSat) * 2;
    printf("bins[%2d]=%+6.2f\n", i, bins[i]);
  }
  for (Int_t i = nSat+nCenter+1; i < 2*nSat+nCenter; i++) {
    bins[i] = (i-nSat-nCenter +.5) * 37.5;
    printf("bins[%2d]=%+6.2f\n", i, bins[i]);
  }
  bins[nBins] = (nSat + .5) * 37.5;
  
  // printf("\n");

  TH1* h = new TH1F("h", "h", nBins, bins);
  h->SetFillColor(kRed+1);
  h->SetFillStyle(3001);

  TAxis* a = h->GetXaxis();
  for (Int_t i = 1; i <= nBins; i++) 
    printf("%2d/%2d: %+6.2f - %+6.2f: %+6.2f\n", 
	   i,nBins,
	   a->GetBinLowEdge(i), 
	   a->GetBinUpEdge(i), 
	   a->GetBinCenter(i));
  
  for (Int_t i = 1; i <= nSat; i++) 
    h->SetBinContent(i, i);
  for (Int_t i = nSat+1; i <= nSat+nCenter; i++) 
    h->SetBinContent(i, nSat+nCenter/2 - TMath::Abs(i-nCenter/2-nSat));
  for (Int_t i = nSat+nCenter+1; i <= 2*nSat+nCenter; i++) 
    h->SetBinContent(i, (2*nSat+nCenter+1)-i);

  
  h->Draw();
}

  
    
 TestAxis.C:1
 TestAxis.C:2
 TestAxis.C:3
 TestAxis.C:4
 TestAxis.C:5
 TestAxis.C:6
 TestAxis.C:7
 TestAxis.C:8
 TestAxis.C:9
 TestAxis.C:10
 TestAxis.C:11
 TestAxis.C:12
 TestAxis.C:13
 TestAxis.C:14
 TestAxis.C:15
 TestAxis.C:16
 TestAxis.C:17
 TestAxis.C:18
 TestAxis.C:19
 TestAxis.C:20
 TestAxis.C:21
 TestAxis.C:22
 TestAxis.C:23
 TestAxis.C:24
 TestAxis.C:25
 TestAxis.C:26
 TestAxis.C:27
 TestAxis.C:28
 TestAxis.C:29
 TestAxis.C:30
 TestAxis.C:31
 TestAxis.C:32
 TestAxis.C:33
 TestAxis.C:34
 TestAxis.C:35
 TestAxis.C:36
 TestAxis.C:37
 TestAxis.C:38
 TestAxis.C:39
 TestAxis.C:40
 TestAxis.C:41
 TestAxis.C:42
 TestAxis.C:43
 TestAxis.C:44
 TestAxis.C:45
 TestAxis.C:46
 TestAxis.C:47
 TestAxis.C:48
 TestAxis.C:49