35 #ifndef ROOT_TMVA_MethodPDEFoam
36 #define ROOT_TMVA_MethodPDEFoam
67 class MethodPDEFoam :
public MethodBase {
72 typedef enum EKernel { kNone=0, kGaus=1, kLinN=2 } EKernel;
74 MethodPDEFoam(
const TString& jobName,
75 const TString& methodTitle,
77 const TString& theOption =
"PDEFoam");
79 MethodPDEFoam( DataSetInfo& dsi,
80 const TString& theWeightFile);
82 virtual ~MethodPDEFoam(
void );
84 virtual Bool_t HasAnalysisType( Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets );
88 void TrainMonoTargetRegression(
void );
89 void TrainMultiTargetRegression(
void );
90 void TrainSeparatedClassification(
void );
91 void TrainUnifiedClassification(
void );
92 void TrainMultiClassification();
94 using MethodBase::ReadWeightsFromStream;
97 void AddWeightsXMLTo(
void* parent )
const;
100 void ReadWeightsFromStream( std::istream & i );
101 void ReadWeightsFromXML (
void* wghtnode );
104 void WriteFoamsToFile()
const;
105 void ReadFoamsFromFile();
106 PDEFoam* ReadClonedFoamFromFile(TFile*,
const TString&);
109 Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
112 const std::vector<Float_t>& GetMulticlassValues();
115 virtual const std::vector<Float_t>& GetRegressionValues();
118 virtual void Reset();
121 const Ranking* CreateRanking();
124 void GetNCuts(PDEFoamCell *cell, std::vector<UInt_t> &nCuts);
127 EKernel GetKernel(
void ) {
return fKernel; }
128 UInt_t KernelToUInt(EKernel ker)
const {
return UInt_t(ker); }
129 EKernel UIntToKernel(UInt_t iker);
130 UInt_t TargetSelectionToUInt(ETargetSelection ts)
const {
return UInt_t(ts); }
131 ETargetSelection UIntToTargetSelection(UInt_t its);
136 void MakeClassSpecific( std::ostream&,
const TString& )
const;
139 void GetHelpMessage()
const;
142 Double_t CalculateMVAError();
148 void SetXminXmax(TMVA::PDEFoam*);
151 PDEFoam* InitFoam(TString, EFoamType, UInt_t cls=0);
154 PDEFoamKernelBase* CreatePDEFoamKernel();
160 void FillVariableNamesToFoam()
const;
165 void DeclareOptions();
166 void DeclareCompatibilityOptions();
167 void ProcessOptions();
170 void PrintCoefficients(
void );
173 template<
typename T> T Sqr(T x)
const {
return x*x; }
176 Bool_t fSigBgSeparated;
178 Float_t fDiscrErrCut;
187 Bool_t fMultiTargetRegression;
194 PDEFoamKernelBase *fKernelEstimator;
195 TString fTargetSelectionStr;
196 ETargetSelection fTargetSelection;
197 Bool_t fFillFoamWithOrigWeights;
198 Bool_t fUseYesNoCell;
200 EDTSeparation fDTSeparation;
203 std::vector<Float_t> fXmin, fXmax;
205 std::vector<PDEFoam*> fFoam;
210 ClassDef(MethodPDEFoam,0);
215 #endif // MethodPDEFoam_H