Esempio n. 1
0
 def __init__(self):
     Load('TMVABranchAdder')
     self.ba = root.TMVABranchAdder()
     self.ba.defaultValue = -1.2
     self.ba.presel = 'fj1ECFN_2_4_20>0'
     for v in tagcfg.variables:
         self.ba.AddVariable(v[0], v[2])
     for v in tagcfg.formulae:
         self.ba.AddFormula(v[0], v[2])
     for s in tagcfg.spectators:
         self.ba.AddSpectator(s[0])
     self.ba.BookMVA('top_ecf_bdt',
                     data_dir + '/trainings/top_ecfbdt_v8_BDT.weights.xml')
Esempio n. 2
0
def add_bdt():
    # now run the BDT
    Load('TMVABranchAdder')
    ba = root.TMVABranchAdder()
    ba.treename = 'events'
    ba.defaultValue = -1.2
    ba.presel = 'fj1ECFN_2_4_20>0'
    for v in tagcfg.variables:
        ba.AddVariable(v[0],v[2])
    for v in tagcfg.formulae:
        ba.AddFormula(v[0],v[2])
    for s in tagcfg.spectators:
        ba.AddSpectator(s[0])
    ba.BookMVA('top_ecf_bdt',data_dir+'/trainings/top_ecfbdt_v8_BDT.weights.xml')
    ba.RunFile('output.root')
Esempio n. 3
0
from time import clock, time
import json

which = int(argv[1])
submit_id = int(argv[2])
sname = argv[0]
argv = []

import ROOT as root
from PandaCore.Tools.Misc import *
from PandaCore.Tools.Load import *
import PandaCore.Tools.job_config as cb
import PandaAnalysis.LPC_T3.job_utilities as utils
from PandaAnalysis.Flat.analysis import monojet

Load('PandaAnalyzer')
data_dir = getenv('CMSSW_BASE') + '/src/PandaAnalysis/data/'


def fn(input_name, isData, full_path):

    PInfo(sname + '.fn', 'Starting to process ' + input_name)
    # now we instantiate and configure the analyzer
    skimmer = root.PandaAnalyzer()
    analysis = monojet(True)
    analysis.processType = utils.classify_sample(full_path, isData)
    analysis.genOnly = False
    skimmer.SetAnalysis(analysis)
    skimmer.isData = isData
    skimmer.SetPreselectionBit(root.PandaAnalyzer.kDiMu)
Esempio n. 4
0
    def fn(shortName, longName, isData, xsec):
        # first we do some I/O stuff
        outdir = 'XXXX'
        outfilename = shortName + '.root'
        PInfo(sname, 'Output: %s/%s' % (outdir, outfilename))
        if path.isfile('%s/%s' % (outdir, outfilename)):
            PWarning(sname, "Found %s, skipping!" % outfilename)
            return

        start = clock()

        eosPath = 'root://eoscms.cern.ch//store/user/snarayan'
        eosEXOPath = 'root://eoscms.cern.ch//store/group/phys_exotica'
        cernboxPath = 'root://eosuser//eos/user/s/snarayan'
        cernboxBPath = 'root://eosuser//eos/user/b/bmaier'
        fullPath = sub(
            r'\${CERNBOXB}', cernboxBPath,
            sub(
                r'\${CERNBOX}', cernboxPath,
                sub(r'\${EOS}', eosPath, sub(r'\${EOS2}', eosEXOPath,
                                             longName))))
        PInfo(sname, fullPath)

        # xrdcp if remote, copy if local
        if 'root://' in fullPath:
            system('xrdcp %s input.root' % fullPath)
        else:
            system('cp %s input.root' % fullPath)

        # now we instantiate and configure the analyzer
        skimmer = root.PandaAnalyzer()
        skimmer.isData = isData
        skimmer.SetFlag('firstGen', False)
        # skimmer.SetFlag('puppi',False)
        skimmer.SetPreselectionBit(root.PandaAnalyzer.kRecoil)
        #skimmer.SetPreselectionBit(root.PandaAnalyzer.kMonotop)
        processType = root.PandaAnalyzer.kNone
        if not isData:
            if 'ST_' in fullPath:
                processType = root.PandaAnalyzer.kTop
            elif 'ZJets' in fullPath or 'DY' in fullPath:
                processType = root.PandaAnalyzer.kZ
            elif 'WJets' in fullPath:
                processType = root.PandaAnalyzer.kW
            elif 'GJets' in fullPath:
                processType = root.PandaAnalyzer.kA
            elif 'TTJets' in fullPath or 'TT_' in fullPath:
                processType = root.PandaAnalyzer.kTT
        skimmer.processType = processType

        # read the inputs
        try:
            fin = root.TFile.Open('input.root')
            tree = fin.FindObjectAny("events")
            infotree = fin.FindObjectAny("all")
        except:
            exit(2)  # file open error => xrootd?

        skimmer.SetDataDir(getenv('CMSSW_BASE') + '/src/PandaAnalysis/data/')
        skimmer.SetOutputFile('output.root')
        skimmer.Init(tree, infotree)

        # run and save output
        skimmer.Run()
        skimmer.Terminate()

        # now run the BDT
        Load('Learning', 'TMVABranchAdder')
        ba = root.TMVABranchAdder()
        ba.treename = 'events'
        ba.defaultValue = -1.2
        ba.presel = 'fj1ECFN_2_4_20>0'
        for v in tagcfg.variables:
            ba.AddVariable(v[0], v[2])
        for v in tagcfg.formulae:
            ba.AddFormula(v[0], v[2])
        for s in tagcfg.spectators:
            ba.AddSpectator(s[0])
        ba.BookMVA(
            'top_ecf_bdt',
            getenv('CMSSW_BASE') +
            '/src/PandaAnalysis/data/trainings/top_ecfbdt_v8_BDT.weights.xml')
        ba.RunFile('output.root')

        # stageout
        mvargs = 'mv $PWD/output.root %s/%s' % (outdir, outfilename)
        PInfo(sname, mvargs)
        system(mvargs)
        system('rm input.root')

        PInfo(sname, 'finished in %f' % (clock() - start))
        start = clock()
