1 |
///////////
|
2 |
//New Gui for easier plotting of scatter corelations
|
3 |
// L. Ancu 04/04/07
|
4 |
////////////
|
5 |
#include <iostream>
|
6 |
|
7 |
#include "TControlBar.h"
|
8 |
#include "tmvaglob.C"
|
9 |
|
10 |
static TControlBar* CorrGui_Global__cbar = 0;
|
11 |
|
12 |
void CorrGui( TString fin = "TMVA.root", TString dirName = "InputVariables_Id", TString title = "TMVA Input Variable",
|
13 |
Bool_t isRegression = kFALSE )
|
14 |
{
|
15 |
// Use this script in order to run the various individual macros
|
16 |
// that plot the output of TMVA (e.g. running TMVAnalysis.C),
|
17 |
// stored in the file "TMVA.root"
|
18 |
// for further documentation, look in the individual macros
|
19 |
|
20 |
cout << "--- Open CorrGui for input file: " << fin << " and type: " << dirName << endl;
|
21 |
|
22 |
// destroy all open cavases
|
23 |
TMVAGlob::DestroyCanvases();
|
24 |
|
25 |
TString extension = dirName;
|
26 |
extension.ReplaceAll( "InputVariables", "" );
|
27 |
|
28 |
// create the control bar
|
29 |
TControlBar* cbar = new TControlBar( "vertical", title, 50, 50 );
|
30 |
CorrGui_Global__cbar = cbar;
|
31 |
|
32 |
const char* buttonType = "button";
|
33 |
const char* scriptpath = "./";
|
34 |
|
35 |
// configure buttons
|
36 |
// checks if file with name "fin" is already open, and if not opens one
|
37 |
TFile* file = TMVAGlob::OpenFile( fin );
|
38 |
|
39 |
TDirectory* dir = (TDirectory*)gDirectory->Get( dirName );
|
40 |
if (!dir) {
|
41 |
cout << "Could not locate directory '" << dirName << "' in file: " << fin << endl;
|
42 |
return;
|
43 |
}
|
44 |
dir->cd();
|
45 |
|
46 |
// how many variables are in the directory?
|
47 |
Int_t noVar = TMVAGlob::GetNumberOfInputVariables(dir);
|
48 |
cout << "found number of variables='" << noVar<< endl;
|
49 |
TString Var[noVar];
|
50 |
|
51 |
TIter next(dir->GetListOfKeys());
|
52 |
Int_t it=0;
|
53 |
|
54 |
TKey *key;
|
55 |
while ((key = (TKey*)next())) {
|
56 |
|
57 |
// make sure, that we only look at histograms
|
58 |
TClass *cl = gROOT->GetClass(key->GetClassName());
|
59 |
if (cl->InheritsFrom("TH1")) {
|
60 |
TH1 *sig = (TH1*)key->ReadObj();
|
61 |
TString hname = sig->GetName();
|
62 |
// check for all signal histograms
|
63 |
if (hname.Contains("__Signal") || (hname.Contains("__Regression") && !hname.Contains("__Regression_target"))) { // found a new signal plot
|
64 |
hname.ReplaceAll(extension,"");
|
65 |
hname.ReplaceAll("__Signal","");
|
66 |
hname.ReplaceAll("__Regression","");
|
67 |
Var[it] = hname;
|
68 |
++it;
|
69 |
}
|
70 |
}
|
71 |
}
|
72 |
cout << "found histos for "<< it <<" variables='" << endl;
|
73 |
|
74 |
for (Int_t ic=0;ic<it;ic++) {
|
75 |
cbar->AddButton( (Var[ic].Contains("_target") ?
|
76 |
Form( " Target: %s ", Var[ic].ReplaceAll("_target","").Data()) :
|
77 |
Form( " Variable: %s ", Var[ic].Data())),
|
78 |
Form( ".x %s/correlationscatters.C\(\"%s\",\"%s\",\"%s\",\"%s\",%i)",
|
79 |
scriptpath, fin.Data(), Var[ic].Data(), dirName.Data(), title.Data(), (Int_t)isRegression ),
|
80 |
buttonType );
|
81 |
}
|
82 |
|
83 |
// *** problems with this button below ROOT 5.19 ***
|
84 |
#if ROOT_VERSION_CODE < ROOT_VERSION(5,19,0)
|
85 |
cbar->AddButton( "Close", "CorrGui_DeleteTBar()", "Close this control bar", "button" );
|
86 |
#endif
|
87 |
// **********************************************
|
88 |
|
89 |
// set the style
|
90 |
cbar->SetTextColor("blue");
|
91 |
|
92 |
// there seems to be a bug in ROOT: font jumps back to default after pressing on >2 different buttons
|
93 |
// cbar->SetFont("-adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1");
|
94 |
|
95 |
// draw
|
96 |
cbar->Show();
|
97 |
|
98 |
gROOT->SaveContext();
|
99 |
|
100 |
}
|
101 |
|
102 |
void CorrGui_DeleteTBar()
|
103 |
{
|
104 |
TMVAGlob::DestroyCanvases();
|
105 |
|
106 |
delete CorrGui_Global__cbar;
|
107 |
CorrGui_Global__cbar = 0;
|
108 |
}
|
109 |
|