12 void TMVA::BDTControlPlots(TString dataset, TString fin , Bool_t useTMVAStyle )
15 TMVAGlob::Initialize( useTMVAStyle );
18 TFile* file = TMVAGlob::OpenFile( fin );
21 cout <<
"Problems with input file, tried to open " << fin <<
" but somehow did not succeed .." << endl;
27 TString methodName =
"Method_BDT";
28 UInt_t ninst = TMVAGlob::GetListOfTitles(methodName,titles,file->GetDirectory(dataset.Data()));
30 cout <<
"Could not locate directory 'Method_BDT' in file " << fin << endl;
34 TIter keyIter(&titles);
37 while ((key = TMVAGlob::NextKey(keyIter,
"TDirectory"))) {
38 bdtdir = (TDirectory *)key->ReadObj();
39 bdtcontrolplots(dataset, bdtdir );
43 void TMVA::bdtcontrolplots(TString dataset, TDirectory *bdtdir ) {
45 const Int_t nPlots = 6;
49 char cn[100], cn2[100];
50 const TString titName = bdtdir->GetName();
51 sprintf( cn,
"cv_%s", titName.Data() );
52 TCanvas *c =
new TCanvas( cn, Form(
"%s Control Plots", titName.Data() ),
59 TString hname[nPlots]={
"BoostMonitor",
"BoostWeight",
"BoostWeightVsTree",
"ErrFractHist",
"NodesBeforePruning",titName+
"_FOMvsIterFrame"};
61 Bool_t BoostMonitorIsDone=kFALSE;
63 for (Int_t i=0; i<nPlots; i++){
66 TH1 *h = (TH1*) bdtdir->Get(hname[i]);
69 h->SetMaximum(h->GetMaximum()*1.3);
71 h->SetMarkerColor(color);
72 h->SetMarkerSize( 0.7 );
73 h->SetMarkerStyle( 24 );
75 h->SetLineColor(color);
76 if(hname[i]==
"NodesBeforePruning")h->SetTitle(
"Nodes before/after pruning");
78 if(hname[i]==
"NodesBeforePruning"){
79 TH1 *h2 = (TH1*) bdtdir->Get(
"NodesAfterPruning");
84 if(hname[i]==
"BoostMonitor"){
85 TGraph *g = (TGraph*) bdtdir->Get(
"BoostMonitorGraph");
87 BoostMonitorIsDone = kTRUE;
89 if(hname[i]==titName+
"_FOMvsIterFrame"){
90 TGraph *g = (TGraph*) bdtdir->Get(titName+
"_FOMvsIter");
99 if (BoostMonitorIsDone){
100 sprintf( cn2,
"cv2_%s", titName.Data() );
101 c2 =
new TCanvas( cn2, Form(
"%s BoostWeights", titName.Data() ),
106 TIter keys( bdtdir->GetListOfKeys() );
109 while ( (key = (TKey*)keys.Next()) && ipad < 26) {
110 TObject *obj=key->ReadObj();
111 if (obj->IsA()->InheritsFrom(TH1::Class())){
112 TH1F *hx = (TH1F*)obj;
113 TString hhname_(Form(
"%s",obj->GetTitle()));
114 if (hhname_.Contains(
"BoostWeightsInTreeB")){
118 hhname_.ReplaceAll(
"TreeB",
"TreeS");
119 bdtdir->GetObject(hhname_.Data(),hx);
132 TString fname = dataset+Form(
"/plots/%s_ControlPlots", titName.Data() );
133 TMVAGlob::imgconv( c, fname );
136 fname = dataset+Form(
"/plots/%s_ControlPlots2", titName.Data() );
137 TMVAGlob::imgconv( c2, fname );
141 if (BoostMonitorIsDone){
142 sprintf( cn2,
"cv3_%s", titName.Data() );
143 c3 =
new TCanvas( cn2, Form(
"%s Variables", titName.Data() ),
148 TIter keys( bdtdir->GetListOfKeys() );
151 while ( (key = (TKey*)keys.Next()) && ipad < 26) {
152 TObject *obj=key->ReadObj();
153 if (obj->IsA()->InheritsFrom(TH1::Class())){
154 TH1F *hx = (TH1F*)obj;
155 TString hname_(Form(
"%s",obj->GetTitle()));
156 if (hname_.Contains(
"SigVar0AtTree")){
160 hname_.ReplaceAll(
"Sig",
"Bkg");
161 bdtdir->GetObject(hname_.Data(),hx);