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