26 #ifndef ROOT_TMVA_MethodRuleFit
27 #define ROOT_TMVA_MethodRuleFit
47 class MethodRuleFit :
public MethodBase {
51 MethodRuleFit(
const TString& jobName,
52 const TString& methodTitle,
54 const TString& theOption =
"");
56 MethodRuleFit( DataSetInfo& theData,
57 const TString& theWeightFile);
59 virtual ~MethodRuleFit(
void );
61 virtual Bool_t HasAnalysisType( Types::EAnalysisType type, UInt_t numberClasses, UInt_t );
66 using MethodBase::ReadWeightsFromStream;
69 void AddWeightsXMLTo (
void* parent )
const;
72 void ReadWeightsFromStream( std::istream& istr );
73 void ReadWeightsFromXML (
void* wghtnode );
76 Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
79 void WriteMonitoringHistosToFile(
void )
const;
82 const Ranking* CreateRanking();
84 Bool_t UseBoost()
const {
return fUseBoost; }
87 RuleFit* GetRuleFitPtr() {
return &fRuleFit; }
88 const RuleFit* GetRuleFitConstPtr()
const {
return &fRuleFit; }
89 TDirectory* GetMethodBaseDir()
const {
return BaseDir(); }
90 const std::vector<TMVA::Event*>& GetTrainingEvents()
const {
return fEventSample; }
91 const std::vector<TMVA::DecisionTree*>& GetForest()
const {
return fForest; }
92 Int_t GetNTrees()
const {
return fNTrees; }
93 Double_t GetTreeEveFrac()
const {
return fTreeEveFrac; }
94 const SeparationBase* GetSeparationBaseConst()
const {
return fSepType; }
95 SeparationBase* GetSeparationBase()
const {
return fSepType; }
96 TMVA::DecisionTree::EPruneMethod GetPruneMethod()
const {
return fPruneMethod; }
97 Double_t GetPruneStrength()
const {
return fPruneStrength; }
98 Double_t GetMinFracNEve()
const {
return fMinFracNEve; }
99 Double_t GetMaxFracNEve()
const {
return fMaxFracNEve; }
100 Int_t GetNCuts()
const {
return fNCuts; }
102 Int_t GetGDNPathSteps()
const {
return fGDNPathSteps; }
103 Double_t GetGDPathStep()
const {
return fGDPathStep; }
104 Double_t GetGDErrScale()
const {
return fGDErrScale; }
105 Double_t GetGDPathEveFrac()
const {
return fGDPathEveFrac; }
106 Double_t GetGDValidEveFrac()
const {
return fGDValidEveFrac; }
108 Double_t GetLinQuantile()
const {
return fLinQuantile; }
110 const TString GetRFWorkDir()
const {
return fRFWorkDir; }
111 Int_t GetRFNrules()
const {
return fRFNrules; }
112 Int_t GetRFNendnodes()
const {
return fRFNendnodes; }
117 void MakeClassSpecific( std::ostream&,
const TString& )
const;
119 void MakeClassRuleCuts( std::ostream& )
const;
121 void MakeClassLinear( std::ostream& )
const;
124 void GetHelpMessage()
const;
130 void InitEventSample(
void );
133 void InitMonitorNtuple();
135 void TrainTMVARuleFit();
136 void TrainJFRuleFit();
142 inline Bool_t VerifyRange( MsgLogger& mlog,
const char *varstr, T& var,
const T& vmin,
const T& vmax );
145 inline Bool_t VerifyRange( MsgLogger& mlog,
const char *varstr, T& var,
const T& vmin,
const T& vmax,
const T& vdef );
148 inline Int_t VerifyRange(
const T& var,
const T& vmin,
const T& vmax );
151 void DeclareOptions();
152 void ProcessOptions();
155 std::vector<TMVA::Event *> fEventSample;
156 Double_t fSignalFraction;
159 TTree *fMonitorNtuple;
160 Double_t fNTImportance;
161 Double_t fNTCoefficient;
174 TString fRuleFitModuleS;
175 Bool_t fUseRuleFitJF;
179 std::vector<DecisionTree *> fForest;
181 Double_t fTreeEveFrac;
182 SeparationBase *fSepType;
183 Double_t fMinFracNEve;
184 Double_t fMaxFracNEve;
187 TString fPruneMethodS;
188 TMVA::DecisionTree::EPruneMethod fPruneMethod;
189 Double_t fPruneStrength;
190 TString fForestTypeS;
193 Double_t fGDPathEveFrac;
194 Double_t fGDValidEveFrac;
200 Double_t fGDPathStep;
202 Double_t fGDErrScale;
206 Double_t fRuleMinDist;
207 Double_t fLinQuantile;
209 ClassDef(MethodRuleFit,0);
217 inline Int_t TMVA::MethodRuleFit::VerifyRange(
const T& var,
const T& vmin,
const T& vmax )
220 if (var>vmax)
return 1;
221 if (var<vmin)
return -1;
227 inline Bool_t TMVA::MethodRuleFit::VerifyRange( TMVA::MsgLogger& mlog,
const char *varstr, T& var,
const T& vmin,
const T& vmax )
231 Int_t dir = TMVA::MethodRuleFit::VerifyRange(var,vmin,vmax);
242 mlog << kWARNING <<
"Option <" << varstr <<
"> " << (dir==1 ?
"above":
"below") <<
" allowed range. Reset to new value = " << var << Endl;
249 inline Bool_t TMVA::MethodRuleFit::VerifyRange( TMVA::MsgLogger& mlog,
const char *varstr, T& var,
const T& vmin,
const T& vmax,
const T& vdef )
253 Int_t dir = TMVA::MethodRuleFit::VerifyRange(var,vmin,vmax);
260 mlog << kWARNING <<
"Option <" << varstr <<
"> " << (dir==1 ?
"above":
"below") <<
" allowed range. Reset to default value = " << var << Endl;
266 #endif // MethodRuleFit_H