39 #include "TObjString.h"
43 #if not defined(__CINT__) || defined(__MAKECINT__)
45 #include "TMVA/Factory.h"
46 #include "TMVA/Tools.h"
68 TMVA::Tools::Instance();
71 TString tmva_dir(TString(gRootDir) +
"/tmva");
72 if(gSystem->Getenv(
"TMVASYS"))
73 tmva_dir = TString(gSystem->Getenv(
"TMVASYS"));
74 gROOT->SetMacroPath(tmva_dir +
"/test/:" + gROOT->GetMacroPath() );
75 gROOT->ProcessLine(
".L TMVAGui.C");
78 std::map<std::string,int> Use;
88 Use[
"Likelihood"] = 1;
89 Use[
"LikelihoodD"] = 0;
90 Use[
"LikelihoodPCA"] = 1;
91 Use[
"LikelihoodKDE"] = 0;
92 Use[
"LikelihoodMIX"] = 0;
99 Use[
"PDEFoamBoost"] = 0;
106 Use[
"BoostedFisher"] = 0;
138 std::cout << std::endl;
139 std::cout <<
"==> Start TMVAClassification" << std::endl;
142 if (myMethodList !=
"") {
143 for (std::map<std::string, int>::iterator it = Use.begin(); it != Use.end(); it++) it->second = 0;
145 std::vector<TString> mlist = TMVA::gTools().SplitString( myMethodList,
',' );
147 for (UInt_t i = 0; i < mlist.size(); i++) {
148 std::string regMethod(mlist[i]);
150 if (Use.find(regMethod) == Use.end()) {
151 std::cout <<
"Method \"" << regMethod <<
"\" not known in TMVA under this name. Choose among the following:" << std::endl;
153 for (std::map<std::string, int>::iterator it = Use.begin(); it != Use.end(); it++) std::cout << it->first <<
" ";
155 std::cout << std::endl;
168 TString outfileName(
"TMVA_vertex.root" );
169 TFile *outputFile = TFile::Open( outfileName,
"RECREATE" );
181 TMVA::Factory *factory =
new TMVA::Factory(
"TMVAClassification", outputFile,
182 "!V:!Silent:Color:DrawProgressBar:Transformations=I;D;P;G,D:AnalysisType=Classification" );
198 factory->AddVariable(
"postx",
'I');
199 factory->AddVariable(
"prompt",
'I');
200 factory->AddVariable(
"cross",
'I');
201 factory->AddVariable(
"tof",
'I');
202 factory->AddVariable(
"notof",
'I');
203 factory->AddVariable(
"BEMC",
'I');
204 factory->AddVariable(
"noBEMC",
'I');
205 factory->AddVariable(
"EEMC",
'I');
206 factory->AddVariable(
"noEEMC",
'I');
214 factory->AddSpectator(
"primZ",
'F' );
215 factory->AddSpectator(
"event",
'I' );
219 TString fname =
"./outvertex.root";
224 TFile *input = TFile::Open( fname );
226 std::cout <<
"--- TMVAClassification : Using input file: " << input->GetName() << std::endl;
230 TTree *signal = (TTree*)input->Get(
"primaryvtx");
231 TTree *background = (TTree*)input->Get(
"primaryvtx");
234 Double_t signalWeight = 1.0;
235 Double_t backgroundWeight = 1.0;
238 factory->AddSignalTree ( signal, signalWeight );
239 factory->AddBackgroundTree( background, backgroundWeight );
287 TCut mycutb =
"index!=0";
297 factory->PrepareTrainingAndTestTree( mycuts, mycutb,
298 "nTrain_Signal=0:nTrain_Background=0:SplitMode=Random:NormMode=NumEvents:!V" );
309 factory->BookMethod( TMVA::Types::kCuts,
"Cuts",
310 "!H:!V:FitMethod=MC:EffSel:SampleSize=200000:VarProp=FSmart" );
313 factory->BookMethod( TMVA::Types::kCuts,
"CutsD",
314 "!H:!V:FitMethod=MC:EffSel:SampleSize=200000:VarProp=FSmart:VarTransform=Decorrelate" );
317 factory->BookMethod( TMVA::Types::kCuts,
"CutsPCA",
318 "!H:!V:FitMethod=MC:EffSel:SampleSize=200000:VarProp=FSmart:VarTransform=PCA" );
321 factory->BookMethod( TMVA::Types::kCuts,
"CutsGA",
322 "H:!V:FitMethod=GA:CutRangeMin[0]=-10:CutRangeMax[0]=10:VarProp[1]=FMax:EffSel:Steps=30:Cycles=3:PopSize=400:SC_steps=10:SC_rate=5:SC_factor=0.95" );
325 factory->BookMethod( TMVA::Types::kCuts,
"CutsSA",
326 "!H:!V:FitMethod=SA:EffSel:MaxCalls=150000:KernelTemp=IncAdaptive:InitialTemp=1e+6:MinTemp=1e-6:Eps=1e-10:UseDefaultScale" );
329 if (Use[
"Likelihood"])
330 factory->BookMethod( TMVA::Types::kLikelihood,
"Likelihood",
331 "H:!V:TransformOutput:PDFInterpol=Spline2:NSmoothSig[0]=20:NSmoothBkg[0]=20:NSmoothBkg[1]=10:NSmooth=1:NAvEvtPerBin=50" );
334 if (Use[
"LikelihoodD"])
335 factory->BookMethod( TMVA::Types::kLikelihood,
"LikelihoodD",
336 "!H:!V:TransformOutput:PDFInterpol=Spline2:NSmoothSig[0]=20:NSmoothBkg[0]=20:NSmooth=5:NAvEvtPerBin=50:VarTransform=Decorrelate" );
339 if (Use[
"LikelihoodPCA"])
340 factory->BookMethod( TMVA::Types::kLikelihood,
"LikelihoodPCA",
341 "!H:!V:!TransformOutput:PDFInterpol=Spline2:NSmoothSig[0]=20:NSmoothBkg[0]=20:NSmooth=5:NAvEvtPerBin=50:VarTransform=PCA" );
344 if (Use[
"LikelihoodKDE"])
345 factory->BookMethod( TMVA::Types::kLikelihood,
"LikelihoodKDE",
346 "!H:!V:!TransformOutput:PDFInterpol=KDE:KDEtype=Gauss:KDEiter=Adaptive:KDEFineFactor=0.3:KDEborder=None:NAvEvtPerBin=50" );
349 if (Use[
"LikelihoodMIX"])
350 factory->BookMethod( TMVA::Types::kLikelihood,
"LikelihoodMIX",
351 "!H:!V:!TransformOutput:PDFInterpolSig[0]=KDE:PDFInterpolBkg[0]=KDE:PDFInterpolSig[1]=KDE:PDFInterpolBkg[1]=KDE:PDFInterpolSig[2]=Spline2:PDFInterpolBkg[2]=Spline2:PDFInterpolSig[3]=Spline2:PDFInterpolBkg[3]=Spline2:KDEtype=Gauss:KDEiter=Nonadaptive:KDEborder=None:NAvEvtPerBin=50" );
358 factory->BookMethod( TMVA::Types::kPDERS,
"PDERS",
359 "!H:!V:NormTree=T:VolumeRangeMode=Adaptive:KernelEstimator=Gauss:GaussSigma=0.3:NEventsMin=400:NEventsMax=600" );
362 factory->BookMethod( TMVA::Types::kPDERS,
"PDERSD",
363 "!H:!V:VolumeRangeMode=Adaptive:KernelEstimator=Gauss:GaussSigma=0.3:NEventsMin=400:NEventsMax=600:VarTransform=Decorrelate" );
366 factory->BookMethod( TMVA::Types::kPDERS,
"PDERSPCA",
367 "!H:!V:VolumeRangeMode=Adaptive:KernelEstimator=Gauss:GaussSigma=0.3:NEventsMin=400:NEventsMax=600:VarTransform=PCA" );
371 factory->BookMethod( TMVA::Types::kPDEFoam,
"PDEFoam",
372 "!H:!V:SigBgSeparate=F:TailCut=0.001:VolFrac=0.0666:nActiveCells=500:nSampl=2000:nBin=5:Nmin=100:Kernel=None:Compress=T" );
374 if (Use[
"PDEFoamBoost"])
375 factory->BookMethod( TMVA::Types::kPDEFoam,
"PDEFoamBoost",
376 "!H:!V:Boost_Num=30:Boost_Transform=linear:SigBgSeparate=F:MaxDepth=4:UseYesNoCell=T:DTLogic=MisClassificationError:FillFoamWithOrigWeights=F:TailCut=0:nActiveCells=500:nBin=20:Nmin=400:Kernel=None:Compress=T" );
380 factory->BookMethod( TMVA::Types::kKNN,
"KNN",
381 "H:nkNN=20:ScaleFrac=0.8:SigmaFact=1.0:Kernel=Gaus:UseKernel=F:UseWeight=T:!Trim" );
385 factory->BookMethod( TMVA::Types::kHMatrix,
"HMatrix",
"!H:!V:VarTransform=None" );
389 factory->BookMethod( TMVA::Types::kLD,
"LD",
"H:!V:VarTransform=None:CreateMVAPdfs:PDFInterpolMVAPdf=Spline2:NbinsMVAPdf=50:NsmoothMVAPdf=10" );
393 factory->BookMethod( TMVA::Types::kFisher,
"Fisher",
"H:!V:Fisher:VarTransform=None:CreateMVAPdfs:PDFInterpolMVAPdf=Spline2:NbinsMVAPdf=50:NsmoothMVAPdf=10" );
397 factory->BookMethod( TMVA::Types::kFisher,
"FisherG",
"H:!V:VarTransform=Gauss" );
400 if (Use[
"BoostedFisher"])
401 factory->BookMethod( TMVA::Types::kFisher,
"BoostedFisher",
402 "H:!V:Boost_Num=20:Boost_Transform=log:Boost_Type=AdaBoost:Boost_AdaBoostBeta=0.2:!Boost_DetailedMonitoring" );
406 factory->BookMethod( TMVA::Types::kFDA,
"FDA_MC",
407 "H:!V:Formula=(0)+(1)*x0+(2)*x1+(3)*x2+(4)*x3:ParRanges=(-1,1);(-10,10);(-10,10);(-10,10);(-10,10):FitMethod=MC:SampleSize=100000:Sigma=0.1" );
410 factory->BookMethod( TMVA::Types::kFDA,
"FDA_GA",
411 "H:!V:Formula=(0)+(1)*x0+(2)*x1+(3)*x2+(4)*x3:ParRanges=(-1,1);(-10,10);(-10,10);(-10,10);(-10,10):FitMethod=GA:PopSize=300:Cycles=3:Steps=20:Trim=True:SaveBestGen=1" );
414 factory->BookMethod( TMVA::Types::kFDA,
"FDA_SA",
415 "H:!V:Formula=(0)+(1)*x0+(2)*x1+(3)*x2+(4)*x3:ParRanges=(-1,1);(-10,10);(-10,10);(-10,10);(-10,10):FitMethod=SA:MaxCalls=15000:KernelTemp=IncAdaptive:InitialTemp=1e+6:MinTemp=1e-6:Eps=1e-10:UseDefaultScale" );
418 factory->BookMethod( TMVA::Types::kFDA,
"FDA_MT",
419 "H:!V:Formula=(0)+(1)*x0+(2)*x1+(3)*x2+(4)*x3:ParRanges=(-1,1);(-10,10);(-10,10);(-10,10);(-10,10):FitMethod=MINUIT:ErrorLevel=1:PrintLevel=-1:FitStrategy=2:UseImprove:UseMinos:SetBatch" );
422 factory->BookMethod( TMVA::Types::kFDA,
"FDA_GAMT",
423 "H:!V:Formula=(0)+(1)*x0+(2)*x1+(3)*x2+(4)*x3:ParRanges=(-1,1);(-10,10);(-10,10);(-10,10);(-10,10):FitMethod=GA:Converger=MINUIT:ErrorLevel=1:PrintLevel=-1:FitStrategy=0:!UseImprove:!UseMinos:SetBatch:Cycles=1:PopSize=5:Steps=5:Trim" );
426 factory->BookMethod( TMVA::Types::kFDA,
"FDA_MCMT",
427 "H:!V:Formula=(0)+(1)*x0+(2)*x1+(3)*x2+(4)*x3:ParRanges=(-1,1);(-10,10);(-10,10);(-10,10);(-10,10):FitMethod=MC:Converger=MINUIT:ErrorLevel=1:PrintLevel=-1:FitStrategy=0:!UseImprove:!UseMinos:SetBatch:SampleSize=20" );
431 factory->BookMethod( TMVA::Types::kMLP,
"MLP",
"H:!V:NeuronType=tanh:VarTransform=N:NCycles=600:HiddenLayers=N+5:TestRate=5:!UseRegulator" );
434 factory->BookMethod( TMVA::Types::kMLP,
"MLPBFGS",
"H:!V:NeuronType=tanh:VarTransform=N:NCycles=600:HiddenLayers=N+5:TestRate=5:TrainingMethod=BFGS:!UseRegulator" );
437 factory->BookMethod( TMVA::Types::kMLP,
"MLPBNN",
"H:!V:NeuronType=tanh:VarTransform=N:NCycles=600:HiddenLayers=N+5:TestRate=5:TrainingMethod=BFGS:UseRegulator" );
441 factory->BookMethod( TMVA::Types::kCFMlpANN,
"CFMlpANN",
"!H:!V:NCycles=2000:HiddenLayers=N+1,N" );
445 factory->BookMethod( TMVA::Types::kTMlpANN,
"TMlpANN",
"!H:!V:NCycles=200:HiddenLayers=N+1,N:LearningMethod=BFGS:ValidationFraction=0.3" );
449 factory->BookMethod( TMVA::Types::kSVM,
"SVM",
"Gamma=0.25:Tol=0.001:VarTransform=Norm" );
453 factory->BookMethod( TMVA::Types::kBDT,
"BDTG",
454 "!H:!V:NTrees=1000:BoostType=Grad:Shrinkage=0.10:UseBaggedGrad:GradBaggingFraction=0.5:nCuts=20:NNodesMax=5" );
457 factory->BookMethod( TMVA::Types::kBDT,
"BDT",
458 "!H:!V:NTrees=850:nEventsMin=150:MaxDepth=3:BoostType=AdaBoost:AdaBoostBeta=0.5:SeparationType=GiniIndex:nCuts=20:PruneMethod=NoPruning" );
462 factory->BookMethod( TMVA::Types::kBDT,
"BDTB",
463 "!H:!V:NTrees=400:BoostType=Bagging:SeparationType=GiniIndex:nCuts=20:PruneMethod=NoPruning" );
466 factory->BookMethod( TMVA::Types::kBDT,
"BDTD",
467 "!H:!V:NTrees=400:nEventsMin=400:MaxDepth=3:BoostType=AdaBoost:SeparationType=GiniIndex:nCuts=20:PruneMethod=NoPruning:VarTransform=Decorrelate" );
470 factory->BookMethod( TMVA::Types::kBDT,
"BDTMitFisher",
471 "!H:!V:NTrees=50:nEventsMin=150:UseFisherCuts:MaxDepth=3:BoostType=AdaBoost:AdaBoostBeta=0.5:SeparationType=GiniIndex:nCuts=20:PruneMethod=NoPruning" );
475 factory->BookMethod( TMVA::Types::kRuleFit,
"RuleFit",
476 "H:!V:RuleFitModule=RFTMVA:Model=ModRuleLinear:MinImp=0.001:RuleMinDist=0.001:NTrees=20:fEventsMin=0.01:fEventsMax=0.5:GDTau=-1.0:GDTauPrec=0.01:GDStep=0.01:GDNSteps=10000:GDErrScale=1.02" );
492 factory->TrainAllMethods();
495 factory->TestAllMethods();
498 factory->EvaluateAllMethods();
505 std::cout <<
"==> Wrote root file: " << outputFile->GetName() << std::endl;
506 std::cout <<
"==> TMVAClassification is done!" << std::endl;
511 if (!gROOT->IsBatch()) TMVAGui( outfileName );
void TMVAClassification(TString myMethodList="")