130 fDataSetManager(
NULL ),
137 fMvaEventErrorUpper( 0 ),
174 for (std::vector<TString>::iterator ivar = inputVars.begin(); ivar != inputVars.end(); ivar++)
204 for (std::vector<std::string>::iterator ivar = inputVars.begin(); ivar != inputVars.end(); ivar++)
317 Log() << kFATAL <<
"Reader::AddVariable( const TString& expression, Int_t* datalink ), this function is deprecated, please provide all variables to the reader as floats" <<
Endl;
319 Log() << kFATAL <<
"Reader::AddVariable( const TString& expression, Int_t* datalink ), this function is deprecated, please provide all variables to the reader as floats" <<
Endl;
344 std::ifstream fin( filename );
346 Log() << kFATAL <<
"<BookMVA> fatal error: " 347 <<
"unable to open input weight file: " << filename <<
Endl;
353 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,29,0) 364 fin.getline(buf,512);
369 TString methodType = fullMethodName(0,fullMethodName.
Index(
"::"));
370 if (methodType.
Contains(
" ")) methodType = methodType(methodType.
Last(
' ')+1,methodType.
Length());
381 Log() << kFATAL <<
"<BookMVA> method tag \"" << methodTag <<
"\" already exists!" <<
Endl;
385 Log() << kINFO <<
"Booking \"" << methodTag <<
"\" of type \"" << methodType <<
"\" from " << weightfile <<
"." <<
Endl;
392 Log() << kFATAL <<
"Method with type kCategory cannot be casted to MethodCategory. /Reader" <<
Endl;
409 if (method==0)
return im;
414 Log() << kERROR <<
"Method with type kCategory cannot be casted to MethodCategory. /Reader" <<
Endl;
440 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,26,00) 448 if(!method)
return 0;
453 Log() << kFATAL <<
"Method with type kCategory cannot be casted to MethodCategory. /Reader" <<
Endl;
474 Log() << kFATAL <<
"Method Reader::BookMVA(TMVA::Types::EMVA methodType = " << methodType
475 <<
", const char* xmlstr = " << xmlstr
476 <<
" ) is not available for ROOT versions prior to 5.26/00." <<
Endl;
490 if(meth==0)
return 0;
494 for (
UInt_t i=0; i<inputVec.size(); i++){
496 Log() << kERROR << i <<
"-th variable of the event is NaN --> return MVA value -999, \n that's all I can do, please fix or remove this event." <<
Endl;
522 for (
UInt_t idx=0; idx!=inputVec.size(); idx++ )
535 std::map<TString, IMethod*>::iterator it =
fMethodMap.find( methodTag );
537 Log() << kINFO <<
"<EvaluateMVA> unknown classifier in map; " 538 <<
"you looked for \"" << methodTag <<
"\" within available methods: " <<
Endl;
540 Log() <<
"Check calling string" << kFATAL <<
Endl;
543 else method = it->second;
548 Log() << kFATAL << methodTag <<
" is not a method" <<
Endl;
555 Log() << kERROR << i <<
"-th variable of the event is NaN --> return MVA value -999, \n that's all I can do, please fix or remove this event." <<
Endl;
586 std::map<TString, IMethod*>::iterator it =
fMethodMap.find( methodTag );
588 Log() << kINFO <<
"<EvaluateMVA> unknown method in map; " 589 <<
"you looked for \"" << methodTag <<
"\" within available methods: " <<
Endl;
591 Log() <<
"Check calling string" << kFATAL <<
Endl;
593 else method = it->second;
598 Log() << kFATAL << methodTag <<
" is not a method" <<
Endl;
604 Log() << kERROR << i <<
"-th variable of the event is NaN, \n regression values might evaluate to .. what do I know. \n sorry this warning is all I can do, please fix or remove this event." <<
Endl;
621 Log() << kERROR << i <<
"-th variable of the event is NaN, \n regression values might evaluate to .. what do I know. \n sorry this warning is all I can do, please fix or remove this event." <<
Endl;
636 catch (std::out_of_range
e) {
637 Log() << kWARNING <<
"Regression could not be evaluated for target-number " << tgtNumber <<
Endl;
651 std::map<TString, IMethod*>::iterator it =
fMethodMap.find( methodTag );
653 Log() << kINFO <<
"<EvaluateMVA> unknown method in map; " 654 <<
"you looked for \"" << methodTag <<
"\" within available methods: " <<
Endl;
656 Log() <<
"Check calling string" << kFATAL <<
Endl;
658 else method = it->second;
663 Log() << kFATAL << methodTag <<
" is not a method" <<
Endl;
670 Log() << kERROR << i <<
"-th variable of the event is NaN, \n regression values might evaluate to .. what do I know. \n sorry this warning is all I can do, please fix or remove this event." <<
Endl;
687 Log() << kERROR << i <<
"-th variable of the event is NaN, \n regression values might evaluate to .. what do I know. \n sorry this warning is all I can do, please fix or remove this event." <<
Endl;
702 catch (std::out_of_range
e) {
703 Log() << kWARNING <<
"Multiclass could not be evaluated for class-number " << clsNumber <<
Endl;
714 std::map<TString, IMethod*>::iterator it =
fMethodMap.find( methodTag );
715 if (it !=
fMethodMap.end())
return it->second;
716 Log() << kERROR <<
"Method " << methodTag <<
" not found!" <<
Endl;
735 std::map<TString, IMethod*>::iterator it =
fMethodMap.find( methodTag );
738 Log() << kFATAL <<
"<EvaluateMVA> unknown classifier in map: " << method <<
"; " 739 <<
"you looked for " << methodTag<<
" while the available methods are : " <<
Endl;
741 else method = it->second;
750 Log() << kERROR << i <<
"-th variable of the event is NaN --> return MVA value -999, \n that's all I can do, please fix or remove this event." <<
Endl;
755 if (mvaVal == -9999999) mvaVal = kl->
GetMvaValue();
757 return kl->
GetProba( mvaVal, ap_sig );
766 std::map<TString, IMethod*>::iterator it =
fMethodMap.find( methodTag );
769 Log() << kFATAL <<
"<EvaluateMVA> unknown classifier in map: \"" << method <<
"\"; " 770 <<
"you looked for \"" << methodTag<<
"\" while the available methods are : " <<
Endl;
772 else method = it->second;
781 Log() << kERROR << i <<
"-th variable of the event is NaN --> return MVA value -999, \n that's all I can do, please fix or remove this event." <<
Endl;
786 if (mvaVal == -9999999) mvaVal = kl->
GetMvaValue();
800 size_t ipos = 0,
f = 0;
801 while (
f != varNames.length()) {
802 f = varNames.find(
':', ipos );
803 if (
f > varNames.length())
f = varNames.length();
804 std::string subs = varNames.substr( ipos,
f-ipos ); ipos =
f+1;
818 for (
int i=0; i< n+1 ; i++) {
819 format.
Append(varNames(i));
820 if (varNames(i) ==
':' || i == n) {
IMethod * Create(const std::string &name, const TString &job, const TString &title, DataSetInfo &dsi, const TString &option)
creates the method if needed based on the method name using the creator function the factory has stor...
static ClassifierFactory & Instance()
access to the ClassifierFactory singleton creates the instance if needed
std::map< TString, IMethod * > fMethodMap
virtual const std::vector< Float_t > & GetMulticlassValues()
MsgLogger & Endl(MsgLogger &ml)
virtual Double_t GetMvaValue(Double_t *errLower=0, Double_t *errUpper=0)=0
virtual ~Reader(void)
destructor
void AddVariable(const TString &expression, Float_t *)
Add a float variable or expression to the reader.
TString & ReplaceAll(const TString &s1, const TString &s2)
static Types & Instance()
the the single instance of "Types" if existing already, or create it (Singleton)
void SetTestSignalEfficiency(Double_t effS)
OptionBase * DeclareOptionRef(T &ref, const TString &name, const TString &desc="")
Double_t fMvaEventErrorUpper
const std::vector< Float_t > & EvaluateRegression(const TString &methodTag, Double_t aux=0)
evaluates MVA for given set of input variables
Virtual base Class for all MVA method.
virtual const char * GetName() const
Returns name of object.
const std::vector< Float_t > & GetRegressionValues(const TMVA::Event *const ev)
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Double_t GetRarity(const TString &methodTag, Double_t mvaVal=-9999999)
evaluates the MVA's rarity
static std::string format(double x, double y, int digits, int width)
void FreeDoc(XMLDocPointer_t xmldoc)
frees allocated document data and deletes document itself
VariableInfo & AddSpectator(const TString &expression, const TString &title, const TString &unit, Double_t min, Double_t max, char type='F', Bool_t normalized=kTRUE, void *external=0)
add a spectator (can be a complex expression) to the set of spectator variables used in the MV analys...
void DecodeVarNames(const std::string &varNames)
decodes "name1:name2:..." form
static void InhibitOutput()
TString GetMethodTypeFromFile(const TString &filename)
read the method type from the file
const Event * GetEvent() const
DataInputHandler fDataInputHandler
void DeclareOptions()
declaration of configuration options
void ReadStateFromFile()
Function to write options and weights to file.
virtual Double_t GetRarity(Double_t mvaVal, Types::ESBType reftype=Types::kBackground) const
compute rarity: where PDF(x) is the PDF of the classifier's signal or background distribution ...
TString & Append(const char *cs)
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
virtual void ParseOptions()
options parser
void SetupMethod()
setup of methods
void SetMinType(EMsgType minType)
IMethod * BookMVA(const TString &methodTag, const TString &weightfile)
read method name from weight file
virtual Double_t GetProba(const Event *ev)
DataSetManager * fDataSetManager
void ReadStateFromXMLString(const char *xmlstr)
for reading from memory
std::vector< Float_t > fTmpEvalVec
std::string GetMethodName(TCppMethod_t)
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
DataSetInfo & AddDataSetInfo(DataSetInfo &dsi)
stores a copy of the dataset info object
DataSetManager * fDataSetManager
const TString & GetMethodName() const
Bool_t Verbose(void) const
UInt_t GetNVariables() const
accessor to the number of variables
Float_t GetValue(UInt_t ivar) const
return value of i'th variable
Class for categorizing the phase space.
Reader(const TString &theOption="", Bool_t verbose=0)
constructor
XMLDocPointer_t ParseFile(const char *filename, Int_t maxbuf=100000)
Parses content of file and tries to produce xml structures.
virtual void CheckSetup()
check may be overridden by derived class (sometimes, eg, fitters are used which can only be implement...
Multivariate optimisation of signal efficiency for given background efficiency, applying rectangular ...
void AddSpectator(const TString &expression, Float_t *)
Add a float spectator or expression to the reader.
Ssiz_t Last(char c) const
Find last occurrence of a character c.
Class that contains all the data information.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
Double_t EvaluateMVA(const std::vector< Float_t > &, const TString &methodTag, Double_t aux=0)
Evaluate a std::vector<float> of input data for a given method The parameter aux is obligatory for th...
ostringstream derivative to redirect and format output
void Init(void)
default initialisation (no member variables)
const TString & GetOptions() const
void SetUseColor(Bool_t uc)
void SetConfigName(const char *n)
Interface for all concrete MVA method implementations.
IMethod * FindMVA(const TString &methodTag)
return pointer to method with tag "methodTag"
TString GetMethodTypeName() const
virtual void DeclareCompatibilityOptions()
options that are used ONLY for the READER to ensure backward compatibility they are hence without any...
XMLNodePointer_t DocGetRootElement(XMLDocPointer_t xmldoc)
returns root node of document
VariableInfo & AddVariable(const TString &expression, const TString &title="", const TString &unit="", Double_t min=0, Double_t max=0, char varType='F', Bool_t normalized=kTRUE, void *external=0)
add a variable (can be a complex expression) to the set of variables used in the MV analysis ...
TString()
TString default ctor.
const DataSetInfo & DataInfo() const
Types::EMVA GetMethodType() const
Double_t GetProba(const TString &methodTag, Double_t ap_sig=0.5, Double_t mvaVal=-9999999)
evaluates probability of MVA for given set of input variables
const std::vector< Float_t > & EvaluateMulticlass(const TString &methodTag, Double_t aux=0)
evaluates MVA for given set of input variables
void Resize(Ssiz_t n)
Resize the string. Truncate or add blanks as necessary.
MethodCuts * FindCutsMVA(const TString &methodTag)
special function for Cuts to avoid dynamic_casts in ROOT macros, which are not properly handled by CI...