/*****************************************************************************
 * Project: RooFit                                                           *
 * Package: RooFitCore                                                       *
 * @(#)root/roofitcore:$Id$
 * Authors:                                                                  *
 *   WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu       *
 *   DK, David Kirkby,    UC Irvine,         dkirkby@uci.edu                 *
 *                                                                           *
 * Copyright (c) 2000-2005, Regents of the University of California          *
 *                          and Stanford University. All rights reserved.    *
 *                                                                           *
 * Redistribution and use in source and binary forms,                        *
 * with or without modification, are permitted according to the terms        *
 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)             *
 *****************************************************************************/

//////////////////////////////////////////////////////////////////////////////
//
// BEGIN_HTML
// RooMinuit is a wrapper class around TFitter/TMinuit that
// provides a seamless interface between the MINUIT functionality
// and the native RooFit interface.
// <p>
// RooMinuit can minimize any RooAbsReal function with respect to
// its parameters. Usual choices for minimization are RooNLLVar
// and RooChi2Var
// <p>
// RooMinuit has methods corresponding to MINUIT functions like
// hesse(), migrad(), minos() etc. In each of these function calls
// the state of the MINUIT engine is synchronized with the state
// of the RooFit variables: any change in variables, change
// in the constant status etc is forwarded to MINUIT prior to
// execution of the MINUIT call. Afterwards the RooFit objects
// are resynchronized with the output state of MINUIT: changes
// parameter values, errors are propagated.
// <p>
// Various methods are available to control verbosity, profiling,
// automatic PDF optimization.
// END_HTML
//

#include "RooFit.h"
#include "Riostream.h"

#include "TClass.h"

#include <fstream>
#include <iomanip>
#include "TH1.h"
#include "TH2.h"
#include "TMarker.h"
#include "TGraph.h"
#include "TStopwatch.h"
#include "TFitter.h"
#include "TMinuit.h"
#include "TDirectory.h"
#include "TMatrixDSym.h"
#include "RooMinuit.h"
#include "RooArgSet.h"
#include "RooArgList.h"
#include "RooAbsReal.h"
#include "RooAbsRealLValue.h"
#include "RooRealVar.h"
#include "RooFitResult.h"
#include "RooAbsPdf.h"
#include "RooSentinel.h"
#include "RooMsgService.h"
#include "RooPlot.h"



#if (__GNUC__==3&&__GNUC_MINOR__==2&&__GNUC_PATCHLEVEL__==3)
char* operator+( streampos&, char* );
#endif

using namespace std;

ClassImp(RooMinuit)
;

TVirtualFitter *RooMinuit::_theFitter = 0 ;



//_____________________________________________________________________________
void RooMinuit::cleanup()
{
  // Cleanup method called by atexit handler installed by RooSentinel
  // to delete all global heap objects when the program is terminated
  if (_theFitter) {
    delete _theFitter ;
    _theFitter =0 ;
  }
}



//_____________________________________________________________________________
RooMinuit::RooMinuit(RooAbsReal& function)
{
  // Construct MINUIT interface to given function. Function can be anything,
  // but is typically a -log(likelihood) implemented by RooNLLVar or a chi^2
  // (implemented by RooChi2Var). Other frequent use cases are a RooAddition
  // of a RooNLLVar plus a penalty or constraint term. This class propagates
  // all RooFit information (floating parameters, their values and errors)
  // to MINUIT before each MINUIT call and propagates all MINUIT information
  // back to the RooFit object at the end of each call (updated parameter
  // values, their (asymmetric errors) etc. The default MINUIT error level
  // for HESSE and MINOS error analysis is taken from the defaultErrorLevel()
  // value of the input function.

  RooSentinel::activate() ;

  // Store function reference
  _evalCounter = 0 ;
  _extV = 0 ;
  _func = &function ;
  _logfile = 0 ;
  _optConst = kFALSE ;
  _verbose = kFALSE ;
  _profile = kFALSE ;
  _handleLocalErrors = kTRUE ;
  _printLevel = 1 ;
  _printEvalErrors = 10 ;
  _warnLevel = -999 ;
  _maxEvalMult = 500 ;
  _doEvalErrorWall = kTRUE ;

  // Examine parameter list
  RooArgSet* paramSet = function.getParameters(RooArgSet()) ;
  RooArgList paramList(*paramSet) ;
  delete paramSet ;

  _floatParamList = (RooArgList*) paramList.selectByAttrib("Constant",kFALSE) ;
  if (_floatParamList->getSize()>1) {
    _floatParamList->sort() ;
  }
  _floatParamList->setName("floatParamList") ;

  _constParamList = (RooArgList*) paramList.selectByAttrib("Constant",kTRUE) ;
  if (_constParamList->getSize()>1) {
    _constParamList->sort() ;
  }
  _constParamList->setName("constParamList") ;

  // Remove all non-RooRealVar parameters from list (MINUIT cannot handle them)
  TIterator* pIter = _floatParamList->createIterator() ;
  RooAbsArg* arg ;
  while((arg=(RooAbsArg*)pIter->Next())) {
    if (!arg->IsA()->InheritsFrom(RooAbsRealLValue::Class())) {
      coutW(Minimization) << "RooMinuit::RooMinuit: removing parameter " << arg->GetName()
			  << " from list because it is not of type RooRealVar" << endl ;
      _floatParamList->remove(*arg) ;
    }
  }
  _nPar      = _floatParamList->getSize() ;
  delete pIter ;

  updateFloatVec() ;

  // Save snapshot of initial lists
  _initFloatParamList = (RooArgList*) _floatParamList->snapshot(kFALSE) ;
  _initConstParamList = (RooArgList*) _constParamList->snapshot(kFALSE) ;

  // Initialize MINUIT
  Int_t nPar= _floatParamList->getSize() + _constParamList->getSize() ;
  if (_theFitter) delete _theFitter ;
  _theFitter = new TFitter(nPar*2+1) ; //WVE Kludge, nPar*2 works around TMinuit memory allocation bug
  _theFitter->SetObjectFit(this) ;

  // Shut up for now
  setPrintLevel(-1) ;
  _theFitter->Clear();

  // Tell MINUIT to use our global glue function
  _theFitter->SetFCN(RooMinuitGlue);

  // Use +0.5 for 1-sigma errors
  setErrorLevel(function.defaultErrorLevel()) ;

  // Declare our parameters to MINUIT
  synchronize(kFALSE) ;

  // Reset the *largest* negative log-likelihood value we have seen so far
  _maxFCN= -1e30 ;
  _numBadNLL = 0 ;

  // Now set default verbosity
  if (RooMsgService::instance().silentMode()) {
    setWarnLevel(-1) ;
    setPrintLevel(-1) ;
  } else {
    setWarnLevel(1) ;
    setPrintLevel(1) ;
  }
}



//_____________________________________________________________________________
RooMinuit::~RooMinuit()
{
  // Destructor

  delete _floatParamList ;
  delete _initFloatParamList ;
  delete _constParamList ;
  delete _initConstParamList ;
  if (_extV) {
    delete _extV ;
  }
}



//_____________________________________________________________________________
void RooMinuit::setStrategy(Int_t istrat)
{
  // Change MINUIT strategy to istrat. Accepted codes
  // are 0,1,2 and represent MINUIT strategies for dealing
  // most efficiently with fast FCNs (0), expensive FCNs (2)
  // and 'intermediate' FCNs (1)

  Double_t stratArg(istrat) ;
  _theFitter->ExecuteCommand("SET STR",&stratArg,1) ;
}



//_____________________________________________________________________________
void RooMinuit::setErrorLevel(Double_t level)
{
  // Set the level for MINUIT error analysis to the given
  // value. This function overrides the default value
  // that is taken in the RooMinuit constructor from
  // the defaultErrorLevel() method of the input function
  _theFitter->ExecuteCommand("SET ERR",&level,1);
}



//_____________________________________________________________________________
void RooMinuit::setEps(Double_t eps)
{
  // Change MINUIT epsilon
  _theFitter->ExecuteCommand("SET EPS",&eps,1) ;
}



//_____________________________________________________________________________
void RooMinuit::setOffsetting(Bool_t flag) 
{ 
  // Enable internal likelihood offsetting for enhanced numeric precision
  _func->enableOffsetting(flag) ; 
}


//_____________________________________________________________________________
RooFitResult* RooMinuit::fit(const char* options)
{
  // Parse traditional RooAbsPdf::fitTo driver options
  //
  //  s - Run Hesse first to estimate initial step size
  //  m - Run Migrad only
  //  h - Run Hesse to estimate errors
  //  v - Verbose mode
  //  l - Log parameters after each Minuit steps to file
  //  t - Activate profile timer
  //  r - Save fit result
  //  0 - Run Migrad with strategy 0

  if (_floatParamList->getSize()==0) {
    return 0 ;
  }

  _theFitter->SetObjectFit(this) ;

  TString opts(options) ;
  opts.ToLower() ;

  // Initial configuration
  if (opts.Contains("v")) setVerbose(1) ;
  if (opts.Contains("t")) setProfile(1) ;
  if (opts.Contains("l")) setLogFile(Form("%s.log",_func->GetName())) ;
  if (opts.Contains("c")) optimizeConst(1) ;

  // Fitting steps
  if (opts.Contains("s")) hesse() ;
  if (opts.Contains("0")) setStrategy(0) ;
  migrad() ;
  if (opts.Contains("0")) setStrategy(1) ;
  if (opts.Contains("h")||!opts.Contains("m")) hesse() ;
  if (!opts.Contains("m")) minos() ;

  return (opts.Contains("r")) ? save() : 0 ;
}



//_____________________________________________________________________________
Int_t RooMinuit::migrad()
{
  // Execute MIGRAD. Changes in parameter values
  // and calculated errors are automatically
  // propagated back the RooRealVars representing
  // the floating parameters in the MINUIT operation

  if (_floatParamList->getSize()==0) {
    return -1 ;
  }

  _theFitter->SetObjectFit(this) ;

  Double_t arglist[2];
  arglist[0]= _maxEvalMult*_nPar; // maximum iterations
  arglist[1]= 1.0;       // tolerance

  synchronize(_verbose) ;
  profileStart() ;
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;
  RooAbsReal::clearEvalErrorLog() ;
  _status= _theFitter->ExecuteCommand("MIGRAD",arglist,2);
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;
  profileStop() ;
  backProp() ;

  saveStatus("MIGRAD",_status) ;

  return _status ;
}



