Example #1
0
 def __init__(self, year, inData):
     print self.INPUT_PATH + '/fakeRate' + inData + year + '.root'
     self.num = getObjFromFile(
         self.INPUT_PATH + '/fakeRate' + inData + year + '.root',
         'fakeRate_num')
     self.denom = getObjFromFile(
         self.INPUT_PATH + '/fakeRate' + inData + year + '.root',
         'fakeRate_denom')
Example #2
0
def getReweightingFunction(data="PU_2016_36000_XSecCentral", useMC=None):

    # Data
    histoData = getObjFromFile(dataDir + data + '.root', 'pileup')
    histoData.Scale(1. / histoData.Integral())

    # MC
    if not useMC:
        mcProfile = ROOT.TH1D('mc', 'mc', 100, 0, 100)
        sys.stdout = open(os.devnull, 'w')
        from SimGeneral.MixingModule.mix_2016_25ns_Moriond17MC_PoissonOOTPU_cfi import mix
        sys.stdout = sys.__stdout__
        for i, value in enumerate(mix.input.nbPileupEvents.probValue):
            mcProfile.SetBinContent(i + 1, value)  # pylint: disable=E1101
    else:
        mcProfile = useMC
    mcProfile.Scale(1. / mcProfile.Integral())

    # Create reweighting histo
    reweightingHisto = histoData.Clone('reweightingHisto')
    reweightingHisto.Divide(mcProfile)

    # Define reweightingFunc
    def reweightingFunc(nTrueInt):
        return reweightingHisto.GetBinContent(
            reweightingHisto.FindBin(nTrueInt))

    return reweightingFunc
Example #3
0
    def __init__(self, inData, year):
        self.num = getObjFromFile(
            self.INPUT_PATH + '/fakeRate' + inData + year + '.root',
            'fakeRate_num')
        self.denom = getObjFromFile(
            self.INPUT_PATH + '/fakeRate' + inData + year + '.root',
            'fakeRate_denom')
        self.FR = self.num.Clone()
        self.FR.Divide(self.denom)

        self.maxpt = self.FR.GetXaxis().GetBinUpEdge(
            self.FR.GetXaxis().GetLast())
        self.maxeta = self.FR.GetYaxis().GetBinUpEdge(
            self.FR.GetYaxis().GetLast())

        self.lastptbincenter = self.FR.GetXaxis().GetBinCenter(
            self.FR.GetXaxis().GetLast())
        self.lastetabincenter = self.FR.GetYaxis().GetBinCenter(
            self.FR.GetYaxis().GetLast())
Example #4
0
 def getHist(self, subjob, name, subPath = None):                                            
     if subPath is None:             subPath = self.path
     if subPath.endswith('.root'):
         hCounter                    = getObjFromFile(subPath, 'blackJackAndHookers/'+name)
         return hCounter
     else:
         hCounter = None
         for f in self.arrangeFilesInSubjobs()[subjob]:
             if hCounter is None:     hCounter = self.getHist(subjob,name, f)
             else:                    hCounter.Add(self.getHist(subjob, name, f))
         return hCounter
Example #5
0
 def getHist(self, name, subPath=None):
     if subPath is None: subPath = self.path
     if subPath.endswith('.root'):
         hCounter = getObjFromFile(subPath, 'blackJackAndHookers/' + name)
         return hCounter
     else:
         hCounter = None
         listOfFiles = glob.glob(self.path + '/*.root')
         print self.path + '/*.root'
         for f in listOfFiles:
             if hCounter is None: hCounter = self.getHist(name, f)
             else: hCounter.Add(self.getHist(name, f))
         return hCounter
