[root] / trunk / math / minuit2 / src / Minuit2Minimizer.cxx Repository:
ViewVC logotype

Diff of /trunk/math/minuit2/src/Minuit2Minimizer.cxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 25485, Mon Sep 22 07:52:52 2008 UTC revision 25486, Mon Sep 22 12:43:03 2008 UTC
# Line 47  Line 47 
47    
48  Minuit2Minimizer::Minuit2Minimizer(ROOT::Minuit2::EMinimizerType type ) :  Minuit2Minimizer::Minuit2Minimizer(ROOT::Minuit2::EMinimizerType type ) :
49     fDim(0),     fDim(0),
    fErrorCode(0),  
50     fMinimizer(0),     fMinimizer(0),
51     fMinuitFCN(0),     fMinuitFCN(0),
52     fMinimum(0)     fMinimum(0)
# Line 58  Line 57 
57    
58  Minuit2Minimizer::Minuit2Minimizer(const char *  type ) :  Minuit2Minimizer::Minuit2Minimizer(const char *  type ) :
59     fDim(0),     fDim(0),
    fErrorCode(0),  
60     fMinimizer(0),     fMinimizer(0),
61     fMinuitFCN(0),     fMinuitFCN(0),
62     fMinimum(0)     fMinimum(0)
# Line 317  Line 315 
315           for (unsigned int i = 0; i < fState.Params().size(); ++i)           for (unsigned int i = 0; i < fState.Params().size(); ++i)
316              std::cout << fState.Parameter(i).Name() << "\t  = " << par[i] << "\t  +/-  " << err[i] << std::endl;              std::cout << fState.Parameter(i).Name() << "\t  = " << par[i] << "\t  +/-  " << err[i] << std::endl;
317        }        }
318        fErrorCode = 0;        fStatus = 0;
319        return true;        return true;
320     }     }
321     else {     else {
# Line 329  Line 327 
327        }        }
328        if (min.HasMadePosDefCovar() ) {        if (min.HasMadePosDefCovar() ) {
329           if (debugLevel >= 1) std::cout << "      Covar was made pos def" << std::endl;           if (debugLevel >= 1) std::cout << "      Covar was made pos def" << std::endl;
330           fErrorCode = -11;           fStatus = 1;
331           return false;           return false;
332        }        }
333        if (min.HesseFailed() ) {        if (min.HesseFailed() ) {
334           if (debugLevel >= 1) std::cout << "      Hesse is not valid" << std::endl;           if (debugLevel >= 1) std::cout << "      Hesse is not valid" << std::endl;
335           fErrorCode = -12;           fStatus = 2;
336           return false;           return false;
337        }        }
338        if (min.IsAboveMaxEdm() ) {        if (min.IsAboveMaxEdm() ) {
339           if (debugLevel >= 1) std::cout << "      Edm is above max" << std::endl;           if (debugLevel >= 1) std::cout << "      Edm is above max" << std::endl;
340           fErrorCode = -13;           fStatus = 3;
341           return false;           return false;
342        }        }
343        if (min.HasReachedCallLimit() ) {        if (min.HasReachedCallLimit() ) {
344           if (debugLevel >= 1) std::cout << "      Reached call limit" << std::endl;           if (debugLevel >= 1) std::cout << "      Reached call limit" << std::endl;
345           fErrorCode = -14;           fStatus = 4;
346           return false;           return false;
347        }        }
348        fErrorCode =  -10;        fStatus =  5;
349        return false;        return false;
350     }     }
351     return true;     return true;
# Line 356  Line 354 
354  double Minuit2Minimizer::CovMatrix(unsigned int i, unsigned int j) const {  double Minuit2Minimizer::CovMatrix(unsigned int i, unsigned int j) const {
355     // get value of covariance matrices (transform from external to internal indices)     // get value of covariance matrices (transform from external to internal indices)
356     if ( i >= fDim || i >= fDim) return 0;     if ( i >= fDim || i >= fDim) return 0;
357     if ( fErrorCode < 0 || !fState.HasCovariance()    ) return 0; // no info available when minimization has failed     if ( Status()  || !fState.HasCovariance()    ) return 0; // no info available when minimization has failed
358     if (fState.Parameter(i).IsFixed() || fState.Parameter(i).IsConst() ) return 0;     if (fState.Parameter(i).IsFixed() || fState.Parameter(i).IsConst() ) return 0;
359     if (fState.Parameter(j).IsFixed() || fState.Parameter(j).IsConst() ) return 0;     if (fState.Parameter(j).IsFixed() || fState.Parameter(j).IsConst() ) return 0;
360     unsigned int k = fState.IntOfExt(i);     unsigned int k = fState.IntOfExt(i);
# Line 367  Line 365 
365  double Minuit2Minimizer::Correlation(unsigned int i, unsigned int j) const {  double Minuit2Minimizer::Correlation(unsigned int i, unsigned int j) const {
366     // get correlation between parameter i and j     // get correlation between parameter i and j
367     if ( i >= fDim || i >= fDim) return 0;     if ( i >= fDim || i >= fDim) return 0;
368     if ( fErrorCode < 0 || !fState.HasCovariance()    ) return 0; // no info available when minimization has failed     if ( Status()  || !fState.HasCovariance()    ) return 0; // no info available when minimization has failed
369     if (fState.Parameter(i).IsFixed() || fState.Parameter(i).IsConst() ) return 0;     if (fState.Parameter(i).IsFixed() || fState.Parameter(i).IsConst() ) return 0;
370     if (fState.Parameter(j).IsFixed() || fState.Parameter(j).IsConst() ) return 0;     if (fState.Parameter(j).IsFixed() || fState.Parameter(j).IsConst() ) return 0;
371     unsigned int k = fState.IntOfExt(i);     unsigned int k = fState.IntOfExt(i);
# Line 385  Line 383 
383    
384     if ( i >= fDim || i >= fDim) return 0;     if ( i >= fDim || i >= fDim) return 0;
385      // no info available when minimization has failed or has some problems      // no info available when minimization has failed or has some problems
386     if ( fErrorCode < 0 || !fState.HasGlobalCC()    ) return 0;     if ( Status()  || !fState.HasGlobalCC()    ) return 0;
387     if (fState.Parameter(i).IsFixed() || fState.Parameter(i).IsConst() ) return 0;     if (fState.Parameter(i).IsFixed() || fState.Parameter(i).IsConst() ) return 0;
388     unsigned int k = fState.IntOfExt(i);     unsigned int k = fState.IntOfExt(i);
389     return fState.GlobalCC().GlobalCC()[k];     return fState.GlobalCC().GlobalCC()[k];
# Line 435  Line 433 
433     if (debugLevel == 0) {     if (debugLevel == 0) {
434        if (!me.IsValid() ) {        if (!me.IsValid() ) {
435           std::cout << "Error running Minos for parameter " << i << std::endl;           std::cout << "Error running Minos for parameter " << i << std::endl;
436             if ( fStatus%100 == 0 )  fStatus += 10;
437           return false;           return false;
438        }        }
439     }     }

Legend:
Removed from v.25485  
changed lines
  Added in v.25486

Subversion Admin
ViewVC Help
Powered by ViewVC 1.0.9