SimplexParameters.cxx

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: SimplexParameters.cxx 20880 2007-11-19 11:23:41Z rdm $
00002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005  
00003 
00004 /**********************************************************************
00005  *                                                                    *
00006  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
00007  *                                                                    *
00008  **********************************************************************/
00009 
00010 #include "Minuit2/SimplexParameters.h"
00011 
00012 namespace ROOT {
00013 
00014    namespace Minuit2 {
00015 
00016 
00017 void SimplexParameters::Update(double y, const MnAlgebraicVector& p) {
00018    // update the SimplexParameter object with a new value y = FCN(p)
00019    fSimplexParameters[Jh()] = std::pair<double, MnAlgebraicVector>(y, p);
00020    if(y < fSimplexParameters[Jl()].first) fJLow = Jh();
00021    
00022    unsigned int jh = 0;
00023    for(unsigned int i = 1; i < fSimplexParameters.size(); i++) {
00024       if(fSimplexParameters[i].first > fSimplexParameters[jh].first) jh = i;
00025    }
00026    fJHigh = jh;
00027    
00028    return;
00029 } 
00030 
00031 MnAlgebraicVector SimplexParameters::Dirin() const {
00032    // find simplex direction (vector from big to smaller parameter points)
00033    MnAlgebraicVector dirin(fSimplexParameters.size() - 1);
00034    for(unsigned int i = 0; i < fSimplexParameters.size() - 1; i++) {
00035       double pbig = fSimplexParameters[0].second(i), plit = pbig;
00036       for(unsigned int j = 0; j < fSimplexParameters.size(); j++){
00037          if(fSimplexParameters[j].second(i) < plit) plit = fSimplexParameters[j].second(i);
00038          if(fSimplexParameters[j].second(i) > pbig) pbig = fSimplexParameters[j].second(i);
00039       }
00040       dirin(i) = pbig - plit;
00041    } 
00042    
00043    return dirin;
00044 }
00045 
00046    }  // namespace Minuit2
00047 
00048 }  // namespace ROOT

Generated on Tue Jul 5 14:37:11 2011 for ROOT_528-00b_version by  doxygen 1.5.1