Skip to content
Snippets Groups Projects
PwaIntMinuit.cc 1.06 KiB
Newer Older
#include <string>
#include <vector>
#include "Minuit2/MnUserParameters.h"
#include "Minuit2/MnMigrad.h"
#include "Minuit2/FunctionMinimum.h"
#include "Minuit2/MnMinos.h"
#include "Minuit2/MnStrategy.h"
#include "Examples/MATpbarpToOmegaPi/MOmegaPiFcn.hh"
#include "Examples/MATpbarpToOmegaPi/PwaIntMinuit.hh"

using namespace ROOT::Minuit2;
using namespace std;

//TODO: 
//general fcn class

PwaIntMinuit::PwaIntMinuit(){
 // for(int i=in_paramNames.size()-1; i>-1; i--)
  //  paramNames.push_back(in_paramNames.at(i));
}

PwaIntMinuit::~PwaIntMinuit()
{
}

const vector<double> PwaIntMinuit::exec(MOmegaPiFcn* in_fcn){
  
  MnUserParameters upar;
  in_fcn->setMnUsrParams(upar);

  MnMigrad migrad(*in_fcn, upar);
 // Info <<"start migrad "<< endmsg;
  FunctionMinimum min = migrad();

 if(!min.IsValid()) {
   //try with higher strategy
 //  Info <<"FM is invalid, try with strategy = 2."<< endmsg;
   MnMigrad migrad2(*in_fcn, min.UserState(), MnStrategy(2));
   min = migrad2();
 }

 MnUserParameters finalUsrParameters=min.UserParameters();
 
 return finalUsrParameters.Params();
}