53 const std::vector<Interval*>& ranges,
69 DeclareOptionRef( fSamples = 100000,
"SampleSize",
"Number of Monte Carlo events in toy sample" );
70 DeclareOptionRef( fSigma = -1.0,
"Sigma",
71 "If > 0: new points are generated according to Gauss around best value and with \"Sigma\" in units of interval length" );
72 DeclareOptionRef( fSeed = 100,
"Seed",
"Seed for the random generator (0 takes random seeds)" );
88 Log() << kHEADER <<
"<MCFitter> Sampling, please be patient ..." <<
Endl;
91 if ((
Int_t)pars.size() != GetNpars())
92 Log() << kFATAL <<
"<Run> Mismatch in number of parameters: "
93 << GetNpars() <<
" != " << pars.size() <<
Endl;
96 Timer timer( fSamples, GetName() );
97 if (fIPyMaxIter) *fIPyMaxIter = fSamples;
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++) {
125 if (fIPyCurrentIter) *fIPyCurrentIter = sample;
126 if (fExitFromTraining && *fExitFromTraining)
break;
129 parIt = parameters.begin();
131 parBestIt = bestParameters.begin();
132 for (std::vector<TMVA::GeneticRange*>::iterator rndIt = rndRanges.begin(); rndIt<rndRanges.end(); ++rndIt) {
133 (*parIt) = (*rndIt)->Random(
kTRUE, (*parBestIt), fSigma );
139 for (std::vector<TMVA::GeneticRange*>::iterator rndIt = rndRanges.begin(); rndIt<rndRanges.end(); ++rndIt) {
140 (*parIt) = (*rndIt)->Random();
146 estimator = EstimatorFunction( parameters );
149 if (estimator < bestFit || sample==0) {
151 bestParameters.swap( parameters );
157 pars.swap( bestParameters );
virtual void ParseOptions()
options parser
Base class for TMVA fitters.
Double_t Run()
estimator function interface for fitting
Range definition for genetic algorithm.
Interface for a fitter 'target'.
Fitter using Monte Carlo sampling of parameters.
void SetParameters(Int_t cycles)
set MC fitter configuration parameters
MCFitter(IFitterTarget &target, const TString &name, const std::vector< TMVA::Interval * > &ranges, const TString &theOption)
constructor
void DeclareOptions()
Declare MCFitter options.
Timing information for training and evaluation of MVA methods.
TString GetElapsedTime(Bool_t Scientific=kTRUE)
returns pretty string with elapsed time
void DrawProgressBar(Int_t, const TString &comment="")
draws progress bar in color or B&W caution:
Random number generator class based on M.
virtual Double_t Uniform(Double_t x1=1)
Returns a uniform deviate on the interval (0, x1).
create variable transformations
MsgLogger & Endl(MsgLogger &ml)