55#ifndef IClassifierReader__def
56#define IClassifierReader__def
58class IClassifierReader {
63 IClassifierReader() : fStatusIsClean(
true ) {}
64 virtual ~IClassifierReader() {}
67 virtual double GetMvaValue(
const std::vector<double>& inputValues )
const = 0;
70 bool IsStatusClean()
const {
return fStatusIsClean; }
79class ReadFisher :
public IClassifierReader {
84 ReadFisher( std::vector<std::string>& theInputVars )
85 : IClassifierReader(),
86 fClassName(
"ReadFisher" ),
90 const char* inputVars[] = {
"x",
"y" };
93 if (theInputVars.size() <= 0) {
94 std::cout <<
"Problem in class \"" << fClassName <<
"\": empty input vector" << std::endl;
95 fStatusIsClean =
false;
98 if (theInputVars.size() != fNvars) {
99 std::cout <<
"Problem in class \"" << fClassName <<
"\": mismatch in number of input values: "
100 << theInputVars.size() <<
" != " << fNvars << std::endl;
101 fStatusIsClean =
false;
105 for (
size_t ivar = 0; ivar < theInputVars.size(); ivar++) {
106 if (theInputVars[ivar] != inputVars[ivar]) {
107 std::cout <<
"Problem in class \"" << fClassName <<
"\": mismatch in input variable names" << std::endl
108 <<
" for variable [" << ivar <<
"]: " << theInputVars[ivar].c_str() <<
" != " << inputVars[ivar] << std::endl;
109 fStatusIsClean =
false;
129 virtual ~ReadFisher() {
136 double GetMvaValue(
const std::vector<double>& inputValues )
const override;
144 const char* fClassName;
147 size_t GetNvar()
const {
return fNvars; }
153 double NormVariable(
double x,
double xmin,
double xmax )
const {
163 double GetMvaValue__(
const std::vector<double>& inputValues )
const;
166 inline double ReadFisher::GetMvaValue(
const std::vector<double>& inputValues )
const
172 if (!IsStatusClean()) {
173 std::cout <<
"Problem in class \"" << fClassName <<
"\": cannot return classifier response"
174 <<
" because status is dirty" << std::endl;
178 retval = GetMvaValue__( inputValues );
Type GetType(const std::string &Name)
void Initialize(Bool_t useTMVAStyle=kTRUE)