87 Log() << kHEADER <<
"<MCFitter> Sampling, please be patient ..." <<
Endl;
90 if ((
Int_t)pars.size() != GetNpars())
91 Log() << kFATAL <<
"<Run> Mismatch in number of parameters: "
92 << GetNpars() <<
" != " << pars.size() <<
Endl;
95 Timer timer( fSamples, GetName() );
97 std::vector<Double_t> parameters;
98 std::vector<Double_t> bestParameters;
103 std::vector<TMVA::GeneticRange*> rndRanges;
106 std::vector< TMVA::Interval* >::const_iterator rIt;
108 for (rIt = fRanges.begin(); rIt<fRanges.end(); ++rIt) {
110 val = rndRanges.back()->Random();
111 parameters.push_back( val );
112 bestParameters.push_back( val );
115 std::vector<Double_t>::iterator parIt;
116 std::vector<Double_t>::iterator parBestIt;
122 for (
Int_t sample = 0; sample < fSamples; sample++) {
125 parIt = parameters.begin();
127 parBestIt = bestParameters.begin();
128 for (std::vector<TMVA::GeneticRange*>::iterator rndIt = rndRanges.begin(); rndIt<rndRanges.end(); ++rndIt) {
129 (*parIt) = (*rndIt)->Random(
kTRUE, (*parBestIt), fSigma );
135 for (std::vector<TMVA::GeneticRange*>::iterator rndIt = rndRanges.begin(); rndIt<rndRanges.end(); ++rndIt) {
136 (*parIt) = (*rndIt)->Random();
142 estimator = EstimatorFunction( parameters );
145 if (estimator < bestFit || sample==0) {
147 bestParameters.swap( parameters );
153 pars.swap( bestParameters );