//_____________________________________________________________________________
Int_t RooMinuit::hesse()
{
  // Execute HESSE. Changes in parameter values
  // and calculated errors are automatically
  // propagated back the RooRealVars representing
  // the floating parameters in the MINUIT operation

  if (_floatParamList->getSize()==0) {
    return -1 ;
  }

  _theFitter->SetObjectFit(this) ;

  Double_t arglist[2];
  arglist[0]= _maxEvalMult*_nPar; // maximum iterations

  synchronize(_verbose) ;
  profileStart() ;
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;
  RooAbsReal::clearEvalErrorLog() ;
  _status= _theFitter->ExecuteCommand("HESSE",arglist,1);
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;
  profileStop() ;
  backProp() ;

  saveStatus("HESSE",_status) ;

  return _status ;
}



//_____________________________________________________________________________
Int_t RooMinuit::minos()
{
  // Execute MINOS. Changes in parameter values
  // and calculated errors are automatically
  // propagated back the RooRealVars representing
  // the floating parameters in the MINUIT operation

  if (_floatParamList->getSize()==0) {
    return -1 ;
  }

  _theFitter->SetObjectFit(this) ;

  Double_t arglist[2];
  arglist[0]= _maxEvalMult*_nPar; // maximum iterations

  synchronize(_verbose) ;
  profileStart() ;
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;
  RooAbsReal::clearEvalErrorLog() ;
  _status= _theFitter->ExecuteCommand("MINOS",arglist,1);
  // check also the status of Minos looking at fCstatu
  if (_status == 0 && gMinuit->fCstatu != "SUCCESSFUL") {
    if (gMinuit->fCstatu == "FAILURE" || 
	gMinuit->fCstatu == "PROBLEMS") _status = 5; 
    _status = 6; 
  } 
  
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;
  profileStop() ;
  backProp() ;

  saveStatus("MINOS",_status) ;
  return _status ;
}


// added FMV, 08/18/03

//_____________________________________________________________________________
Int_t RooMinuit::minos(const RooArgSet& minosParamList)
{
  // Execute MINOS for given list of parameters. Changes in parameter values
  // and calculated errors are automatically
  // propagated back the RooRealVars representing
  // the floating parameters in the MINUIT operation

  if (_floatParamList->getSize()==0) {
    return -1 ;
  }

  _theFitter->SetObjectFit(this) ;

  Int_t nMinosPar(0) ;
  Double_t* arglist = new Double_t[_nPar+1];

  if (minosParamList.getSize()>0) {
    TIterator* aIter = minosParamList.createIterator() ;
    RooAbsArg* arg ;
    while((arg=(RooAbsArg*)aIter->Next())) {
      RooAbsArg* par = _floatParamList->find(arg->GetName());
      if (par && !par->isConstant()) {
	Int_t index = _floatParamList->index(par);
	nMinosPar++;
        arglist[nMinosPar]=index+1;
      }
    }
    delete aIter ;
  }
  arglist[0]= _maxEvalMult*_nPar; // maximum iterations

  synchronize(_verbose) ;
  profileStart() ;
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;
  RooAbsReal::clearEvalErrorLog() ;
  _status= _theFitter->ExecuteCommand("MINOS",arglist,1+nMinosPar);
  // check also the status of Minos looking at fCstatu
  if (_status == 0 && gMinuit->fCstatu != "SUCCESSFUL") {
    if (gMinuit->fCstatu == "FAILURE" || 
	gMinuit->fCstatu == "PROBLEMS") _status = 5; 
    _status = 6; 
  } 
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;
  profileStop() ;
  backProp() ;

  delete[] arglist ;
  
  saveStatus("MINOS",_status) ;

  return _status ;
}



//_____________________________________________________________________________
Int_t RooMinuit::seek()
{
  // Execute SEEK. Changes in parameter values
  // and calculated errors are automatically
  // propagated back the RooRealVars representing
  // the floating parameters in the MINUIT operation

  if (_floatParamList->getSize()==0) {
    return -1 ;
  }

  _theFitter->SetObjectFit(this) ;

  Double_t arglist[2];
  arglist[0]= _maxEvalMult*_nPar; // maximum iterations

  synchronize(_verbose) ;
  profileStart() ;
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;
  RooAbsReal::clearEvalErrorLog() ;
  _status= _theFitter->ExecuteCommand("SEEK",arglist,1);
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;
  profileStop() ;
  backProp() ;

  saveStatus("SEEK",_status) ;
  
  return _status ;
}



//_____________________________________________________________________________
Int_t RooMinuit::simplex()
{
  // Execute SIMPLEX. Changes in parameter values
  // and calculated errors are automatically
  // propagated back the RooRealVars representing
  // the floating parameters in the MINUIT operation

  if (_floatParamList->getSize()==0) {
    return -1 ;
  }

  _theFitter->SetObjectFit(this) ;

  Double_t arglist[2];
  arglist[0]= _maxEvalMult*_nPar; // maximum iterations
  arglist[1]= 1.0;       // tolerance

  synchronize(_verbose) ;
  profileStart() ;
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;
  RooAbsReal::clearEvalErrorLog() ;
  _status= _theFitter->ExecuteCommand("SIMPLEX",arglist,2);
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;
  profileStop() ;
  backProp() ;

  saveStatus("SIMPLEX",_status) ;
  
  return _status ;
}



//_____________________________________________________________________________
Int_t RooMinuit::improve()
{
  // Execute IMPROVE. Changes in parameter values
  // and calculated errors are automatically
  // propagated back the RooRealVars representing
  // the floating parameters in the MINUIT operation

  if (_floatParamList->getSize()==0) {
    return -1 ;
  }

  _theFitter->SetObjectFit(this) ;

  Double_t arglist[2];
  arglist[0]= _maxEvalMult*_nPar; // maximum iterations

  synchronize(_verbose) ;
  profileStart() ;
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;
  RooAbsReal::clearEvalErrorLog() ;
  _status= _theFitter->ExecuteCommand("IMPROVE",arglist,1);
  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;
  profileStop() ;
  backProp() ;

  saveStatus("IMPROVE",_status) ;
  
  return _status ;
}



//_____________________________________________________________________________
Int_t RooMinuit::setPrintLevel(Int_t newLevel)
{
  // Change the MINUIT internal printing level
  Int_t ret = _printLevel ;
  Double_t arg(newLevel) ;
  _theFitter->ExecuteCommand("SET PRINT",&arg,1);
  _printLevel = newLevel ;
  return ret ;
}



//_____________________________________________________________________________
void RooMinuit::setNoWarn()
{
  // Instruct MINUIT to suppress warnings

  Double_t arg(0) ;
  _theFitter->ExecuteCommand("SET NOWARNINGS",&arg,1);
  _warnLevel = -1 ;
}



//_____________________________________________________________________________
Int_t RooMinuit::setWarnLevel(Int_t newLevel)
{
  // Set MINUIT warning level to given level

  if (newLevel==_warnLevel) {
    return _warnLevel ;
  }

  Int_t ret = _warnLevel ;
  Double_t arg(newLevel) ;

  if (newLevel>=0) {
    _theFitter->ExecuteCommand("SET WARNINGS",&arg,1);
  } else {
    Double_t arg2(0) ;
    _theFitter->ExecuteCommand("SET NOWARNINGS",&arg2,1);
  }
  _warnLevel = newLevel ;

  return ret ;
}



