#include "TMVA/OptimizeConfigParameters.h"
#include <limits>
#include <cstdlib>
#include "TMath.h"
#include "TGraph.h"
#include "TH1.h"
#include "TH2.h"
#include "TDirectory.h"
#include "TMVA/IMethod.h"
#include "TMVA/MethodBase.h"
#include "TMVA/GeneticFitter.h"
#include "TMVA/MinuitFitter.h"
#include "TMVA/Interval.h"
#include "TMVA/PDF.h"
#include "TMVA/MsgLogger.h"
#include "TMVA/Tools.h"
ClassImp(TMVA::OptimizeConfigParameters)
TMVA::OptimizeConfigParameters::OptimizeConfigParameters(MethodBase * const method, std::map<TString,TMVA::Interval*> tuneParameters, TString fomType, TString optimizationFitType)
: fMethod(method),
fTuneParameters(tuneParameters),
fFOMType(fomType),
fOptimizationFitType(optimizationFitType),
fMvaSig(NULL),
fMvaBkg(NULL),
fMvaSigFineBin(NULL),
fMvaBkgFineBin(NULL),
fNotDoneYet(kFALSE)
{
std::string name = "OptimizeConfigParameters_";
name += std::string(GetMethod()->GetName());
fLogger = new MsgLogger(name);
if (fMethod->DoRegression()){
Log() << kFATAL << " ERROR: Sorry, Regression is not yet implement for automatic parameter optimization"
<< " --> exit" << Endl;
}
Log() << kINFO << "Automatic optimisation of tuning parameters in "
<< GetMethod()->GetName() << " uses:" << Endl;
std::map<TString,TMVA::Interval*>::iterator it;
for (it=fTuneParameters.begin(); it!=fTuneParameters.end();it++) {
Log() << kINFO << it->first
<< " in range from: " << it->second->GetMin()
<< " to: " << it->second->GetMax()
<< " in : " << it->second->GetNbins() << " steps"
<< Endl;
}
Log() << kINFO << " using the options: " << fFOMType << " and " << fOptimizationFitType << Endl;
}
TMVA::OptimizeConfigParameters::~OptimizeConfigParameters()
{
GetMethod()->BaseDir()->cd();
Int_t n=Int_t(fFOMvsIter.size());
Float_t *x = new Float_t[n];
Float_t *y = new Float_t[n];
Float_t ymin=+999999999;
Float_t ymax=-999999999;
for (Int_t i=0;i<n;i++){
x[i] = Float_t(i);
y[i] = fFOMvsIter[i];
if (ymin>y[i]) ymin=y[i];
if (ymax<y[i]) ymax=y[i];
}
TH2D *h=new TH2D(TString(GetMethod()->GetName())+"_FOMvsIterFrame","",2,0,n,2,ymin*0.95,ymax*1.05);
h->SetXTitle("#iteration "+fOptimizationFitType);
h->SetYTitle(fFOMType);
TGraph *gFOMvsIter = new TGraph(n,x,y);
gFOMvsIter->SetName((TString(GetMethod()->GetName())+"_FOMvsIter").Data());
gFOMvsIter->Write();
h->Write();
delete [] x;
delete [] y;
}
std::map<TString,Double_t> TMVA::OptimizeConfigParameters::optimize()
{
if (fOptimizationFitType == "Scan" ) this->optimizeScan();
else if (fOptimizationFitType == "FitGA" || fOptimizationFitType == "Minuit" ) this->optimizeFit();
else {
Log() << kFATAL << "You have chosen as optimization type " << fOptimizationFitType
<< " that is not (yet) coded --> exit()" << Endl;
}
Log() << kINFO << "For " << GetMethod()->GetName() << " the optimized Parameters are: " << Endl;
std::map<TString,Double_t>::iterator it;
for(it=fTunedParameters.begin(); it!= fTunedParameters.end(); it++){
Log() << kINFO << it->first << " = " << it->second << Endl;
}
return fTunedParameters;
}
std::vector< int > TMVA::OptimizeConfigParameters::GetScanIndices( int val, std::vector<int> base){
std::vector < int > indices;
for (UInt_t i=0; i< base.size(); i++){
indices.push_back(val % base[i] );
val = int( floor( float(val) / float(base[i]) ) );
}
return indices;
}
void TMVA::OptimizeConfigParameters::optimizeScan()
{
Double_t bestFOM=-1000000, currentFOM;
std::map<TString,Double_t> currentParameters;
std::map<TString,TMVA::Interval*>::iterator it;
currentParameters.clear();
fTunedParameters.clear();
for (it=fTuneParameters.begin(); it!=fTuneParameters.end(); it++){
currentParameters.insert(std::pair<TString,Double_t>(it->first,it->second->GetMin()));
fTunedParameters.insert(std::pair<TString,Double_t>(it->first,it->second->GetMin()));
}
std::vector< std::vector <Double_t> > v;
for (it=fTuneParameters.begin(); it!=fTuneParameters.end(); it++){
std::vector< Double_t > tmp;
for (Int_t k=0; k<it->second->GetNbins(); k++){
tmp.push_back(it->second->GetElement(k));
}
v.push_back(tmp);
}
Int_t Ntot = 1;
std::vector< int > Nindividual;
for (UInt_t i=0; i<v.size(); i++) {
Ntot *= v[i].size();
Nindividual.push_back(v[i].size());
}
for (int i=0; i<Ntot; i++){
UInt_t index=0;
std::vector<int> indices = GetScanIndices(i, Nindividual );
for (it=fTuneParameters.begin(), index=0; index< indices.size(); index++, it++){
currentParameters[it->first] = v[index][indices[index]];
}
Log() << kINFO << "--------------------------" << Endl;
Log() << kINFO <<"Settings being evaluated:" << Endl;
for (std::map<TString,Double_t>::iterator it_print=currentParameters.begin();
it_print!=currentParameters.end(); it_print++){
Log() << kINFO << " " << it_print->first << " = " << it_print->second << Endl;
}
GetMethod()->Reset();
GetMethod()->SetTuneParameters(currentParameters);
GetMethod()->BaseDir()->cd();
if (i==0) GetMethod()->GetTransformationHandler().CalcTransformations(
GetMethod()->Data()->GetEventCollection());
Event::SetIsTraining(kTRUE);
GetMethod()->Train();
Event::SetIsTraining(kFALSE);
currentFOM = GetFOM();
Log() << kINFO << "FOM was found : " << currentFOM << "; current best is " << bestFOM << Endl;
if (currentFOM > bestFOM) {
bestFOM = currentFOM;
for (std::map<TString,Double_t>::iterator iter=currentParameters.begin();
iter != currentParameters.end(); iter++){
fTunedParameters[iter->first]=iter->second;
}
}
}
GetMethod()->Reset();
GetMethod()->SetTuneParameters(fTunedParameters);
}
void TMVA::OptimizeConfigParameters::optimizeFit()
{
std::vector<TMVA::Interval*> ranges;
std::map<TString, TMVA::Interval*>::iterator it;
std::vector<Double_t> pars;
for (it=fTuneParameters.begin(); it != fTuneParameters.end(); it++){
ranges.push_back(new TMVA::Interval(*(it->second)));
pars.push_back( (it->second)->GetMean() );
}
FitterBase* fitter = NULL;
if ( fOptimizationFitType == "Minuit" ) {
TString opt="";
fitter = new MinuitFitter( *this,
"FitterMinuit_BDTOptimize",
ranges, opt );
}else if ( fOptimizationFitType == "FitGA" ) {
TString opt="PopSize=20:Steps=30:Cycles=3:ConvCrit=0.01:SaveBestCycle=5";
fitter = new GeneticFitter( *this,
"FitterGA_BDTOptimize",
ranges, opt );
} else {
Log() << kWARNING << " you did not specify a valid OptimizationFitType "
<< " will use the default (FitGA) " << Endl;
TString opt="PopSize=20:Steps=30:Cycles=3:ConvCrit=0.01:SaveBestCycle=5";
fitter = new GeneticFitter( *this,
"FitterGA_BDTOptimize",
ranges, opt );
}
fitter->CheckForUnusedOptions();
fitter->Run(pars);
for (UInt_t ipar=0; ipar<ranges.size(); ipar++) delete ranges[ipar];
GetMethod()->Reset();
fTunedParameters.clear();
Int_t jcount=0;
for (it=fTuneParameters.begin(); it!=fTuneParameters.end(); it++){
fTunedParameters.insert(std::pair<TString,Double_t>(it->first,pars[jcount++]));
}
GetMethod()->SetTuneParameters(fTunedParameters);
}
Double_t TMVA::OptimizeConfigParameters::EstimatorFunction( std::vector<Double_t> & pars)
{
std::map< std::vector<Double_t> , Double_t>::const_iterator iter;
iter = fAlreadyTrainedParCombination.find(pars);
if (iter != fAlreadyTrainedParCombination.end()) {
return iter->second;
}else{
std::map<TString,Double_t> currentParameters;
Int_t icount =0;
std::map<TString, TMVA::Interval*>::iterator it;
for (it=fTuneParameters.begin(); it!=fTuneParameters.end(); it++){
currentParameters[it->first] = pars[icount++];
}
GetMethod()->Reset();
GetMethod()->SetTuneParameters(currentParameters);
GetMethod()->BaseDir()->cd();
if (fNotDoneYet){
GetMethod()->GetTransformationHandler().
CalcTransformations(GetMethod()->Data()->GetEventCollection());
fNotDoneYet=kFALSE;
}
Event::SetIsTraining(kTRUE);
GetMethod()->Train();
Event::SetIsTraining(kFALSE);
Double_t currentFOM = GetFOM();
fAlreadyTrainedParCombination.insert(std::make_pair(pars,-currentFOM));
return -currentFOM;
}
}
Double_t TMVA::OptimizeConfigParameters::GetFOM()
{
Double_t fom=0;
if (fMethod->DoRegression()){
std::cout << " ERROR: Sorry, Regression is not yet implement for automatic parameter optimisation"
<< " --> exit" << std::endl;
std::exit(1);
}else{
if (fFOMType == "Separation") fom = GetSeparation();
else if (fFOMType == "ROCIntegral") fom = GetROCIntegral();
else if (fFOMType == "SigEffAtBkgEff01") fom = GetSigEffAtBkgEff(0.1);
else if (fFOMType == "SigEffAtBkgEff001") fom = GetSigEffAtBkgEff(0.01);
else if (fFOMType == "SigEffAtBkgEff002") fom = GetSigEffAtBkgEff(0.02);
else if (fFOMType == "BkgRejAtSigEff05") fom = GetBkgRejAtSigEff(0.5);
else if (fFOMType == "BkgEffAtSigEff05") fom = GetBkgEffAtSigEff(0.5);
else {
Log()<<kFATAL << " ERROR, you've specified as Figure of Merit in the "
<< " parameter optimisation " << fFOMType << " which has not"
<< " been implemented yet!! ---> exit " << Endl;
}
}
fFOMvsIter.push_back(fom);
return fom;
}
void TMVA::OptimizeConfigParameters::GetMVADists()
{
if (fMvaSig) fMvaSig->Delete();
if (fMvaBkg) fMvaBkg->Delete();
if (fMvaSigFineBin) fMvaSigFineBin->Delete();
if (fMvaBkgFineBin) fMvaBkgFineBin->Delete();
fMvaSig = new TH1D("fMvaSig","",100,-1.5,1.5);
fMvaBkg = new TH1D("fMvaBkg","",100,-1.5,1.5);
fMvaSigFineBin = new TH1D("fMvaSigFineBin","",100000,-1.5,1.5);
fMvaBkgFineBin = new TH1D("fMvaBkgFineBin","",100000,-1.5,1.5);
const std::vector< Event*> events=fMethod->Data()->GetEventCollection(Types::kTesting);
UInt_t signalClassNr = fMethod->DataInfo().GetClassInfo("Signal")->GetNumber();
for (UInt_t iev=0; iev < events.size() ; iev++){
if (events[iev]->GetClass() == signalClassNr) {
fMvaSig->Fill(fMethod->GetMvaValue(events[iev]),events[iev]->GetWeight());
fMvaSigFineBin->Fill(fMethod->GetMvaValue(events[iev]),events[iev]->GetWeight());
} else {
fMvaBkg->Fill(fMethod->GetMvaValue(events[iev]),events[iev]->GetWeight());
fMvaBkgFineBin->Fill(fMethod->GetMvaValue(events[iev]),events[iev]->GetWeight());
}
}
}
Double_t TMVA::OptimizeConfigParameters::GetSeparation()
{
GetMVADists();
if (1){
PDF *splS = new PDF( " PDF Sig", fMvaSig, PDF::kSpline2 );
PDF *splB = new PDF( " PDF Bkg", fMvaBkg, PDF::kSpline2 );
return gTools().GetSeparation(*splS,*splB);
}else{
std::cout << "Separation caclulcaton via histograms (not PDFs) seems to give still strange results!! Don't do that, check!!"<<std::endl;
return gTools().GetSeparation(fMvaSigFineBin,fMvaBkgFineBin);
}
}
Double_t TMVA::OptimizeConfigParameters::GetROCIntegral()
{
GetMVADists();
Double_t integral = 0;
if (0){
PDF *pdfS = new PDF( " PDF Sig", fMvaSig, PDF::kSpline2 );
PDF *pdfB = new PDF( " PDF Bkg", fMvaBkg, PDF::kSpline2 );
Double_t xmin = TMath::Min(pdfS->GetXmin(), pdfB->GetXmin());
Double_t xmax = TMath::Max(pdfS->GetXmax(), pdfB->GetXmax());
UInt_t nsteps = 1000;
Double_t step = (xmax-xmin)/Double_t(nsteps);
Double_t cut = xmin;
for (UInt_t i=0; i<nsteps; i++){
integral += (1-pdfB->GetIntegral(cut,xmax)) * pdfS->GetVal(cut);
cut+=step;
}
integral*=step;
}else{
if ( (fMvaSigFineBin->GetXaxis()->GetXmin() != fMvaBkgFineBin->GetXaxis()->GetXmin()) ||
(fMvaSigFineBin->GetNbinsX() != fMvaBkgFineBin->GetNbinsX()) ){
std::cout << " Error in OptimizeConfigParameters GetROCIntegral, unequal histograms for sig and bkg.." << std::endl;
std::exit(1);
}else{
Double_t *cumulator = fMvaBkgFineBin->GetIntegral();
Int_t nbins = fMvaSigFineBin->GetNbinsX();
Double_t sigIntegral = 0;
for (Int_t ibin=1; ibin<=nbins; ibin++){
sigIntegral += fMvaSigFineBin->GetBinContent(ibin) * fMvaSigFineBin->GetBinWidth(ibin);
}
for (Int_t ibin=1; ibin <= nbins; ibin++){
integral += (cumulator[ibin]) * fMvaSigFineBin->GetBinContent(ibin)/sigIntegral * fMvaSigFineBin->GetBinWidth(ibin) ;
}
}
}
return integral;
}
Double_t TMVA::OptimizeConfigParameters::GetSigEffAtBkgEff(Double_t bkgEff)
{
GetMVADists();
Double_t sigEff=0;
if ( (fMvaSigFineBin->GetXaxis()->GetXmin() != fMvaBkgFineBin->GetXaxis()->GetXmin()) ||
(fMvaSigFineBin->GetNbinsX() != fMvaBkgFineBin->GetNbinsX()) ){
std::cout << " Error in OptimizeConfigParameters GetSigEffAt, unequal histograms for sig and bkg.." << std::endl;
std::exit(1);
}else{
Double_t *bkgCumulator = fMvaBkgFineBin->GetIntegral();
Double_t *sigCumulator = fMvaSigFineBin->GetIntegral();
Int_t nbins=fMvaBkgFineBin->GetNbinsX();
Int_t ibin=0;
while (bkgCumulator[nbins-ibin] > (1-bkgEff)) {
sigEff = sigCumulator[nbins]-sigCumulator[nbins-ibin];
ibin++;
}
}
return sigEff;
}
Double_t TMVA::OptimizeConfigParameters::GetBkgEffAtSigEff(Double_t sigEff)
{
GetMVADists();
Double_t bkgEff=0;
if ( (fMvaSigFineBin->GetXaxis()->GetXmin() != fMvaBkgFineBin->GetXaxis()->GetXmin()) ||
(fMvaSigFineBin->GetNbinsX() != fMvaBkgFineBin->GetNbinsX()) ){
std::cout << " Error in OptimizeConfigParameters GetBkgEffAt, unequal histograms for sig and bkg.." << std::endl;
std::exit(1);
}else{
Double_t *bkgCumulator = fMvaBkgFineBin->GetIntegral();
Double_t *sigCumulator = fMvaSigFineBin->GetIntegral();
Int_t nbins=fMvaBkgFineBin->GetNbinsX();
Int_t ibin=0;
while ( sigCumulator[nbins]-sigCumulator[nbins-ibin] < sigEff) {
bkgEff = bkgCumulator[nbins]-bkgCumulator[nbins-ibin];
ibin++;
}
}
return bkgEff;
}
Double_t TMVA::OptimizeConfigParameters::GetBkgRejAtSigEff(Double_t sigEff)
{
GetMVADists();
Double_t bkgRej=0;
if ( (fMvaSigFineBin->GetXaxis()->GetXmin() != fMvaBkgFineBin->GetXaxis()->GetXmin()) ||
(fMvaSigFineBin->GetNbinsX() != fMvaBkgFineBin->GetNbinsX()) ){
std::cout << " Error in OptimizeConfigParameters GetBkgEffAt, unequal histograms for sig and bkg.." << std::endl;
std::exit(1);
}else{
Double_t *bkgCumulator = fMvaBkgFineBin->GetIntegral();
Double_t *sigCumulator = fMvaSigFineBin->GetIntegral();
Int_t nbins=fMvaBkgFineBin->GetNbinsX();
Int_t ibin=0;
while ( sigCumulator[nbins]-sigCumulator[nbins-ibin] < sigEff) {
bkgRej = bkgCumulator[nbins-ibin];
ibin++;
}
}
return bkgRej;
}
OptimizeConfigParameters.cxx:1 OptimizeConfigParameters.cxx:2 OptimizeConfigParameters.cxx:3 OptimizeConfigParameters.cxx:4 OptimizeConfigParameters.cxx:5 OptimizeConfigParameters.cxx:6 OptimizeConfigParameters.cxx:7 OptimizeConfigParameters.cxx:8 OptimizeConfigParameters.cxx:9 OptimizeConfigParameters.cxx:10 OptimizeConfigParameters.cxx:11 OptimizeConfigParameters.cxx:12 OptimizeConfigParameters.cxx:13 OptimizeConfigParameters.cxx:14 OptimizeConfigParameters.cxx:15 OptimizeConfigParameters.cxx:16 OptimizeConfigParameters.cxx:17 OptimizeConfigParameters.cxx:18 OptimizeConfigParameters.cxx:19 OptimizeConfigParameters.cxx:20 OptimizeConfigParameters.cxx:21 OptimizeConfigParameters.cxx:22 OptimizeConfigParameters.cxx:23 OptimizeConfigParameters.cxx:24 OptimizeConfigParameters.cxx:25 OptimizeConfigParameters.cxx:26 OptimizeConfigParameters.cxx:27 OptimizeConfigParameters.cxx:28 OptimizeConfigParameters.cxx:29 OptimizeConfigParameters.cxx:30 OptimizeConfigParameters.cxx:31 OptimizeConfigParameters.cxx:32 OptimizeConfigParameters.cxx:33 OptimizeConfigParameters.cxx:34 OptimizeConfigParameters.cxx:35 OptimizeConfigParameters.cxx:36 OptimizeConfigParameters.cxx:37 OptimizeConfigParameters.cxx:38 OptimizeConfigParameters.cxx:39 OptimizeConfigParameters.cxx:40 OptimizeConfigParameters.cxx:41 OptimizeConfigParameters.cxx:42 OptimizeConfigParameters.cxx:43 OptimizeConfigParameters.cxx:44 OptimizeConfigParameters.cxx:45 OptimizeConfigParameters.cxx:46 OptimizeConfigParameters.cxx:47 OptimizeConfigParameters.cxx:48 OptimizeConfigParameters.cxx:49 OptimizeConfigParameters.cxx:50 OptimizeConfigParameters.cxx:51 OptimizeConfigParameters.cxx:52 OptimizeConfigParameters.cxx:53 OptimizeConfigParameters.cxx:54 OptimizeConfigParameters.cxx:55 OptimizeConfigParameters.cxx:56 OptimizeConfigParameters.cxx:57 OptimizeConfigParameters.cxx:58 OptimizeConfigParameters.cxx:59 OptimizeConfigParameters.cxx:60 OptimizeConfigParameters.cxx:61 OptimizeConfigParameters.cxx:62 OptimizeConfigParameters.cxx:63 OptimizeConfigParameters.cxx:64 OptimizeConfigParameters.cxx:65 OptimizeConfigParameters.cxx:66 OptimizeConfigParameters.cxx:67 OptimizeConfigParameters.cxx:68 OptimizeConfigParameters.cxx:69 OptimizeConfigParameters.cxx:70 OptimizeConfigParameters.cxx:71 OptimizeConfigParameters.cxx:72 OptimizeConfigParameters.cxx:73 OptimizeConfigParameters.cxx:74 OptimizeConfigParameters.cxx:75 OptimizeConfigParameters.cxx:76 OptimizeConfigParameters.cxx:77 OptimizeConfigParameters.cxx:78 OptimizeConfigParameters.cxx:79 OptimizeConfigParameters.cxx:80 OptimizeConfigParameters.cxx:81 OptimizeConfigParameters.cxx:82 OptimizeConfigParameters.cxx:83 OptimizeConfigParameters.cxx:84 OptimizeConfigParameters.cxx:85 OptimizeConfigParameters.cxx:86 OptimizeConfigParameters.cxx:87 OptimizeConfigParameters.cxx:88 OptimizeConfigParameters.cxx:89 OptimizeConfigParameters.cxx:90 OptimizeConfigParameters.cxx:91 OptimizeConfigParameters.cxx:92 OptimizeConfigParameters.cxx:93 OptimizeConfigParameters.cxx:94 OptimizeConfigParameters.cxx:95 OptimizeConfigParameters.cxx:96 OptimizeConfigParameters.cxx:97 OptimizeConfigParameters.cxx:98 OptimizeConfigParameters.cxx:99 OptimizeConfigParameters.cxx:100 OptimizeConfigParameters.cxx:101 OptimizeConfigParameters.cxx:102 OptimizeConfigParameters.cxx:103 OptimizeConfigParameters.cxx:104 OptimizeConfigParameters.cxx:105 OptimizeConfigParameters.cxx:106 OptimizeConfigParameters.cxx:107 OptimizeConfigParameters.cxx:108 OptimizeConfigParameters.cxx:109 OptimizeConfigParameters.cxx:110 OptimizeConfigParameters.cxx:111 OptimizeConfigParameters.cxx:112 OptimizeConfigParameters.cxx:113 OptimizeConfigParameters.cxx:114 OptimizeConfigParameters.cxx:115 OptimizeConfigParameters.cxx:116 OptimizeConfigParameters.cxx:117 OptimizeConfigParameters.cxx:118 OptimizeConfigParameters.cxx:119 OptimizeConfigParameters.cxx:120 OptimizeConfigParameters.cxx:121 OptimizeConfigParameters.cxx:122 OptimizeConfigParameters.cxx:123 OptimizeConfigParameters.cxx:124 OptimizeConfigParameters.cxx:125 OptimizeConfigParameters.cxx:126 OptimizeConfigParameters.cxx:127 OptimizeConfigParameters.cxx:128 OptimizeConfigParameters.cxx:129 OptimizeConfigParameters.cxx:130 OptimizeConfigParameters.cxx:131 OptimizeConfigParameters.cxx:132 OptimizeConfigParameters.cxx:133 OptimizeConfigParameters.cxx:134 OptimizeConfigParameters.cxx:135 OptimizeConfigParameters.cxx:136 OptimizeConfigParameters.cxx:137 OptimizeConfigParameters.cxx:138 OptimizeConfigParameters.cxx:139 OptimizeConfigParameters.cxx:140 OptimizeConfigParameters.cxx:141 OptimizeConfigParameters.cxx:142 OptimizeConfigParameters.cxx:143 OptimizeConfigParameters.cxx:144 OptimizeConfigParameters.cxx:145 OptimizeConfigParameters.cxx:146 OptimizeConfigParameters.cxx:147 OptimizeConfigParameters.cxx:148 OptimizeConfigParameters.cxx:149 OptimizeConfigParameters.cxx:150 OptimizeConfigParameters.cxx:151 OptimizeConfigParameters.cxx:152 OptimizeConfigParameters.cxx:153 OptimizeConfigParameters.cxx:154 OptimizeConfigParameters.cxx:155 OptimizeConfigParameters.cxx:156 OptimizeConfigParameters.cxx:157 OptimizeConfigParameters.cxx:158 OptimizeConfigParameters.cxx:159 OptimizeConfigParameters.cxx:160 OptimizeConfigParameters.cxx:161 OptimizeConfigParameters.cxx:162 OptimizeConfigParameters.cxx:163 OptimizeConfigParameters.cxx:164 OptimizeConfigParameters.cxx:165 OptimizeConfigParameters.cxx:166 OptimizeConfigParameters.cxx:167 OptimizeConfigParameters.cxx:168 OptimizeConfigParameters.cxx:169 OptimizeConfigParameters.cxx:170 OptimizeConfigParameters.cxx:171 OptimizeConfigParameters.cxx:172 OptimizeConfigParameters.cxx:173 OptimizeConfigParameters.cxx:174 OptimizeConfigParameters.cxx:175 OptimizeConfigParameters.cxx:176 OptimizeConfigParameters.cxx:177 OptimizeConfigParameters.cxx:178 OptimizeConfigParameters.cxx:179 OptimizeConfigParameters.cxx:180 OptimizeConfigParameters.cxx:181 OptimizeConfigParameters.cxx:182 OptimizeConfigParameters.cxx:183 OptimizeConfigParameters.cxx:184 OptimizeConfigParameters.cxx:185 OptimizeConfigParameters.cxx:186 OptimizeConfigParameters.cxx:187 OptimizeConfigParameters.cxx:188 OptimizeConfigParameters.cxx:189 OptimizeConfigParameters.cxx:190 OptimizeConfigParameters.cxx:191 OptimizeConfigParameters.cxx:192 OptimizeConfigParameters.cxx:193 OptimizeConfigParameters.cxx:194 OptimizeConfigParameters.cxx:195 OptimizeConfigParameters.cxx:196 OptimizeConfigParameters.cxx:197 OptimizeConfigParameters.cxx:198 OptimizeConfigParameters.cxx:199 OptimizeConfigParameters.cxx:200 OptimizeConfigParameters.cxx:201 OptimizeConfigParameters.cxx:202 OptimizeConfigParameters.cxx:203 OptimizeConfigParameters.cxx:204 OptimizeConfigParameters.cxx:205 OptimizeConfigParameters.cxx:206 OptimizeConfigParameters.cxx:207 OptimizeConfigParameters.cxx:208 OptimizeConfigParameters.cxx:209 OptimizeConfigParameters.cxx:210 OptimizeConfigParameters.cxx:211 OptimizeConfigParameters.cxx:212 OptimizeConfigParameters.cxx:213 OptimizeConfigParameters.cxx:214 OptimizeConfigParameters.cxx:215 OptimizeConfigParameters.cxx:216 OptimizeConfigParameters.cxx:217 OptimizeConfigParameters.cxx:218 OptimizeConfigParameters.cxx:219 OptimizeConfigParameters.cxx:220 OptimizeConfigParameters.cxx:221 OptimizeConfigParameters.cxx:222 OptimizeConfigParameters.cxx:223 OptimizeConfigParameters.cxx:224 OptimizeConfigParameters.cxx:225 OptimizeConfigParameters.cxx:226 OptimizeConfigParameters.cxx:227 OptimizeConfigParameters.cxx:228 OptimizeConfigParameters.cxx:229 OptimizeConfigParameters.cxx:230 OptimizeConfigParameters.cxx:231 OptimizeConfigParameters.cxx:232 OptimizeConfigParameters.cxx:233 OptimizeConfigParameters.cxx:234 OptimizeConfigParameters.cxx:235 OptimizeConfigParameters.cxx:236 OptimizeConfigParameters.cxx:237 OptimizeConfigParameters.cxx:238 OptimizeConfigParameters.cxx:239 OptimizeConfigParameters.cxx:240 OptimizeConfigParameters.cxx:241 OptimizeConfigParameters.cxx:242 OptimizeConfigParameters.cxx:243 OptimizeConfigParameters.cxx:244 OptimizeConfigParameters.cxx:245 OptimizeConfigParameters.cxx:246 OptimizeConfigParameters.cxx:247 OptimizeConfigParameters.cxx:248 OptimizeConfigParameters.cxx:249 OptimizeConfigParameters.cxx:250 OptimizeConfigParameters.cxx:251 OptimizeConfigParameters.cxx:252 OptimizeConfigParameters.cxx:253 OptimizeConfigParameters.cxx:254 OptimizeConfigParameters.cxx:255 OptimizeConfigParameters.cxx:256 OptimizeConfigParameters.cxx:257 OptimizeConfigParameters.cxx:258 OptimizeConfigParameters.cxx:259 OptimizeConfigParameters.cxx:260 OptimizeConfigParameters.cxx:261 OptimizeConfigParameters.cxx:262 OptimizeConfigParameters.cxx:263 OptimizeConfigParameters.cxx:264 OptimizeConfigParameters.cxx:265 OptimizeConfigParameters.cxx:266 OptimizeConfigParameters.cxx:267 OptimizeConfigParameters.cxx:268 OptimizeConfigParameters.cxx:269 OptimizeConfigParameters.cxx:270 OptimizeConfigParameters.cxx:271 OptimizeConfigParameters.cxx:272 OptimizeConfigParameters.cxx:273 OptimizeConfigParameters.cxx:274 OptimizeConfigParameters.cxx:275 OptimizeConfigParameters.cxx:276 OptimizeConfigParameters.cxx:277 OptimizeConfigParameters.cxx:278 OptimizeConfigParameters.cxx:279 OptimizeConfigParameters.cxx:280 OptimizeConfigParameters.cxx:281 OptimizeConfigParameters.cxx:282 OptimizeConfigParameters.cxx:283 OptimizeConfigParameters.cxx:284 OptimizeConfigParameters.cxx:285 OptimizeConfigParameters.cxx:286 OptimizeConfigParameters.cxx:287 OptimizeConfigParameters.cxx:288 OptimizeConfigParameters.cxx:289 OptimizeConfigParameters.cxx:290 OptimizeConfigParameters.cxx:291 OptimizeConfigParameters.cxx:292 OptimizeConfigParameters.cxx:293 OptimizeConfigParameters.cxx:294 OptimizeConfigParameters.cxx:295 OptimizeConfigParameters.cxx:296 OptimizeConfigParameters.cxx:297 OptimizeConfigParameters.cxx:298 OptimizeConfigParameters.cxx:299 OptimizeConfigParameters.cxx:300 OptimizeConfigParameters.cxx:301 OptimizeConfigParameters.cxx:302 OptimizeConfigParameters.cxx:303 OptimizeConfigParameters.cxx:304 OptimizeConfigParameters.cxx:305 OptimizeConfigParameters.cxx:306 OptimizeConfigParameters.cxx:307 OptimizeConfigParameters.cxx:308 OptimizeConfigParameters.cxx:309 OptimizeConfigParameters.cxx:310 OptimizeConfigParameters.cxx:311 OptimizeConfigParameters.cxx:312 OptimizeConfigParameters.cxx:313 OptimizeConfigParameters.cxx:314 OptimizeConfigParameters.cxx:315 OptimizeConfigParameters.cxx:316 OptimizeConfigParameters.cxx:317 OptimizeConfigParameters.cxx:318 OptimizeConfigParameters.cxx:319 OptimizeConfigParameters.cxx:320 OptimizeConfigParameters.cxx:321 OptimizeConfigParameters.cxx:322 OptimizeConfigParameters.cxx:323 OptimizeConfigParameters.cxx:324 OptimizeConfigParameters.cxx:325 OptimizeConfigParameters.cxx:326 OptimizeConfigParameters.cxx:327 OptimizeConfigParameters.cxx:328 OptimizeConfigParameters.cxx:329 OptimizeConfigParameters.cxx:330 OptimizeConfigParameters.cxx:331 OptimizeConfigParameters.cxx:332 OptimizeConfigParameters.cxx:333 OptimizeConfigParameters.cxx:334 OptimizeConfigParameters.cxx:335 OptimizeConfigParameters.cxx:336 OptimizeConfigParameters.cxx:337 OptimizeConfigParameters.cxx:338 OptimizeConfigParameters.cxx:339 OptimizeConfigParameters.cxx:340 OptimizeConfigParameters.cxx:341 OptimizeConfigParameters.cxx:342 OptimizeConfigParameters.cxx:343 OptimizeConfigParameters.cxx:344 OptimizeConfigParameters.cxx:345 OptimizeConfigParameters.cxx:346 OptimizeConfigParameters.cxx:347 OptimizeConfigParameters.cxx:348 OptimizeConfigParameters.cxx:349 OptimizeConfigParameters.cxx:350 OptimizeConfigParameters.cxx:351 OptimizeConfigParameters.cxx:352 OptimizeConfigParameters.cxx:353 OptimizeConfigParameters.cxx:354 OptimizeConfigParameters.cxx:355 OptimizeConfigParameters.cxx:356 OptimizeConfigParameters.cxx:357 OptimizeConfigParameters.cxx:358 OptimizeConfigParameters.cxx:359 OptimizeConfigParameters.cxx:360 OptimizeConfigParameters.cxx:361 OptimizeConfigParameters.cxx:362 OptimizeConfigParameters.cxx:363 OptimizeConfigParameters.cxx:364 OptimizeConfigParameters.cxx:365 OptimizeConfigParameters.cxx:366 OptimizeConfigParameters.cxx:367 OptimizeConfigParameters.cxx:368 OptimizeConfigParameters.cxx:369 OptimizeConfigParameters.cxx:370 OptimizeConfigParameters.cxx:371 OptimizeConfigParameters.cxx:372 OptimizeConfigParameters.cxx:373 OptimizeConfigParameters.cxx:374 OptimizeConfigParameters.cxx:375 OptimizeConfigParameters.cxx:376 OptimizeConfigParameters.cxx:377 OptimizeConfigParameters.cxx:378 OptimizeConfigParameters.cxx:379 OptimizeConfigParameters.cxx:380 OptimizeConfigParameters.cxx:381 OptimizeConfigParameters.cxx:382 OptimizeConfigParameters.cxx:383 OptimizeConfigParameters.cxx:384 OptimizeConfigParameters.cxx:385 OptimizeConfigParameters.cxx:386 OptimizeConfigParameters.cxx:387 OptimizeConfigParameters.cxx:388 OptimizeConfigParameters.cxx:389 OptimizeConfigParameters.cxx:390 OptimizeConfigParameters.cxx:391 OptimizeConfigParameters.cxx:392 OptimizeConfigParameters.cxx:393 OptimizeConfigParameters.cxx:394 OptimizeConfigParameters.cxx:395 OptimizeConfigParameters.cxx:396 OptimizeConfigParameters.cxx:397 OptimizeConfigParameters.cxx:398 OptimizeConfigParameters.cxx:399 OptimizeConfigParameters.cxx:400 OptimizeConfigParameters.cxx:401 OptimizeConfigParameters.cxx:402 OptimizeConfigParameters.cxx:403 OptimizeConfigParameters.cxx:404 OptimizeConfigParameters.cxx:405 OptimizeConfigParameters.cxx:406 OptimizeConfigParameters.cxx:407 OptimizeConfigParameters.cxx:408 OptimizeConfigParameters.cxx:409 OptimizeConfigParameters.cxx:410 OptimizeConfigParameters.cxx:411 OptimizeConfigParameters.cxx:412 OptimizeConfigParameters.cxx:413 OptimizeConfigParameters.cxx:414 OptimizeConfigParameters.cxx:415 OptimizeConfigParameters.cxx:416 OptimizeConfigParameters.cxx:417 OptimizeConfigParameters.cxx:418 OptimizeConfigParameters.cxx:419 OptimizeConfigParameters.cxx:420 OptimizeConfigParameters.cxx:421 OptimizeConfigParameters.cxx:422 OptimizeConfigParameters.cxx:423 OptimizeConfigParameters.cxx:424 OptimizeConfigParameters.cxx:425 OptimizeConfigParameters.cxx:426 OptimizeConfigParameters.cxx:427 OptimizeConfigParameters.cxx:428 OptimizeConfigParameters.cxx:429 OptimizeConfigParameters.cxx:430 OptimizeConfigParameters.cxx:431 OptimizeConfigParameters.cxx:432 OptimizeConfigParameters.cxx:433 OptimizeConfigParameters.cxx:434 OptimizeConfigParameters.cxx:435 OptimizeConfigParameters.cxx:436 OptimizeConfigParameters.cxx:437 OptimizeConfigParameters.cxx:438 OptimizeConfigParameters.cxx:439 OptimizeConfigParameters.cxx:440 OptimizeConfigParameters.cxx:441 OptimizeConfigParameters.cxx:442 OptimizeConfigParameters.cxx:443 OptimizeConfigParameters.cxx:444 OptimizeConfigParameters.cxx:445 OptimizeConfigParameters.cxx:446 OptimizeConfigParameters.cxx:447 OptimizeConfigParameters.cxx:448 OptimizeConfigParameters.cxx:449 OptimizeConfigParameters.cxx:450 OptimizeConfigParameters.cxx:451 OptimizeConfigParameters.cxx:452 OptimizeConfigParameters.cxx:453 OptimizeConfigParameters.cxx:454 OptimizeConfigParameters.cxx:455 OptimizeConfigParameters.cxx:456 OptimizeConfigParameters.cxx:457 OptimizeConfigParameters.cxx:458 OptimizeConfigParameters.cxx:459 OptimizeConfigParameters.cxx:460 OptimizeConfigParameters.cxx:461 OptimizeConfigParameters.cxx:462 OptimizeConfigParameters.cxx:463 OptimizeConfigParameters.cxx:464 OptimizeConfigParameters.cxx:465 OptimizeConfigParameters.cxx:466 OptimizeConfigParameters.cxx:467 OptimizeConfigParameters.cxx:468 OptimizeConfigParameters.cxx:469 OptimizeConfigParameters.cxx:470 OptimizeConfigParameters.cxx:471 OptimizeConfigParameters.cxx:472 OptimizeConfigParameters.cxx:473 OptimizeConfigParameters.cxx:474 OptimizeConfigParameters.cxx:475 OptimizeConfigParameters.cxx:476 OptimizeConfigParameters.cxx:477 OptimizeConfigParameters.cxx:478 OptimizeConfigParameters.cxx:479 OptimizeConfigParameters.cxx:480 OptimizeConfigParameters.cxx:481 OptimizeConfigParameters.cxx:482 OptimizeConfigParameters.cxx:483 OptimizeConfigParameters.cxx:484 OptimizeConfigParameters.cxx:485 OptimizeConfigParameters.cxx:486 OptimizeConfigParameters.cxx:487 OptimizeConfigParameters.cxx:488 OptimizeConfigParameters.cxx:489 OptimizeConfigParameters.cxx:490 OptimizeConfigParameters.cxx:491 OptimizeConfigParameters.cxx:492 OptimizeConfigParameters.cxx:493 OptimizeConfigParameters.cxx:494 OptimizeConfigParameters.cxx:495 OptimizeConfigParameters.cxx:496 OptimizeConfigParameters.cxx:497 OptimizeConfigParameters.cxx:498 OptimizeConfigParameters.cxx:499 OptimizeConfigParameters.cxx:500 OptimizeConfigParameters.cxx:501 OptimizeConfigParameters.cxx:502 OptimizeConfigParameters.cxx:503 OptimizeConfigParameters.cxx:504 OptimizeConfigParameters.cxx:505 OptimizeConfigParameters.cxx:506 OptimizeConfigParameters.cxx:507 OptimizeConfigParameters.cxx:508 OptimizeConfigParameters.cxx:509 OptimizeConfigParameters.cxx:510 OptimizeConfigParameters.cxx:511 OptimizeConfigParameters.cxx:512 OptimizeConfigParameters.cxx:513 OptimizeConfigParameters.cxx:514 OptimizeConfigParameters.cxx:515 OptimizeConfigParameters.cxx:516 OptimizeConfigParameters.cxx:517 OptimizeConfigParameters.cxx:518 OptimizeConfigParameters.cxx:519 OptimizeConfigParameters.cxx:520 OptimizeConfigParameters.cxx:521 OptimizeConfigParameters.cxx:522 OptimizeConfigParameters.cxx:523 OptimizeConfigParameters.cxx:524 OptimizeConfigParameters.cxx:525 OptimizeConfigParameters.cxx:526 OptimizeConfigParameters.cxx:527 OptimizeConfigParameters.cxx:528 OptimizeConfigParameters.cxx:529 OptimizeConfigParameters.cxx:530 OptimizeConfigParameters.cxx:531 OptimizeConfigParameters.cxx:532 OptimizeConfigParameters.cxx:533 OptimizeConfigParameters.cxx:534 OptimizeConfigParameters.cxx:535 OptimizeConfigParameters.cxx:536 OptimizeConfigParameters.cxx:537 OptimizeConfigParameters.cxx:538 OptimizeConfigParameters.cxx:539 OptimizeConfigParameters.cxx:540 OptimizeConfigParameters.cxx:541 OptimizeConfigParameters.cxx:542 OptimizeConfigParameters.cxx:543 OptimizeConfigParameters.cxx:544 OptimizeConfigParameters.cxx:545 OptimizeConfigParameters.cxx:546 OptimizeConfigParameters.cxx:547 OptimizeConfigParameters.cxx:548 OptimizeConfigParameters.cxx:549 OptimizeConfigParameters.cxx:550 OptimizeConfigParameters.cxx:551 OptimizeConfigParameters.cxx:552 OptimizeConfigParameters.cxx:553 OptimizeConfigParameters.cxx:554 OptimizeConfigParameters.cxx:555 OptimizeConfigParameters.cxx:556 OptimizeConfigParameters.cxx:557 OptimizeConfigParameters.cxx:558 OptimizeConfigParameters.cxx:559 OptimizeConfigParameters.cxx:560 OptimizeConfigParameters.cxx:561 OptimizeConfigParameters.cxx:562 OptimizeConfigParameters.cxx:563 OptimizeConfigParameters.cxx:564 OptimizeConfigParameters.cxx:565 OptimizeConfigParameters.cxx:566 OptimizeConfigParameters.cxx:567 OptimizeConfigParameters.cxx:568 OptimizeConfigParameters.cxx:569 OptimizeConfigParameters.cxx:570 OptimizeConfigParameters.cxx:571 OptimizeConfigParameters.cxx:572 OptimizeConfigParameters.cxx:573 OptimizeConfigParameters.cxx:574 OptimizeConfigParameters.cxx:575 OptimizeConfigParameters.cxx:576 OptimizeConfigParameters.cxx:577 OptimizeConfigParameters.cxx:578