51#ifndef IClassifierReader__def
52#define IClassifierReader__def
54class IClassifierReader {
59 IClassifierReader() : fStatusIsClean(
true ) {}
60 virtual ~IClassifierReader() {}
63 virtual double GetMvaValue(
const std::vector<double>& inputValues )
const = 0;
66 bool IsStatusClean()
const {
return fStatusIsClean; }
75class ReadFisher_fold2 :
public IClassifierReader {
80 ReadFisher_fold2( std::vector<std::string>& theInputVars )
81 : IClassifierReader(),
82 fClassName(
"ReadFisher_fold2" ),
86 const char* inputVars[] = {
"x",
"y" };
89 if (theInputVars.size() <= 0) {
90 std::cout <<
"Problem in class \"" << fClassName <<
"\": empty input vector" << std::endl;
91 fStatusIsClean =
false;
94 if (theInputVars.size() != fNvars) {
95 std::cout <<
"Problem in class \"" << fClassName <<
"\": mismatch in number of input values: "
96 << theInputVars.size() <<
" != " << fNvars << std::endl;
97 fStatusIsClean =
false;
101 for (
size_t ivar = 0; ivar < theInputVars.size(); ivar++) {
102 if (theInputVars[ivar] != inputVars[ivar]) {
103 std::cout <<
"Problem in class \"" << fClassName <<
"\": mismatch in input variable names" << std::endl
104 <<
" for variable [" << ivar <<
"]: " << theInputVars[ivar].c_str() <<
" != " << inputVars[ivar] << std::endl;
105 fStatusIsClean =
false;
125 virtual ~ReadFisher_fold2() {
132 double GetMvaValue(
const std::vector<double>& inputValues )
const override;
140 const char* fClassName;
143 size_t GetNvar()
const {
return fNvars; }
149 double NormVariable(
double x,
double xmin,
double xmax )
const {
159 double GetMvaValue__(
const std::vector<double>& inputValues )
const;
163 std::vector<double> fFisherCoefficients;
168 fFisher0 = 0.0198348381631;
169 fFisherCoefficients.push_back( 0.474701901633 );
170 fFisherCoefficients.push_back( 0.463442770417 );
173 if (fFisherCoefficients.size() != fNvars) {
174 std::cout <<
"Problem in class \"" << fClassName <<
"\"::Initialize: mismatch in number of input values"
175 << fFisherCoefficients.size() <<
" != " << fNvars << std::endl;
176 fStatusIsClean =
false;
180inline double ReadFisher_fold2::GetMvaValue__(
const std::vector<double>& inputValues )
const
182 double retval = fFisher0;
183 for (
size_t ivar = 0; ivar < fNvars; ivar++) {
184 retval += fFisherCoefficients[ivar]*inputValues[ivar];
191inline void ReadFisher_fold2::Clear()
194 fFisherCoefficients.clear();
196 inline double ReadFisher_fold2::GetMvaValue(
const std::vector<double>& inputValues )
const
202 if (!IsStatusClean()) {
203 std::cout <<
"Problem in class \"" << fClassName <<
"\": cannot return classifier response"
204 <<
" because status is dirty" << std::endl;
208 retval = GetMvaValue__( inputValues );
Type GetType(const std::string &Name)
void Initialize(Bool_t useTMVAStyle=kTRUE)