//_____________________________________________________________________________
Bool_t RooMinuit::synchronize(Bool_t verbose)
{
  // Internal function to synchronize TMinuit with current
  // information in RooAbsReal function parameters

  Int_t oldPrint = setPrintLevel(-1) ;
  gMinuit->fNwrmes[0] = 0;  // to clear buffer
  Int_t oldWarn = setWarnLevel(-1) ;

  Bool_t constValChange(kFALSE) ;
  Bool_t constStatChange(kFALSE) ;

  Int_t index(0) ;

  // Handle eventual migrations from constParamList -> floatParamList
  for(index= 0; index < _constParamList->getSize() ; index++) {
    RooRealVar *par= dynamic_cast<RooRealVar*>(_constParamList->at(index)) ;
    if (!par) continue ;

    RooRealVar *oldpar= dynamic_cast<RooRealVar*>(_initConstParamList->at(index)) ;
    if (!oldpar) continue ;

    // Test if constness changed
    if (!par->isConstant()) {

      // Remove from constList, add to floatList
      _constParamList->remove(*par) ;
      _floatParamList->add(*par) ;
      _initFloatParamList->addClone(*oldpar) ;
      _initConstParamList->remove(*oldpar) ;
      constStatChange=kTRUE ;
      _nPar++ ;

      if (verbose) {
	coutI(Minimization) << "RooMinuit::synchronize: parameter " << par->GetName() << " is now floating." << endl ;
      }
    }

    // Test if value changed
    if (par->getVal()!= oldpar->getVal()) {
      constValChange=kTRUE ;
      if (verbose) {
	coutI(Minimization) << "RooMinuit::synchronize: value of constant parameter " << par->GetName()
			    << " changed from " << oldpar->getVal() << " to " << par->getVal() << endl ;
      }
    }

  }

  // Update reference list
  *_initConstParamList = *_constParamList ;


  // Synchronize MINUIT with function state
  for(index= 0; index < _nPar; index++) {
    RooRealVar *par= dynamic_cast<RooRealVar*>(_floatParamList->at(index)) ;
    if (!par) continue ;

    Double_t pstep(0) ;
    Double_t pmin(0) ;
    Double_t pmax(0) ;
    
    if(!par->isConstant()) {

      // Verify that floating parameter is indeed of type RooRealVar
      if (!par->IsA()->InheritsFrom(RooRealVar::Class())) {
	coutW(Minimization) << "RooMinuit::fit: Error, non-constant parameter " << par->GetName()
			    << " is not of type RooRealVar, skipping" << endl ;
	continue ;
      }

      // Set the limits, if not infinite
      if (par->hasMin() && par->hasMax()) {
	pmin = par->getMin();
	pmax = par->getMax();
      }

      // Calculate step size
      pstep= par->getError();
      if(pstep <= 0) {
	// Floating parameter without error estitimate
	if (par->hasMin() && par->hasMax()) {
	  pstep= 0.1*(pmax-pmin);

	  // Trim default choice of error if within 2 sigma of limit
	  if (pmax - par->getVal() < 2*pstep) {
	    pstep = (pmax - par->getVal())/2 ;
	  } else if (par->getVal() - pmin < 2*pstep) {
	    pstep = (par->getVal() - pmin )/2 ;
	  }

	  // If trimming results in zero error, restore default
	  if (pstep==0) {
	    pstep= 0.1*(pmax-pmin);
	  }

	} else {
	  pstep=1 ;
	}
	if(_verbose) {
	  coutW(Minimization) << "RooMinuit::synchronize: WARNING: no initial error estimate available for "
			      << par->GetName() << ": using " << pstep << endl;
	}
      }
    } else {
      pmin = par->getVal() ;
      pmax = par->getVal() ;
    }

    // Extract previous information
    Double_t oldVar,oldVerr,oldVlo,oldVhi ;
    char oldParname[100] ;
    Int_t ierr = _theFitter->GetParameter(index,oldParname,oldVar,oldVerr,oldVlo,oldVhi)  ;

    // Determine if parameters is currently fixed in MINUIT

    Int_t ix ;
    Bool_t oldFixed(kFALSE) ;
    if (ierr>=0) {
      for (ix = 1; ix <= gMinuit->fNpfix; ++ix) {
        if (gMinuit->fIpfix[ix-1] == index+1) oldFixed=kTRUE ;
      }
    }

    if (par->isConstant() && !oldFixed) {

      // Parameter changes floating -> constant : update only value if necessary
      if (oldVar!=par->getVal()) {
	Double_t arglist[2] ;
	arglist[0] = index+1 ;
	arglist[1] = par->getVal() ;
	_theFitter->ExecuteCommand("SET PAR",arglist,2) ;
	if (verbose) {
	  coutI(Minimization) << "RooMinuit::synchronize: value of parameter " << par->GetName() << " changed from " << oldVar << " to " << par->getVal() << endl ;
	}
      }

      _theFitter->FixParameter(index) ;
      constStatChange=kTRUE ;
      if (verbose) {
	coutI(Minimization) << "RooMinuit::synchronize: parameter " << par->GetName() << " is now fixed." << endl ;
      }

    } else if (par->isConstant() && oldFixed) {

      // Parameter changes constant -> constant : update only value if necessary
      if (oldVar!=par->getVal()) {
	Double_t arglist[2] ;
	arglist[0] = index+1 ;
	arglist[1] = par->getVal() ;
	_theFitter->ExecuteCommand("SET PAR",arglist,2) ;
	constValChange=kTRUE ;

	if (verbose) {
	  coutI(Minimization) << "RooMinuit::synchronize: value of fixed parameter " << par->GetName() << " changed from " << oldVar << " to " << par->getVal() << endl ;
	}
      }

    } else {

      if (!par->isConstant() && oldFixed) {
	_theFitter->ReleaseParameter(index) ;
	constStatChange=kTRUE ;

	if (verbose) {
	  coutI(Minimization) << "RooMinuit::synchronize: parameter " << par->GetName() << " is now floating." << endl ;
	}
      }

      // Parameter changes constant -> floating : update all if necessary
      if (oldVar!=par->getVal() || oldVlo!=pmin || oldVhi != pmax || oldVerr!=pstep) {
	_theFitter->SetParameter(index, par->GetName(), par->getVal(), pstep, pmin, pmax);
      }

      // Inform user about changes in verbose mode
      if (verbose && ierr>=0) {
	// if ierr<0, par was moved from the const list and a message was already printed

	if (oldVar!=par->getVal()) {
	  coutI(Minimization) << "RooMinuit::synchronize: value of parameter " << par->GetName() << " changed from " << oldVar << " to " << par->getVal() << endl ;
	}
	if (oldVlo!=pmin || oldVhi!=pmax) {
	  coutI(Minimization) << "RooMinuit::synchronize: limits of parameter " << par->GetName() << " changed from [" << oldVlo << "," << oldVhi
	       << "] to [" << pmin << "," << pmax << "]" << endl ;
	}

	// If oldVerr=0, then parameter was previously fixed
	if (oldVerr!=pstep && oldVerr!=0) {
	coutI(Minimization) << "RooMinuit::synchronize: error/step size of parameter " << par->GetName() << " changed from " << oldVerr << " to " << pstep << endl ;
	}
      }
    }
  }


  gMinuit->fNwrmes[0] = 0;  // to clear buffer
  oldWarn = setWarnLevel(oldWarn) ;
  oldPrint = setPrintLevel(oldPrint) ;

  if (_optConst) {
    if (constStatChange) {

      RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;

      coutI(Minimization) << "RooMinuit::synchronize: set of constant parameters changed, rerunning const optimizer" << endl ;
      _func->constOptimizeTestStatistic(RooAbsArg::ConfigChange) ;
    } else if (constValChange) {
      coutI(Minimization) << "RooMinuit::synchronize: constant parameter values changed, rerunning const optimizer" << endl ;
      _func->constOptimizeTestStatistic(RooAbsArg::ValueChange) ;
    }

    RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;

  }

  updateFloatVec() ;

  return 0 ;
}




//_____________________________________________________________________________
void RooMinuit::optimizeConst(Int_t flag)
{
  // If flag is true, perform constant term optimization on
  // function being minimized.

  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::CollectErrors) ;

  if (_optConst && !flag){
    if (_printLevel>-1) coutI(Minimization) << "RooMinuit::optimizeConst: deactivating const optimization" << endl ;
    _func->constOptimizeTestStatistic(RooAbsArg::DeActivate,flag>1) ;
    _optConst = flag ;
  } else if (!_optConst && flag) {
    if (_printLevel>-1) coutI(Minimization) << "RooMinuit::optimizeConst: activating const optimization" << endl ;
    _func->constOptimizeTestStatistic(RooAbsArg::Activate,flag>1) ;
    _optConst = flag ;
  } else if (_optConst && flag) {
    if (_printLevel>-1) coutI(Minimization) << "RooMinuit::optimizeConst: const optimization already active" << endl ;
  } else {
    if (_printLevel>-1) coutI(Minimization) << "RooMinuit::optimizeConst: const optimization wasn't active" << endl ;
  }

  RooAbsReal::setEvalErrorLoggingMode(RooAbsReal::PrintErrors) ;

}



//_____________________________________________________________________________
RooFitResult* RooMinuit::save(const char* userName, const char* userTitle)
{
  // Save and return a RooFitResult snaphot of current minimizer status.
  // This snapshot contains the values of all constant parameters,
  // the value of all floating parameters at RooMinuit construction and
  // after the last MINUIT operation, the MINUIT status, variance quality,
  // EDM setting, number of calls with evaluation problems, the minimized
  // function value and the full correlation matrix

  TString name,title ;
  name = userName ? userName : Form("%s", _func->GetName()) ;
  title = userTitle ? userTitle : Form("%s", _func->GetTitle()) ;

  if (_floatParamList->getSize()==0) {
    RooFitResult* fitRes = new RooFitResult(name,title) ;
    fitRes->setConstParList(*_constParamList) ;
    fitRes->setInitParList(RooArgList()) ;
    fitRes->setFinalParList(RooArgList()) ;
    fitRes->setStatus(-999) ;
    fitRes->setCovQual(-999) ;
    fitRes->setMinNLL(_func->getVal()) ;
    fitRes->setNumInvalidNLL(0) ;
    fitRes->setEDM(-999) ;
    return fitRes ;
  }

  RooFitResult* fitRes = new RooFitResult(name,title) ;

  // Move eventual fixed parameters in floatList to constList
  Int_t i ;
  RooArgList saveConstList(*_constParamList) ;
  RooArgList saveFloatInitList(*_initFloatParamList) ;
  RooArgList saveFloatFinalList(*_floatParamList) ;
  for (i=0 ; i<_floatParamList->getSize() ; i++) {
    RooAbsArg* par = _floatParamList->at(i) ;
    if (par->isConstant()) {
      saveFloatInitList.remove(*saveFloatInitList.find(par->GetName()),kTRUE) ;
      saveFloatFinalList.remove(*par) ;
      saveConstList.add(*par) ;
    }
  }
  saveConstList.sort() ;

  fitRes->setConstParList(saveConstList) ;
  fitRes->setInitParList(saveFloatInitList) ;

  Double_t edm, errdef, minVal;
  Int_t nvpar, nparx;
  Int_t icode = _theFitter->GetStats(minVal, edm, errdef, nvpar, nparx);
  fitRes->setStatus(_status) ;
  fitRes->setCovQual(icode) ;
  fitRes->setMinNLL(minVal) ;
  fitRes->setNumInvalidNLL(_numBadNLL) ;
  fitRes->setEDM(edm) ;
  fitRes->setFinalParList(saveFloatFinalList) ;
  if (!_extV) {
    fitRes->fillCorrMatrix() ;
  } else {
    fitRes->setCovarianceMatrix(*_extV) ;
  }

  fitRes->setStatusHistory(_statusHistory) ;

  return fitRes ;
}




//_____________________________________________________________________________
RooPlot* RooMinuit::contour(RooRealVar& var1, RooRealVar& var2, Double_t n1, Double_t n2, Double_t n3, Double_t n4, Double_t n5, Double_t n6)
{
  // Create and draw a TH2 with the error contours in parameters var1 and v2 at up to 6 'sigma' settings
  // where 'sigma' is calculated as n*n*errorLevel


  _theFitter->SetObjectFit(this) ;

  RooArgList* paramSave = (RooArgList*) _floatParamList->snapshot() ;

  // Verify that both variables are floating parameters of PDF
  Int_t index1= _floatParamList->index(&var1);
  if(index1 < 0) {
    coutE(Minimization) << "RooMinuit::contour(" << GetName()
			<< ") ERROR: " << var1.GetName() << " is not a floating parameter of " << _func->GetName() << endl ;
    return 0;
  }

  Int_t index2= _floatParamList->index(&var2);
  if(index2 < 0) {
    coutE(Minimization) << "RooMinuit::contour(" << GetName()
			<< ") ERROR: " << var2.GetName() << " is not a floating parameter of PDF " << _func->GetName() << endl ;
    return 0;
  }

  // create and draw a frame
  RooPlot* frame = new RooPlot(var1,var2) ;

  // draw a point at the current parameter values
  TMarker *point= new TMarker(var1.getVal(), var2.getVal(), 8);
  frame->addObject(point) ;

  // remember our original value of ERRDEF
  Double_t errdef= gMinuit->fUp;

  Double_t n[6] ;
  n[0] = n1 ; n[1] = n2 ; n[2] = n3 ; n[3] = n4 ; n[4] = n5 ; n[5] = n6 ;


  for (Int_t ic = 0 ; ic<6 ; ic++) {
    if(n[ic] > 0) {
      // set the value corresponding to an n1-sigma contour
      gMinuit->SetErrorDef(n[ic]*n[ic]*errdef);
      // calculate and draw the contour
      TGraph* graph= (TGraph*)gMinuit->Contour(50, index1, index2);
      if (!graph) {
	coutE(Minimization) << "RooMinuit::contour(" << GetName() << ") ERROR: MINUIT did not return a contour graph for n=" << n[ic] << endl ;
      } else {
	graph->SetName(Form("contour_%s_n%f",_func->GetName(),n[ic])) ;
	graph->SetLineStyle(ic+1) ;
	graph->SetLineWidth(2) ;
	graph->SetLineColor(kBlue) ;
	frame->addObject(graph,"L") ;
      }
    }
  }

  // restore the original ERRDEF
  gMinuit->SetErrorDef(errdef);

  // restore parameter values
  *_floatParamList = *paramSave ;
  delete paramSave ;


  return frame ;
}



