def doEff(self, type, file, dir, outdir=''): file = TFile(file) fGet = file.Get # for i in self.inputdirs: after = fGet(dir + self.after + '/' + self.hists['weighted']).Clone('nVSdiscTight') unwafter = fGet(dir + self.after + '/' + self.hists['simple']).Clone('nVSdiscTightSimple') before = fGet(dir + self.before + '/' + self.hists['weighted']).Clone('nVSdiscLoose') unwbefore = fGet(dir + self.before + '/' + self.hists['simple']).Clone('nVSdiscLooseSimple') if after == None or before == None or unwbefore == None: print 'Histogram not found' else: self.setMCTruth(type, dir, before, after) self.output.cd(type + '/' + outdir + '/' + dir) result = self.getEffHist(before, after, unwbefore) #caluclate MC Efficiency without binning mceff = after.Integral() / before.Integral() mcerr = self.getStatError(mceff, unwbefore.Integral())#sqrt((mceff * (1 - mceff)) / unwbefore.Integral()) # print 'MC Eff for', i, ':[', mceff, ',', mcerr, ']' self.setEff(type, dir, - 1, mceff, mcerr) # for effs in result[1]: # print 'Eff for %s disc < %1.2f : %1.3f +- %1.3f' % (i, effs[0], effs[1], effs[2]) # self.setEff(type, i, effs[0], effs[1], effs[2]) leg = Drawer.makePlainLegend(25 , 95, 70, 25) title1 = 'overall eff. %1.4f \pm %1.4f' % (mceff, mcerr) leg.SetHeader(title1) leg = Drawer.setLegendStyle(leg) eff = result[0] eff.SetTitle(title1) eff.Write() after.Scale(self.scale[type]) before.Scale(self.scale[type]) after.Write() unwafter.Write() before.Write() unwbefore.Write() self.output.Cd('/')