gPad->GetUymax() returns "1"

Can any c++ guru tell me why gPad->GetUymax() goes to “1” for all loops after the first:

  while(variable = (TBranch *)iter.Next()) {
    TString varname =  variable->GetName();

    TCanvas *c2 = new TCanvas;
  int nbins = 100;

  ccbarwithoutkspi0->Draw(varname, cut);
  TAxis *currentXaxis = ((TH1*)gPad->GetPrimitive("htemp"))->GetXaxis();
  //  nbins = currentXaxis->GetNbins();
  double xmin = currentXaxis->GetXmin();
  double xmax = currentXaxis->GetXmax();

  
  TH1F *signalhist = new TH1F("signalhist","signalhist", nbins, xmin, xmax);
  kspi0->Draw(varname+">>"+signalhist->GetName(), cut);

  signalhist->Draw();
  c1->Update();

  cout << "signal size: " << gPad->GetUymax() << endl;

  if(signalhist){
    delete signalhist;
  }



}

OUTPUT
signal size: 69716.9
signal size: 1
signal size: 1
signal size: 1
signal size: 1

Thanks,

james

Change your code to:

  
 TCanvas *c2 = new TCanvas; //<==== outside the loop
while(variable = (TBranch *)iter.Next()) { 
    TString varname =  variable->GetName(); 

  int nbins = 100; 

  ccbarwithoutkspi0->Draw(varname, cut); 
  TAxis *currentXaxis = ((TH1*)gPad->GetPrimitive("htemp"))->GetXaxis(); 
  //  nbins = currentXaxis->GetNbins(); 
  double xmin = currentXaxis->GetXmin(); 
  double xmax = currentXaxis->GetXmax(); 

  
  TH1F *signalhist = new TH1F("signalhist","signalhist", nbins, xmin, xmax); 
  kspi0->Draw(varname+">>"+signalhist->GetName(), cut); 

  signalhist->Draw(); 
  c2->Update();   //and not c1->Update !!

  cout << "signal size: " << gPad->GetUymax() << endl; 

  if(signalhist){ 
    delete signalhist; 

  } 

Rene

Doh! I just noticed the c1/c2 problem.

Sorry for the noise.

james