//_____________________________________________________________________________
Bool_t RooMinuit::setLogFile(const char* inLogfile)
{
  // Change the file name for logging of a RooMinuit of all MINUIT steppings
  // through the parameter space. If inLogfile is null, the current log file
  // is closed and logging is stopped.

  if (_logfile) {
    coutI(Minimization) << "RooMinuit::setLogFile: closing previous log file" << endl ;
    _logfile->close() ;
    delete _logfile ;
    _logfile = 0 ;
  }
  _logfile = new ofstream(inLogfile) ;
  if (!_logfile->good()) {
    coutI(Minimization) << "RooMinuit::setLogFile: cannot open file " << inLogfile << endl ;
    _logfile->close() ;
    delete _logfile ;
    _logfile= 0;
  }
  return kFALSE ;
}



//_____________________________________________________________________________
Double_t RooMinuit::getPdfParamVal(Int_t index)
{
  // Access PDF parameter value by ordinal index (needed by MINUIT)

  return ((RooRealVar*)_floatParamList->at(index))->getVal() ;
}



//_____________________________________________________________________________
Double_t RooMinuit::getPdfParamErr(Int_t index)
{
  // Access PDF parameter error by ordinal index (needed by MINUIT)

  return ((RooRealVar*)_floatParamList->at(index))->getError() ;
}



//_____________________________________________________________________________
Bool_t RooMinuit::setPdfParamVal(Int_t index, Double_t value, Bool_t verbose)
{
  // Modify PDF parameter value by ordinal index (needed by MINUIT)

  //RooRealVar* par = (RooRealVar*)_floatParamList->at(index) ;
  RooRealVar* par = (RooRealVar*)_floatParamVec[index] ;

  if (par->getVal()!=value) {
    if (verbose) cout << par->GetName() << "=" << value << ", " ;
    par->setVal(value) ;
    return kTRUE ;
  }

  return kFALSE ;
}



//_____________________________________________________________________________
void RooMinuit::setPdfParamErr(Int_t index, Double_t value)
{
  // Modify PDF parameter error by ordinal index (needed by MINUIT)

  ((RooRealVar*)_floatParamList->at(index))->setError(value) ;
}



//_____________________________________________________________________________
void RooMinuit::clearPdfParamAsymErr(Int_t index)
{
  // Modify PDF parameter error by ordinal index (needed by MINUIT)

  ((RooRealVar*)_floatParamList->at(index))->removeAsymError() ;
}


//_____________________________________________________________________________
void RooMinuit::setPdfParamErr(Int_t index, Double_t loVal, Double_t hiVal)
{
  // Modify PDF parameter error by ordinal index (needed by MINUIT)

  ((RooRealVar*)_floatParamList->at(index))->setAsymError(loVal,hiVal) ;
}



//_____________________________________________________________________________
void RooMinuit::profileStart()
{
  // Start profiling timer
  if (_profile) {
    _timer.Start() ;
    _cumulTimer.Start(kFALSE) ;
  }
}




//_____________________________________________________________________________
void RooMinuit::profileStop()
{
  // Stop profiling timer and report results of last session
  if (_profile) {
    _timer.Stop() ;
    _cumulTimer.Stop() ;
    coutI(Minimization) << "Command timer: " ; _timer.Print() ;
    coutI(Minimization) << "Session timer: " ; _cumulTimer.Print() ;
  }
}





//_____________________________________________________________________________
void RooMinuit::backProp()
{
  // Transfer MINUIT fit results back into RooFit objects

  Double_t val,err,vlo,vhi, eplus, eminus, eparab, globcc;
  char buffer[10240];
  Int_t index ;
  for(index= 0; index < _nPar; index++) {
    _theFitter->GetParameter(index, buffer, val, err, vlo, vhi);
    setPdfParamVal(index, val);
    _theFitter->GetErrors(index, eplus, eminus, eparab, globcc);

    // Set the parabolic error
    setPdfParamErr(index, err);

    if(eplus > 0 || eminus < 0) {
      // Store the asymmetric error, if it is available
      setPdfParamErr(index, eminus,eplus);
    } else {
      // Clear the asymmetric error
      clearPdfParamAsymErr(index) ;
    }
  }
}


//_____________________________________________________________________________
void RooMinuit::updateFloatVec() 
{
  _floatParamVec.clear() ;
  RooFIter iter = _floatParamList->fwdIterator() ;
  RooAbsArg* arg ;
  _floatParamVec.resize(_floatParamList->getSize()) ;
  Int_t i(0) ;
  while((arg=iter.next())) {
    _floatParamVec[i++] = arg ;
  }
}



//_____________________________________________________________________________
void RooMinuit::applyCovarianceMatrix(TMatrixDSym& V)
{
  // Apply results of given external covariance matrix. i.e. propagate its errors
  // to all RRV parameter representations and give this matrix instead of the
  // HESSE matrix at the next save() call

  _extV = (TMatrixDSym*) V.Clone() ;

  for (Int_t i=0 ; i<getNPar() ; i++) {
    // Skip fixed parameters
    if (_floatParamList->at(i)->isConstant()) {
      continue ;
    }
    RooMinuit* context = (RooMinuit*) RooMinuit::_theFitter->GetObjectFit() ;
    if (context && context->_verbose)
       cout << "setting parameter " << i << " error to " << sqrt((*_extV)(i,i)) << endl ;
    setPdfParamErr(i, sqrt((*_extV)(i,i))) ;
  }

}




