ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitHzz4l/Angles/src/BdtInfo.cc
Revision: 1.1
Committed: Thu Feb 7 08:58:29 2013 UTC (12 years, 3 months ago) by dkralph
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 dkralph 1.1 #include "BdtInfo.h"
2     //----------------------------------------------------------------------------------------
3     BdtInfo::BdtInfo(TString varStr, TString weightFile, filestuff *fs, bool translatePar)
4     {
5     translate = translatePar;
6     // variables
7     varStr.ReplaceAll(":"," ");
8     stringstream ss(varStr.Data());
9     while(!ss.eof()) {
10     TString var;
11     ss >> var;
12     vars.push_back(var);
13     setVar(var,fs);
14     cout << "VAR: " << var << endl;
15     reader.AddVariable(translate ? trans(var) : var, vals[var]);
16     }
17     // spectators
18     TString specStr("m4l");
19     if(!translate) specStr += " run lumi evt";
20     stringstream ssSpec(specStr.Data());
21     while(!ssSpec.eof()) {
22     TString spec;
23     ssSpec >> spec;
24     specs.push_back(spec);
25     setSpec(spec,fs);
26     reader.AddSpectator(spec, vals[spec]);
27     }
28    
29     // reader = new TMVA::Reader("V");
30     reader.BookMVA("BDTG", weightFile);
31     }
32     //----------------------------------------------------------------------------------------
33     void BdtInfo::setVar(TString name, filestuff *fs)
34     {
35     if(name=="costheta1") vals[name] = &fs->angles->costheta1;
36     else if(name=="costheta2") vals[name] = &fs->angles->costheta2;
37     else if(name=="costhetastar") vals[name] = &fs->angles->costhetastar;
38     else if(name=="Phi") vals[name] = &fs->angles->Phi;
39     else if(name=="Phi1") vals[name] = &fs->angles->Phi1;
40     else if(name=="mZ1") vals[name] = &fs->kine->mZ1;
41     else if(name=="mZ2") vals[name] = &fs->kine->mZ2;
42     // pt variables
43     else if(name=="ZZpt" || name=="ZZpt/m4l") vals[name] = new float(0);
44     else if(name=="ZZdotZ1" || name=="Z1pt/m4l") vals[name] = new float(0);
45     else if(name=="ZZdotZ2" || name=="Z2pt/m4l") vals[name] = new float(0);
46     else if(name=="ZZptCosDphiZ1pt" || name=="ZZdotZ1/(m4l*mZ1)") vals[name] = &fs->kine->ZZptZ1ptCosDphi;
47     else if(name=="ZZptCosDphiZ2pt" || name=="ZZdotZ2/(m4l*mZ2)") vals[name] = &fs->kine->ZZptZ2ptCosDphi;
48     else if(name=="Z1pt") vals[name] = new float(0);
49     else if(name=="Z2pt") vals[name] = new float(0);
50     else if(name=="ZZy") vals[name] = &fs->kine->ZZy;
51     // jet variables
52     else if(name=="nJets" ) vals[name] = fs->vk->getFloatValAddr("nJets" );
53     else if(name=="mjj" ) vals[name] = fs->vk->getFloatValAddr("mjj" );
54     else if(name=="dEta" ) vals[name] = fs->vk->getFloatValAddr("dEta" );
55     else if(name=="etaProd" ) vals[name] = fs->vk->getFloatValAddr("etaProd" );
56     else if(name=="dphiJ1HiPtZ" ) vals[name] = fs->vk->getFloatValAddr("dphiJ1HiPtZ" );
57     else if(name=="dphiJ1LoPtZ" ) vals[name] = fs->vk->getFloatValAddr("dphiJ1LoPtZ" );
58     else if(name=="dEtaJ1HiPtZ" ) vals[name] = fs->vk->getFloatValAddr("dEtaJ1HiPtZ" );
59     else if(name=="dEtaJ1LoPtZ" ) vals[name] = fs->vk->getFloatValAddr("dEtaJ1LoPtZ" );
60     else if(name=="J1dotHiPtZ" ) vals[name] = fs->vk->getFloatValAddr("J1dotHiPtZ" );
61     else if(name=="J1dotLoPtZ" ) vals[name] = fs->vk->getFloatValAddr("J1dotLoPtZ" );
62     else if(name=="dphiJ2HiPtZ" ) vals[name] = fs->vk->getFloatValAddr("dphiJ2HiPtZ" );
63     else if(name=="dphiJ2LoPtZ" ) vals[name] = fs->vk->getFloatValAddr("dphiJ2LoPtZ" );
64     else if(name=="dEtaJ2HiPtZ" ) vals[name] = fs->vk->getFloatValAddr("dEtaJ2HiPtZ" );
65     else if(name=="dEtaJ2LoPtZ" ) vals[name] = fs->vk->getFloatValAddr("dEtaJ2LoPtZ" );
66     else if(name=="J2dotHiPtZ" ) vals[name] = fs->vk->getFloatValAddr("J2dotHiPtZ" );
67     else if(name=="J2dotLoPtZ" ) vals[name] = fs->vk->getFloatValAddr("J2dotLoPtZ" );
68     else { cout << name << " not found!" << endl; assert(0); }
69     }
70     //----------------------------------------------------------------------------------------
71     void BdtInfo::setSpec(TString name, filestuff *fs)
72     {
73     if(name=="m4l") vals[name] = &fs->kine->m4l;
74     else if(name=="run") vals[name] = new float(0);
75     else if(name=="lumi") vals[name] = new float(0);
76     else if(name=="evt") vals[name] = new float(0);
77     else { cout << name << " not found!" << endl; assert(0); }
78     }
79     //----------------------------------------------------------------------------------------
80     void BdtInfo::setVals(filestuff *fs)
81     {
82     // all the rest of them are set automatically with TTree::GetEntry
83     if(vals.find(trans("ZZpt")) != vals.end()) {
84     *vals[trans("ZZpt")] = fs->kine->ZZpt/fs->kine->m4l;
85     *vals[trans("Z1pt")] = fs->kine->Z1pt/fs->kine->m4l;
86     *vals[trans("Z2pt")] = fs->kine->Z2pt/fs->kine->m4l;
87     *vals[trans("ZZdotZ1")] = fs->kine->ZZdotZ1/(fs->kine->m4l*fs->kine->mZ1);
88     *vals[trans("ZZdotZ2")] = fs->kine->ZZdotZ2/(fs->kine->m4l*fs->kine->mZ2);
89     }
90     if(!translate) {
91     *vals["run"] = fs->info->run;
92     *vals["lumi"] = fs->info->lumi;
93     *vals["evt"] = fs->info->evt;
94     }
95     }
96     //----------------------------------------------------------------------------------------
97     TString BdtInfo::trans(TString name)
98     {
99     if(!translate) return name;
100    
101     if(name=="ZZpt") return "ZZpt/m4l";
102     else if(name=="Z1pt") return "Z1pt/m4l";
103     else if(name=="Z2pt") return "Z2pt/m4l";
104     else if(name=="ZZdotZ1") return "ZZdotZ1/(m4l*mZ1)";
105     else if(name=="ZZdotZ2") return "ZZdotZ2/(m4l*mZ2)";
106     else return name;
107     }