# # Use a sample class and some helper functions to initalize sample informtion # Hides most of the dirty programming stuff from the main scripts # Important functions # createSampleList: imports a tuple file like ../data/tuples.conf with sample name, path, version, jobSplitting and x-sec # createStack: imports both a tuple and style file like ../data/stack.conf, returns as [[data1, data2,...], [mc1, mc2, mc3,..],...] # getSampleFromList: access sample instance using its name # getSampleFromStack: access sample instance using its name # sample.initTree: get chain # sample.eventLoop: loops over events from the chain (given selection string, job splitting) # from ttg.tools.logger import getLogger log = getLogger() import glob, os, copy, ROOT, uuid, socket, getpass from ttg.tools.progressBar import progressbar import ttg.tools.style as styles # # Sample class # class Sample: def __init__(self, name, path, productionLabel, splitJobs, xsec): self.name = name self.path = path self.isData = (xsec == 'data') self.xsec = eval(xsec) if not self.isData else None self.productionLabel = productionLabel
#! /usr/bin/env python import argparse argParser = argparse.ArgumentParser(description="Argument parser") argParser.add_argument( '--logLevel', action='store', default='INFO', nargs='?', choices=['CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'TRACE'], help="Log level for logging") args = argParser.parse_args() from ttg.tools.logger import getLogger log = getLogger(logLevel=args.logLevel) from ttg.tools.helpers import addHist from ttg.plots.plot import getHistFromPkl, normalizeBinWidth from ttg.plots.combineTools import writeCard, runFitDiagnostics, runSignificance, runImpacts from ttg.plots.systematics import systematics, linearSystematics import os, ROOT, shutil ROOT.gROOT.SetBatch(True) from math import sqrt samples = [('TTGamma', None), ('TTJets', 5.5), ('ZG', 10), ('DY', 10), ('other', 50)] # # Helper functions
argParser = argparse.ArgumentParser(description="Argument parser") argParser.add_argument( '--logLevel', action='store', default='INFO', nargs='?', choices=['CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'TRACE'], help="Log level for logging") args = argParser.parse_args() from ttg.plots.plot import Plot, getHistFromPkl from ttg.tools.helpers import getResultsFile from ttg.tools.logger import getLogger, logLevel log = getLogger(args.logLevel) import pickle, os, ROOT, shutil ROOT.gROOT.SetBatch(True) dilep = getHistFromPkl( getResultsFile('sigmaIetaIeta-ttbar', 'noData', 'llg-looseLeptonVeto-mll40-offZ-llgNoZ-njet2p-deepbtag1p'), 'photon_chargedIso', ['TTJets', 'fail']) singlelep = getHistFromPkl( getResultsFile('sigmaIetaIeta-ttbar-singleLep', 'noData', 'lg-looseLeptonVeto-njet4p-deepbtag1p'), 'photon_chargedIso', ['TTJets', 'fail']) import ttg.tools.style as styles