Example #6
0
    def __init__(self, name, *args):
        self.name = name
        self.efficiency_num = []
        self.efficiency_denom = None
        self.input_path = None
        self.bins = None
        self.workingPoints = None
        if len(
                args
        ) == 2:  #if (bins, workingpoints) is given, instantiate new histograms
            self.bins = args[0]
            self.workingPoints = args[1]

            for i, WP in enumerate(self.workingPoints):
                self.efficiency_num.append(
                    ROOT.TH1D(name + '_' + WP + '_num',
                              name + '_' + WP + '_num',
                              len(self.bins) - 1, self.bins))
                self.efficiency_num[i].Sumw2()
            self.efficiency_denom = ROOT.TH1D(name + '_denom', name + '_denom',
                                              len(self.bins) - 1, self.bins)
            self.efficiency_denom.Sumw2()

        elif len(args) == 1 and isinstance(args[0], str):
            self.input_path = args[0]
            self.workingPoints = []

            f = ROOT.TFile(self.input_path)
            names = [key.GetName() for key in f.GetListOfKeys()]
            f.Close()
            for n in names:
                if '_denom' in n:
                    self.efficiency_denom = getObjFromFile(self.input_path, n)
                elif '_num' in n:
                    self.efficiency_num.append(
                        getObjFromFile(self.input_path, n))
                    self.workingPoints.append(n.split('_')[-2])
            self.bins = getLowEdges(self.efficiency_denom)
Example #7
0
    def __init__(self, name, *args):
        self.name = name
        self.eff_numerator = None
        self.eff_denominator = None
        self.misid_numerator = None
        self.misid_denominator = None
        self.WP = None
        self.path = None

        if args and isinstance(args[0], list):
            self.WP = args[0]
            self.eff_numerator = TH1D(name + '_eff_numerator',
                                      name + '_eff_numerator', len(self.WP), 0,
                                      len(self.WP))
            self.misid_numerator = TH1D(name + '_misid_numerator',
                                        name + '_misid_numerator',
                                        len(self.WP), 0, len(self.WP))
            self.eff_denominator = TH1D(name + '_eff_denominator',
                                        name + '_eff_denominator', 1, 0, 1)
            self.misid_denominator = TH1D(name + '_misid_denominator',
                                          name + '_misid_denominator', 1, 0, 1)

            self.eff_numerator.Sumw2()
            self.misid_numerator.Sumw2()
            self.eff_denominator.Sumw2()
            self.misid_denominator.Sumw2()
        elif args and isinstance(args[0], str):
            self.path = args[0]
            self.eff_numerator = getObjFromFile(self.path,
                                                name + '_eff_numerator')
            self.eff_denominator = getObjFromFile(self.path,
                                                  name + '_eff_denominator')
            self.misid_numerator = getObjFromFile(self.path,
                                                  name + '_misid_numerator')
            self.misid_denominator = getObjFromFile(
                self.path, name + '_misid_denominator')
        else:
            pass
Example #8
0
    'ptTau': 'Taus',
    'etaTau': 'Taus',
    'Mll': 'Events',
    'met': 'Events'
}
log_map = {'ptTau': False, 'etaTau': True, 'Mll': True, 'met': True}

