19 TMVAGlob::Initialize( useTMVAStyle );
34 Int_t countCanvas = 0;
37 TIter next(
file->GetDirectory(dataset.
Data())->GetListOfKeys());
39 while ((key = (
TKey*)next())) {
42 if (!
gROOT->GetClass(key->GetClassName())->InheritsFrom(
"TDirectory"))
continue;
45 TMVAGlob::GetMethodName(methodName,key);
51 while ((titkey = (
TKey*)keyIt())) {
53 if (!
gROOT->GetClass(titkey->
GetClassName())->InheritsFrom(
"TDirectory"))
continue;
57 TMVAGlob::GetMethodTitle(methodTitle,titDir);
59 std::cout <<
"--- Found directory for method: " << methodName <<
"::" << methodTitle << std::flush;
60 TString hname =
"MVA_" + methodTitle;
61 if (htype == kProbaType ) hname +=
"_Proba";
62 else if (htype == kRarityType ) hname +=
"_Rarity";
63 TH1* sig =
dynamic_cast<TH1*
>(titDir->
Get( hname +
"_S" ));
64 TH1* bgd =
dynamic_cast<TH1*
>(titDir->
Get( hname +
"_B" ));
66 if (sig==0 || bgd==0) {
67 if (htype == kMVAType)
68 cout <<
":\t mva distribution not available (this is normal for Cut classifier)" << endl;
69 else if(htype == kProbaType)
70 cout <<
":\t probability distribution not available" << endl;
71 else if(htype == kRarityType)
72 cout <<
":\t rarity distribution not available" << endl;
73 else if(htype == kCompareType)
74 cout <<
":\t overtraining check not available" << endl;
79 cout <<
" containing " << hname <<
"_S/_B" << endl;
81 sig->
SetTitle(
Form(
"TMVA response for classifier: %s", methodTitle.
Data()) );
82 if (htype == kProbaType)
83 sig->
SetTitle(
Form(
"TMVA probability for classifier: %s", methodTitle.
Data()) );
84 else if (htype == kRarityType)
86 else if (htype == kCompareType)
87 sig->
SetTitle(
Form(
"TMVA overtraining check for classifier: %s", methodTitle.
Data()) );
90 TString ctitle = ((htype == kMVAType) ?
91 Form(
"TMVA response %s",methodTitle.
Data()) :
92 (htype == kProbaType) ?
93 Form(
"TMVA probability %s",methodTitle.Data()) :
94 (htype == kCompareType) ?
95 Form(
"TMVA comparison %s",methodTitle.Data()) :
96 Form(
"TMVA Rarity %s",methodTitle.Data()));
98 c =
new TCanvas(
Form(
"canvas%d", countCanvas+1), ctitle,
102 TMVAGlob::SetSignalAndBackgroundStyle( sig, bgd );
105 TMVAGlob::NormalizeHists( sig, bgd );
109 cout <<
"--- Mean and RMS (S): " << sig->
GetMean() <<
", " << sig->
GetRMS() << endl;
110 cout <<
"--- Mean and RMS (B): " << bgd->
GetMean() <<
", " << bgd->
GetRMS() << endl;
118 Float_t maxMult = (htype == kCompareType) ? 1.3 : 1.2;
128 frame->
GetXaxis()->
SetTitle( methodTitle + ((htype == kMVAType || htype == kCompareType) ?
" response" :
"") );
129 if (htype == kProbaType ) frame->
GetXaxis()->
SetTitle(
"Signal probability" );
130 else if (htype == kRarityType ) frame->
GetXaxis()->
SetTitle(
"Signal rarity" );
132 TMVAGlob::SetFrameStyle( frame );
137 c->GetPad(0)->SetLeftMargin( 0.105 );
141 TLegend *legend=
new TLegend(
c->GetLeftMargin(), 1 -
c->GetTopMargin() - 0.12,
142 c->GetLeftMargin() + (htype == kCompareType ? 0.40 : 0.3), 1 -
c->GetTopMargin() );
144 legend->
AddEntry(sig,
TString(
"Signal") + ((htype == kCompareType) ?
" (test sample)" :
""),
"F");
145 legend->
AddEntry(bgd,
TString(
"Background") + ((htype == kCompareType) ?
" (test sample)" :
""),
"F");
147 legend->
SetMargin( (htype == kCompareType ? 0.2 : 0.3) );
148 legend->
Draw(
"same");
151 sig->
Draw(
"samehist");
152 bgd->
Draw(
"samehist");
154 if (htype == kCompareType) {
159 TString ovname = hname +=
"_Train";
160 sigOv =
dynamic_cast<TH1*
>(titDir->
Get( ovname +
"_S" ));
161 bgdOv =
dynamic_cast<TH1*
>(titDir->
Get( ovname +
"_B" ));
163 if (sigOv == 0 || bgdOv == 0) {
164 cout <<
"+++ Problem in \"mvas.C\": overtraining check histograms do not exist" << endl;
167 cout <<
"--- Found comparison histograms for overtraining check" << endl;
169 TLegend *legend2=
new TLegend( 1 -
c->GetRightMargin() - 0.42, 1 -
c->GetTopMargin() - 0.12,
170 1 -
c->GetRightMargin(), 1 -
c->GetTopMargin() );
173 legend2->
AddEntry(sigOv,
"Signal (training sample)",
"P");
174 legend2->
AddEntry(bgdOv,
"Background (training sample)",
"P");
176 legend2->
Draw(
"same");
179 TMVAGlob::NormalizeHists( sigOv, bgdOv );
187 sigOv->
Draw(
"e1same");
195 bgdOv->
Draw(
"e1same");
205 cout <<
"--- Perform Kolmogorov-Smirnov tests" << endl;
208 cout <<
"--- Goodness of signal (background) consistency: " << kolS <<
" (" << kolB <<
")" << endl;
210 TString probatext =
Form(
"Kolmogorov-Smirnov test: signal (background) probability = %5.3g (%5.3g)", kolS, kolB );
212 tt->SetNDC();
tt->SetTextSize( 0.032 );
tt->AppendPad();
216 frame->
Draw(
"sameaxis");
222 TString uoflow =
Form(
"U/O-flow (S,B): (%.1f, %.1f)%% / (%.1f, %.1f)%%",
236 TMVAGlob::plot_logo(1.058);
238 if (htype == kMVAType) TMVAGlob::imgconv(
c,
Form(
"%s/plots/mva_%s",dataset.
Data(), methodTitle.
Data()) );
239 else if (htype == kProbaType) TMVAGlob::imgconv(
c,
Form(
"%s/plots/proba_%s",dataset.
Data(), methodTitle.
Data()) );
240 else if (htype == kCompareType) TMVAGlob::imgconv(
c,
Form(
"%s/plots/overtrain_%s",dataset.
Data(), methodTitle.
Data()) );
241 else TMVAGlob::imgconv(
c,
Form(
"%s/plots/rarity_%s",dataset.
Data(), methodTitle.
Data()) );
include TDocParser_001 C image html pict1_TDocParser_001 png width
char * Form(const char *fmt,...)
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
virtual void SetLimits(Double_t xmin, Double_t xmax)
Describe directory structure in memory.
virtual TObject * Get(const char *namecycle)
Return pointer to object identified by namecycle.
virtual TList * GetListOfKeys() const
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
TH1 is the base class of all histogram classes in ROOT.
virtual void SetTitle(const char *title)
See GetStatOverflows for more information.
virtual Double_t GetMean(Int_t axis=1) const
For axis = 1,2 or 3 returns the mean value of the histogram along X,Y or Z axis.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
Return maximum value smaller than maxval of bins in the range, unless the value has been overridden b...
virtual Int_t GetNbinsX() const
Double_t GetRMS(Int_t axis=1) const
virtual void Draw(Option_t *option="")
Draw this histogram with options.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
virtual Double_t KolmogorovTest(const TH1 *h2, Option_t *option="") const
Statistical test of compatibility in shape between this histogram and h2, using Kolmogorov test.
2-D histogram with a float per channel (see TH1 documentation)}
Book space in a file, create I/O buffers, to fill them, (un)compress them.
virtual const char * GetClassName() const
virtual TObject * ReadObj()
To read a TObject* from the file.
This class displays a legend box (TPaveText) containing several legend entries.
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
virtual void Draw(Option_t *option="")
Draw this legend with its current attributes.
void SetMargin(Float_t margin)
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
Mother of all ROOT objects.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
virtual void SetBorderSize(Int_t bordersize=4)
const char * Data() const
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Base class for several text objects.
virtual void SetNDC(Bool_t isNDC=kTRUE)
Set NDC mode on if isNDC = kTRUE, off otherwise.
void mvas(TString dataset, TString fin="TMVA.root", HistType htype=kMVAType, Bool_t useTMVAStyle=kTRUE)
Short_t Max(Short_t a, Short_t b)
Short_t Min(Short_t a, Short_t b)