class observableContainer: # ------------------------------------- def __init__(self, signame, bkgname, variables, cuts, label, treeName, weightloc='weights', MVAMethod="BDTG"): self._f_sig = ROOT.TFile(signame) self._f_bkg = ROOT.TFile(bkgname) self._t_sig = self._f_sig.Get(treeName) self._t_bkg = self._f_bkg.Get(treeName) self._discVariables = variables #,"MHT","nJets_30"]; #tmva cut self._cutstring = "(" cutctr = 0 for cut in cuts: self._cutstring += "(" + cut[0] + " > " + str( cut[1]) + ") && (" + cut[0] + " < " + str(cut[2]) + ")" if cutctr < len(cuts) - 1: self._cutstring += "&&" cutctr += 1 self._cutstring += ")" print "cutstring = ", self._cutstring # self._spectatorVariables = ["lheWeight"]; self._spectatorVariables = [] self._trees = [self._t_sig, self._t_bkg] self._bdt = TMVAhelper("MVA_" + label, self._discVariables, self._trees, self._spectatorVariables, weightloc) print ";;weightloc = ", weightloc # ------------------------------------- def doTraining(self): self._bdt.train(self._cutstring) def readMVA(self, method="BDTG"): # read in weight files (one can train and loop at different times) self._bdt.read(method) def evaluateMVA(self, val, method="BDTG"): return self._bdt.evaluate(val, method)
class observableContainer: # ------------------------------------- def __init__(self,signame,bkgname,variables,cuts,label,treeName,weightloc='weights',MVAMethod="BDTG"): self._f_sig = ROOT.TFile(signame); self._f_bkg = ROOT.TFile(bkgname); self._t_sig = self._f_sig.Get(treeName); self._t_bkg = self._f_bkg.Get(treeName); self._discVariables = variables;#,"MHT","nJets_30"]; #tmva cut self._cutstring = "("; cutctr = 0; for cut in cuts: self._cutstring += "(" + cut[0] + " > " + str(cut[1]) + ") && (" + cut[0] + " < " + str(cut[2]) + ")" if cutctr < len(cuts) - 1: self._cutstring += "&&"; cutctr+=1; self._cutstring += ")"; print "cutstring = ", self._cutstring; # self._spectatorVariables = ["lheWeight"]; self._spectatorVariables = []; self._trees = [self._t_sig,self._t_bkg]; self._bdt = TMVAhelper("MVA_"+label,self._discVariables,self._trees,self._spectatorVariables,weightloc); print ";;weightloc = ",weightloc # ------------------------------------- def doTraining(self): self._bdt.train(self._cutstring); def readMVA(self,method="BDTG"): # read in weight files (one can train and loop at different times) self._bdt.read(method); def evaluateMVA(self,val,method="BDTG"): return self._bdt.evaluate(val,method);
obsctr = 0; for j in range(len(obs2Corr)): for k in range(j+1,len(obs2Corr)): h_2D[a][obsctr].Fill( getattr(t,obs2Corr[j])[0], getattr(t,obs2Corr[k])[0] ); tmpList = []; for l in range(len(h_bdts_vars[obsctr])): tmpList.append( getattr(t,h_bdts_vars[obsctr][l])[0] ); bdtOutput = bdtClasses[obsctr].evaluate( tmpList ); h_bdts[a][obsctr].Fill(bdtOutput); obsctr += 1; tmpList = []; for j in range(len(obs2Corr)): tmpList.append( getattr(t,obs2Corr[j])[0] ); h_bdtall[a].Fill( tmva_all.evaluate( tmpList ) ); ## ===================================================================================== del f; del t; #######----------------------------------------------- ####### plot #######----------------------------------------------- ## ===================================================================================== ## 1D stuff makeCanvas(h_pt1, types, "jpt1", True); makeCanvas(h_pt2, types, "jpt2", True); makeCanvas(h_eta1, types, "jeta1", True);
if options.tmvaname == "Wq" or options.tmvaname == "Wg": for j in range(len(obs2Corr)): if not (obs2Corr[j] in varFor3Vars): tmpList = []; for l in range(len(h_bdts_vars[obsctr])): tmpList.append( getattr(t,h_bdts_vars[obsctr][l])[0] ); #print "obsctr = ", obsctr,", total length = ", len(bdtClasses) bdtOutput = bdtClasses[obsctr].evaluate( tmpList, tmvamethod ); h_bdts[a][obsctr].Fill(bdtOutput); obsctr += 1; tmpList = []; for j in range(len(obs2Corr_all)): tmpList.append( getattr(t,obs2Corr_all[j])[0] ); h_bdtall[a].Fill( tmva_all.evaluate( tmpList, tmvamethod ) ); aOvars[a][len(obs2Corr)][0] = tmva_all.evaluate( tmpList, tmvamethod ); ## ===================================================================================== otrees[a].Fill(); del f; del t; # OFILE.cd(); # for a in range(len(otrees)): otrees[a].Write(); # OFILE.Close(); #######----------------------------------------------- ####### plot #######-----------------------------------------------