136#pragma warning ( disable : 4355 )
157 fMultiGraph =
nullptr;
171 std::cerr << kERROR <<
"IPythonInteractive::Init: already initialized..." << std::endl;
176 fGraphs.push_back(
new TGraph() );
177 fGraphs.back()->SetTitle(title);
178 fGraphs.back()->SetName(title);
179 fGraphs.back()->SetFillColor(color);
180 fGraphs.back()->SetLineColor(color);
181 fGraphs.back()->SetMarkerColor(color);
182 fMultiGraph->Add(fGraphs.back());
194 for(
Int_t i=0; i<fNumGraphs; i++){
208 fGraphs[0]->Set(fIndex+1);
209 fGraphs[1]->Set(fIndex+1);
210 fGraphs[0]->SetPoint(fIndex,
x,
y1);
211 fGraphs[1]->SetPoint(fIndex,
x,
y2);
224 for(
Int_t i=0; i<fNumGraphs;i++){
225 fGraphs[i]->Set(fIndex+1);
226 fGraphs[i]->SetPoint(fIndex,
dat[0],
dat[i+1]);
246 fAnalysisType (
Types::kNoAnalysisType ),
247 fRegressionReturnVal ( 0 ),
248 fMulticlassReturnVal ( 0 ),
249 fDataSetInfo (
dsi ),
250 fSignalReferenceCut ( 0.5 ),
251 fSignalReferenceCutOrientation( 1. ),
252 fVariableTransformType (
Types::kSignal ),
254 fMethodName ( methodTitle ),
259 fConstructedFromWeightFile (
kFALSE ),
261 fMethodBaseDir ( 0 ),
264 fModelPersistence (
kTRUE),
275 fSplTrainEffBvsS ( 0 ),
276 fVarTransformString (
"None" ),
277 fTransformationPointer ( 0 ),
278 fTransformation (
dsi, methodTitle ),
280 fVerbosityLevelString (
"Default" ),
283 fIgnoreNegWeightsInTraining(
kFALSE ),
285 fBackgroundClass ( 0 ),
310 fAnalysisType (
Types::kNoAnalysisType ),
311 fRegressionReturnVal ( 0 ),
312 fMulticlassReturnVal ( 0 ),
313 fDataSetInfo (
dsi ),
314 fSignalReferenceCut ( 0.5 ),
315 fVariableTransformType (
Types::kSignal ),
317 fMethodName (
"MethodBase" ),
320 fTMVATrainingVersion ( 0 ),
321 fROOTTrainingVersion ( 0 ),
322 fConstructedFromWeightFile (
kTRUE ),
324 fMethodBaseDir ( 0 ),
327 fModelPersistence (
kTRUE),
338 fSplTrainEffBvsS ( 0 ),
339 fVarTransformString (
"None" ),
340 fTransformationPointer ( 0 ),
341 fTransformation (
dsi,
"" ),
343 fVerbosityLevelString (
"Default" ),
346 fIgnoreNegWeightsInTraining(
kFALSE ),
348 fBackgroundClass ( 0 ),
366 if (!fSetupCompleted) Log() << kWARNING <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Calling destructor of method which got never setup" <<
Endl;
369 if (fInputVars != 0) { fInputVars->clear();
delete fInputVars; }
370 if (fRanking != 0)
delete fRanking;
373 if (fDefaultPDF!= 0) {
delete fDefaultPDF; fDefaultPDF = 0; }
374 if (fMVAPdfS != 0) {
delete fMVAPdfS; fMVAPdfS = 0; }
375 if (fMVAPdfB != 0) {
delete fMVAPdfB; fMVAPdfB = 0; }
378 if (fSplS) {
delete fSplS; fSplS = 0; }
379 if (fSplB) {
delete fSplB; fSplB = 0; }
380 if (fSpleffBvsS) {
delete fSpleffBvsS; fSpleffBvsS = 0; }
381 if (fSplRefS) {
delete fSplRefS; fSplRefS = 0; }
382 if (fSplRefB) {
delete fSplRefB; fSplRefB = 0; }
383 if (fSplTrainRefS) {
delete fSplTrainRefS; fSplTrainRefS = 0; }
384 if (fSplTrainRefB) {
delete fSplTrainRefB; fSplTrainRefB = 0; }
385 if (fSplTrainEffBvsS) {
delete fSplTrainEffBvsS; fSplTrainEffBvsS = 0; }
387 for (
size_t i = 0; i < fEventCollections.size(); i++ ) {
388 if (fEventCollections.at(i)) {
389 for (std::vector<Event*>::const_iterator it = fEventCollections.at(i)->begin();
390 it != fEventCollections.at(i)->end(); ++it) {
393 delete fEventCollections.at(i);
394 fEventCollections.at(i) =
nullptr;
398 if (fRegressionReturnVal)
delete fRegressionReturnVal;
399 if (fMulticlassReturnVal)
delete fMulticlassReturnVal;
409 if (fSetupCompleted) Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Calling SetupMethod for the second time" <<
Endl;
411 DeclareBaseOptions();
414 fSetupCompleted =
kTRUE;
424 ProcessBaseOptions();
434 CheckForUnusedOptions();
442 SetConfigDescription(
"Configuration options for classifier architecture and tuning" );
450 fSplTrainEffBvsS = 0;
457 fTxtWeightsOnly =
kTRUE;
467 fInputVars =
new std::vector<TString>;
469 fInputVars->push_back(DataInfo().GetVariableInfo(
ivar).GetLabel());
471 fRegressionReturnVal = 0;
472 fMulticlassReturnVal = 0;
474 fEventCollections.resize( 2 );
475 fEventCollections.at(0) = 0;
476 fEventCollections.at(1) = 0;
479 if (DataInfo().GetClassInfo(
"Signal") != 0) {
480 fSignalClass = DataInfo().GetClassInfo(
"Signal")->GetNumber();
482 if (DataInfo().GetClassInfo(
"Background") != 0) {
483 fBackgroundClass = DataInfo().GetClassInfo(
"Background")->GetNumber();
486 SetConfigDescription(
"Configuration options for MVA method" );
487 SetConfigName(
TString(
"Method") + GetMethodTypeName() );
510 DeclareOptionRef( fVerbose,
"V",
"Verbose output (short form of \"VerbosityLevel\" below - overrides the latter one)" );
512 DeclareOptionRef( fVerbosityLevelString=
"Default",
"VerbosityLevel",
"Verbosity level" );
513 AddPreDefVal(
TString(
"Default") );
514 AddPreDefVal(
TString(
"Debug") );
515 AddPreDefVal(
TString(
"Verbose") );
516 AddPreDefVal(
TString(
"Info") );
517 AddPreDefVal(
TString(
"Warning") );
518 AddPreDefVal(
TString(
"Error") );
519 AddPreDefVal(
TString(
"Fatal") );
523 fTxtWeightsOnly =
kTRUE;
526 DeclareOptionRef( fVarTransformString,
"VarTransform",
"List of variable transformations performed before training, e.g., \"D_Background,P_Signal,G,N_AllClasses\" for: \"Decorrelation, PCA-transformation, Gaussianisation, Normalisation, each for the given class of events ('AllClasses' denotes all events of all classes, if no class indication is given, 'All' is assumed)\"" );
528 DeclareOptionRef( fHelp,
"H",
"Print method-specific help message" );
530 DeclareOptionRef( fHasMVAPdfs,
"CreateMVAPdfs",
"Create PDFs for classifier outputs (signal and background)" );
532 DeclareOptionRef( fIgnoreNegWeightsInTraining,
"IgnoreNegWeightsInTraining",
533 "Events with negative weights are ignored in the training (but are included for testing and performance evaluation)" );
545 fDefaultPDF =
new PDF(
TString(GetName())+
"_PDF", GetOptions(),
"MVAPdf" );
546 fDefaultPDF->DeclareOptions();
547 fDefaultPDF->ParseOptions();
548 fDefaultPDF->ProcessOptions();
549 fMVAPdfB =
new PDF(
TString(GetName())+
"_PDFBkg", fDefaultPDF->GetOptions(),
"MVAPdfBkg", fDefaultPDF );
550 fMVAPdfB->DeclareOptions();
551 fMVAPdfB->ParseOptions();
552 fMVAPdfB->ProcessOptions();
553 fMVAPdfS =
new PDF(
TString(GetName())+
"_PDFSig", fMVAPdfB->GetOptions(),
"MVAPdfSig", fDefaultPDF );
554 fMVAPdfS->DeclareOptions();
555 fMVAPdfS->ParseOptions();
556 fMVAPdfS->ProcessOptions();
559 SetOptions( fMVAPdfS->GetOptions() );
564 GetTransformationHandler(),
568 if (fDefaultPDF!= 0) {
delete fDefaultPDF; fDefaultPDF = 0; }
569 if (fMVAPdfS != 0) {
delete fMVAPdfS; fMVAPdfS = 0; }
570 if (fMVAPdfB != 0) {
delete fMVAPdfB; fMVAPdfB = 0; }
574 fVerbosityLevelString =
TString(
"Verbose");
575 Log().SetMinType( kVERBOSE );
577 else if (fVerbosityLevelString ==
"Debug" ) Log().SetMinType( kDEBUG );
578 else if (fVerbosityLevelString ==
"Verbose" ) Log().SetMinType( kVERBOSE );
579 else if (fVerbosityLevelString ==
"Info" ) Log().SetMinType( kINFO );
580 else if (fVerbosityLevelString ==
"Warning" ) Log().SetMinType( kWARNING );
581 else if (fVerbosityLevelString ==
"Error" ) Log().SetMinType( kERROR );
582 else if (fVerbosityLevelString ==
"Fatal" ) Log().SetMinType( kFATAL );
583 else if (fVerbosityLevelString !=
"Default" ) {
584 Log() << kFATAL <<
"<ProcessOptions> Verbosity level type '"
585 << fVerbosityLevelString <<
"' unknown." <<
Endl;
597 DeclareOptionRef( fNormalise=
kFALSE,
"Normalise",
"Normalise input variables" );
598 DeclareOptionRef( fUseDecorr=
kFALSE,
"D",
"Use-decorrelated-variables flag" );
599 DeclareOptionRef( fVariableTransformTypeString=
"Signal",
"VarTransformType",
600 "Use signal or background events to derive for variable transformation (the transformation is applied on both types of, course)" );
601 AddPreDefVal(
TString(
"Signal") );
602 AddPreDefVal(
TString(
"Background") );
603 DeclareOptionRef( fTxtWeightsOnly=
kTRUE,
"TxtWeightFilesOnly",
"If True: write all training results (weights) as text files (False: some are written in ROOT format)" );
613 DeclareOptionRef( fNbinsMVAPdf = 60,
"NbinsMVAPdf",
"Number of bins used for the PDFs of classifier outputs" );
614 DeclareOptionRef( fNsmoothMVAPdf = 2,
"NsmoothMVAPdf",
"Number of smoothing iterations for classifier PDFs" );
628 Log() << kWARNING <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Parameter optimization is not yet implemented for method "
629 << GetName() <<
Endl;
630 Log() << kWARNING <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Currently we need to set hardcoded which parameter is tuned in which ranges"<<
Endl;
655 if (Help()) PrintHelpMessage();
658 if(!IsSilentFile()) BaseDir()->cd();
662 GetTransformationHandler().CalcTransformations(Data()->GetEventCollection());
666 <<
"Begin training" <<
Endl;
667 Long64_t nEvents = Data()->GetNEvents();
671 <<
"\tEnd of training " <<
Endl;
674 <<
"Elapsed time for training with " << nEvents <<
" events: "
678 <<
"\tCreate MVA output for ";
681 if (DoMulticlass()) {
682 Log() <<
Form(
"[%s] : ",DataInfo().GetName())<<
"Multiclass classification on training sample" <<
Endl;
685 else if (!DoRegression()) {
687 Log() <<
Form(
"[%s] : ",DataInfo().GetName())<<
"classification on training sample" <<
Endl;
696 Log() <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"regression on training sample" <<
Endl;
700 Log() <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Create PDFs" <<
Endl;
707 if (fModelPersistence ) WriteStateToFile();
710 if ((!DoRegression()) && (fModelPersistence)) MakeClass();
717 WriteMonitoringHistosToFile();
725 if (!DoRegression()) Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Trying to use GetRegressionDeviation() with a classification job" <<
Endl;
726 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Create results for " << (
type==
Types::kTraining?
"training":
"testing") <<
Endl;
744 Long64_t nEvents = Data()->GetNEvents();
755 size_t ntargets = Data()->GetEvent(0)->GetNTargets();
760 Data()->SetCurrentEvent(
ievt);
761 std::vector< Float_t > vals = GetRegressionValues();
763 Log() << kFATAL <<
"Output regression vector with size " << vals.size() <<
" is not consistent with target size of "
766 std::copy(vals.begin(), vals.end(),
itr);
781 Data()->SetCurrentType(
type);
783 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Create results for " << (
type==
Types::kTraining?
"training":
"testing") <<
Endl;
787 Long64_t nEvents = Data()->GetNEvents();
792 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName()) <<
"Evaluation of " << GetMethodName() <<
" on "
795 regRes->Resize( nEvents );
797 std::vector<float>
output = GetAllRegressionValues();
799 Data()->SetCurrentEvent(0);
800 size_t nTargets = GetEvent()->GetNTargets();
805 Log() << kFATAL <<
"Output regression vector with size " <<
output.size() <<
" is not consistent with target size of "
806 <<
nTargets <<
" and number of events " << nEvents << std::endl;
818 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())
819 <<
"Elapsed time for evaluation of " << nEvents <<
" events: "
820 <<
timer.GetElapsedTime() <<
" " <<
Endl;
824 SetTestTime(
timer.ElapsedSeconds());
836 Long64_t nEvents = Data()->GetNEvents();
841 Data()->SetCurrentEvent(0);
842 std::vector< Float_t > vals = GetMulticlassValues();
843 std::vector<float>
output(nEvents * vals.size());
845 std::copy(vals.begin(), vals.end(),
itr);
848 Data()->SetCurrentEvent(
ievt);
849 vals = GetMulticlassValues();
851 std::copy(vals.begin(), vals.end(),
itr);
862 Data()->SetCurrentType(
type);
864 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Create results for " << (
type==
Types::kTraining?
"training":
"testing") <<
Endl;
867 if (!
resMulticlass) Log() << kFATAL<<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"unable to create pointer in AddMulticlassOutput, exiting."<<
Endl;
869 Long64_t nEvents = Data()->GetNEvents();
874 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Multiclass evaluation of " << GetMethodName() <<
" on "
878 std::vector<Float_t>
output = GetAllMulticlassValues();
886 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())
887 <<
"Elapsed time for evaluation of " << nEvents <<
" events: "
888 <<
timer.GetElapsedTime() <<
" " <<
Endl;
892 SetTestTime(
timer.ElapsedSeconds());
922 return GetMvaValue()*GetSignalReferenceCutOrientation() > GetSignalReferenceCut()*GetSignalReferenceCutOrientation() ?
kTRUE :
kFALSE;
929 return mvaVal*GetSignalReferenceCutOrientation() > GetSignalReferenceCut()*GetSignalReferenceCutOrientation() ?
kTRUE :
kFALSE;
937 Data()->SetCurrentType(
type);
942 Long64_t nEvents = Data()->GetNEvents();
943 clRes->Resize( nEvents );
948 Log() << kHEADER <<
Form(
"[%s] : ",DataInfo().GetName())
949 <<
"Evaluation of " << GetMethodName() <<
" on "
951 <<
" sample (" << nEvents <<
" events)" <<
Endl;
953 std::vector<Double_t> mvaValues = GetMvaValues(0, nEvents,
true);
956 <<
"Elapsed time for evaluation of " << nEvents <<
" events: "
957 <<
timer.GetElapsedTime() <<
" " <<
Endl;
961 SetTestTime(
timer.ElapsedSeconds());
967 auto ev = Data()->GetEvent(
ievt);
977 Long64_t nEvents = Data()->GetNEvents();
982 nEvents = values.size();
988 Log() << kHEADER <<
Form(
"[%s] : ",DataInfo().GetName())
989 <<
"Evaluation of " << GetMethodName() <<
" on "
991 <<
" sample (" << nEvents <<
" events)" <<
Endl;
994 Data()->SetCurrentEvent(
ievt);
995 values[
ievt] = GetMvaValue();
1006 <<
"Elapsed time for evaluation of " << nEvents <<
" events: "
1007 <<
timer.GetElapsedTime() <<
" " <<
Endl;
1029 Data()->SetCurrentType(
type);
1034 Long64_t nEvents = Data()->GetNEvents();
1039 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName()) <<
"Evaluation of " << GetMethodName() <<
" on "
1047 Data()->SetCurrentEvent(
ievt);
1049 if (
proba < 0)
break;
1050 mvaProb->SetValue(
proba,
ievt, DataInfo().IsSignal( Data()->GetEvent()) );
1056 Log() << kDEBUG <<
Form(
"Dataset[%s] : ",DataInfo().GetName())
1057 <<
"Elapsed time for evaluation of " << nEvents <<
" events: "
1058 <<
timer.GetElapsedTime() <<
" " <<
Endl;
1076 Data()->SetCurrentType(
type);
1081 const Int_t nevt = GetNEvents();
1086 Log() << kINFO <<
"Calculate regression for all events" <<
Endl;
1089 auto output = GetAllRegressionValues();
1090 int ntargets = Data()->GetEvent(0)->GetNTargets();
1114 m1 += t*
w;
s1 += t*t*
w;
1121 timer.DrawProgressBar(nevt - 1);
1122 Log() << kINFO <<
"Elapsed time for evaluation of " << nevt <<
" events: "
1123 <<
timer.GetElapsedTime() <<
" " <<
Endl;
1180 if (!
resMulticlass) Log() << kFATAL<<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"unable to create pointer in TestMulticlass, exiting."<<
Endl;
1212 if (0==
mvaRes && !(GetMethodTypeName().Contains(
"Cuts"))) {
1213 Log()<<
Form(
"Dataset[%s] : ",DataInfo().GetName()) <<
"mvaRes " <<
mvaRes <<
" GetMethodTypeName " << GetMethodTypeName()
1214 <<
" contains " << !(GetMethodTypeName().Contains(
"Cuts")) <<
Endl;
1215 Log() << kFATAL<<
Form(
"Dataset[%s] : ",DataInfo().GetName()) <<
"<TestInit> Test variable " << GetTestvarName()
1216 <<
" not found in tree" <<
Endl;
1221 fMeanS, fMeanB, fRmsS, fRmsB, fXmin, fXmax, fSignalClass );
1229 fCutOrientation = (fMeanS > fMeanB) ? kPositive : kNegative;
1239 if(IsSilentFile()) {
1286 Log() << kHEADER <<
Form(
"[%s] : ",DataInfo().GetName())<<
"Loop over test events and fill histograms with classifier response..." <<
Endl <<
Endl;
1287 if (
mvaProb) Log() << kINFO <<
"Also filling probability and rarity histograms (on request)..." <<
Endl;
1291 if (
mvaRes->GetSize() != GetNEvents() ) {
1292 Log() << kFATAL <<
TString::Format(
"Inconsistent result size %lld with number of events %u ",
mvaRes->GetSize() , GetNEvents() ) <<
Endl;
1302 if (DataInfo().IsSignal(
ev)) {
1334 if (fSplS) {
delete fSplS; fSplS = 0; }
1335 if (fSplB) {
delete fSplB; fSplB = 0; }
1349 tf << prefix <<
"#GEN -*-*-*-*-*-*-*-*-*-*-*- general info -*-*-*-*-*-*-*-*-*-*-*-" << std::endl << prefix << std::endl;
1350 tf << prefix <<
"Method : " << GetMethodTypeName() <<
"::" << GetMethodName() << std::endl;
1351 tf.setf(std::ios::left);
1352 tf << prefix <<
"TMVA Release : " << std::setw(10) << GetTrainingTMVAVersionString() <<
" ["
1353 << GetTrainingTMVAVersionCode() <<
"]" << std::endl;
1354 tf << prefix <<
"ROOT Release : " << std::setw(10) << GetTrainingROOTVersionString() <<
" ["
1355 << GetTrainingROOTVersionCode() <<
"]" << std::endl;
1356 tf << prefix <<
"Creator : " <<
userInfo->fUser << std::endl;
1360 tf << prefix <<
"Training events: " << Data()->GetNTrainingEvents() << std::endl;
1364 tf << prefix <<
"Analysis type : " <<
"[" << ((GetAnalysisType()==
Types::kRegression) ?
"Regression" :
"Classification") <<
"]" << std::endl;
1365 tf << prefix << std::endl;
1370 tf << prefix << std::endl << prefix <<
"#OPT -*-*-*-*-*-*-*-*-*-*-*-*- options -*-*-*-*-*-*-*-*-*-*-*-*-" << std::endl << prefix << std::endl;
1371 WriteOptionsToStream(
tf, prefix );
1372 tf << prefix << std::endl;
1375 tf << prefix << std::endl << prefix <<
"#VAR -*-*-*-*-*-*-*-*-*-*-*-* variables *-*-*-*-*-*-*-*-*-*-*-*-" << std::endl << prefix << std::endl;
1376 WriteVarsToStream(
tf, prefix );
1377 tf << prefix << std::endl;
1394 AddRegressionOutput(
type );
1396 AddMulticlassOutput(
type );
1398 AddClassifierOutput(
type );
1400 AddClassifierOutputProb(
type );
1410 if (!parent)
return;
1415 AddInfoItem(
gi,
"TMVA Release", GetTrainingTMVAVersionString() +
" [" +
gTools().StringFromInt(GetTrainingTMVAVersionCode()) +
"]" );
1416 AddInfoItem(
gi,
"ROOT Release", GetTrainingROOTVersionString() +
" [" +
gTools().StringFromInt(GetTrainingROOTVersionCode()) +
"]");
1417 AddInfoItem(
gi,
"Creator",
userInfo->fUser);
1421 AddInfoItem(
gi,
"Training events",
gTools().StringFromInt(Data()->GetNTrainingEvents()));
1427 AddInfoItem(
gi,
"AnalysisType", analysisType );
1431 AddOptionsXMLTo( parent );
1434 AddVarsXMLTo( parent );
1437 if (fModelPersistence)
1438 AddSpectatorsXMLTo( parent );
1441 AddClassesXMLTo(parent);
1444 if (DoRegression()) AddTargetsXMLTo(parent);
1447 GetTransformationHandler(
false).AddXMLTo( parent );
1451 if (fMVAPdfS) fMVAPdfS->AddXMLTo(
pdfs);
1452 if (fMVAPdfB) fMVAPdfB->AddXMLTo(
pdfs);
1455 AddWeightsXMLTo( parent );
1466 fMVAPdfS = (
TMVA::PDF*)
rf.Get(
"MVA_PDF_Signal" );
1467 fMVAPdfB = (
TMVA::PDF*)
rf.Get(
"MVA_PDF_Background" );
1471 ReadWeightsFromStream(
rf );
1489 <<
"Creating xml weight file: "
1494 gTools().
AddAttr(rootnode,
"Method", GetMethodTypeName() +
"::" + GetMethodName());
1495 WriteStateToXML(rootnode);
1510 <<
"Reading weight file: "
1513 if (
tfname.EndsWith(
".xml") ) {
1516 Log() << kFATAL <<
"Error parsing XML file " <<
tfname <<
Endl;
1519 ReadStateFromXML(rootnode);
1524 fb.open(
tfname.Data(),std::ios::in);
1525 if (!fb.is_open()) {
1526 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<ReadStateFromFile> "
1527 <<
"Unable to open input weight file: " <<
tfname <<
Endl;
1529 std::istream
fin(&fb);
1530 ReadStateFromStream(
fin);
1533 if (!fTxtWeightsOnly) {
1536 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Reading root weight file: "
1539 ReadStateFromStream( *
rfile );
1549 ReadStateFromXML(rootnode);
1566 Log().SetSource( GetName() );
1568 <<
"Read method \"" << GetMethodName() <<
"\" of type \"" << GetMethodTypeName() <<
"\"" <<
Endl;
1586 if (
name ==
"TrainingTime")
1589 if (
name ==
"AnalysisType") {
1595 else Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Analysis type " << val <<
" is not known." <<
Endl;
1598 if (
name ==
"TMVA Release" ||
name ==
"TMVA") {
1602 Log() << kDEBUG <<
Form(
"[%s] : ",DataInfo().GetName()) <<
"MVA method was trained with TMVA Version: " << GetTrainingTMVAVersionString() <<
Endl;
1605 if (
name ==
"ROOT Release" ||
name ==
"ROOT") {
1610 <<
"MVA method was trained with ROOT Version: " << GetTrainingROOTVersionString() <<
Endl;
1616 ReadOptionsFromXML(ch);
1621 ReadVariablesFromXML(ch);
1624 ReadSpectatorsFromXML(ch);
1627 if (DataInfo().GetNClasses()==0) ReadClassesFromXML(ch);
1630 if (DataInfo().GetNTargets()==0 && DoRegression()) ReadTargetsFromXML(ch);
1632 else if (
nodeName==
"Transformations") {
1633 GetTransformationHandler().ReadFromXML(ch);
1637 if (fMVAPdfS) {
delete fMVAPdfS; fMVAPdfS=0; }
1638 if (fMVAPdfB) {
delete fMVAPdfB; fMVAPdfB=0; }
1651 ReadWeightsFromXML(ch);
1654 Log() << kWARNING <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Unparsed XML node: '" <<
nodeName <<
"'" <<
Endl;
1661 if (GetTransformationHandler().GetCallerName() ==
"") GetTransformationHandler().SetCallerName( GetName() );
1677 while (!
TString(buf).BeginsWith(
"Method")) GetLine(
fin,buf);
1686 if (methodName ==
"") methodName =
methodType;
1687 fMethodName = methodName;
1689 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Read method \"" << GetMethodName() <<
"\" of type \"" << GetMethodTypeName() <<
"\"" <<
Endl;
1692 Log().SetSource( GetName() );
1706 while (!
TString(buf).BeginsWith(
"#OPT")) GetLine(
fin,buf);
1707 ReadOptionsFromStream(
fin);
1711 fin.getline(buf,512);
1712 while (!
TString(buf).BeginsWith(
"#VAR"))
fin.getline(buf,512);
1713 ReadVarsFromStream(
fin);
1718 if (IsNormalised()) {
1721 norm->BuildTransformationFromVarInfo( DataInfo().GetVariableInfos() );
1724 if ( fVarTransformString ==
"None") {
1727 }
else if ( fVarTransformString ==
"Decorrelate" ) {
1729 }
else if ( fVarTransformString ==
"PCA" ) {
1731 }
else if ( fVarTransformString ==
"Uniform" ) {
1733 }
else if ( fVarTransformString ==
"Gauss" ) {
1735 }
else if ( fVarTransformString ==
"GaussDecorr" ) {
1739 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<ProcessOptions> Variable transform '"
1740 << fVarTransformString <<
"' unknown." <<
Endl;
1743 if (GetTransformationHandler().GetTransformationList().GetSize() > 0) {
1744 fin.getline(buf,512);
1745 while (!
TString(buf).BeginsWith(
"#MAT"))
fin.getline(buf,512);
1759 fin.getline(buf,512);
1760 while (!
TString(buf).BeginsWith(
"#MVAPDFS"))
fin.getline(buf,512);
1761 if (fMVAPdfS != 0) {
delete fMVAPdfS; fMVAPdfS = 0; }
1762 if (fMVAPdfB != 0) {
delete fMVAPdfB; fMVAPdfB = 0; }
1763 fMVAPdfS =
new PDF(
TString(GetName()) +
" MVA PDF Sig");
1764 fMVAPdfB =
new PDF(
TString(GetName()) +
" MVA PDF Bkg");
1765 fMVAPdfS->SetReadingVersion( GetTrainingTMVAVersionCode() );
1766 fMVAPdfB->SetReadingVersion( GetTrainingTMVAVersionCode() );
1773 fin.getline(buf,512);
1774 while (!
TString(buf).BeginsWith(
"#WGT"))
fin.getline(buf,512);
1775 fin.getline(buf,512);
1776 ReadWeightsFromStream(
fin );
1779 if (GetTransformationHandler().GetCallerName() ==
"") GetTransformationHandler().SetCallerName( GetName() );
1789 o << prefix <<
"NVar " << DataInfo().GetNVariables() << std::endl;
1790 std::vector<VariableInfo>::const_iterator
varIt = DataInfo().GetVariableInfos().
begin();
1791 for (;
varIt!=DataInfo().GetVariableInfos().
end(); ++
varIt) { o << prefix;
varIt->WriteToStream(o); }
1792 o << prefix <<
"NSpec " << DataInfo().GetNSpectators() << std::endl;
1793 varIt = DataInfo().GetSpectatorInfos().
begin();
1794 for (;
varIt!=DataInfo().GetSpectatorInfos().
end(); ++
varIt) { o << prefix;
varIt->WriteToStream(o); }
1808 if (
readNVar!=DataInfo().GetNVariables()) {
1809 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"You declared "<< DataInfo().GetNVariables() <<
" variables in the Reader"
1810 <<
" while there are " <<
readNVar <<
" variables declared in the file"
1816 std::vector<VariableInfo>::iterator
varIt = DataInfo().GetVariableInfos().
begin();
1820 if (
varIt->GetExpression() ==
varInfo.GetExpression()) {
1821 varInfo.SetExternalLink((*varIt).GetExternalLink());
1825 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"ERROR in <ReadVarsFromStream>" <<
Endl;
1826 Log() << kINFO <<
"The definition (or the order) of the variables found in the input file is" <<
Endl;
1827 Log() << kINFO <<
"is not the same as the one declared in the Reader (which is necessary for" <<
Endl;
1828 Log() << kINFO <<
"the correct working of the method):" <<
Endl;
1829 Log() << kINFO <<
" var #" <<
varIdx <<
" declared in Reader: " <<
varIt->GetExpression() <<
Endl;
1830 Log() << kINFO <<
" var #" <<
varIdx <<
" declared in file : " <<
varInfo.GetExpression() <<
Endl;
1831 Log() << kFATAL <<
"The expression declared to the Reader needs to be checked (name or order are wrong)" <<
Endl;
1844 for (
UInt_t idx=0; idx<DataInfo().GetVariableInfos().size(); idx++) {
1860 for (
UInt_t idx=0; idx<DataInfo().GetSpectatorInfos().size(); idx++) {
1866 if (
vi.GetVarType()==
'C')
continue;
1903 for (
UInt_t idx=0; idx<DataInfo().GetTargetInfos().size(); idx++) {
1919 if (
readNVar!=DataInfo().GetNVariables()) {
1920 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"You declared "<< DataInfo().GetNVariables() <<
" variables in the Reader"
1921 <<
" while there are " <<
readNVar <<
" variables declared in the file"
1939 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"ERROR in <ReadVariablesFromXML>" <<
Endl;
1940 Log() << kINFO <<
"The definition (or the order) of the variables found in the input file is" <<
Endl;
1941 Log() << kINFO <<
"not the same as the one declared in the Reader (which is necessary for the" <<
Endl;
1942 Log() << kINFO <<
"correct working of the method):" <<
Endl;
1944 Log() << kINFO <<
" var #" <<
varIdx <<
" declared in file : " <<
readVarInfo.GetExpression() <<
Endl;
1945 Log() << kFATAL <<
"The expression declared to the Reader needs to be checked (name or order are wrong)" <<
Endl;
1960 Log() << kFATAL<<
Form(
"Dataset[%s] : ",DataInfo().GetName()) <<
"You declared "<< DataInfo().GetNSpectators(
kFALSE) <<
" spectators in the Reader"
1961 <<
" while there are " <<
readNSpec <<
" spectators declared in the file"
1979 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"ERROR in <ReadSpectatorsFromXML>" <<
Endl;
1980 Log() << kINFO <<
"The definition (or the order) of the spectators found in the input file is" <<
Endl;
1981 Log() << kINFO <<
"not the same as the one declared in the Reader (which is necessary for the" <<
Endl;
1982 Log() << kINFO <<
"correct working of the method):" <<
Endl;
1985 Log() << kFATAL <<
"The expression declared to the Reader needs to be checked (name or order are wrong)" <<
Endl;
2006 DataInfo().AddClass(classname);
2014 DataInfo().AddClass(className);
2021 if (DataInfo().GetClassInfo(
"Signal") != 0) {
2022 fSignalClass = DataInfo().GetClassInfo(
"Signal")->GetNumber();
2026 if (DataInfo().GetClassInfo(
"Background") != 0) {
2027 fBackgroundClass = DataInfo().GetClassInfo(
"Background")->GetNumber();
2047 DataInfo().AddTarget(expression,
"",
"",0,0);
2059 if (fBaseDir != 0)
return fBaseDir;
2060 Log()<<kDEBUG<<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
" Base Directory for " << GetMethodName() <<
" not set yet --> check if already there.." <<
Endl;
2062 if (IsSilentFile()) {
2063 Log() << kFATAL <<
Form(
"Dataset[%s] : ", DataInfo().GetName())
2064 <<
"MethodBase::BaseDir() - No directory exists when running a Method without output file. Enable the "
2065 "output when creating the factory"
2071 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"MethodBase::BaseDir() - MethodBaseDir() return a NULL pointer!" <<
Endl;
2077 Log()<<kDEBUG<<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
" Base Directory for " << GetMethodTypeName() <<
" does not exist yet--> created it" <<
Endl;
2081 if (fModelPersistence) {
2089 Log()<<kDEBUG<<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
" Base Directory for " << GetMethodTypeName() <<
" existed, return it.." <<
Endl;
2099 if (fMethodBaseDir != 0) {
2100 return fMethodBaseDir;
2105 Log() << kDEBUG <<
Form(
"Dataset[%s] : ",
datasetName) <<
" Base Directory for " << GetMethodTypeName()
2106 <<
" not set yet --> check if already there.." <<
Endl;
2111 if (!fMethodBaseDir) {
2113 if (!fMethodBaseDir) {
2114 Log() << kFATAL <<
"Can not create dir " <<
datasetName;
2118 fMethodBaseDir = fMethodBaseDir->GetDirectory(
methodTypeDir.Data());
2120 if (!fMethodBaseDir) {
2124 Log() << kDEBUG <<
Form(
"Dataset[%s] : ",
datasetName) <<
" Base Directory for " << GetMethodName()
2125 <<
" does not exist yet--> created it" <<
Endl;
2129 <<
"Return from MethodBaseDir() after creating base directory " <<
Endl;
2130 return fMethodBaseDir;
2155 if (fWeightFile!=
"")
return fWeightFile;
2177 if (0 != fMVAPdfS) {
2178 fMVAPdfS->GetOriginalHist()->Write();
2179 fMVAPdfS->GetSmoothedHist()->Write();
2180 fMVAPdfS->GetPDFHist()->Write();
2182 if (0 != fMVAPdfB) {
2183 fMVAPdfB->GetOriginalHist()->Write();
2184 fMVAPdfB->GetSmoothedHist()->Write();
2185 fMVAPdfB->GetPDFHist()->Write();
2191 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<WriteEvaluationHistosToFile> Unknown result: "
2193 <<
"/kMaxAnalysisType" <<
Endl;
2194 results->GetStorage()->Write();
2198 GetTransformationHandler().PlotVariables (GetEventCollection(
Types::kTesting ), BaseDir() );
2200 Log() << kINFO <<
TString::Format(
"Dataset[%s] : ",DataInfo().GetName())
2201 <<
" variable plots are not produces ! The number of variables is " << DataInfo().GetNVariables()
2221 fin.getline(buf,512);
2223 if (
line.BeginsWith(
"TMVA Release")) {
2227 std::stringstream s(code.
Data());
2228 s >> fTMVATrainingVersion;
2229 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"MVA method was trained with TMVA Version: " << GetTrainingTMVAVersionString() <<
Endl;
2231 if (
line.BeginsWith(
"ROOT Release")) {
2235 std::stringstream s(code.
Data());
2236 s >> fROOTTrainingVersion;
2237 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"MVA method was trained with ROOT Version: " << GetTrainingROOTVersionString() <<
Endl;
2239 if (
line.BeginsWith(
"Analysis type")) {
2243 std::stringstream s(code.
Data());
2244 std::string analysisType;
2246 if (analysisType ==
"regression" || analysisType ==
"Regression") SetAnalysisType(
Types::kRegression );
2247 else if (analysisType ==
"classification" || analysisType ==
"Classification") SetAnalysisType(
Types::kClassification );
2248 else if (analysisType ==
"multiclass" || analysisType ==
"Multiclass") SetAnalysisType(
Types::kMulticlass );
2249 else Log() << kFATAL <<
"Analysis type " << analysisType <<
" from weight-file not known!" << std::endl;
2251 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Method was trained for "
2272 Log() << kERROR<<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<CreateMVAPdfs> No result of classifier testing available" <<
Endl;
2279 TH1*
histMVAPdfS =
new TH1D( GetMethodTypeName() +
"_tr_S", GetMethodTypeName() +
"_tr_S",
2280 fMVAPdfS->GetHistNBins(
mvaRes->GetSize() ), minVal, maxVal );
2281 TH1*
histMVAPdfB =
new TH1D( GetMethodTypeName() +
"_tr_B", GetMethodTypeName() +
"_tr_B",
2282 fMVAPdfB->GetHistNBins(
mvaRes->GetSize() ), minVal, maxVal );
2313 if (DataInfo().GetNClasses() == 2) {
2314 Log() << kINFO<<
Form(
"Dataset[%s] : ",DataInfo().GetName())
2315 <<
TString::Format(
"<CreateMVAPdfs> Separation from histogram (PDF): %1.3f (%1.3f)",
2328 if (!fMVAPdfS || !fMVAPdfB) {
2329 Log() << kINFO<<
Form(
"Dataset[%s] : ",DataInfo().GetName()) <<
"<GetProba> MVA PDFs for Signal and Background don't exist yet, we'll create them on demand" <<
Endl;
2332 Double_t sigFraction = DataInfo().GetTrainingSumSignalWeights() / (DataInfo().GetTrainingSumSignalWeights() + DataInfo().GetTrainingSumBackgrWeights() );
2343 if (!fMVAPdfS || !fMVAPdfB) {
2344 Log() << kWARNING <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetProba> MVA PDFs for Signal and Background don't exist" <<
Endl;
2365 Log() << kWARNING <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetRarity> Required MVA PDF for Signal or Background does not exist: "
2366 <<
"select option \"CreateMVAPdfs\"" <<
Endl;
2381 Data()->SetCurrentType(
type);
2391 else if (list->GetSize() > 2) {
2392 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetEfficiency> Wrong number of arguments"
2394 <<
" | required format, e.g., Efficiency:0.05, or empty string" <<
Endl;
2400 if (
results->GetHist(
"MVA_S")->GetNbinsX() !=
results->GetHist(
"MVA_B")->GetNbinsX() ||
2401 results->GetHist(
"MVA_HIGHBIN_S")->GetNbinsX() !=
results->GetHist(
"MVA_HIGHBIN_B")->GetNbinsX() ) {
2402 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetEfficiency> Binning mismatch between signal and background histos" <<
Endl;
2417 if (
results->DoesExist(
"MVA_EFF_S")==0) {
2420 TH1*
eff_s =
new TH1D( GetTestvarName() +
"_effS", GetTestvarName() +
" (signal)", fNbinsH,
xmin,
xmax );
2421 TH1*
eff_b =
new TH1D( GetTestvarName() +
"_effB", GetTestvarName() +
" (background)", fNbinsH,
xmin,
xmax );
2426 Int_t sign = (fCutOrientation == kPositive) ? +1 : -1;
2455 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetEfficiency> Mismatch in sign" <<
Endl;
2466 TH1*
eff_BvsS =
new TH1D( GetTestvarName() +
"_effBvsS", GetTestvarName() +
"", fNbins, 0, 1 );
2468 eff_BvsS->SetXTitle(
"Signal eff" );
2469 eff_BvsS->SetYTitle(
"Backgr eff" );
2472 TH1*
rej_BvsS =
new TH1D( GetTestvarName() +
"_rejBvsS", GetTestvarName() +
"", fNbins, 0, 1 );
2474 rej_BvsS->SetXTitle(
"Signal eff" );
2475 rej_BvsS->SetYTitle(
"Backgr rejection (1-eff)" );
2479 GetTestvarName(), fNbins, 0, 1 );
2482 inveff_BvsS->SetYTitle(
"Inverse backgr. eff (1/eff)" );
2516 if (
effB>std::numeric_limits<double>::epsilon())
2531 rejB = 1.0 - fSpleffBvsS->Eval(
effS );
2541 SetSignalReferenceCut( cut );
2546 if (0 == fSpleffBvsS) {
2564 integral += (1.0 -
effB);
2618 if (list->GetSize() != 2) {
2619 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetTrainingEfficiency> Wrong number of arguments"
2621 <<
" | required format, e.g., Efficiency:0.05" <<
Endl;
2632 if (
results->GetHist(
"MVA_S")->GetNbinsX() !=
results->GetHist(
"MVA_B")->GetNbinsX() ||
2633 results->GetHist(
"MVA_HIGHBIN_S")->GetNbinsX() !=
results->GetHist(
"MVA_HIGHBIN_B")->GetNbinsX() ) {
2634 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetTrainingEfficiency> Binning mismatch between signal and background histos"
2647 if (
results->DoesExist(
"MVA_TRAIN_S")==0) {
2653 TH1*
mva_s_tr =
new TH1D( GetTestvarName() +
"_Train_S",GetTestvarName() +
"_Train_S", fNbinsMVAoutput, fXmin,
sxmax );
2654 TH1*
mva_b_tr =
new TH1D( GetTestvarName() +
"_Train_B",GetTestvarName() +
"_Train_B", fNbinsMVAoutput, fXmin,
sxmax );
2661 TH1*
mva_eff_tr_s =
new TH1D( GetTestvarName() +
"_trainingEffS", GetTestvarName() +
" (signal)",
2663 TH1*
mva_eff_tr_b =
new TH1D( GetTestvarName() +
"_trainingEffB", GetTestvarName() +
" (background)",
2669 Int_t sign = (fCutOrientation == kPositive) ? +1 : -1;
2671 std::vector<Double_t> mvaValues = GetMvaValues(0,Data()->GetNEvents());
2677 Data()->SetCurrentEvent(
ievt);
2709 TH1*
eff_bvss =
new TH1D( GetTestvarName() +
"_trainingEffBvsS", GetTestvarName() +
"", fNbins, 0, 1 );
2711 TH1*
rej_bvss =
new TH1D( GetTestvarName() +
"_trainingRejBvsS", GetTestvarName() +
"", fNbins, 0, 1 );
2719 if (fSplTrainRefS)
delete fSplTrainRefS;
2720 if (fSplTrainRefB)
delete fSplTrainRefB;
2735 fEffS =
results->GetHist(
"MVA_TRAINEFF_S");
2758 if (0 == fSplTrainEffBvsS)
return 0.0;
2767 effB = fSplTrainEffBvsS->Eval(
effS );
2784 if (!
resMulticlass) Log() << kFATAL<<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"unable to create pointer in GetMulticlassEfficiency, exiting."<<
Endl;
2796 if (!
resMulticlass) Log() << kFATAL<<
"unable to create pointer in GetMulticlassTrainingEfficiency, exiting."<<
Endl;
2798 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Determine optimal multiclass cuts for training data..." <<
Endl;
2830 Log() << kFATAL <<
"Cannot get confusion matrix for non-multiclass analysis." << std::endl;
2834 Data()->SetCurrentType(
type);
2839 Log() << kFATAL <<
Form(
"Dataset[%s] : ", DataInfo().GetName())
2840 <<
"unable to create pointer in GetMulticlassEfficiency, exiting." <<
Endl;
2882 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetSeparation> Mismatch in pdfs" <<
Endl;
2886 if (!fSplS || !fSplB) {
2887 Log()<<kDEBUG<<
Form(
"[%s] : ",DataInfo().GetName())<<
"could not calculate the separation, distributions"
2888 <<
" fSplS or fSplB are not yet filled" <<
Endl;
2904 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetROCIntegral(TH1D*, TH1D*)> Mismatch in hists" <<
Endl;
2920 integral += (1-
pdfB->GetIntegral(cut,
xmax)) *
pdfS->GetVal(cut);
2925 return integral*step;
2938 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetSeparation> Mismatch in pdfs" <<
Endl;
2952 integral += (1-
pdfB->GetIntegral(cut,
xmax)) *
pdfS->GetVal(cut);
2955 return integral*step;
2974 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<GetMaximumSignificance> "
2975 <<
"Number of signal or background events is <= 0 ==> abort"
2979 Log() << kINFO <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Using ratio SignalEvents/BackgroundEvents = "
2986 Log() << kWARNING <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"Efficiency histograms empty !" <<
Endl;
2987 Log() << kWARNING <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"no maximum cut found, return 0" <<
Endl;
2991 for (
Int_t bin=1; bin<=fNbinsH; bin++) {
3027 Long64_t entries = Data()->GetNEvents();
3031 Log() << kFATAL <<
Form(
"Dataset[%s] : ",DataInfo().GetName())<<
"<CalculateEstimator> Wrong tree type: " <<
treeType <<
Endl;
3055 if (DataInfo().IsSignal(
ev)) {
3085 classFileName = GetWeightFileDir() +
"/" + GetJobName() +
"_" + GetMethodName() +
".class.C";
3093 <<
"Creating standalone class: "
3098 Log() << kFATAL <<
"<MakeClass> Unable to open file: " <<
classFileName <<
Endl;
3103 fout <<
"// Class: " << className << std::endl;
3104 fout <<
"// Automatically generated by MethodBase::MakeClass" << std::endl <<
"//" << std::endl;
3108 fout <<
"/* configuration options =====================================================" << std::endl << std::endl;
3109 WriteStateToStream(
fout );
3111 fout <<
"============================================================================ */" << std::endl;
3114 fout <<
"" << std::endl;
3115 fout <<
"#include <array>" << std::endl;
3116 fout <<
"#include <vector>" << std::endl;
3117 fout <<
"#include <cmath>" << std::endl;
3118 fout <<
"#include <string>" << std::endl;
3119 fout <<
"#include <iostream>" << std::endl;
3120 fout <<
"" << std::endl;
3123 this->MakeClassSpecificHeader(
fout, className );
3125 fout <<
"#ifndef IClassifierReader__def" << std::endl;
3126 fout <<
"#define IClassifierReader__def" << std::endl;
3128 fout <<
"class IClassifierReader {" << std::endl;
3130 fout <<
" public:" << std::endl;
3132 fout <<
" // constructor" << std::endl;
3133 fout <<
" IClassifierReader() : fStatusIsClean( true ) {}" << std::endl;
3134 fout <<
" virtual ~IClassifierReader() {}" << std::endl;
3136 fout <<
" // return classifier response" << std::endl;
3138 fout <<
" virtual std::vector<double> GetMulticlassValues( const std::vector<double>& inputValues ) const = 0;" << std::endl;
3140 fout <<
" virtual double GetMvaValue( const std::vector<double>& inputValues ) const = 0;" << std::endl;
3143 fout <<
" // returns classifier status" << std::endl;
3144 fout <<
" bool IsStatusClean() const { return fStatusIsClean; }" << std::endl;
3146 fout <<
" protected:" << std::endl;
3148 fout <<
" bool fStatusIsClean;" << std::endl;
3149 fout <<
"};" << std::endl;
3151 fout <<
"#endif" << std::endl;
3153 fout <<
"class " << className <<
" : public IClassifierReader {" << std::endl;
3155 fout <<
" public:" << std::endl;
3157 fout <<
" // constructor" << std::endl;
3158 fout <<
" " << className <<
"( std::vector<std::string>& theInputVars )" << std::endl;
3159 fout <<
" : IClassifierReader()," << std::endl;
3160 fout <<
" fClassName( \"" << className <<
"\" )," << std::endl;
3161 fout <<
" fNvars( " << GetNvar() <<
" )" << std::endl;
3162 fout <<
" {" << std::endl;
3163 fout <<
" // the training input variables" << std::endl;
3164 fout <<
" const char* inputVars[] = { ";
3166 fout <<
"\"" << GetOriginalVarName(
ivar) <<
"\"";
3167 if (
ivar<GetNvar()-1)
fout <<
", ";
3169 fout <<
" };" << std::endl;
3171 fout <<
" // sanity checks" << std::endl;
3172 fout <<
" if (theInputVars.size() <= 0) {" << std::endl;
3173 fout <<
" std::cout << \"Problem in class \\\"\" << fClassName << \"\\\": empty input vector\" << std::endl;" << std::endl;
3174 fout <<
" fStatusIsClean = false;" << std::endl;
3175 fout <<
" }" << std::endl;
3177 fout <<
" if (theInputVars.size() != fNvars) {" << std::endl;
3178 fout <<
" std::cout << \"Problem in class \\\"\" << fClassName << \"\\\": mismatch in number of input values: \"" << std::endl;
3179 fout <<
" << theInputVars.size() << \" != \" << fNvars << std::endl;" << std::endl;
3180 fout <<
" fStatusIsClean = false;" << std::endl;
3181 fout <<
" }" << std::endl;
3183 fout <<
" // validate input variables" << std::endl;
3184 fout <<
" for (size_t ivar = 0; ivar < theInputVars.size(); ivar++) {" << std::endl;
3185 fout <<
" if (theInputVars[ivar] != inputVars[ivar]) {" << std::endl;
3186 fout <<
" std::cout << \"Problem in class \\\"\" << fClassName << \"\\\": mismatch in input variable names\" << std::endl" << std::endl;
3187 fout <<
" << \" for variable [\" << ivar << \"]: \" << theInputVars[ivar].c_str() << \" != \" << inputVars[ivar] << std::endl;" << std::endl;
3188 fout <<
" fStatusIsClean = false;" << std::endl;
3189 fout <<
" }" << std::endl;
3190 fout <<
" }" << std::endl;
3192 fout <<
" // initialize min and max vectors (for normalisation)" << std::endl;
3194 fout <<
" fVmin[" <<
ivar <<
"] = " << std::setprecision(15) << GetXmin(
ivar ) <<
";" << std::endl;
3195 fout <<
" fVmax[" <<
ivar <<
"] = " << std::setprecision(15) << GetXmax(
ivar ) <<
";" << std::endl;
3198 fout <<
" // initialize input variable types" << std::endl;
3200 fout <<
" fType[" <<
ivar <<
"] = \'" << DataInfo().GetVariableInfo(
ivar).GetVarType() <<
"\';" << std::endl;
3203 fout <<
" // initialize constants" << std::endl;
3204 fout <<
" Initialize();" << std::endl;
3206 if (GetTransformationHandler().GetTransformationList().GetSize() != 0) {
3207 fout <<
" // initialize transformation" << std::endl;
3208 fout <<
" InitTransform();" << std::endl;
3210 fout <<
" }" << std::endl;
3212 fout <<
" // destructor" << std::endl;
3213 fout <<
" virtual ~" << className <<
"() {" << std::endl;
3214 fout <<
" Clear(); // method-specific" << std::endl;
3215 fout <<
" }" << std::endl;
3217 fout <<
" // the classifier response" << std::endl;
3218 fout <<
" // \"inputValues\" is a vector of input values in the same order as the" << std::endl;
3219 fout <<
" // variables given to the constructor" << std::endl;
3221 fout <<
" std::vector<double> GetMulticlassValues( const std::vector<double>& inputValues ) const override;" << std::endl;
3223 fout <<
" double GetMvaValue( const std::vector<double>& inputValues ) const override;" << std::endl;
3226 fout <<
" private:" << std::endl;
3228 fout <<
" // method-specific destructor" << std::endl;
3229 fout <<
" void Clear();" << std::endl;
3231 if (GetTransformationHandler().GetTransformationList().GetSize()!=0) {
3232 fout <<
" // input variable transformation" << std::endl;
3233 GetTransformationHandler().MakeFunction(
fout, className,1);
3234 fout <<
" void InitTransform();" << std::endl;
3235 fout <<
" void Transform( std::vector<double> & iv, int sigOrBgd ) const;" << std::endl;
3238 fout <<
" // common member variables" << std::endl;
3239 fout <<
" const char* fClassName;" << std::endl;
3241 fout <<
" const size_t fNvars;" << std::endl;
3242 fout <<
" size_t GetNvar() const { return fNvars; }" << std::endl;
3243 fout <<
" char GetType( int ivar ) const { return fType[ivar]; }" << std::endl;
3245 fout <<
" // normalisation of input variables" << std::endl;
3246 fout <<
" double fVmin[" << GetNvar() <<
"];" << std::endl;
3247 fout <<
" double fVmax[" << GetNvar() <<
"];" << std::endl;
3248 fout <<
" double NormVariable( double x, double xmin, double xmax ) const {" << std::endl;
3249 fout <<
" // normalise to output range: [-1, 1]" << std::endl;
3250 fout <<
" return 2*(x - xmin)/(xmax - xmin) - 1.0;" << std::endl;
3251 fout <<
" }" << std::endl;
3253 fout <<
" // type of input variable: 'F' or 'I'" << std::endl;
3254 fout <<
" char fType[" << GetNvar() <<
"];" << std::endl;
3256 fout <<
" // initialize internal variables" << std::endl;
3257 fout <<
" void Initialize();" << std::endl;
3259 fout <<
" std::vector<double> GetMulticlassValues__( const std::vector<double>& inputValues ) const;" << std::endl;
3261 fout <<
" double GetMvaValue__( const std::vector<double>& inputValues ) const;" << std::endl;
3263 fout <<
"" << std::endl;
3264 fout <<
" // private members (method specific)" << std::endl;
3267 MakeClassSpecific(
fout, className );
3270 fout <<
"inline std::vector<double> " << className <<
"::GetMulticlassValues( const std::vector<double>& inputValues ) const" << std::endl;
3272 fout <<
"inline double " << className <<
"::GetMvaValue( const std::vector<double>& inputValues ) const" << std::endl;
3274 fout <<
"{" << std::endl;
3275 fout <<
" // classifier response value" << std::endl;
3277 fout <<
" std::vector<double> retval;" << std::endl;
3279 fout <<
" double retval = 0;" << std::endl;
3282 fout <<
" // classifier response, sanity check first" << std::endl;
3283 fout <<
" if (!IsStatusClean()) {" << std::endl;
3284 fout <<
" std::cout << \"Problem in class \\\"\" << fClassName << \"\\\": cannot return classifier response\"" << std::endl;
3285 fout <<
" << \" because status is dirty\" << std::endl;" << std::endl;
3286 fout <<
" }" << std::endl;
3287 fout <<
" else {" << std::endl;
3288 if (IsNormalised()) {
3289 fout <<
" // normalise variables" << std::endl;
3290 fout <<
" std::vector<double> iV;" << std::endl;
3291 fout <<
" iV.reserve(inputValues.size());" << std::endl;
3292 fout <<
" int ivar = 0;" << std::endl;
3293 fout <<
" for (std::vector<double>::const_iterator varIt = inputValues.begin();" << std::endl;
3294 fout <<
" varIt != inputValues.end(); varIt++, ivar++) {" << std::endl;
3295 fout <<
" iV.push_back(NormVariable( *varIt, fVmin[ivar], fVmax[ivar] ));" << std::endl;
3296 fout <<
" }" << std::endl;
3297 if (GetTransformationHandler().GetTransformationList().GetSize() != 0 && GetMethodType() !=
Types::kLikelihood &&
3299 fout <<
" Transform( iV, -1 );" << std::endl;
3303 fout <<
" retval = GetMulticlassValues__( iV );" << std::endl;
3305 fout <<
" retval = GetMvaValue__( iV );" << std::endl;
3308 if (GetTransformationHandler().GetTransformationList().GetSize() != 0 && GetMethodType() !=
Types::kLikelihood &&
3310 fout <<
" std::vector<double> iV(inputValues);" << std::endl;
3311 fout <<
" Transform( iV, -1 );" << std::endl;
3313 fout <<
" retval = GetMulticlassValues__( iV );" << std::endl;
3315 fout <<
" retval = GetMvaValue__( iV );" << std::endl;
3319 fout <<
" retval = GetMulticlassValues__( inputValues );" << std::endl;
3321 fout <<
" retval = GetMvaValue__( inputValues );" << std::endl;
3325 fout <<
" }" << std::endl;
3327 fout <<
" return retval;" << std::endl;
3328 fout <<
"}" << std::endl;
3331 if (GetTransformationHandler().GetTransformationList().GetSize()!=0)
3332 GetTransformationHandler().MakeFunction(
fout, className,2);
3344 std::streambuf*
cout_sbuf = std::cout.rdbuf();
3345 std::ofstream* o = 0;
3346 if (
gConfig().WriteOptionsReference()) {
3347 Log() << kINFO <<
"Print Help message for class " << GetName() <<
" into file: " << GetReferenceFile() <<
Endl;
3348 o =
new std::ofstream( GetReferenceFile(), std::ios::app );
3350 Log() << kFATAL <<
"<PrintHelpMessage> Unable to append to output file: " << GetReferenceFile() <<
Endl;
3352 std::cout.rdbuf( o->rdbuf() );
3357 Log() << kINFO <<
Endl;
3359 <<
"================================================================"
3363 <<
"H e l p f o r M V A m e t h o d [ " << GetName() <<
" ] :"
3368 Log() <<
"Help for MVA method [ " << GetName() <<
" ] :" <<
Endl;
3376 Log() <<
"<Suppress this message by specifying \"!H\" in the booking option>" <<
Endl;
3378 <<
"================================================================"
3385 Log() <<
"# End of Message___" <<
Endl;
3405 else retval = fEffS->GetBinContent( fEffS->FindBin(
theCut ) );
3414 if (
theCut-fXmin < eps)
retval = (GetCutOrientation() == kPositive) ? 1.0 : 0.0;
3415 else if (fXmax-
theCut < eps)
retval = (GetCutOrientation() == kPositive) ? 0.0 : 1.0;
3428 if (GetTransformationHandler().GetTransformationList().GetEntries() <= 0) {
3429 return (Data()->GetEventCollection(
type));
3436 if (fEventCollections.at(idx) == 0) {
3437 fEventCollections.at(idx) = &(Data()->GetEventCollection(
type));
3438 fEventCollections.at(idx) = GetTransformationHandler().CalcTransformations(*(fEventCollections.at(idx)),
kTRUE);
3440 return *(fEventCollections.at(idx));
3448 UInt_t a = GetTrainingTMVAVersionCode() & 0xff0000;
a>>=16;
3449 UInt_t b = GetTrainingTMVAVersionCode() & 0x00ff00;
b>>=8;
3450 UInt_t c = GetTrainingTMVAVersionCode() & 0x0000ff;
3460 UInt_t a = GetTrainingROOTVersionCode() & 0xff0000;
a>>=16;
3461 UInt_t b = GetTrainingROOTVersionCode() & 0x00ff00;
b>>=8;
3462 UInt_t c = GetTrainingROOTVersionCode() & 0x0000ff;
const Bool_t Use_Splines_for_Eff_
const Int_t NBIN_HIST_HIGH
#define ROOT_VERSION_CODE
bool Bool_t
Boolean (0=false, 1=true) (bool)
int Int_t
Signed integer 4 bytes (int)
char Char_t
Character 1 byte (char)
float Float_t
Float 4 bytes (float)
double Double_t
Double 8 bytes.
long long Long64_t
Portable signed long integer 8 bytes.
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h length
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Option_t Option_t TPoint TPoint const char y1
TMatrixT< Double_t > TMatrixD
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
R__EXTERN TSystem * gSystem
#define TMVA_VERSION_CODE
const_iterator begin() const
const_iterator end() const
Class to manage histogram axis.
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Describe directory structure in memory.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
A TGraph is an object made of two arrays X and Y with npoints each.
1-D histogram with a double per channel (see TH1 documentation)
1-D histogram with a float per channel (see TH1 documentation)
TH1 is the base class of all histogram classes in ROOT.
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
virtual Int_t GetQuantiles(Int_t n, Double_t *xp, const Double_t *p=nullptr)
Compute Quantiles for this histogram.
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
2-D histogram with a float per channel (see TH1 documentation)
Int_t Fill(Double_t) override
Invalid Fill method.
Class that contains all the information of a class.
TString fWeightFileExtension
Int_t fMaxNumOfAllowedVariables
VariablePlotting & GetVariablePlotting()
class TMVA::Config::VariablePlotting fVariablePlotting
MsgLogger * fLogger
! message logger
Class that contains all the data information.
Class that contains all the data information.
static void SetIsTraining(Bool_t)
when this static function is called, it sets the flag whether events with negative event weight shoul...
static void SetIgnoreNegWeightsInTraining(Bool_t)
when this static function is called, it sets the flag whether events with negative event weight shoul...
Interface for all concrete MVA method implementations.
void Init(std::vector< TString > &graphTitles)
This function gets some title and it creates a TGraph for every title.
IPythonInteractive()
standard constructor
~IPythonInteractive()
standard destructor
void ClearGraphs()
This function sets the point number to 0 for all graphs.
void AddPoint(Double_t x, Double_t y1, Double_t y2)
This function is used only in 2 TGraph case, and it will add new data points to graphs.
Virtual base Class for all MVA method.
TDirectory * MethodBaseDir() const
returns the ROOT directory where all instances of the corresponding MVA method are stored
virtual Double_t GetKSTrainingVsTest(Char_t SorB, TString opt="X")
MethodBase(const TString &jobName, Types::EMVA methodType, const TString &methodTitle, DataSetInfo &dsi, const TString &theOption="")
standard constructor
void PrintHelpMessage() const override
prints out method-specific help method
virtual std::vector< Float_t > GetAllMulticlassValues()
Get all multi-class values.
virtual Double_t GetSeparation(TH1 *, TH1 *) const
compute "separation" defined as
const char * GetName() const override
void ReadClassesFromXML(void *clsnode)
read number of classes from XML
void SetWeightFileDir(TString fileDir)
set directory of weight file
void WriteStateToXML(void *parent) const
general method used in writing the header of the weight files where the used variables,...
void DeclareBaseOptions()
define the options (their key words) that can be set in the option string here the options valid for ...
virtual void TestRegression(Double_t &bias, Double_t &biasT, Double_t &dev, Double_t &devT, Double_t &rms, Double_t &rmsT, Double_t &mInf, Double_t &mInfT, Double_t &corr, Types::ETreeType type)
calculate <sum-of-deviation-squared> of regression output versus "true" value from test sample
virtual void DeclareCompatibilityOptions()
options that are used ONLY for the READER to ensure backward compatibility they are hence without any...
virtual Double_t GetSignificance() const
compute significance of mean difference
virtual Double_t GetProba(const Event *ev)
virtual TMatrixD GetMulticlassConfusionMatrix(Double_t effB, Types::ETreeType type)
Construct a confusion matrix for a multiclass classifier.
virtual void WriteEvaluationHistosToFile(Types::ETreeType treetype)
writes all MVA evaluation histograms to file
virtual void TestMulticlass()
test multiclass classification
const std::vector< TMVA::Event * > & GetEventCollection(Types::ETreeType type)
returns the event collection (i.e.
virtual std::vector< Double_t > GetDataMvaValues(DataSet *data=nullptr, Long64_t firstEvt=0, Long64_t lastEvt=-1, Bool_t logProgress=false)
get all the MVA values for the events of the given Data type
void SetupMethod()
setup of methods
TDirectory * BaseDir() const
returns the ROOT directory where info/histograms etc of the corresponding MVA method instance are sto...
virtual std::vector< Float_t > GetMulticlassEfficiency(std::vector< std::vector< Float_t > > &purity)
void AddInfoItem(void *gi, const TString &name, const TString &value) const
xml writing
virtual void AddClassifierOutputProb(Types::ETreeType type)
prepare tree branch with the method's discriminating variable
virtual Double_t GetEfficiency(const TString &, Types::ETreeType, Double_t &err)
fill background efficiency (resp.
TString GetTrainingTMVAVersionString() const
calculates the TMVA version string from the training version code on the fly
void Statistics(Types::ETreeType treeType, const TString &theVarName, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &)
calculates rms,mean, xmin, xmax of the event variable this can be either done for the variables as th...
Bool_t GetLine(std::istream &fin, char *buf)
reads one line from the input stream checks for certain keywords and interprets the line if keywords ...
void ProcessSetup()
process all options the "CheckForUnusedOptions" is done in an independent call, since it may be overr...
virtual std::vector< Double_t > GetMvaValues(Long64_t firstEvt=0, Long64_t lastEvt=-1, Bool_t logProgress=false)
get all the MVA values for the events of the current Data type
virtual Bool_t IsSignalLike()
uses a pre-set cut on the MVA output (SetSignalReferenceCut and SetSignalReferenceCutOrientation) for...
virtual ~MethodBase()
destructor
void WriteMonitoringHistosToFile() const override
write special monitoring histograms to file dummy implementation here --------------—
virtual Double_t GetMaximumSignificance(Double_t SignalEvents, Double_t BackgroundEvents, Double_t &optimal_significance_value) const
plot significance, , curve for given number of signal and background events; returns cut for maximum ...
virtual Double_t GetTrainingEfficiency(const TString &)
void SetWeightFileName(TString)
set the weight file name (depreciated)
TString GetWeightFileName() const
retrieve weight file name
virtual void TestClassification()
initialization
void AddOutput(Types::ETreeType type, Types::EAnalysisType analysisType)
virtual void AddRegressionOutput(Types::ETreeType type)
prepare tree branch with the method's discriminating variable
void InitBase()
default initialization called by all constructors
virtual void GetRegressionDeviation(UInt_t tgtNum, Types::ETreeType type, Double_t &stddev, Double_t &stddev90Percent) const
void ReadStateFromXMLString(const char *xmlstr)
for reading from memory
void MakeClass(const TString &classFileName=TString("")) const override
create reader class for method (classification only at present)
void CreateMVAPdfs()
Create PDFs of the MVA output variables.
TString GetTrainingROOTVersionString() const
calculates the ROOT version string from the training version code on the fly
virtual Double_t GetValueForRoot(Double_t)
returns efficiency as function of cut
void ReadStateFromFile()
Function to write options and weights to file.
void WriteVarsToStream(std::ostream &tf, const TString &prefix="") const
write the list of variables (name, min, max) for a given data transformation method to the stream
void ReadVarsFromStream(std::istream &istr)
Read the variables (name, min, max) for a given data transformation method from the stream.
void ReadSpectatorsFromXML(void *specnode)
read spectator info from XML
void SetTestvarName(const TString &v="")
void ReadVariablesFromXML(void *varnode)
read variable info from XML
virtual std::map< TString, Double_t > OptimizeTuningParameters(TString fomType="ROCIntegral", TString fitType="FitGA")
call the Optimizer with the set of parameters and ranges that are meant to be tuned.
virtual std::vector< Float_t > GetMulticlassTrainingEfficiency(std::vector< std::vector< Float_t > > &purity)
void WriteStateToStream(std::ostream &tf) const
general method used in writing the header of the weight files where the used variables,...
virtual Double_t GetRarity(Double_t mvaVal, Types::ESBType reftype=Types::kBackground) const
compute rarity:
virtual void SetTuneParameters(std::map< TString, Double_t > tuneParameters)
set the tuning parameters according to the argument This is just a dummy .
void ReadStateFromStream(std::istream &tf)
read the header from the weight files of the different MVA methods
void AddVarsXMLTo(void *parent) const
write variable info to XML
Double_t GetMvaValue(Double_t *errLower=nullptr, Double_t *errUpper=nullptr) override=0
void AddTargetsXMLTo(void *parent) const
write target info to XML
void ReadTargetsFromXML(void *tarnode)
read target info from XML
void ProcessBaseOptions()
the option string is decoded, for available options see "DeclareOptions"
void ReadStateFromXML(void *parent)
virtual std::vector< Float_t > GetAllRegressionValues()
Get al regression values in one call.
void NoErrorCalc(Double_t *const err, Double_t *const errUpper)
void WriteStateToFile() const
write options and weights to file note that each one text file for the main configuration information...
void AddClassesXMLTo(void *parent) const
write class info to XML
virtual void AddClassifierOutput(Types::ETreeType type)
prepare tree branch with the method's discriminating variable
void AddSpectatorsXMLTo(void *parent) const
write spectator info to XML
virtual Double_t GetROCIntegral(TH1D *histS, TH1D *histB) const
calculate the area (integral) under the ROC curve as a overall quality measure of the classification
virtual void AddMulticlassOutput(Types::ETreeType type)
prepare tree branch with the method's discriminating variable
virtual void CheckSetup()
check may be overridden by derived class (sometimes, eg, fitters are used which can only be implement...
void SetSource(const std::string &source)
PDF wrapper for histograms; uses user-defined spline interpolation.
Class that is the base-class for a vector of result.
Class which takes the results of a multiclass classification.
Class that is the base-class for a vector of result.
Class that is the base-class for a vector of result.
Root finding using Brents algorithm (translated from CERNLIB function RZERO)
Linear interpolation of TGraph.
Timing information for training and evaluation of MVA methods.
Singleton class for Global types used by TMVA.
@ kSignal
Never change this number - it is elsewhere assumed to be zero !
Class for type info of MVA input variable.
A TMultiGraph is a collection of TGraph (or derived) objects.
Collectable string class.
void ToLower()
Change string to lower-case.
Int_t Atoi() const
Return integer value of string.
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual const char * GetBuildNode() const
Return the build node name.
virtual int mkdir(const char *name, Bool_t recursive=kFALSE)
Make a file system directory.
virtual const char * WorkingDirectory()
Return working directory.
virtual UserGroup_t * GetUserInfo(Int_t uid)
Returns all user info in the UserGroup_t structure.
void SaveDoc(XMLDocPointer_t xmldoc, const char *filename, Int_t layout=1)
store document content to file if layout<=0, no any spaces or newlines will be placed between xmlnode...
void FreeDoc(XMLDocPointer_t xmldoc)
frees allocated document data and deletes document itself
XMLNodePointer_t DocGetRootElement(XMLDocPointer_t xmldoc)
returns root node of document
XMLDocPointer_t NewDoc(const char *version="1.0")
creates new xml document with provided version
XMLDocPointer_t ParseFile(const char *filename, Int_t maxbuf=100000)
Parses content of file and tries to produce xml structures.
XMLDocPointer_t ParseString(const char *xmlstring)
parses content of string and tries to produce xml structures
void DocSetRootElement(XMLDocPointer_t xmldoc, XMLNodePointer_t xmlnode)
set main (root) node for document
void CreateVariableTransforms(const TString &trafoDefinition, TMVA::DataSetInfo &dataInfo, TMVA::TransformationHandler &transformationHandler, TMVA::MsgLogger &log)
MsgLogger & Endl(MsgLogger &ml)
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t Sqrt(Double_t x)
Returns the square root of x.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.