Esempio n. 5
0
parser.add_argument('--cut', metavar='cut', type=str, default='1==1')
parser.add_argument('--region', metavar='region', type=str, default=None)
args = parser.parse_args()
lumi = 36560
blind = True
linear = False
region = args.region
sname = argv[0]

argv = []
import ROOT as root
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *
import PandaCore.Tools.Functions
import PandaAnalysis.VBF.MonojetSelection as sel
Load('Drawers', 'PlotUtility')

### DEFINE REGIONS ###

cut = tAND(sel.cuts[args.region], args.cut)
PInfo(sname, 'using cut: ' + cut)

### LOAD PLOTTING UTILITY ###
plot = root.PlotUtility()
plot.Stack(True)
plot.Logy(not (linear))
if 'signal' in region and blind:
    plot.SetLumi(lumi / 5000.)
else:
    plot.SetLumi(lumi / 1000)
plot.SetSignalScale(10)
Esempio n. 6
0
#!/usr/bin/env python

import ROOT as root
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *
from os import getenv
from sys import argv

#import cfgSmall as cfg
import makeInvariantRatios  as cfg

Load('Learning','TMVABranchAdder')

workdir = getenv('SCRAMJETFLAT')

ba = root.TMVABranchAdder()
ba.treename='puppiCA15'

for v in cfg.variables:
  ba.AddVariable(v[0],v[0])

for v in cfg.formulae:
  ba.AddFormula(v[0],v[0])

for s in cfg.spectators:
  ba.AddSpectator(s[0])

ba.BookMVA('top_ecf43_bdt',workdir+'/training/top_ecfbdt_43_BDT.weights.xml')

ba.RunFile(workdir+'/'+argv[1]+'.root')
Esempio n. 7
0
import json

debug_level = 2
torun = argv[1]
output = 'snapshot.root'
if len(argv)>2:
    debug_level = int(argv[2])
    if len(argv)>3:
        output = argv[3]

argv = []

import ROOT as root
from PandaCore.Tools.Load import *

Load('Clusterer')

camera = root.redpanda.Camera(debug_level)


camera.firstEvent=1
camera.lastEvent=2
fin = root.TFile.Open(torun)

tree = fin.FindObjectAny("events")

camera.SetOutputFile(output)
camera.Init(tree)

camera.Run()
camera.Terminate()
Esempio n. 8
0
#!/usr/bin/env python

from sys import exit,argv
import argparse

parser = argparse.ArgumentParser(description='skim a file')
parser.add_argument('--input',type=str)
parser.add_argument('--output',type=str,default=None)
parser.add_argument('--cut',type=str)
args = parser.parse_args()

argv=[]

from PandaCore.Tools.Load import *
import ROOT as root
Load('Tools','Cutter')

