Re: ROOT version 2.23/04, another problem

From: lijowski@cosray2.wustl.edu
Date: Mon Oct 18 1999 - 21:33:40 MEST


  Hello,

  Below is a sample macro which when executed more than once in a single
  root 2.23/04 session (SunOS5.7) crashes with segment violation
  in line 60  while there is no problem executing it several times
  in root 2.22/10.

   Thank you and regards,

   Michal Lijowski

// ------------------------------------------------------------------------

  void test_hist()

{
   gROOT -> Reset();
 
   Char_t  MacroName[40] = "test_hist";
   gBenchmark -> Start(MacroName);
   gROOT -> SetStyle("Plain");
   gStyle -> SetOptStat(11);
   gStyle -> SetCanvasColor(10);

   const Int_t  Xsize = 1100, Ysize = 520;

// create a new Root file
    Char_t  outfile[200];

    sprintf(outfile, "%s%s.root", MacroName);
    printf("  Output file  %s\n", outfile);

    TFile *top = new TFile(outfile, "recreate");

   Char_t  htitle[80], ctitle[40], cname[40], outps[120];
 
   Float_t  AA = 100.0;
   Float_t  BB1 = 550.0;
   Float_t  BB2 = 260.0;
   Float_t  CC1 = 200.0;
   Float_t  CC2 = 100.0;

   sprintf(htitle, "TEST HISTOGRAM");

   Float_t  xxmin = 0, xxmax = Xsize, yymin = 0, yymax = Ysize;
   TH2F *HH = new TH2F("HH", htitle, Xsize, xxmin, xxmax, Ysize, yymin, yymax);
   HH -> SetXTitle("X - coordinate (half pixel)");
   HH -> GetXaxis() -> CenterTitle(kTRUE);
   HH -> SetYTitle("Y - coordinate (half pixel)");
   HH -> GetYaxis() -> CenterTitle(kTRUE);

// fill the histogram
   Float_t  wwmin = 5.0, wwmax = 10.0;
   for  (Int_t yk = 0; yk < Ysize; yk++) {
       Float_t  YY = (Float_t) yk;
       for  (Int_t xk = 0; xk < Xsize; xk++) {
           Float_t  XX = (Float_t) xk;

           Float_t  argx = (XX - BB1) / CC1;
           Float_t  argy = (YY - BB2) / CC2; 
           Float_t  ZZ1 = TMath::Exp(-0.5 * argx * argx);
           Float_t  ZZ2 = TMath::Exp(-0.5 * argy * argy);
           Float_t  ww = AA * ZZ1 * ZZ2;

           HH -> Fill(XX, YY, ww);
       }
   }

   printf("  Done filling  histogram  %d\n", HH -> GetEntries());
 
   Int_t  ii = 0;
   sprintf(ctitle, "Canvas %d", ii);
   cc1 = new TCanvas("cc1", ctitle, 1100, 900);
   cc1 -> SetTicks();
   HH -> DrawCopy();

   cc1 -> Update();

   top -> Write();
   top -> Close();
   gBenchmark -> Show(MacroName);
}



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:41 MET