import math import ROOT as r basedir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) sys.path.append(basedir) from plotstyle import SimpleCanvas, RatioCanvas, DataMCCanvas from datasets import allsamples import config from pprint import pprint outputFile = r.TFile.Open(basedir + '/data/gjetsTFactor.root', 'recreate') lumi = min( config.jsonLumi, allsamples['sph-16b2-d'].lumi + allsamples['sph-16c2-d'].lumi + allsamples['sph-16d2-d'].lumi) canvas = DataMCCanvas(lumi=lumi) dtree = r.TChain('events') dtree.Add(config.skimDir + '/sph-16*2-d_monoph.root') print dtree.GetEntries() btree = r.TChain('events') btree.Add(config.skimDir + '/sph-16*2-d_hfake.root') btree.Add(config.skimDir + '/sph-16*2-d_efake.root') bmctree = r.TChain('events') # bmctree.Add(config.skimDir + '/znng-130_monoph.root') # bmctree.Add(config.skimDir + '/wnlg-130_monoph.root') # bmctree.Add(config.skimDir + '/wg_monoph.root') # NLO sample to get around pT/MET > 130 GeV cut on LO sample bmctree.Add(config.skimDir + '/wglo_monoph.root') bmctree.Add(config.skimDir + '/wlnu-*_monoph.root')
data.Add('/mnt/hadoop/scratch/yiiyama/monophoton/skim/sph-16*-m_tpeg.root') outputFile.cd() data.Draw('probes.sieie>>hdata', selection, 'goff') hmc.Scale(hdata.GetSumOfWeights() / hmc.GetSumOfWeights()) ratio = hdata.Clone('ratio') ratio.Divide(hmc) line = ROOT.TF1('line', '[0] + [1] * x', 0.0085, 0.0105) line.SetParameters(1.5, -100.) ratio.Fit(line) outputFile.cd() hmc.Write() hdata.Write() ratio.Write() line.Write('fit') # visualize canvas = DataMCCanvas(lumi=sum(s.lumi for s in allsamples.getmany('sph-16*-m'))) canvas.legend.setPosition(0.7, 0.7, 0.9, 0.9) canvas.addStacked(hmc, title='MC', color=ROOT.kBlue, style=3003) canvas.addObs(hdata, title='Data') canvas.printWeb('purity', 'sieie_ratio', logy=False)
histFile = ROOT.TFile.Open(args.histFile) # closes if not args.replot #################### ## DRAW / ANALYZE ## #################### if args.plotDir == '-' and not ('count' in plotNames or args.bbb or args.chi2): # nothing to do sys.exit(0) print 'Drawing plots..' canvas = DataMCCanvas() nentries = (1 + len(plotConfig.bkgGroups) + len(plotConfig.signalPoints)) ncolumns = math.ceil(float(nentries) / 5.) xmin = 0.35 if ncolumns > 2 else 0.55 canvas.legend.setPosition(xmin, SimpleCanvas.YMAX - 0.01 - 0.035 * 5, 0.92, SimpleCanvas.YMAX - 0.01) if args.plotDir: if args.plotDir == '-': plotDir = '' else: plotDir = args.plotDir if plotDir.startswith(plotstyle.WEBDIR): plotDir = plotDir.replace(plotstyle.WEBDIR, '') else:
thisdir = os.path.dirname(os.path.realpath(__file__)) basedir = os.path.dirname(thisdir) sys.path.append(basedir) from plotstyle import DataMCCanvas from datasets import allsamples from main.plotconfig import VariableDef import config import ROOT as r r.gROOT.SetBatch(True) smuLumi = sum(allsamples[s].lumi for s in [ 'smu-16b-r', 'smu-16c-r', 'smu-16d-r', 'smu-16e-r', 'smu-16f-r', 'smu-16g-r', 'smu-16h' ]) canvas = DataMCCanvas(lumi=smuLumi) probePixel = '!probe.pixelVeto' zMassCut = 'z.mass > 81. && z.mass < 101.' dPhiCut = 'TMath::Abs(TVector2::Phi_mpi_pi(z.phi - jets.phi[0])) > 3.' dPhiMetCut = 'TMath::Abs(TVector2::Phi_mpi_pi(z.phi - t1Met.phi)) < 0.5' jetPtCut = 'jets.pt[0] > 100.' dPhiJetCut = 't1Met.minJetDPhi > 0.5' monojetCut = 'jets.size == 1' njetsCut = 'jets.size < 3' variables = [ VariableDef('met', 'E_{T}^{miss}', 't1Met.met', [25 * x