c = root.Cutter()
c.treeName = 'puppiCA15'

if not args.output:
  args.output = args.input.replace('.root','_slim.root')

c.Cut(args.input,args.output,args.cut)
Esempio n. 9
0
ncontours = 999;
stops = [     0.10,     0.2000,      0.40,   0.600,     0.800,    1.0000]
red   = [255./255.,  169./255.,  91./255., 36./255.,   8./255.,   6./255.]
green = [255./255.,  194./255., 149./255., 99./255.,  46./255.,   0./255.]
blue  = [255./255.,  243./255., 240./255.,240./255., 240./255., 233./255.]
stopsArray = array('d',stops)
redArray   = array('d',red)
greenArray = array('d',green)
blueArray  = array('d',blue)
root.TColor.CreateGradientColorTable(len(stops), stopsArray, redArray, greenArray, blueArray, ncontours);
'''
root.gStyle.SetNumberContours(999)
root.gStyle.SetPalette(root.kBird)
root.gStyle.SetPaintTextFormat(".3g")

Load('CanvasDrawer')

plot = root.CanvasDrawer()
plot.SetTDRStyle()
root.gStyle.SetPadRightMargin(0.2)

c = root.TCanvas()

cut1s = set([])
cut2s = set([])
if var3:
    listoffiles = glob(basedir + '/higgsCombine%s*%s*%s*.root' %
                       (var1, var2, var3))
else:
    listoffiles = glob(basedir + '/higgsCombine%s*%s*.root' % (var1, var2))
for f in listoffiles:
Esempio n. 10
0
#!/usr/bin/env python

from os import getenv
from sys import argv

#import cfgModeled as cfg
import cfgAll as cfg

sample = argv[1]
argv = []

import ROOT as root
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *

Load('TMVABranchAdder')

workdir = getenv('PANDA_FLATDIR')
trainingdir = '/home/snarayan/home000/store/scramjet/v7/training/'

ba = root.TMVABranchAdder()
ba.treename = 'events'
ba.defaultValue = -1.2
ba.presel = 'fj1ECFN_2_4_20>0'

for v in cfg.variables:
    ba.AddVariable(v[0], v[2])

for v in cfg.formulae:
    ba.AddFormula(v[0], v[2])
Esempio n. 11
0
from re import sub
from sys import argv, exit
from os import system, getenv, path
from json import load as loadJson
from time import clock
from random import shuffle
from PandaCore.Tools.Misc import *
from PandaCore.Tools.MultiThreading import GenericRunner
from PandaCore.Tools.Load import *

nPerJob = int(argv[2])
sname = argv[0]

if __name__ == "__main__":

    Load('SCRAMJetAnalyzer', 'Analyzer')

    def fn(shortName, longName, counter, xsec, isData, outPath):
        outfileName = '%s_%i' % (shortName, counter)
        if path.isfile(outPath + '/' + outfileName + '.lock'):
            return  # another job is processing this file
        if path.isfile(outPath + '/' + outfileName + '.root'):
            return  # another job has processed this file

        system('touch %s/%s.lock' % (outPath, outfileName))
        start = clock()

        eosPath = 'root://eoscms//eos/cms/store/user/%s' % (getenv('USER'))
        cernboxPath = 'root://eosuser//eos/user/%s/%s' % (getenv('USER')[0],
                                                          getenv('USER'))
        cernboxBPath = 'root://eosuser//eos/user/b/bmaier'
Esempio n. 12
0
from os import system, getenv, path
from time import clock, time
import json

which = int(argv[1])
submit_id = int(argv[2])
sname = argv[0]
argv = []

import ROOT as root
from PandaCore.Tools.Misc import *
from PandaCore.Tools.Load import *
import PandaCore.Tools.job_management as cb
import PandaAnalysis.Tagging.cfg_v8 as tagcfg

Load('PandaLeptonicAnalyzer')
data_dir = getenv('CMSSW_BASE') + '/src/PandaAnalysis/data/'

stopwatch = clock()


def print_time(label):
    global stopwatch
    now_ = clock()
    PDebug(
        sname + '.print_time:' + str(time()),
        '%.3f s elapsed performing "%s"' % ((now_ - stopwatch) / 1000., label))
    stopwatch = now_


def copy_local(long_name):
Esempio n. 13
0
#!/usr/bin/env python

import ROOT as root
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *
from os import getenv

import cfgInvar as cfg
#import makeInvariantRatios as cfg

Load('Learning', 'TMVATrainer')

workdir = getenv('SCRAMJETFLAT')

trainer = root.TMVATrainer('top_ecfbdt_50', workdir + 'training/')
trainer.treename = 'puppiCA15'
trainer.sigweight = 'ptweight*normalizedWeight'
trainer.bgweight = 'ptweight_analytic*normalizedWeight'
sanitycut = 'tau32>0 && pt<1000 && mSD>110 && mSD<210'
#trainer.bgcut = tAND(sanitycut,'eventNumber%15==0')
trainer.bgcut = sanitycut
trainer.sigcut = tAND(sanitycut, 'matched==1 && gensize<1.2')

for v in cfg.variables:
    trainer.AddVariable(v[0], v[1])

for v in cfg.formulae:
    trainer.AddVariable(v[0], v[1])

for s in cfg.spectators:
    trainer.AddSpectator(s[0], s[1])
Esempio n. 14
0
#!/usr/bin/env python

from sys import argv
f1 = argv[1]
f2 = argv[2]
f3 = argv[3]
argv = []

import PandaCore.Tools.Load as Load
import ROOT as root

Load.Load('Tools','DuplicateRemover')

dr = root.DuplicateRemover()
dr.Merge(f1,f2,f3)

Esempio n. 15
0
if not args.cut:
  print 'please choose a cut'
  exit(1)
elif args.cut=='mass':
  cut = 'massCut_' 
  plotlabel = '110 < m_{SD} < 210 GeV'
elif args.cut=='btag':
  cut = 'btagCut_' 
  plotlabel = '#splitline{110 < m_{SD} < 210 GeV}{max SJ CSV>0.46}'
elif args.cut=='masstau':
  cut = 'masstauCut_'
  plotlabel = '#splitline{110 < m_{SD} < 210 GeV}{#tau_{32}<0.6}'


Load('Drawers','ROCTool')
roc = root.ROCTool()

fin = root.TFile(figsdir+'/'+cut+'hists.root')

roc.Logy()
roc.SetPlotRange(0.005,1)
roc.InitCanvas(.65,.15,.94,.6)
roc.SetFile(fin)
roc.c.AddPlotLabel(plotlabel,.18,.77,False,42,.04)

variables = [
  ('top_ecfv7_bdt','ECF+#tau_{32}^{SD} BDT',1,1),
  ('top_ecfv6_bdt','ECF BDT',2,1),
  ('tau32SD','Groomed #tau_{32}',3,2),
  ('tau32','#tau_{32}',4,2),
Esempio n. 16
0
#!/usr/bin/env python

from sys import exit,argv
import argparse

parser = argparse.ArgumentParser(description='skim a file')
parser.add_argument('--input',type=str)
parser.add_argument('--output',type=str,default=None)
parser.add_argument('--cut',type=str)
args = parser.parse_args()

argv=[]

from PandaCore.Tools.Load import *
import ROOT as root
Load('Cutter')

c = root.Cutter()
c.treeName = 'events'

if not args.output:
  args.output = args.input.replace('.root','_slim.root')

c.Cut(args.input,args.output,args.cut)
Esempio n. 17
0
def fitMC(nprongs, isPass, model='GAUSSEXPERF', smear=None, paramset=None):
    fmc = root.TFile(basedir + '/tag__prong%i.root' % nprongs)
    tmc = fmc.Get('prong%i' % nprongs)
    if isPass:
        cut = 'top_ecfv8_bdt>0.66'
    else:
        cut = 'top_ecfv8_bdt<0.66'
    ds = RooFitUtils.treeToDS(tmc, [mass, tag.rvar, weight.rvar],
                              cut=cut,
                              weight='weight')

    hmass = root.TH1D('hmass', 'hmass', nbins, 50, 350)
    tmc.Draw('mSD>>hmass', 'weight*(%s)' % cut, '')
    integral = hmass.Integral(
    )  # get the integral so we can do an extended likelihood by default

    smear_params = {
        'mu': (0, -20, 20),
        'sigma': (10, .1, 100),
        'n_cb': (1, 0.01, 5),
        'alpha': (-1, -100, 0),
    }

    dparams = {}
    dparams['fail'] = {
        'a': (140, -1000, 1000),
        'b': (58.1, 0.01, 1000),
        'c': (-0.0155, -10, 0),
        'alpha': (-1.4, -10, 10),
        'mu': (165, 145, 185),
        'sigma': (20, 10, 100),
        'n_cb': (1.7, 0, 5),
        'norm_gauss': (integral, 1, integral * 2),
        'norm_bw': (integral, 1, integral * 2),
        'norm_cb': (integral, 1, integral * 2),
        'norm_experf': (integral * 0.3, 1, integral * 2),
        'w_mu': (80, 78, 82),
        'w_sigma': (8, 5, 20),
    }

    dparams['pass'] = {
        'a': (200, -1000, 1000),
        'b': (50, 0.01, 1000),
        'c': (-0.0155, -10, 0),
        'alpha': (-1.4, -10, 10),
        'mu': (165, 145, 185),
        'sigma': (20, 10, 100),
        'n_cb': (1.7, 0, 5),
        'norm_gauss': (integral, 1, integral * 2),
        'norm_bw': (integral, 1, integral * 2),
        'norm_cb': (integral, 1, integral * 2),
        'norm_experf': (integral * 0.2, 1, integral * 2),
        'w_mu': (80, 78, 82),
        'w_sigma': (8, 5, 20),
    }

    dparams['fail2'] = {
        'a': (200, -1000, 1000),
        'b': (5.6, 0.01, 1000),
        'c': (-0.0155, -10, 0),
        'alpha': (-1.4, -10, 10),
        'mu': (80, 70, 90),
        'sigma': (20, 10, 100),
        'n_cb': (1.7, 0, 5),
        'norm_gauss': (integral, 1, integral * 2),
        'norm_bw': (integral, 1, integral * 2),
        'norm_cb': (integral, 1, integral * 2),
        'norm_experf': (integral * 0.2, 1, integral * 2),
        'w_mu': (80, 78, 82),
        'w_sigma': (8, 5, 20),
    }

    if not paramset:
        params = dparams['pass'] if isPass else dparams['fail']
    else:
        params = dparams[paramset]

    suffix = '_pass' if isPass else '_fail'
    model = cat.buildModel('prong%i' % nprongs + suffix, mass, model, params)
    if smear:
        smeared_model = cat.smearModel('prong%i_smeared' % nprongs, mass,
                                       model, smear, smear_params)
        smeared_model.fitTo(ds, root.RooFit.SumW2Error(False))
    else:
        model.fitTo(ds, root.RooFit.SumW2Error(False))

    Load('Drawers', 'CanvasDrawer')

    plot = root.CanvasDrawer()
    plot.Ratio(True)
    plot.SetTDRStyle()
    c = root.TCanvas()
    plot.SetCanvas(c)
    plot.SplitCanvas()
    plot.AddCMSLabel()
    pad1 = plot.GetPad1()
    pad1.cd()

    mass.setBins(nbins)
    frame = mass.frame(root.RooFit.Bins(nbins))
    ds.plotOn(frame, root.RooFit.DrawOption('EP'), root.RooFit.MarkerSize(0.8),
              root.RooFit.Name('MC'))
    model.plotOn(frame, root.RooFit.Name('Fit'))
    frame.GetYaxis().SetTitle('Events/10 GeV')
    frame.SetMaximum(frame.GetMaximum() * 1.5)
    frame.Draw()

    pad2 = plot.GetPad2()
    pad2.cd()
    frame2 = mass.frame(root.RooFit.Bins(nbins))
    frame2.addObject(frame.pullHist('MC', 'Fit'), 'EP')
    frame2.SetMinimum(-5)
    frame2.SetMaximum(5)
    frame2.GetXaxis().SetTitle('m_{SD} [GeV]')
    frame2.GetYaxis().SetTitle("#frac{Data-Fit}{#sigma_{Data}}")
    frame2.GetYaxis().SetNdivisions(5)
    frame2.GetYaxis().SetTitleSize(15)
    frame2.GetYaxis().SetTitleFont(43)
    frame2.GetYaxis().SetTitleOffset(1.55)
    frame2.GetYaxis().SetLabelFont(43)
    frame2.GetYaxis().SetLabelSize(15)
    frame2.GetXaxis().SetTitleSize(20)
    frame2.GetXaxis().SetTitleFont(43)
    frame2.GetXaxis().SetTitleOffset(4.)
    frame2.GetXaxis().SetLabelFont(43)
    frame2.GetXaxis().SetLabelSize(15)
    frame2.Draw()

    hZero = root.TH1D('zero', 'zero', nbins, 50, 450)
    hZero.SetLineColor(1)
    hZero.Draw('hist same')

    pad1.cd()

    plot.Draw(
        '~/public_html/figs/toptagging/datavalidation/v8/templates/parametric/',
        'prong%i' % nprongs + suffix)
Esempio n. 18
0
from os import path, getenv
import argparse
parser = argparse.ArgumentParser(description='make forest')
parser.add_argument('--region', metavar='region', type=str, default=None)
toProcess = parser.parse_args().region

argv = []
import ROOT as root
from PandaCore.Tools.Misc import *
from PandaCore.Tools.Load import *
import PandaCore.Tools.Functions
import PandaAnalysis.MonoH.Selection as sel
#import PandaAnalysis.MonoH.Selection_mw as sel
#import PandaAnalysis.MonoH.Selection_t21 as sel

Load('PandaAnalysisFlat', 'LimitTreeBuilder')

subfolder = ''
if toProcess == 'signal':
    subfolder = 'preselection/'
elif toProcess == 'wmn':
    subfolder = 'cr_w_mu/'
elif toProcess == 'wen':
    subfolder = 'cr_w_el/'
elif toProcess == 'tm':
    subfolder = 'cr_ttbar_mu/'
elif toProcess == 'te':
    subfolder = 'cr_ttbar_el/'
elif toProcess == 'zmm':
    subfolder = 'cr_dimuon/'
elif toProcess == 'zee':
Esempio n. 19
0
args = parser.parse_args()
args.outdir += '/'
lumi = 36560.
blind = True
linear = False
sname = argv[0]

argv = []
import ROOT as root

root.gROOT.SetBatch()
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *
import PandaCore.Tools.Functions

Load('Drawers', 'HistogramDrawer')

plot = root.HistogramDrawer()
plot.Logy(True)
plot.SetTDRStyle()
plot.InitLegend()
plot.AddCMSLabel()
plot.SetLumi(lumi / 1000)
plot.AddLumiLabel(True)
plot.SetNormFactor(True)

plotr = root.HistogramDrawer()
plotr.SetRatioStyle()
plotr.InitLegend()
plotr.AddCMSLabel()
plotr.SetLumi(lumi / 1000)
Esempio n. 20
0
parser = argparse.ArgumentParser(description='plot stuff')
parser.add_argument('--indir',metavar='indir',type=str,default=basedir)
parser.add_argument('--outdir',metavar='outdir',type=str,default=outdir)
parser.add_argument('--sel',metavar='sel',type=str,default='tag')
parser.add_argument('--cat',metavar='cat',type=str)
args = parser.parse_args()

outdir = args.outdir
basedir = args.indir
argv=[]

import ROOT as root
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *
tcut = root.TCut
Load('PandaAnalysisFlat','SFTreeBuilder')

### SET GLOBAL VARIABLES ###
lumi = 12918.
logy=False
nlo = 'sf_ewkV*sf_qcdV'
if args.sel=='mistag':
  cut = 'nFatjet==1 && fj1Pt>250 && fj1MaxCSV<0.46 && nLooseLep==1 && nTightMuon==1 && nLooseElectron==0 && nLoosePhoton==0 && nTau==0 && UWmag>250 && isojetNBtags==0'
  weight = '%f*normalizedWeight*sf_pu*sf_lep*%s*sf_sjbtag0*sf_btag0*sf_tt*sf_metTrig'%(lumi,nlo)
  outfileprefix = 'mistag_'
elif args.sel=='photon':
  cut = 'nFatjet==1 && fj1Pt>250 && nLooseLep==0 && nLoosePhoton==1 && loosePho1IsTight==1 && nTau==0 && UAmag>250'
  weight = '%f*normalizedWeight*sf_pu*sf_lep*%s*sf_tt*sf_phoTrig*0.93'%(lumi,nlo)
  outfileprefix = 'photon_'
else:
  cut = 'nFatjet==1 && fj1Pt>250 && fj1MaxCSV>0.46 && nLooseLep==1 && nTightMuon==1 && nLooseElectron==0 && nLoosePhoton==0 && nTau==0 && UWmag>250 && isojetNBtags==1'
Esempio n. 21
0
#!/usr/bin/env python

from sys import argv
f1 = argv[1]
f2 = argv[2]
f3 = argv[3]
argv = []

import PandaCore.Tools.Load as Load
import ROOT as root

Load.Load('DuplicateRemover')

dr = root.DuplicateRemover()
dr.Merge(f1, f2, f3)
Esempio n. 22
0
#!/usr/bin/env python

from sys import argv
from os import getenv
import argparse
parser = argparse.ArgumentParser(description='reweight CSV shape for fakes')
parser.add_argument('--reweight', metavar='reweight', type=str)
parser.add_argument('--infile', metavar='infile', type=str)
args = parser.parse_args()
argv = []

import ROOT as root
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *
import PandaCore.Tools.Functions
Load('Tools', 'BranchAdder')

freweight = root.TFile.Open(args.reweight)
hreweight = freweight.Get('hratio')

ba = root.BranchAdder()
ba.formula = 'isojet1CSV'
ba.newBranchName = 'fakeCSVWeight'
ba.cut = 'isojet1CSV>0 && isojet1Flav==0'

fin = root.TFile(args.infile, 'UPDATE')
tin = fin.Get('events')
ba.AddBranchFromHistogram(tin, hreweight)
fin.WriteTObject(tin, 'events', 'Overwrite')
fin.Close()
Esempio n. 23
0
#!/usr/bin/env python

from sys import argv
from os import getenv
which = argv[1]
trigger = argv[2]
argv=[]

import ROOT as root
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *
import PandaCore.Tools.Functions
Load('BranchAdder')

ba = root.BranchAdder()

fk = root.TFile(trigger)
h_ratio = fk.Get('hden_monojet_recoil_clone_passed') 

ba.formula = 'pfUZmag'
ba.newBranchName = 'sf_metTrigZmm'

fin = root.TFile(getenv('PANDA_FLATDIR')+which+'.root','UPDATE')
tin = fin.Get('events')
ba.AddBranchFromHistogram(tin,h_ratio)
fin.WriteTObject(tin,'events','Overwrite')
fin.Close()
Esempio n. 24
0
#!/usr/bin/env python

from ROOT import gSystem, gROOT
import ROOT as root
from array import array
from glob import glob
from re import sub
from sys import argv
from os import environ, system, path
from PandaCore.Tools.process import *
from PandaCore.Tools.Load import *

Load('Tools', 'Normalizer')

pds = {}
for k, v in processes.iteritems():
    if v[1] == 'MC':
        pds[v[0]] = (k, v[2])
    else:
        pds[v[0]] = (k, -1)

VERBOSE = False

user = environ['USER']
system('mkdir -p /tmp/%s/split' % user)  # tmp dir
system('mkdir -p /tmp/%s/merged' % user)  # tmp dir

base = environ['SCRAMJETFLAT']
inbase = base + '/batch/'

Esempio n. 25
0
which = int(argv[1])
sname = argv[0]
if len(argv) > 2:
    nper = int(argv[2])
else:
    nper = 1
argv = []

import ROOT as root
from PandaCore.Tools.Misc import *
from PandaCore.Tools.Load import *
import PandaAnalysis.Tagging.cfg_v8 as tagcfg

if __name__ == "__main__":

    Load('PandaAnalysisFlat', 'PandaAnalyzer')

    def fn(shortName, longName, isData, xsec):
        # first we do some I/O stuff
        outdir = 'XXXX'
        outfilename = shortName + '.root'
        PInfo(sname, 'Output: %s/%s' % (outdir, outfilename))
        if path.isfile('%s/%s' % (outdir, outfilename)):
            PWarning(sname, "Found %s, skipping!" % outfilename)
            return

        start = clock()

        eosPath = 'root://eoscms.cern.ch//store/user/snarayan'
        eosEXOPath = 'root://eoscms.cern.ch//store/group/phys_exotica'
        cernboxPath = 'root://eosuser//eos/user/s/snarayan'
Esempio n. 26
0
#!/usr/bin/env python

import ROOT as root
from PandaCore.Tools.Misc import *
from PandaCore.Tools.Load import *
import re

Load('Statistics', 'RooExpErf')


def treeToDS(tree, rvars, cut=None, weight=None):
    args = ['data', 'data', root.RooArgSet(*rvars), root.RooFit.Import(tree)]
    if cut:
        args.append(root.RooFit.Cut(cut))
    if weight:
        args.append(root.RooFit.WeightVar(weight))
    ds = root.RooDataSet(*args)
    return ds


def treeToKDE(tree, rvars, cut=None, weight=None, bw=1):
    ds = treeToDS(tree, rvars, cut, weight)
    kde = root.RooKeysPdf('kde', 'kde', rvars[0], ds,
                          root.RooKeysPdf.MirrorBoth, bw)
    return kde


def factoryExtractName(s):
    return s.split('::')[1].split('(')[0]

basedir = getenv('PANDA_FLATDIR')

parser = argparse.ArgumentParser(description='plot stuff')
parser.add_argument('--proc')
parser.add_argument('--plot', type=str, default=None)
args = parser.parse_args()

argv = []

import ROOT as root
from PandaCore.Tools.Load import *
from PandaCore.Tools.Misc import *
from PandaCore.Tools.root_interface import Selector
if args.plot:
    Load('HistogramDrawer')

    plot = root.HistogramDrawer()
    plot.SetTDRStyle()
    plot.AddSqrtSLabel()
    plot.InitLegend()
    root.gStyle.SetOptStat(0)

binning = (40, 450, 1200)

n_partons = {
    'Top_lo': 3,
    'Top': 3,
    'QCD': 1,
    'Higgs': 2,
    'W': 2,
Esempio n. 28
0
from array import array
from glob import glob
from re import sub
from sys import argv
from os import environ, system, path

sname = argv[0]
arguments = [x for x in argv[1:]]
argv = []

import ROOT as root
from PandaCore.Tools.process import *
from PandaCore.Tools.Misc import *
from PandaCore.Tools.Load import *

Load('Normalizer')

pds = {}
for k, v in processes.iteritems():
    if v[1] == 'MC':
        pds[v[0]] = (k, v[2])
    else:
        pds[v[0]] = (k, -1)

VERBOSE = False

user = environ['USER']
system('mkdir -p /tmp/%s/split' % user)  # tmp dir
system('mkdir -p /tmp/%s/merged' % user)  # tmp dir

inbase = environ['PANDA_ZEYNEPDIR']
Esempio n. 29
0
# blue  = [   6./255.,   8./255.,  36./255.,  91./255., 169./255., 255./255.,  243./255., 240./255.,240./255., 240./255., 233./255.]
stops = [0.0000, 0.50, 1.0000]
red = [239. / 255., 255. / 255., 92. / 255.]
green = [87. / 255., 255. / 255., 123. / 255.]
blue = [76. / 255., 255. / 255., 237. / 255.]
stopsArray = array('d', stops)
redArray = array('d', red)
greenArray = array('d', green)
blueArray = array('d', blue)
root.TColor.CreateGradientColorTable(len(stops), stopsArray, redArray,
                                     greenArray, blueArray, ncontours)
root.gStyle.SetNumberContours(999)
# root.gStyle.SetPalette(root.kLightTemperature)
root.gStyle.SetPaintTextFormat(".1g")

Load('Drawers', 'CanvasDrawer')

plot = root.CanvasDrawer()
plot.SetTDRStyle()
root.gStyle.SetPadRightMargin(0.15)
root.gStyle.SetPadLeftMargin(0.2)
root.gStyle.SetPadBottomMargin(0.2)

c = root.TCanvas()

varlist = [
    ('tau32', '#tau_{32}'),
    ('tau32SD', '#tau_{32}^{SD}'),
    ('maxcsv', 'max CSV', (50, 0, 1)),
    ('(ecfN_1_2_20/pow(ecfN_1_2_10,2.00))', 'e(1,2,2)/e(1,2,1)^{2}', (50, 2,
                                                                      10)),
Esempio n. 30
0
parser.add_argument('--outdir',metavar='outdir',type=str,default='.')
parser.add_argument('--cut',metavar='cut',type=str,default=None)
parser.add_argument('--pt',metavar='pt',type=str,default='inc')
args = parser.parse_args()

figsdir = args.outdir
sname = argv[0]

argv = []
import ROOT as root
from PandaCore.Tools.Load import *
cut = '' 
plotlabel = '110 < m_{SD} < 210 GeV'
xcut = 'mSD>110 && mSD<210 && pt<1000'

Load('PandaCoreDrawers')
roc = root.ROCTool()

fin = root.TFile(figsdir+'/'+'hists.root')

roc.Logy()
roc.SetPlotRange(0.005,1)
roc.InitCanvas(.7,.2,.85,.45, False)
roc.SetFile(fin)
roc.c.AddPlotLabel(plotlabel,.2,.82,False,42,.04)

variables = [
#  ('top_ecfv14_bdt','ECF+#tau_{32}^{SD}+f_{rec} BDT v2',1,3),
#  ('top_ecfv12_bdt','ECF BDT v2',2,3),
#  ('top_ecfv8_bdt','ECF+#tau_{32}^{SD}+f_{rec} BDT',1,1),
  ('top_ecfv8_bdt','BDT',1,1),