#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)
{
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;
}
}
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();
}
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;
}
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()));
}
for (it=fTuneParameters.begin(); it!=fTuneParameters.end(); it++){
for (Int_t ibin=0; ibin<it->second.GetNbins(); ibin++){
currentParameters[it->first] = it->second.GetElement(ibin);
GetMethod()->Reset();
GetMethod()->SetTuneParameters(currentParameters);
GetMethod()->BaseDir()->cd();
GetMethod()->GetTransformationHandler().CalcTransformations(
GetMethod()->Data()->GetEventCollection());
GetMethod()->Train();
currentFOM = GetFOM();
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();
GetMethod()->GetTransformationHandler().CalcTransformations(
GetMethod()->Data()->GetEventCollection());
GetMethod()->Train();
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 == "SigEffAt01") fom = GetSigEffAt(0.1);
else if (fFOMType == "SigEffAt001") fom = GetSigEffAt(0.01);
else {
Log()<<kFATAL << " ERROR, you've specified as Figure of Merit in the \n"
<< " parameter optimisation " << fFOMType << " which has not\n"
<< " 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::GetSigEffAt(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;
}
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