13 void TMVA::correlationscattersMultiClass(TString dataset, TString fin , TString var,
14 TString dirName_ , TString ,
19 TMVAGlob::Initialize( useTMVAStyle );
21 TString extension = dirName_;
22 extension.ReplaceAll(
"InputVariables",
"" );
23 extension.ReplaceAll(
" ",
"" );
24 if (extension ==
"") extension =
"_Id";
26 var.ReplaceAll( extension,
"" );
27 cout <<
"Called macro \"correlationscattersMultiClass\" for variable: \"" << var
28 <<
"\", transformation type \"" << dirName_
29 <<
"\" (extension: \"" << extension <<
"\")" << endl;
32 TFile* file = TMVAGlob::OpenFile( fin );
34 TString dirName = dirName_ +
"/CorrelationPlots";
37 TDirectory* vardir = (TDirectory*)file->GetDirectory(dataset.Data())->Get(
"InputVariables_Id" );
39 cout <<
"ERROR: no such directory: \"InputVariables\"" << endl;
42 Int_t noVars = TMVAGlob::GetNumberOfInputVariablesMultiClass( vardir );
44 TDirectory* dir = (TDirectory*)file->GetDirectory(dataset.Data())->Get( dirName );
46 cout <<
"No information about " << extension <<
" available in " << fin << endl;
51 TListIter keyIt(dir->GetListOfKeys());
52 Int_t noPlots = noVars - 1;
54 cout <<
"noPlots: " << noPlots <<
" --> noVars: " << noVars << endl;
55 if (noVars != Int_t(noVars)) {
56 cout <<
"*** Warning: problem in inferred number of variables ... not an integer *** " << endl;
67 xPad = 1; yPad = 1; width = 400; height = width;
break;
69 xPad = 2; yPad = 1; width = 700; height = 0.55*width;
break;
71 xPad = 3; yPad = 1; width = 800; height = 0.4*width;
break;
73 xPad = 2; yPad = 2; width = 600; height = width;
break;
75 xPad = 3; yPad = 2; width = 800; height = 0.55*width;
break;
77 Int_t noPadPerCanv = xPad * yPad ;
80 Int_t countCanvas = 0;
84 std::vector<TString> classnames = TMVAGlob::GetClassNames(dir);
85 UInt_t ncls = classnames.end()-classnames.begin();
87 for (UInt_t itype = 0; itype < ncls; itype++) {
89 TIter next(gDirectory->GetListOfKeys());
95 while ( (key = (TKey*)next()) ) {
97 if (key->GetCycle() != 1)
continue;
100 TClass *cl = gROOT->GetClass(key->GetClassName());
101 if (!cl->InheritsFrom(
"TH1"))
continue;
102 TH1 *scat = (TH1*)key->ReadObj();
103 TString hname = scat->GetName();
107 if (! (hname.EndsWith( classnames[itype] + extension ) &&
108 hname.Contains( TString(
"_") + var +
"_" ) && hname.BeginsWith(
"scat_")) ) {
116 if (countPad%noPadPerCanv==0) {
118 TString ext = extension; ext.Remove( 0, 1 );
119 canv =
new TCanvas( Form(
"canvas%d", countCanvas),
120 Form(
"Correlation profiles for '%s'-transformed variables (%s)",
121 ext.Data(), classnames[itype].Data()),
122 countCanvas*50+200, countCanvas*20, width, height );
123 canv->Divide(xPad,yPad);
128 canv->cd(countPad++%noPadPerCanv+1);
131 TString bgname = hname;
132 bgname.ReplaceAll(
"scat_",
"prof_");
133 TH1 *prof = (TH1*)gDirectory->Get(bgname);
135 cout <<
"ERROR!!! couldn't find profile plot for" << hname << endl;
140 TMVAGlob::SetSignalAndBackgroundStyle( scat, prof );
143 TMVAGlob::SetFrameStyle( scat, 1.2 );
146 scat->Scale( 1.0/scat->GetSumOfWeights() );
151 scat->SetMarkerColor( 4);
153 prof->SetMarkerColor( gConfig().fVariablePlotting.fUsePaperStyle ? 1 : 2 );
154 prof->SetMarkerSize( 0.2 );
155 prof->SetLineColor( gConfig().fVariablePlotting.fUsePaperStyle ? 1 : 2 );
156 prof->SetLineWidth( gConfig().fVariablePlotting.fUsePaperStyle ? 2 : 1 );
157 prof->SetFillStyle( 3002 );
158 prof->SetFillColor( 46 );
159 prof->Draw(
"samee1");
161 scat->Draw(
"sameaxis");
164 if (countPad%noPadPerCanv==0) {
167 TString fname = dataset+Form(
"/plots/correlationscatter_%s_%s_c%i",var.Data(), extension.Data(), countCanvas );
168 TMVAGlob::plot_logo();
169 TMVAGlob::imgconv( canv, fname );
172 if (countPad%noPadPerCanv!=0) {
175 TString fname = dataset+Form(
"/plots/correlationscatter_%s_%s_c%i",var.Data(), extension.Data(), countCanvas );
176 TMVAGlob::plot_logo();
177 TMVAGlob::imgconv( canv, fname );