31 #ifndef ROOT_TMVA_MethodFDA
32 #define ROOT_TMVA_MethodFDA
60 class MethodFDA :
public MethodBase,
public IFitterTarget {
64 MethodFDA(
const TString& jobName,
65 const TString& methodTitle,
67 const TString& theOption =
"");
69 MethodFDA( DataSetInfo& theData,
70 const TString& theWeightFile);
72 virtual ~MethodFDA(
void );
74 Bool_t HasAnalysisType( Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets );
79 using MethodBase::ReadWeightsFromStream;
81 void AddWeightsXMLTo (
void* parent )
const;
83 void ReadWeightsFromStream( std::istream & i );
84 void ReadWeightsFromXML (
void* wghtnode );
87 Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
89 virtual const std::vector<Float_t>& GetRegressionValues();
90 virtual const std::vector<Float_t>& GetMulticlassValues();
95 const Ranking* CreateRanking() {
return 0; }
97 Double_t EstimatorFunction( std::vector<Double_t>& );
105 void MakeClassSpecific( std::ostream&,
const TString& )
const;
108 void GetHelpMessage()
const;
113 void CalculateMulticlassValues(
const TMVA::Event*& evt, std::vector<Double_t>& parameters, std::vector<Float_t>& values);
117 void CreateFormula ();
118 Double_t InterpretFormula(
const Event*, std::vector<Double_t>::iterator begin, std::vector<Double_t>::iterator end );
124 void PrintResults(
const TString&, std::vector<Double_t>&,
const Double_t )
const;
127 void DeclareOptions();
128 void ProcessOptions();
130 TString fFormulaStringP;
131 TString fParRangeStringP;
132 TString fFormulaStringT;
133 TString fParRangeStringT;
137 std::vector<Interval*> fParRange;
138 std::vector<Double_t> fBestPars;
142 IFitterTarget* fConvergerFitter;
146 Double_t fSumOfWeightsSig;
147 Double_t fSumOfWeightsBkg;
148 Double_t fSumOfWeights;
151 Int_t fOutputDimensions;
153 ClassDef(MethodFDA,0);
158 #endif // MethodFDA_H