44 |
|
hTreeList=[] |
45 |
|
groupList=[] |
46 |
|
|
47 |
+ |
#get the conversion rate in case of BDT plots |
48 |
+ |
TrainFlag = eval(self.config.get('Analysis','TrainFlag')) |
49 |
+ |
if TrainFlag: |
50 |
+ |
MC_rescale_factor=2. |
51 |
+ |
print 'I RESCALE BY 2.0' |
52 |
+ |
else: MC_rescale_factor = 1. |
53 |
+ |
|
54 |
+ |
BDT_add_cut='EventForTraining == 0' |
55 |
+ |
|
56 |
|
|
57 |
|
plot_path = self.config.get('Directories','plotpath') |
58 |
+ |
addOverFlow=eval(self.config.get('Plot_general','addOverFlow')) |
59 |
|
|
60 |
|
# define treeCut |
61 |
|
if job.type != 'DATA': |
67 |
|
cutcut=cutcut.replace(self.region[1],self.region[2]) |
68 |
|
#print cutcut |
69 |
|
if subsample>-1: |
70 |
< |
treeCut='%s & %s & EventForTraining == 0'%(cutcut,job.subcuts[subsample]) |
70 |
> |
treeCut='%s & %s'%(cutcut,job.subcuts[subsample]) |
71 |
|
else: |
72 |
< |
treeCut='%s & EventForTraining == 0'%(cutcut) |
72 |
> |
treeCut='%s'%(cutcut) |
73 |
|
elif job.type == 'DATA': |
74 |
|
cutcut=self.config.get('Cuts',self.region) |
75 |
|
treeCut='%s'%(cutcut) |
96 |
|
xMin=float(options[4]) |
97 |
|
xMax=float(options[5]) |
98 |
|
|
99 |
+ |
#options |
100 |
+ |
|
101 |
|
if job.type != 'DATA': |
102 |
|
if CuttedTree.GetEntries(): |
103 |
+ |
|
104 |
+ |
if 'BDT' in treeVar: drawoption = '(%s)*(%s)'%(weightF,BDT_add_cut) |
105 |
+ |
else: drawoption = '%s'%(weightF) |
106 |
|
output.cd() |
107 |
< |
CuttedTree.Draw('%s>>%s(%s,%s,%s)' %(treeVar,name,nBins,xMin,xMax), weightF, "goff,e") |
107 |
> |
CuttedTree.Draw('%s>>%s(%s,%s,%s)' %(treeVar,name,nBins,xMin,xMax), drawoption, "goff,e") |
108 |
|
full=True |
109 |
|
else: |
110 |
|
full=False |
111 |
|
elif job.type == 'DATA': |
112 |
|
if options[11] == 'blind': |
113 |
|
output.cd() |
114 |
< |
CuttedTree.Draw('%s>>%s(%s,%s,%s)' %(treeVar,name,nBins,xMin,xMax),treeVar+'<0', "goff,e") |
114 |
> |
if treeVar == 'H.mass': |
115 |
> |
CuttedTree.Draw('%s>>%s(%s,%s,%s)' %(treeVar,name,nBins,xMin,xMax),treeVar+'<80. || '+treeVar + '>150.' , "goff,e") |
116 |
> |
else: |
117 |
> |
CuttedTree.Draw('%s>>%s(%s,%s,%s)' %(treeVar,name,nBins,xMin,xMax),treeVar+'<0', "goff,e") |
118 |
> |
|
119 |
|
else: |
120 |
|
output.cd() |
121 |
|
CuttedTree.Draw('%s>>%s(%s,%s,%s)' %(treeVar,name,nBins,xMin,xMax),'1', "goff,e") |
127 |
|
hTree = ROOT.TH1F('%s'%name,'%s'%name,nBins,xMin,xMax) |
128 |
|
hTree.Sumw2() |
129 |
|
if job.type != 'DATA': |
130 |
< |
ScaleFactor = self.getScale(job,subsample) |
130 |
> |
if 'BDT' in treeVar: ScaleFactor = self.getScale(job,subsample,MC_rescale_factor) |
131 |
> |
else: ScaleFactor = self.getScale(job,subsample) |
132 |
|
if ScaleFactor != 0: |
133 |
|
hTree.Scale(ScaleFactor) |
134 |
|
#print '\t-->import %s\t Integral: %s'%(job.name,hTree.Integral()) |
135 |
+ |
if addOverFlow: |
136 |
+ |
uFlow = hTree.GetBinContent(0)+hTree.GetBinContent(1) |
137 |
+ |
oFlow = hTree.GetBinContent(hTree.GetNbinsX()+1)+hTree.GetBinContent(hTree.GetNbinsX()) |
138 |
+ |
uFlowErr = ROOT.TMath.Sqrt(ROOT.TMath.Power(hTree.GetBinError(0),2)+ROOT.TMath.Power(hTree.GetBinError(1),2)) |
139 |
+ |
oFlowErr = ROOT.TMath.Sqrt(ROOT.TMath.Power(hTree.GetBinError(hTree.GetNbinsX()),2)+ROOT.TMath.Power(hTree.GetBinError(hTree.GetNbinsX()+1),2)) |
140 |
+ |
hTree.SetBinContent(1,uFlow) |
141 |
+ |
hTree.SetBinContent(hTree.GetNbinsX(),oFlow) |
142 |
+ |
hTree.SetBinError(1,uFlowErr) |
143 |
+ |
hTree.SetBinError(hTree.GetNbinsX(),oFlowErr) |
144 |
|
hTree.SetDirectory(0) |
145 |
|
input.Close() |
146 |
|
hTreeList.append(hTree) |