52 TMVA::MCFitter::MCFitter( IFitterTarget& target,
54 const std::vector<Interval*>& ranges,
56 : TMVA::FitterBase( target, name, ranges, theOption ),
72 "If > 0: new points are generated according to Gauss around best value and with \"Sigma\" in units of interval length" );
89 Log() <<
kINFO <<
"<MCFitter> Sampling, please be patient ..." <<
Endl;
92 if ((
Int_t)pars.size() != GetNpars())
93 Log() <<
kFATAL <<
"<Run> Mismatch in number of parameters: "
94 << GetNpars() <<
" != " << pars.size() <<
Endl;
99 std::vector<Double_t> parameters;
100 std::vector<Double_t> bestParameters;
105 std::vector<TMVA::GeneticRange*> rndRanges;
108 std::vector< TMVA::Interval* >::const_iterator rIt;
110 for (rIt = fRanges.begin(); rIt<fRanges.end(); rIt++) {
112 val = rndRanges.back()->Random();
113 parameters.push_back( val );
114 bestParameters.push_back( val );
117 std::vector<Double_t>::iterator parIt;
118 std::vector<Double_t>::iterator parBestIt;
124 for (
Int_t sample = 0; sample < fSamples; sample++) {
127 parIt = parameters.begin();
129 parBestIt = bestParameters.begin();
130 for (std::vector<TMVA::GeneticRange*>::iterator rndIt = rndRanges.begin(); rndIt<rndRanges.end(); rndIt++) {
131 (*parIt) = (*rndIt)->Random(
kTRUE, (*parBestIt), fSigma );
137 for (std::vector<TMVA::GeneticRange*>::iterator rndIt = rndRanges.begin(); rndIt<rndRanges.end(); rndIt++) {
138 (*parIt) = (*rndIt)->Random();
144 estimator = EstimatorFunction( parameters );
147 if (estimator < bestFit || sample==0) {
149 bestParameters.swap( parameters );
155 pars.swap( bestParameters );
Random number generator class based on M.
MsgLogger & Endl(MsgLogger &ml)
OptionBase * DeclareOptionRef(T &ref, const TString &name, const TString &desc="")
Double_t Run()
estimator function interface for fitting
void SetParameters(Int_t cycles)
set MC fitter configuration parameters
ClassImp(TMVA::MCFitter) TMVA
constructor
TString GetElapsedTime(Bool_t Scientific=kTRUE)
void DeclareOptions()
Declare MCFitter options.
virtual Double_t Uniform(Double_t x1=1)
Returns a uniform deviate on the interval (0, x1).
void DrawProgressBar(Int_t, const TString &comment="")
draws progress bar in color or B&W caution: