ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/benhoob/HWW/deviations.C
Revision: 1.1
Committed: Mon Feb 14 12:39:14 2011 UTC (14 years, 3 months ago) by benhoob
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Log Message:
Initial commit

File Contents

# User Rev Content
1 benhoob 1.1
2     #include "TLegend.h"
3     #include "TText.h"
4     #include "TH2.h"
5    
6     #include "tmvaglob.C"
7    
8     // this macro plots the resulting MVA distributions (Signal and
9     // Background overlayed) of different MVA methods run in TMVA
10     // (e.g. running TMVAnalysis.C).
11    
12     enum HistType { MVAType = 0, ProbaType = 1, RarityType = 2, CompareType = 3 };
13    
14     // input: - Input file (result from TMVA)
15     // - use of TMVA plotting TStyle
16     void deviations( TString fin = "TMVAReg.root",
17     HistType htype = MVAType, Bool_t showTarget, Bool_t useTMVAStyle = kTRUE )
18     {
19     // set style and remove existing canvas'
20     TMVAGlob::Initialize( useTMVAStyle );
21     gStyle->SetNumberContours(999);
22    
23     // switches
24     const Bool_t Save_Images = kTRUE;
25    
26     // checks if file with name "fin" is already open, and if not opens one
27     TFile* file = TMVAGlob::OpenFile( fin );
28    
29     // define Canvas layout here!
30     Int_t xPad = 1; // no of plots in x
31     Int_t yPad = 1; // no of plots in y
32     Int_t noPad = xPad * yPad ;
33     const Int_t width = 650; // size of canvas
34    
35     // this defines how many canvases we need
36     TCanvas* c[100];
37    
38     // counter variables
39     Int_t countCanvas = 0;
40    
41     // search for the right histograms in full list of keys
42     // TList* methods = new TMap();
43    
44     TIter next(file->GetListOfKeys());
45     TKey *key(0);
46     while ((key = (TKey*)next())) {
47    
48     if (!TString(key->GetName()).BeginsWith("Method_")) continue;
49     if (!gROOT->GetClass(key->GetClassName())->InheritsFrom("TDirectory")) continue;
50    
51     TString methodName;
52     TMVAGlob::GetMethodName(methodName,key);
53     cout << "--- Plotting deviation for method: " << methodName << endl;
54    
55     TObjString *mN = new TObjString( methodName );
56     TDirectory* mDir = (TDirectory*)key->ReadObj();
57    
58     TList* jobNames = new TList();
59    
60     TIter keyIt(mDir->GetListOfKeys());
61     TKey *titkey;
62     while ((titkey = (TKey*)keyIt())) {
63    
64     if (!gROOT->GetClass(titkey->GetClassName())->InheritsFrom("TDirectory")) continue;
65    
66     TDirectory *titDir = (TDirectory *)titkey->ReadObj();
67    
68     TObjString *jN = new TObjString( titDir->GetName() );
69     if (!jobNames->Contains( jN )) jobNames->Add( jN );
70     else delete jN;
71    
72     TString methodTitle;
73     TMVAGlob::GetMethodTitle(methodTitle,titDir);
74    
75     TString hname = "MVA_" + methodTitle;
76     TIter dirKeyIt( titDir->GetListOfKeys() );
77     TKey* dirKey;
78    
79     Int_t countPlots = 0;
80     while ((dirKey = (TKey*)dirKeyIt())){
81     if (dirKey->ReadObj()->InheritsFrom("TH2F")) {
82     TString s(dirKey->ReadObj()->GetName());
83     if (s.Contains("_reg_") &&
84     ( (showTarget && s.Contains("_tgt")) || (!showTarget && !s.Contains("_tgt")) ) &&
85     s.Contains( (htype == CompareType ? "train" : "test" ))) {
86     c[countCanvas] = new TCanvas( Form("canvas%d", countCanvas+1),
87     Form( "Regression output deviation versus %s for method: %s",
88     (showTarget ? "target" : "input variables"), methodName.Data() ),
89     countCanvas*50+100, (countCanvas+1)*20, width, (Int_t)width*0.72 );
90     c[countCanvas]->SetRightMargin(0.10); // leave space for border
91     TH1* h = (TH1*)dirKey->ReadObj();
92     h->SetTitle( Form("Output deviation for method: %s (%s sample)",
93     hname.Data(), (htype == CompareType ? "training" : "test" )) );
94     // methodName.Data(), (htype == CompareType ? "training" : "test" )) );
95     h->Draw("colz");
96     TLine* l = new TLine( h->GetXaxis()->GetXmin(), 0, h->GetXaxis()->GetXmax(), 0 );
97     l->SetLineStyle(2);
98     l->Draw();
99    
100     // update and print
101     cout << "plotting logo" << endl;
102     TMVAGlob::plot_logo(1.058);
103     c[countCanvas]->Update();
104    
105     TString fname = Form( "plots/deviation_%s_%s_%s_c%i",
106     methodName.Data(),
107     (showTarget ? "target" : "vars"),
108     (htype == CompareType ? "training" : "test" ), countPlots );
109     TMVAGlob::imgconv( c[countCanvas], fname );
110    
111     countPlots++;
112     countCanvas++;
113     }
114     }
115     }
116     }
117     }
118     }
119    
120    
121    
122