Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
correlations.cxx
Go to the documentation of this file.
1 #include "TMVA/correlations.h"
2 #include "TMVA/Config.h"
3 
4 
5 #include "TH1.h"
6 #include "TH2.h"
7 #include "TPaletteAxis.h"
8 
9 // this macro plots the correlation matrix of the various input
10 // variables used in TMVA (e.g. running TMVAnalysis.C). Signal and
11 // Background are plotted separately
12 
13 // input: - Input file (result from TMVA),
14 // - use of colors or grey scale
15 // - use of TMVA plotting TStyle
16 void TMVA::correlations(TString dataset, TString fin , Bool_t isRegression ,
17  Bool_t /* greyScale */ , Bool_t useTMVAStyle )
18 {
19 
20  // set style and remove existing canvas'
21  TMVAGlob::Initialize( useTMVAStyle );
22 
23  // checks if file with name "fin" is already open, and if not opens one
24  TFile* file = TMVAGlob::OpenFile( fin );
25 
26  // signal and background or regression problem
27  Int_t ncls = (isRegression ? 1 : 2 );
28  TString hName[2] = { "CorrelationMatrixS", "CorrelationMatrixB" };
29  if (isRegression) hName[0]= "CorrelationMatrix";
30  const Int_t width = 600;
31  for (Int_t ic=0; ic<ncls; ic++) {
32 
33  TH2* h2 = dynamic_cast<TH2*> (file->GetDirectory(dataset.Data())->Get( hName[ic] ));
34  if(!h2) {
35  cout << "Did not find histogram " << hName[ic] << " in " << fin << endl;
36  continue;
37  }
38 
39  TCanvas* c = new TCanvas( hName[ic],
40  Form("Correlations between MVA input variables (%s)",
41  (isRegression ? "" : (ic==0 ? "signal" : "background"))),
42  ic*(width+5)+200, 0, width, width );
43  Float_t newMargin1 = 0.13;
44  Float_t newMargin2 = 0.15;
45  if (gConfig().fVariablePlotting.fUsePaperStyle) newMargin2 = 0.13;
46 
47  c->SetGrid();
48  c->SetTicks();
49  c->SetLeftMargin ( newMargin2 );
50  c->SetBottomMargin( newMargin2 );
51  c->SetRightMargin ( newMargin1 );
52  c->SetTopMargin ( newMargin1 );
53  gStyle->SetPalette( 1, 0 );
54 
55 
56  gStyle->SetPaintTextFormat( "3g" );
57 
58  h2->SetMarkerSize( 1.5 );
59  h2->SetMarkerColor( 0 );
60  Float_t labelSize = 0.040;
61  h2->GetXaxis()->SetLabelSize( labelSize );
62  h2->GetYaxis()->SetLabelSize( labelSize );
63  h2->LabelsOption( "d" );
64  h2->SetLabelOffset( 0.011 );// label offset on x axis
65 
66  h2->Draw("colz"); // color pads
67  c->Update();
68 
69  // modify properties of paletteAxis
70  TPaletteAxis* paletteAxis = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject( "palette" );
71  paletteAxis->SetLabelSize( 0.03 );
72  paletteAxis->SetX1NDC( paletteAxis->GetX1NDC() + 0.02 );
73 
74  h2->Draw("textsame"); // add text
75 
76  // add comment
77  TText* t = new TText( 0.53, 0.88, "Linear correlation coefficients in %" );
78  t->SetNDC();
79  t->SetTextSize( 0.026 );
80  t->AppendPad();
81 
82  // TMVAGlob::plot_logo( );
83  c->Update();
84 
85  TString fname = dataset+"/plots/";
86  fname += hName[ic];
87  TMVAGlob::imgconv( c, fname );
88  }
89 }