void RooMinuitGlue(Int_t& /*np*/, Double_t* /*gin*/,
		   Double_t &f, Double_t *par, Int_t /*flag*/)
{
  // Static function that interfaces minuit with RooMinuit

  // Retrieve fit context and its components
  RooMinuit* context = (RooMinuit*) RooMinuit::_theFitter->GetObjectFit() ;
  ofstream* logf   = context->logfile() ;
  Double_t& maxFCN = context->maxFCN() ;
  Bool_t verbose   = context->_verbose ;

  // Set the parameter values for this iteration
  Int_t nPar= context->getNPar();
  for(Int_t index= 0; index < nPar; index++) {
    if (logf) (*logf) << par[index] << " " ;
    context->setPdfParamVal(index, par[index],verbose);
  }

  // Calculate the function for these parameters
  RooAbsReal::setHideOffset(kFALSE) ;
  f= context->_func->getVal() ;
  RooAbsReal::setHideOffset(kTRUE) ;
  context->_evalCounter++ ;
  if ( RooAbsPdf::evalError() || RooAbsReal::numEvalErrors()>0 || f>1e30) {

    if (context->_printEvalErrors>=0) {

      if (context->_doEvalErrorWall) {
	oocoutW(context,Minimization) << "RooMinuitGlue: Minimized function has error status." << endl
				      << "Returning maximum FCN so far (" << maxFCN
				      << ") to force MIGRAD to back out of this region. Error log follows" << endl ;
      } else {
	oocoutW(context,Minimization) << "RooMinuitGlue: Minimized function has error status but is ignored" << endl ;
      }

      TIterator* iter = context->_floatParamList->createIterator() ;
      RooRealVar* var ;
      Bool_t first(kTRUE) ;
      ooccoutW(context,Minimization) << "Parameter values: " ;
      while((var=(RooRealVar*)iter->Next())) {
	if (first) { first = kFALSE ; } else ooccoutW(context,Minimization) << ", " ;
	ooccoutW(context,Minimization) << var->GetName() << "=" << var->getVal() ;
      }
      delete iter ;
      ooccoutW(context,Minimization) << endl ;

      RooAbsReal::printEvalErrors(ooccoutW(context,Minimization),context->_printEvalErrors) ;
      ooccoutW(context,Minimization) << endl ;
    }

    if (context->_doEvalErrorWall) {
      f = maxFCN+1 ;
    }

    RooAbsPdf::clearEvalError() ;
    RooAbsReal::clearEvalErrorLog() ;
    context->_numBadNLL++ ;
  } else if (f>maxFCN) {
    maxFCN = f ;
  }
  
  // Optional logging
  if (logf) (*logf) << setprecision(15) << f << setprecision(4) << endl;
  if (verbose) {
    cout << "\nprevFCN" << (context->_func->isOffsetting()?"-offset":"") << " = " << setprecision(10) << f << setprecision(4) << "  " ;
    cout.flush() ;
  }
}
 RooMinuit.cxx:1
 RooMinuit.cxx:2
 RooMinuit.cxx:3
 RooMinuit.cxx:4
 RooMinuit.cxx:5
 RooMinuit.cxx:6
 RooMinuit.cxx:7
 RooMinuit.cxx:8
 RooMinuit.cxx:9
 RooMinuit.cxx:10
 RooMinuit.cxx:11
 RooMinuit.cxx:12
 RooMinuit.cxx:13
 RooMinuit.cxx:14
 RooMinuit.cxx:15
 RooMinuit.cxx:16
 RooMinuit.cxx:17
 RooMinuit.cxx:18
 RooMinuit.cxx:19
 RooMinuit.cxx:20
 RooMinuit.cxx:21
 RooMinuit.cxx:22
 RooMinuit.cxx:23
 RooMinuit.cxx:24
 RooMinuit.cxx:25
 RooMinuit.cxx:26
 RooMinuit.cxx:27
 RooMinuit.cxx:28
 RooMinuit.cxx:29
 RooMinuit.cxx:30
 RooMinuit.cxx:31
 RooMinuit.cxx:32
 RooMinuit.cxx:33
 RooMinuit.cxx:34
 RooMinuit.cxx:35
 RooMinuit.cxx:36
 RooMinuit.cxx:37
 RooMinuit.cxx:38
 RooMinuit.cxx:39
 RooMinuit.cxx:40
 RooMinuit.cxx:41
 RooMinuit.cxx:42
 RooMinuit.cxx:43
 RooMinuit.cxx:44
 RooMinuit.cxx:45
 RooMinuit.cxx:46
 RooMinuit.cxx:47
 RooMinuit.cxx:48
 RooMinuit.cxx:49
 RooMinuit.cxx:50
 RooMinuit.cxx:51
 RooMinuit.cxx:52
 RooMinuit.cxx:53
 RooMinuit.cxx:54
 RooMinuit.cxx:55
 RooMinuit.cxx:56
 RooMinuit.cxx:57
 RooMinuit.cxx:58
 RooMinuit.cxx:59
 RooMinuit.cxx:60
 RooMinuit.cxx:61
 RooMinuit.cxx:62
 RooMinuit.cxx:63
 RooMinuit.cxx:64
 RooMinuit.cxx:65
 RooMinuit.cxx:66
 RooMinuit.cxx:67
 RooMinuit.cxx:68
 RooMinuit.cxx:69
 RooMinuit.cxx:70
 RooMinuit.cxx:71
 RooMinuit.cxx:72
 RooMinuit.cxx:73
 RooMinuit.cxx:74
 RooMinuit.cxx:75
 RooMinuit.cxx:76
 RooMinuit.cxx:77
 RooMinuit.cxx:78
 RooMinuit.cxx:79
 RooMinuit.cxx:80
 RooMinuit.cxx:81
 RooMinuit.cxx:82
 RooMinuit.cxx:83
 RooMinuit.cxx:84
 RooMinuit.cxx:85
 RooMinuit.cxx:86
 RooMinuit.cxx:87
 RooMinuit.cxx:88
 RooMinuit.cxx:89
 RooMinuit.cxx:90
 RooMinuit.cxx:91
 RooMinuit.cxx:92
 RooMinuit.cxx:93
 RooMinuit.cxx:94
 RooMinuit.cxx:95
 RooMinuit.cxx:96
 RooMinuit.cxx:97
 RooMinuit.cxx:98
 RooMinuit.cxx:99
 RooMinuit.cxx:100
 RooMinuit.cxx:101
 RooMinuit.cxx:102
 RooMinuit.cxx:103
 RooMinuit.cxx:104
 RooMinuit.cxx:105
 RooMinuit.cxx:106
 RooMinuit.cxx:107
 RooMinuit.cxx:108
 RooMinuit.cxx:109
 RooMinuit.cxx:110
 RooMinuit.cxx:111
 RooMinuit.cxx:112
 RooMinuit.cxx:113
 RooMinuit.cxx:114
 RooMinuit.cxx:115
 RooMinuit.cxx:116
 RooMinuit.cxx:117
 RooMinuit.cxx:118
 RooMinuit.cxx:119
 RooMinuit.cxx:120
 RooMinuit.cxx:121
 RooMinuit.cxx:122
 RooMinuit.cxx:123
 RooMinuit.cxx:124
 RooMinuit.cxx:125
 RooMinuit.cxx:126
 RooMinuit.cxx:127
 RooMinuit.cxx:128
 RooMinuit.cxx:129
 RooMinuit.cxx:130
 RooMinuit.cxx:131
 RooMinuit.cxx:132
 RooMinuit.cxx:133
 RooMinuit.cxx:134
 RooMinuit.cxx:135
 RooMinuit.cxx:136
 RooMinuit.cxx:137
 RooMinuit.cxx:138
 RooMinuit.cxx:139
 RooMinuit.cxx:140
 RooMinuit.cxx:141
 RooMinuit.cxx:142
 RooMinuit.cxx:143
 RooMinuit.cxx:144
 RooMinuit.cxx:145
 RooMinuit.cxx:146
 RooMinuit.cxx:147
 RooMinuit.cxx:148
 RooMinuit.cxx:149
 RooMinuit.cxx:150
 RooMinuit.cxx:151
 RooMinuit.cxx:152
 RooMinuit.cxx:153
 RooMinuit.cxx:154
 RooMinuit.cxx:155
 RooMinuit.cxx:156
 RooMinuit.cxx:157
 RooMinuit.cxx:158
 RooMinuit.cxx:159
 RooMinuit.cxx:160
 RooMinuit.cxx:161
 RooMinuit.cxx:162
 RooMinuit.cxx:163
 RooMinuit.cxx:164
 RooMinuit.cxx:165
 RooMinuit.cxx:166
 RooMinuit.cxx:167
 RooMinuit.cxx:168
 RooMinuit.cxx:169
 RooMinuit.cxx:170
 RooMinuit.cxx:171
 RooMinuit.cxx:172
 RooMinuit.cxx:173
 RooMinuit.cxx:174
 RooMinuit.cxx:175
 RooMinuit.cxx:176
 RooMinuit.cxx:177
 RooMinuit.cxx:178
 RooMinuit.cxx:179
 RooMinuit.cxx:180
 RooMinuit.cxx:181
 RooMinuit.cxx:182
 RooMinuit.cxx:183
 RooMinuit.cxx:184
 RooMinuit.cxx:185
 RooMinuit.cxx:186
 RooMinuit.cxx:187
 RooMinuit.cxx:188
 RooMinuit.cxx:189
 RooMinuit.cxx:190
 RooMinuit.cxx:191
 RooMinuit.cxx:192
 RooMinuit.cxx:193
 RooMinuit.cxx:194
 RooMinuit.cxx:195
 RooMinuit.cxx:196
 RooMinuit.cxx:197
 RooMinuit.cxx:198
 RooMinuit.cxx:199
 RooMinuit.cxx:200
 RooMinuit.cxx:201
 RooMinuit.cxx:202
 RooMinuit.cxx:203
 RooMinuit.cxx:204
 RooMinuit.cxx:205
 RooMinuit.cxx:206
 RooMinuit.cxx:207
 RooMinuit.cxx:208
 RooMinuit.cxx:209
 RooMinuit.cxx:210
 RooMinuit.cxx:211
 RooMinuit.cxx:212
 RooMinuit.cxx:213
 RooMinuit.cxx:214
 RooMinuit.cxx:215
 RooMinuit.cxx:216
 RooMinuit.cxx:217
 RooMinuit.cxx:218
 RooMinuit.cxx:219
 RooMinuit.cxx:220
 RooMinuit.cxx:221
 RooMinuit.cxx:222
 RooMinuit.cxx:223
 RooMinuit.cxx:224
 RooMinuit.cxx:225
 RooMinuit.cxx:226
 RooMinuit.cxx:227
 RooMinuit.cxx:228
 RooMinuit.cxx:229
 RooMinuit.cxx:230
 RooMinuit.cxx:231
 RooMinuit.cxx:232
 RooMinuit.cxx:233
 RooMinuit.cxx:234
 RooMinuit.cxx:235
 RooMinuit.cxx:236
 RooMinuit.cxx:237
 RooMinuit.cxx:238
 RooMinuit.cxx:239
 RooMinuit.cxx:240
 RooMinuit.cxx:241
 RooMinuit.cxx:242
 RooMinuit.cxx:243
 RooMinuit.cxx:244
 RooMinuit.cxx:245
 RooMinuit.cxx:246
 RooMinuit.cxx:247
 RooMinuit.cxx:248
 RooMinuit.cxx:249
 RooMinuit.cxx:250
 RooMinuit.cxx:251
 RooMinuit.cxx:252
 RooMinuit.cxx:253
 RooMinuit.cxx:254
 RooMinuit.cxx:255
 RooMinuit.cxx:256
 RooMinuit.cxx:257
 RooMinuit.cxx:258
 RooMinuit.cxx:259
 RooMinuit.cxx:260
 RooMinuit.cxx:261
 RooMinuit.cxx:262
 RooMinuit.cxx:263
 RooMinuit.cxx:264
 RooMinuit.cxx:265
 RooMinuit.cxx:266
 RooMinuit.cxx:267
 RooMinuit.cxx:268
 RooMinuit.cxx:269
 RooMinuit.cxx:270
 RooMinuit.cxx:271
 RooMinuit.cxx:272
 RooMinuit.cxx:273
 RooMinuit.cxx:274
 RooMinuit.cxx:275
 RooMinuit.cxx:276
 RooMinuit.cxx:277
 RooMinuit.cxx:278
 RooMinuit.cxx:279
 RooMinuit.cxx:280
 RooMinuit.cxx:281
 RooMinuit.cxx:282
 RooMinuit.cxx:283
 RooMinuit.cxx:284
 RooMinuit.cxx:285
 RooMinuit.cxx:286
 RooMinuit.cxx:287
 RooMinuit.cxx:288
 RooMinuit.cxx:289
 RooMinuit.cxx:290
 RooMinuit.cxx:291
 RooMinuit.cxx:292
 RooMinuit.cxx:293
 RooMinuit.cxx:294
 RooMinuit.cxx:295
 RooMinuit.cxx:296
 RooMinuit.cxx:297
 RooMinuit.cxx:298
 RooMinuit.cxx:299
 RooMinuit.cxx:300
 RooMinuit.cxx:301
 RooMinuit.cxx:302
 RooMinuit.cxx:303
 RooMinuit.cxx:304
 RooMinuit.cxx:305
 RooMinuit.cxx:306
 RooMinuit.cxx:307
 RooMinuit.cxx:308
 RooMinuit.cxx:309
 RooMinuit.cxx:310
 RooMinuit.cxx:311
 RooMinuit.cxx:312
 RooMinuit.cxx:313
 RooMinuit.cxx:314
 RooMinuit.cxx:315
 RooMinuit.cxx:316
 RooMinuit.cxx:317
 RooMinuit.cxx:318
 RooMinuit.cxx:319
 RooMinuit.cxx:320
 RooMinuit.cxx:321
 RooMinuit.cxx:322
 RooMinuit.cxx:323
 RooMinuit.cxx:324
 RooMinuit.cxx:325
 RooMinuit.cxx:326
 RooMinuit.cxx:327
 RooMinuit.cxx:328
 RooMinuit.cxx:329
 RooMinuit.cxx:330
 RooMinuit.cxx:331
 RooMinuit.cxx:332
 RooMinuit.cxx:333
 RooMinuit.cxx:334
 RooMinuit.cxx:335
 RooMinuit.cxx:336
 RooMinuit.cxx:337
 RooMinuit.cxx:338
 RooMinuit.cxx:339
 RooMinuit.cxx:340
 RooMinuit.cxx:341
 RooMinuit.cxx:342
 RooMinuit.cxx:343
 RooMinuit.cxx:344
 RooMinuit.cxx:345
 RooMinuit.cxx:346
 RooMinuit.cxx:347
 RooMinuit.cxx:348
 RooMinuit.cxx:349
 RooMinuit.cxx:350
 RooMinuit.cxx:351
 RooMinuit.cxx:352
 RooMinuit.cxx:353
 RooMinuit.cxx:354
 RooMinuit.cxx:355
 RooMinuit.cxx:356
 RooMinuit.cxx:357
 RooMinuit.cxx:358
 RooMinuit.cxx:359
 RooMinuit.cxx:360
 RooMinuit.cxx:361
 RooMinuit.cxx:362
 RooMinuit.cxx:363
 RooMinuit.cxx:364
 RooMinuit.cxx:365
 RooMinuit.cxx:366
 RooMinuit.cxx:367
 RooMinuit.cxx:368
 RooMinuit.cxx:369
 RooMinuit.cxx:370
 RooMinuit.cxx:371
 RooMinuit.cxx:372
 RooMinuit.cxx:373
 RooMinuit.cxx:374
 RooMinuit.cxx:375
 RooMinuit.cxx:376
 RooMinuit.cxx:377
 RooMinuit.cxx:378
 RooMinuit.cxx:379
 RooMinuit.cxx:380
 RooMinuit.cxx:381
 RooMinuit.cxx:382
 RooMinuit.cxx:383
 RooMinuit.cxx:384
 RooMinuit.cxx:385
 RooMinuit.cxx:386
 RooMinuit.cxx:387
 RooMinuit.cxx:388
 RooMinuit.cxx:389
 RooMinuit.cxx:390
 RooMinuit.cxx:391
 RooMinuit.cxx:392
 RooMinuit.cxx:393
 RooMinuit.cxx:394
 RooMinuit.cxx:395
 RooMinuit.cxx:396
 RooMinuit.cxx:397
 RooMinuit.cxx:398
 RooMinuit.cxx:399
 RooMinuit.cxx:400
 RooMinuit.cxx:401
 RooMinuit.cxx:402
 RooMinuit.cxx:403
 RooMinuit.cxx:404
 RooMinuit.cxx:405
 RooMinuit.cxx:406
 RooMinuit.cxx:407
 RooMinuit.cxx:408
 RooMinuit.cxx:409
 RooMinuit.cxx:410
 RooMinuit.cxx:411
 RooMinuit.cxx:412
 RooMinuit.cxx:413
 RooMinuit.cxx:414
 RooMinuit.cxx:415
 RooMinuit.cxx:416
 RooMinuit.cxx:417
 RooMinuit.cxx:418
 RooMinuit.cxx:419
 RooMinuit.cxx:420
 RooMinuit.cxx:421
 RooMinuit.cxx:422
 RooMinuit.cxx:423
 RooMinuit.cxx:424
 RooMinuit.cxx:425
 RooMinuit.cxx:426
 RooMinuit.cxx:427
 RooMinuit.cxx:428
 RooMinuit.cxx:429
 RooMinuit.cxx:430
 RooMinuit.cxx:431
 RooMinuit.cxx:432
 RooMinuit.cxx:433
 RooMinuit.cxx:434
 RooMinuit.cxx:435
 RooMinuit.cxx:436
 RooMinuit.cxx:437
 RooMinuit.cxx:438
 RooMinuit.cxx:439
 RooMinuit.cxx:440
 RooMinuit.cxx:441
 RooMinuit.cxx:442
 RooMinuit.cxx:443
 RooMinuit.cxx:444
 RooMinuit.cxx:445
 RooMinuit.cxx:446
 RooMinuit.cxx:447
 RooMinuit.cxx:448
 RooMinuit.cxx:449
 RooMinuit.cxx:450
 RooMinuit.cxx:451
 RooMinuit.cxx:452
 RooMinuit.cxx:453
 RooMinuit.cxx:454
 RooMinuit.cxx:455
 RooMinuit.cxx:456
 RooMinuit.cxx:457
 RooMinuit.cxx:458
 RooMinuit.cxx:459
 RooMinuit.cxx:460
 RooMinuit.cxx:461
 RooMinuit.cxx:462
 RooMinuit.cxx:463
 RooMinuit.cxx:464
 RooMinuit.cxx:465
 RooMinuit.cxx:466
 RooMinuit.cxx:467
 RooMinuit.cxx:468
 RooMinuit.cxx:469
 RooMinuit.cxx:470
 RooMinuit.cxx:471
 RooMinuit.cxx:472
 RooMinuit.cxx:473
 RooMinuit.cxx:474
 RooMinuit.cxx:475
 RooMinuit.cxx:476
 RooMinuit.cxx:477
 RooMinuit.cxx:478
 RooMinuit.cxx:479
 RooMinuit.cxx:480
 RooMinuit.cxx:481
 RooMinuit.cxx:482
 RooMinuit.cxx:483
 RooMinuit.cxx:484
 RooMinuit.cxx:485
 RooMinuit.cxx:486
 RooMinuit.cxx:487
 RooMinuit.cxx:488
 RooMinuit.cxx:489
 RooMinuit.cxx:490
 RooMinuit.cxx:491
 RooMinuit.cxx:492
 RooMinuit.cxx:493
 RooMinuit.cxx:494
 RooMinuit.cxx:495
 RooMinuit.cxx:496
 RooMinuit.cxx:497
 RooMinuit.cxx:498
 RooMinuit.cxx:499
 RooMinuit.cxx:500
 RooMinuit.cxx:501
 RooMinuit.cxx:502
 RooMinuit.cxx:503
 RooMinuit.cxx:504
 RooMinuit.cxx:505
 RooMinuit.cxx:506
 RooMinuit.cxx:507
 RooMinuit.cxx:508
 RooMinuit.cxx:509
 RooMinuit.cxx:510
 RooMinuit.cxx:511
 RooMinuit.cxx:512
 RooMinuit.cxx:513
 RooMinuit.cxx:514
 RooMinuit.cxx:515
 RooMinuit.cxx:516
 RooMinuit.cxx:517
 RooMinuit.cxx:518
 RooMinuit.cxx:519
 RooMinuit.cxx:520
 RooMinuit.cxx:521
 RooMinuit.cxx:522
 RooMinuit.cxx:523
 RooMinuit.cxx:524
 RooMinuit.cxx:525
 RooMinuit.cxx:526
 RooMinuit.cxx:527
 RooMinuit.cxx:528
 RooMinuit.cxx:529
 RooMinuit.cxx:530
 RooMinuit.cxx:531
 RooMinuit.cxx:532
 RooMinuit.cxx:533
 RooMinuit.cxx:534
 RooMinuit.cxx:535
 RooMinuit.cxx:536
 RooMinuit.cxx:537
 RooMinuit.cxx:538
 RooMinuit.cxx:539
 RooMinuit.cxx:540
 RooMinuit.cxx:541
 RooMinuit.cxx:542
 RooMinuit.cxx:543
 RooMinuit.cxx:544
 RooMinuit.cxx:545
 RooMinuit.cxx:546
 RooMinuit.cxx:547
 RooMinuit.cxx:548
 RooMinuit.cxx:549
 RooMinuit.cxx:550
 RooMinuit.cxx:551
 RooMinuit.cxx:552
 RooMinuit.cxx:553
 RooMinuit.cxx:554
 RooMinuit.cxx:555
 RooMinuit.cxx:556
 RooMinuit.cxx:557
 RooMinuit.cxx:558
 RooMinuit.cxx:559
 RooMinuit.cxx:560
 RooMinuit.cxx:561
 RooMinuit.cxx:562
 RooMinuit.cxx:563
 RooMinuit.cxx:564
 RooMinuit.cxx:565
 RooMinuit.cxx:566
 RooMinuit.cxx:567
 RooMinuit.cxx:568
 RooMinuit.cxx:569
 RooMinuit.cxx:570
 RooMinuit.cxx:571
 RooMinuit.cxx:572
 RooMinuit.cxx:573
 RooMinuit.cxx:574
 RooMinuit.cxx:575
 RooMinuit.cxx:576
 RooMinuit.cxx:577
 RooMinuit.cxx:578
 RooMinuit.cxx:579
 RooMinuit.cxx:580
 RooMinuit.cxx:581
 RooMinuit.cxx:582
 RooMinuit.cxx:583
 RooMinuit.cxx:584
 RooMinuit.cxx:585
 RooMinuit.cxx:586
 RooMinuit.cxx:587
 RooMinuit.cxx:588
 RooMinuit.cxx:589
 RooMinuit.cxx:590
 RooMinuit.cxx:591
 RooMinuit.cxx:592
 RooMinuit.cxx:593
 RooMinuit.cxx:594
 RooMinuit.cxx:595
 RooMinuit.cxx:596
 RooMinuit.cxx:597
 RooMinuit.cxx:598
 RooMinuit.cxx:599
 RooMinuit.cxx:600
 RooMinuit.cxx:601
 RooMinuit.cxx:602
 RooMinuit.cxx:603
 RooMinuit.cxx:604
 RooMinuit.cxx:605
 RooMinuit.cxx:606
 RooMinuit.cxx:607
 RooMinuit.cxx:608
 RooMinuit.cxx:609
 RooMinuit.cxx:610
 RooMinuit.cxx:611
 RooMinuit.cxx:612
 RooMinuit.cxx:613
 RooMinuit.cxx:614
 RooMinuit.cxx:615
 RooMinuit.cxx:616
 RooMinuit.cxx:617
 RooMinuit.cxx:618
 RooMinuit.cxx:619
 RooMinuit.cxx:620
 RooMinuit.cxx:621
 RooMinuit.cxx:622
 RooMinuit.cxx:623
 RooMinuit.cxx:624
 RooMinuit.cxx:625
 RooMinuit.cxx:626
 RooMinuit.cxx:627
 RooMinuit.cxx:628
 RooMinuit.cxx:629
 RooMinuit.cxx:630
 RooMinuit.cxx:631
 RooMinuit.cxx:632
 RooMinuit.cxx:633
 RooMinuit.cxx:634
 RooMinuit.cxx:635
 RooMinuit.cxx:636
 RooMinuit.cxx:637
 RooMinuit.cxx:638
 RooMinuit.cxx:639
 RooMinuit.cxx:640
 RooMinuit.cxx:641
 RooMinuit.cxx:642
 RooMinuit.cxx:643
 RooMinuit.cxx:644
 RooMinuit.cxx:645
 RooMinuit.cxx:646
 RooMinuit.cxx:647
 RooMinuit.cxx:648
 RooMinuit.cxx:649
 RooMinuit.cxx:650
 RooMinuit.cxx:651
 RooMinuit.cxx:652
 RooMinuit.cxx:653
 RooMinuit.cxx:654
 RooMinuit.cxx:655
 RooMinuit.cxx:656
 RooMinuit.cxx:657
 RooMinuit.cxx:658
 RooMinuit.cxx:659
 RooMinuit.cxx:660
 RooMinuit.cxx:661
 RooMinuit.cxx:662
 RooMinuit.cxx:663
 RooMinuit.cxx:664
 RooMinuit.cxx:665
 RooMinuit.cxx:666
 RooMinuit.cxx:667
 RooMinuit.cxx:668
 RooMinuit.cxx:669
 RooMinuit.cxx:670
 RooMinuit.cxx:671
 RooMinuit.cxx:672
 RooMinuit.cxx:673
 RooMinuit.cxx:674
 RooMinuit.cxx:675
 RooMinuit.cxx:676
 RooMinuit.cxx:677
 RooMinuit.cxx:678
 RooMinuit.cxx:679
 RooMinuit.cxx:680
 RooMinuit.cxx:681
 RooMinuit.cxx:682
 RooMinuit.cxx:683
 RooMinuit.cxx:684
 RooMinuit.cxx:685
 RooMinuit.cxx:686
 RooMinuit.cxx:687
 RooMinuit.cxx:688
 RooMinuit.cxx:689
 RooMinuit.cxx:690
 RooMinuit.cxx:691
 RooMinuit.cxx:692
 RooMinuit.cxx:693
 RooMinuit.cxx:694
 RooMinuit.cxx:695
 RooMinuit.cxx:696
 RooMinuit.cxx:697
 RooMinuit.cxx:698
 RooMinuit.cxx:699
 RooMinuit.cxx:700
 RooMinuit.cxx:701
 RooMinuit.cxx:702
 RooMinuit.cxx:703
 RooMinuit.cxx:704
 RooMinuit.cxx:705
 RooMinuit.cxx:706
 RooMinuit.cxx:707
 RooMinuit.cxx:708
 RooMinuit.cxx:709
 RooMinuit.cxx:710
 RooMinuit.cxx:711
 RooMinuit.cxx:712
 RooMinuit.cxx:713
 RooMinuit.cxx:714
 RooMinuit.cxx:715
 RooMinuit.cxx:716
 RooMinuit.cxx:717
 RooMinuit.cxx:718
 RooMinuit.cxx:719
 RooMinuit.cxx:720
 RooMinuit.cxx:721
 RooMinuit.cxx:722
 RooMinuit.cxx:723
 RooMinuit.cxx:724
 RooMinuit.cxx:725
 RooMinuit.cxx:726
 RooMinuit.cxx:727
 RooMinuit.cxx:728
 RooMinuit.cxx:729
 RooMinuit.cxx:730
 RooMinuit.cxx:731
 RooMinuit.cxx:732
 RooMinuit.cxx:733
 RooMinuit.cxx:734
 RooMinuit.cxx:735
 RooMinuit.cxx:736
 RooMinuit.cxx:737
 RooMinuit.cxx:738
 RooMinuit.cxx:739
 RooMinuit.cxx:740
 RooMinuit.cxx:741
 RooMinuit.cxx:742
 RooMinuit.cxx:743
 RooMinuit.cxx:744
 RooMinuit.cxx:745
 RooMinuit.cxx:746
 RooMinuit.cxx:747
 RooMinuit.cxx:748
 RooMinuit.cxx:749
 RooMinuit.cxx:750
 RooMinuit.cxx:751
 RooMinuit.cxx:752
 RooMinuit.cxx:753
 RooMinuit.cxx:754
 RooMinuit.cxx:755
 RooMinuit.cxx:756
 RooMinuit.cxx:757
 RooMinuit.cxx:758
 RooMinuit.cxx:759
 RooMinuit.cxx:760
 RooMinuit.cxx:761
 RooMinuit.cxx:762
 RooMinuit.cxx:763
 RooMinuit.cxx:764
 RooMinuit.cxx:765
 RooMinuit.cxx:766
 RooMinuit.cxx:767
 RooMinuit.cxx:768
 RooMinuit.cxx:769
 RooMinuit.cxx:770
 RooMinuit.cxx:771
 RooMinuit.cxx:772
 RooMinuit.cxx:773
 RooMinuit.cxx:774
 RooMinuit.cxx:775
 RooMinuit.cxx:776
 RooMinuit.cxx:777
 RooMinuit.cxx:778
 RooMinuit.cxx:779
 RooMinuit.cxx:780
 RooMinuit.cxx:781
 RooMinuit.cxx:782
 RooMinuit.cxx:783
 RooMinuit.cxx:784
 RooMinuit.cxx:785
 RooMinuit.cxx:786
 RooMinuit.cxx:787
 RooMinuit.cxx:788
 RooMinuit.cxx:789
 RooMinuit.cxx:790
 RooMinuit.cxx:791
 RooMinuit.cxx:792
 RooMinuit.cxx:793
 RooMinuit.cxx:794
 RooMinuit.cxx:795
 RooMinuit.cxx:796
 RooMinuit.cxx:797
 RooMinuit.cxx:798
 RooMinuit.cxx:799
 RooMinuit.cxx:800
 RooMinuit.cxx:801
 RooMinuit.cxx:802
 RooMinuit.cxx:803
 RooMinuit.cxx:804
 RooMinuit.cxx:805
 RooMinuit.cxx:806
 RooMinuit.cxx:807
 RooMinuit.cxx:808
 RooMinuit.cxx:809
 RooMinuit.cxx:810
 RooMinuit.cxx:811
 RooMinuit.cxx:812
 RooMinuit.cxx:813
 RooMinuit.cxx:814
 RooMinuit.cxx:815
 RooMinuit.cxx:816
 RooMinuit.cxx:817
 RooMinuit.cxx:818
 RooMinuit.cxx:819
 RooMinuit.cxx:820
 RooMinuit.cxx:821
 RooMinuit.cxx:822
 RooMinuit.cxx:823
 RooMinuit.cxx:824
 RooMinuit.cxx:825
 RooMinuit.cxx:826
 RooMinuit.cxx:827
 RooMinuit.cxx:828
 RooMinuit.cxx:829
 RooMinuit.cxx:830
 RooMinuit.cxx:831
 RooMinuit.cxx:832
 RooMinuit.cxx:833
 RooMinuit.cxx:834
 RooMinuit.cxx:835
 RooMinuit.cxx:836
 RooMinuit.cxx:837
 RooMinuit.cxx:838
 RooMinuit.cxx:839
 RooMinuit.cxx:840
 RooMinuit.cxx:841
 RooMinuit.cxx:842
 RooMinuit.cxx:843
 RooMinuit.cxx:844
 RooMinuit.cxx:845
 RooMinuit.cxx:846
 RooMinuit.cxx:847
 RooMinuit.cxx:848
 RooMinuit.cxx:849
 RooMinuit.cxx:850
 RooMinuit.cxx:851
 RooMinuit.cxx:852
 RooMinuit.cxx:853
 RooMinuit.cxx:854
 RooMinuit.cxx:855
 RooMinuit.cxx:856
 RooMinuit.cxx:857
 RooMinuit.cxx:858
 RooMinuit.cxx:859
 RooMinuit.cxx:860
 RooMinuit.cxx:861
 RooMinuit.cxx:862
 RooMinuit.cxx:863
 RooMinuit.cxx:864
 RooMinuit.cxx:865
 RooMinuit.cxx:866
 RooMinuit.cxx:867
 RooMinuit.cxx:868
 RooMinuit.cxx:869
 RooMinuit.cxx:870
 RooMinuit.cxx:871
 RooMinuit.cxx:872
 RooMinuit.cxx:873
 RooMinuit.cxx:874
 RooMinuit.cxx:875
 RooMinuit.cxx:876
 RooMinuit.cxx:877
 RooMinuit.cxx:878
 RooMinuit.cxx:879
 RooMinuit.cxx:880
 RooMinuit.cxx:881
 RooMinuit.cxx:882
 RooMinuit.cxx:883
 RooMinuit.cxx:884
 RooMinuit.cxx:885
 RooMinuit.cxx:886
 RooMinuit.cxx:887
 RooMinuit.cxx:888
 RooMinuit.cxx:889
 RooMinuit.cxx:890
 RooMinuit.cxx:891
 RooMinuit.cxx:892
 RooMinuit.cxx:893
 RooMinuit.cxx:894
 RooMinuit.cxx:895
 RooMinuit.cxx:896
 RooMinuit.cxx:897
 RooMinuit.cxx:898
 RooMinuit.cxx:899
 RooMinuit.cxx:900
 RooMinuit.cxx:901
 RooMinuit.cxx:902
 RooMinuit.cxx:903
 RooMinuit.cxx:904
 RooMinuit.cxx:905
 RooMinuit.cxx:906
 RooMinuit.cxx:907
 RooMinuit.cxx:908
 RooMinuit.cxx:909
 RooMinuit.cxx:910
 RooMinuit.cxx:911
 RooMinuit.cxx:912
 RooMinuit.cxx:913
 RooMinuit.cxx:914
 RooMinuit.cxx:915
 RooMinuit.cxx:916
 RooMinuit.cxx:917
 RooMinuit.cxx:918
 RooMinuit.cxx:919
 RooMinuit.cxx:920
 RooMinuit.cxx:921
 RooMinuit.cxx:922
 RooMinuit.cxx:923
 RooMinuit.cxx:924
 RooMinuit.cxx:925
 RooMinuit.cxx:926
 RooMinuit.cxx:927
 RooMinuit.cxx:928
 RooMinuit.cxx:929
 RooMinuit.cxx:930
 RooMinuit.cxx:931
 RooMinuit.cxx:932
 RooMinuit.cxx:933
 RooMinuit.cxx:934
 RooMinuit.cxx:935
 RooMinuit.cxx:936
 RooMinuit.cxx:937
 RooMinuit.cxx:938
 RooMinuit.cxx:939
 RooMinuit.cxx:940
 RooMinuit.cxx:941
 RooMinuit.cxx:942
 RooMinuit.cxx:943
 RooMinuit.cxx:944
 RooMinuit.cxx:945
 RooMinuit.cxx:946
 RooMinuit.cxx:947
 RooMinuit.cxx:948
 RooMinuit.cxx:949
 RooMinuit.cxx:950
 RooMinuit.cxx:951
 RooMinuit.cxx:952
 RooMinuit.cxx:953
 RooMinuit.cxx:954
 RooMinuit.cxx:955
 RooMinuit.cxx:956
 RooMinuit.cxx:957
 RooMinuit.cxx:958
 RooMinuit.cxx:959
 RooMinuit.cxx:960
 RooMinuit.cxx:961
 RooMinuit.cxx:962
 RooMinuit.cxx:963
 RooMinuit.cxx:964
 RooMinuit.cxx:965
 RooMinuit.cxx:966
 RooMinuit.cxx:967
 RooMinuit.cxx:968
 RooMinuit.cxx:969
 RooMinuit.cxx:970
 RooMinuit.cxx:971
 RooMinuit.cxx:972
 RooMinuit.cxx:973
 RooMinuit.cxx:974
 RooMinuit.cxx:975
 RooMinuit.cxx:976
 RooMinuit.cxx:977
 RooMinuit.cxx:978
 RooMinuit.cxx:979
 RooMinuit.cxx:980
 RooMinuit.cxx:981
 RooMinuit.cxx:982
 RooMinuit.cxx:983
 RooMinuit.cxx:984
 RooMinuit.cxx:985
 RooMinuit.cxx:986
 RooMinuit.cxx:987
 RooMinuit.cxx:988
 RooMinuit.cxx:989
 RooMinuit.cxx:990
 RooMinuit.cxx:991
 RooMinuit.cxx:992
 RooMinuit.cxx:993
 RooMinuit.cxx:994
 RooMinuit.cxx:995
 RooMinuit.cxx:996
 RooMinuit.cxx:997
 RooMinuit.cxx:998
 RooMinuit.cxx:999
 RooMinuit.cxx:1000
 RooMinuit.cxx:1001
 RooMinuit.cxx:1002
 RooMinuit.cxx:1003
 RooMinuit.cxx:1004
 RooMinuit.cxx:1005
 RooMinuit.cxx:1006
 RooMinuit.cxx:1007
 RooMinuit.cxx:1008
 RooMinuit.cxx:1009
 RooMinuit.cxx:1010
 RooMinuit.cxx:1011
 RooMinuit.cxx:1012
 RooMinuit.cxx:1013
 RooMinuit.cxx:1014
 RooMinuit.cxx:1015
 RooMinuit.cxx:1016
 RooMinuit.cxx:1017
 RooMinuit.cxx:1018
 RooMinuit.cxx:1019
 RooMinuit.cxx:1020
 RooMinuit.cxx:1021
 RooMinuit.cxx:1022
 RooMinuit.cxx:1023
 RooMinuit.cxx:1024
 RooMinuit.cxx:1025
 RooMinuit.cxx:1026
 RooMinuit.cxx:1027
 RooMinuit.cxx:1028
 RooMinuit.cxx:1029
 RooMinuit.cxx:1030
 RooMinuit.cxx:1031
 RooMinuit.cxx:1032
 RooMinuit.cxx:1033
 RooMinuit.cxx:1034
 RooMinuit.cxx:1035
 RooMinuit.cxx:1036
 RooMinuit.cxx:1037
 RooMinuit.cxx:1038
 RooMinuit.cxx:1039
 RooMinuit.cxx:1040
 RooMinuit.cxx:1041
 RooMinuit.cxx:1042
 RooMinuit.cxx:1043
 RooMinuit.cxx:1044
 RooMinuit.cxx:1045
 RooMinuit.cxx:1046
 RooMinuit.cxx:1047
 RooMinuit.cxx:1048
 RooMinuit.cxx:1049
 RooMinuit.cxx:1050
 RooMinuit.cxx:1051
 RooMinuit.cxx:1052
 RooMinuit.cxx:1053
 RooMinuit.cxx:1054
 RooMinuit.cxx:1055
 RooMinuit.cxx:1056
 RooMinuit.cxx:1057
 RooMinuit.cxx:1058
 RooMinuit.cxx:1059
 RooMinuit.cxx:1060
 RooMinuit.cxx:1061
 RooMinuit.cxx:1062
 RooMinuit.cxx:1063
 RooMinuit.cxx:1064
 RooMinuit.cxx:1065
 RooMinuit.cxx:1066
 RooMinuit.cxx:1067
 RooMinuit.cxx:1068
 RooMinuit.cxx:1069
 RooMinuit.cxx:1070
 RooMinuit.cxx:1071
 RooMinuit.cxx:1072
 RooMinuit.cxx:1073
 RooMinuit.cxx:1074
 RooMinuit.cxx:1075
 RooMinuit.cxx:1076
 RooMinuit.cxx:1077
 RooMinuit.cxx:1078
 RooMinuit.cxx:1079
 RooMinuit.cxx:1080
 RooMinuit.cxx:1081
 RooMinuit.cxx:1082
 RooMinuit.cxx:1083
 RooMinuit.cxx:1084
 RooMinuit.cxx:1085
 RooMinuit.cxx:1086
 RooMinuit.cxx:1087
 RooMinuit.cxx:1088
 RooMinuit.cxx:1089
 RooMinuit.cxx:1090
 RooMinuit.cxx:1091
 RooMinuit.cxx:1092
 RooMinuit.cxx:1093
 RooMinuit.cxx:1094
 RooMinuit.cxx:1095
 RooMinuit.cxx:1096
 RooMinuit.cxx:1097
 RooMinuit.cxx:1098
 RooMinuit.cxx:1099
 RooMinuit.cxx:1100
 RooMinuit.cxx:1101
 RooMinuit.cxx:1102
 RooMinuit.cxx:1103
 RooMinuit.cxx:1104
 RooMinuit.cxx:1105
 RooMinuit.cxx:1106
 RooMinuit.cxx:1107
 RooMinuit.cxx:1108
 RooMinuit.cxx:1109
 RooMinuit.cxx:1110
 RooMinuit.cxx:1111
 RooMinuit.cxx:1112
 RooMinuit.cxx:1113
 RooMinuit.cxx:1114
 RooMinuit.cxx:1115
 RooMinuit.cxx:1116
 RooMinuit.cxx:1117
 RooMinuit.cxx:1118
 RooMinuit.cxx:1119
 RooMinuit.cxx:1120
 RooMinuit.cxx:1121
 RooMinuit.cxx:1122
 RooMinuit.cxx:1123
 RooMinuit.cxx:1124
 RooMinuit.cxx:1125
 RooMinuit.cxx:1126
 RooMinuit.cxx:1127
 RooMinuit.cxx:1128
 RooMinuit.cxx:1129
 RooMinuit.cxx:1130
 RooMinuit.cxx:1131
 RooMinuit.cxx:1132
 RooMinuit.cxx:1133
 RooMinuit.cxx:1134
 RooMinuit.cxx:1135
 RooMinuit.cxx:1136
 RooMinuit.cxx:1137
 RooMinuit.cxx:1138
 RooMinuit.cxx:1139
 RooMinuit.cxx:1140
 RooMinuit.cxx:1141
 RooMinuit.cxx:1142
 RooMinuit.cxx:1143
 RooMinuit.cxx:1144
 RooMinuit.cxx:1145
 RooMinuit.cxx:1146
 RooMinuit.cxx:1147
 RooMinuit.cxx:1148
 RooMinuit.cxx:1149
 RooMinuit.cxx:1150
 RooMinuit.cxx:1151
 RooMinuit.cxx:1152
 RooMinuit.cxx:1153
 RooMinuit.cxx:1154
 RooMinuit.cxx:1155
 RooMinuit.cxx:1156
 RooMinuit.cxx:1157
 RooMinuit.cxx:1158
 RooMinuit.cxx:1159
 RooMinuit.cxx:1160
 RooMinuit.cxx:1161
 RooMinuit.cxx:1162
 RooMinuit.cxx:1163
 RooMinuit.cxx:1164
 RooMinuit.cxx:1165
 RooMinuit.cxx:1166
 RooMinuit.cxx:1167
 RooMinuit.cxx:1168
 RooMinuit.cxx:1169
 RooMinuit.cxx:1170
 RooMinuit.cxx:1171
 RooMinuit.cxx:1172
 RooMinuit.cxx:1173
 RooMinuit.cxx:1174
 RooMinuit.cxx:1175
 RooMinuit.cxx:1176
 RooMinuit.cxx:1177
 RooMinuit.cxx:1178
 RooMinuit.cxx:1179
 RooMinuit.cxx:1180
 RooMinuit.cxx:1181
 RooMinuit.cxx:1182
 RooMinuit.cxx:1183
 RooMinuit.cxx:1184
 RooMinuit.cxx:1185
 RooMinuit.cxx:1186
 RooMinuit.cxx:1187
 RooMinuit.cxx:1188
 RooMinuit.cxx:1189
 RooMinuit.cxx:1190
 RooMinuit.cxx:1191
 RooMinuit.cxx:1192
 RooMinuit.cxx:1193
 RooMinuit.cxx:1194
 RooMinuit.cxx:1195
 RooMinuit.cxx:1196
 RooMinuit.cxx:1197
 RooMinuit.cxx:1198
 RooMinuit.cxx:1199
 RooMinuit.cxx:1200
 RooMinuit.cxx:1201
 RooMinuit.cxx:1202
 RooMinuit.cxx:1203
 RooMinuit.cxx:1204
 RooMinuit.cxx:1205
 RooMinuit.cxx:1206
 RooMinuit.cxx:1207
 RooMinuit.cxx:1208
 RooMinuit.cxx:1209
 RooMinuit.cxx:1210
 RooMinuit.cxx:1211
 RooMinuit.cxx:1212
 RooMinuit.cxx:1213
 RooMinuit.cxx:1214
 RooMinuit.cxx:1215
 RooMinuit.cxx:1216
 RooMinuit.cxx:1217
 RooMinuit.cxx:1218
 RooMinuit.cxx:1219
 RooMinuit.cxx:1220
 RooMinuit.cxx:1221
 RooMinuit.cxx:1222
 RooMinuit.cxx:1223
 RooMinuit.cxx:1224
 RooMinuit.cxx:1225
 RooMinuit.cxx:1226
 RooMinuit.cxx:1227
 RooMinuit.cxx:1228
 RooMinuit.cxx:1229
 RooMinuit.cxx:1230
 RooMinuit.cxx:1231
 RooMinuit.cxx:1232
 RooMinuit.cxx:1233
 RooMinuit.cxx:1234
 RooMinuit.cxx:1235
 RooMinuit.cxx:1236
 RooMinuit.cxx:1237
 RooMinuit.cxx:1238
 RooMinuit.cxx:1239
 RooMinuit.cxx:1240
 RooMinuit.cxx:1241
 RooMinuit.cxx:1242
 RooMinuit.cxx:1243
 RooMinuit.cxx:1244
 RooMinuit.cxx:1245
 RooMinuit.cxx:1246
 RooMinuit.cxx:1247
 RooMinuit.cxx:1248
 RooMinuit.cxx:1249
 RooMinuit.cxx:1250
 RooMinuit.cxx:1251
 RooMinuit.cxx:1252
 RooMinuit.cxx:1253
 RooMinuit.cxx:1254
 RooMinuit.cxx:1255
 RooMinuit.cxx:1256
 RooMinuit.cxx:1257
 RooMinuit.cxx:1258
 RooMinuit.cxx:1259
 RooMinuit.cxx:1260
 RooMinuit.cxx:1261
 RooMinuit.cxx:1262
 RooMinuit.cxx:1263