for var in varNames:
    predicted = []
    observed = None
    store_data_observed = None
    legendNames = []
    for sample in sampleNames:
        f = glob.glob(input_dir + '/' + sample + '/*' + var + '.root')
        if sample == 'Data_' + args.year:
            observed = getObjFromFile(f[0], 'inData_' + var)
            store_data_observed = getObjFromFile(f[0],
                                                 'inData_' + var + '_sideBand')
        else:
            tmp_pred = getObjFromFile(f[0], 'inData_' + var)
            tmp_pred_corr = getObjFromFile(f[0], 'inData_' + var + '_sideBand')
            tmp_pred.Add(tmp_pred_corr, -1.)
            predicted.append(tmp_pred)
            legendNames.append(sample)
    predicted.append(store_data_observed)
    legendNames.append('Nonprompt prediction')

    plt.plotDataVSMC(observed,
                     predicted,
                     xtitle_map[var],
                     legendNames,
Example #9
0
xtitle_map = {'ptTau': 'P_{T}(#tau) [GeV]', 'etaTau': '#eta(#tau)', 'Mll': 'M(ll) [GeV]', 'met':'E_{T}^{miss} [GeV]'}
ytitle_map = {'ptTau': 'Taus', 'etaTau': 'Taus', 'Mll': 'Events', 'met':'Events'}
log_map = {'ptTau': False, 'etaTau': False, 'Mll': False, 'met':False}
categ_map = {'Categ_C': 'C: OSSF + #tau', 'Categ_D': 'D: OSOF + #tau', 'Categ_E': 'E: SS + #tau' , 'Categ_F':'F: e/#mu + #tau#tau', 'Check': 'FR measurement region'}

makeDirIfNeeded(args.output_dir+'/'+args.sample)
file_paths = glob.glob(args.input_dir + '/' + args.sample + '/*.root')

year = 2016
if '2017' in args.input_dir:
    year = 2017
elif '2018' in args.input_dir:
    year = 2018

for f in file_paths:
    print f
    h_name = f.rsplit('/', 1)[1]
    h_name = h_name.split('.')[0]
    print h_name
    split_names = h_name.rsplit('_', 1) 
    categ_name = split_names[0]
    var_name = split_names[1]
    extraText = []
    if categ_name in categ_map.keys():
        extraText.append(plt.extraTextFormat(categ_map[categ_name], 0.5, 0.9))
    
    dist_observed = getObjFromFile(f, h_name)
    dist_predicted = getObjFromFile(f, h_name+'_sideBand')
    plt.plotClosure(CleanNegativeBins(dist_observed), CleanNegativeBins(dist_predicted), xtitle_map[var_name], ytitle_map[var_name], args.sample, extraText, args.output_dir + '/' +args.sample+'/'+h_name, year, yLog=log_map[var_name])

Example #10
0
background_hists_comb = []
signal_hists_comb = []

ntau = ['singletau', 'ditau']
#scales = (1./280., 1./281., 1./237)
scales = (1., 1., 1.)
for n in ntau:
    tmp_mu_hists_bkgr = []
    tmp_mu_hists_sig = []
    for mu_cut_index in range(NUMBER_OF_MU_WP):
        tmp_hists = []
        for bkgr in background_names:
            tmp_hists.append(
                getObjFromFile(
                    basefolderInput + '/Combined/' + bkgr + '_' + n + '_' +
                    str(mu_cut_index) + '.root',
                    'combined_hist' + bkgr + n + str(mu_cut_index)))
        tmp_mu_hists_bkgr.append(tmp_hists)
        tmp_hists = []
        for sig, scale in zip(signal_names, scales):
            hist = getObjFromFile(
                basefolderInput + '/Combined/' + sig + '_' + n + '_' +
                str(mu_cut_index) + '.root',
                'combined_hist' + sig + n + str(mu_cut_index))
            hist.Scale(scale)
            tmp_hists.append(hist)
        tmp_mu_hists_sig.append(tmp_hists)
    background_hists_comb.append(tmp_mu_hists_bkgr)
    signal_hists_comb.append(tmp_mu_hists_sig)

for n in ntau:
Example #11
0
 def load_fakerate(self, name, path):
     self.misid_numerator = getObjFromFile(path, name + '_misid_numerator')
     self.misid_denominator = getObjFromFile(path,
                                             name + '_misid_denominator')
Example #12
0
 def load_efficiency(self, name, path):
     self.eff_numerator = getObjFromFile(path, name + '_eff_numerator')
     self.eff_denominator = getObjFromFile(path, name + '_eff_denominator')
Example #13
0
    '/user/lwezenbe/private/PhD/Code/TauStudy/Significance/Data/' +
    args.inputFile + '.conf')
sample = Sample.getSampleFromList(sampleList, args.sampleName)

#Is this sample signal or background
isSignal = False
keywords = ['SMS', 'TChi', 'Slep', 'Snu']
for key in keywords:
    if key in sample.name: isSignal = True

#Initialize chain
Chain = sample.initTree()

#If SUSY, load in the hCounterSUSY
if isSignal:
    hCounterSUSY = getObjFromFile(sample.path, 'hCounterSUSY')

#Initialize event selector
import eventSelector
evSel = eventSelector.eventSelector(Chain, int(args.ele_cut_index),
                                    int(args.mu_cut_index))

#Initialize histograms to save
#These consist of the total number of events that are left after performing the event selection
#Each bin represents a different Old MVA Iso working point
Single_Tau_Output = ROOT.TH1D('singletau', 'singletau',
                              len(evSel.IsoWorkingPoints), 0,
                              len(evSel.IsoWorkingPoints))
Di_Tau_Output = ROOT.TH1D('ditau', 'ditau', len(evSel.IsoWorkingPoints), 0,
                          len(evSel.IsoWorkingPoints))
basefolder = '/storage_mnt/storage/user/lwezenbe/private/PhD/Results/TauStudy/Significance/Histos'