seg fault in TF2::GetSave

From: OKUMURA, Akira <oxon_at_icrr.u-tokyo.ac.jp>
Date: Thu, 21 Feb 2008 14:05:45 -1000


Hello ROOTers

I encounter a segmentation violation when I fit a TH2D with a TF2. It does not always happen but it depends on the parameter which I set at start.

Here is the error message and the part of my C++ program (not macro).

Does anyone have any help or suggestion?

Regards

SL 5.0 64 bit + ROOT 5.18.00

    228 TF2* f2ab = new TF2(Form("f2ab-%d-%d", i, j), Gauss2D_AB, x1, x2,
y1, y2, 7);

    229

    230        for(int k=0; k<5; k++){
    231          f2ab->SetParameter(k, f2rough->GetParameter(k));
    232          f2ab->SetParLimits(k, fitpar_min[k], fitpar_max[k]);
    233          f2ab->SetParName(k, fitpar_name[k]);
    234        } // k
    235
    236        f2ab->SetParameter(5, f2rough->GetParameter(4)); // sy  
=> s
    237        f2ab->SetParameter(6, 0.); // rho => 0
    238        f2ab->SetParLimits(5, fitpar_min[5], fitpar_max[5]);
    239        f2ab->SetParLimits(6, fitpar_min[6], fitpar_max[6]);
    240        f2ab->SetParName(5, fitpar_name[5]);
    241        f2ab->SetParName(6, fitpar_name[6]);
    242
    243        hist[j*kRN + i]->Fit(Form("f2ab-%d-%d", i, j), "0");

double Gauss2D_AB(double* x_, double* par) {

   // z = f(A, mu_x, mu_y, BG, sigma_x, sigma_y, rho)

   double x = x_[0];
   double y = x_[1];
   double A = par[0];
   double mx = par[1];
   double my = par[2];
   double bg = par[3];

   double sx = par[4];
   double sy = par[5];
   double rho = par[6];

   double z = A/(2*TMath::Pi()*sx*sy*sqrt(1-rho*rho))*

     exp(-0.5/(1-rho*rho)*(pow((x-mx)/sx, 2) + pow((y-my)/sy, 2)
                           - 2*rho*(x-mx)*(y-my)/sx/sy)) + bg;

   return z;
}


OKUMURA, Akira oxon_at_icrr.u-tokyo.ac.jp
Institute for Cosmic Ray Research, University of Tokyo 5-1-5 Kashiwanoha Kashiwa Chiba 277-8582 Japan Phone/Fax : +81 4-7136-3153
Skype : okumura.akira Received on Fri Feb 22 2008 - 01:06:03 CET

This archive was generated by hypermail 2.2.0 : Fri Feb 22 2008 - 11:50:01 CET