Beispiel #1
0
def PrepareSample(sample, btagregion, eventcategory):
    ievents = data.root2pandas(sample, 'bbbbTree')
    events = selector.eventselection(ievents, btagregion, eventcategory)
    return events
print "      *", ggf2valbkgparams
vbfvalbkgparams = ast.literal_eval(
    cfgparser.get("configuration", "vbfvalbkgparams"))
print "    -The vbf-hh ana background parameters (trees, learning rate, max depth, min sample leaf, subsample, randomseed):"
print "      *", vbfvalbkgparams

##########Make background miodel
print "[INFO] Making background model . . . "
#Create folder to save training information
os.system("mkdir bkgtraining")
os.system("mkdir bkgtraining/mymodels")

#Get data and create panda dataframes with specific variables, a.k.a. slicing the data. Then, create background model based on control region data
datalist = []
datalist.append('outputskims/%s/%s/SKIM_Data.root' % (case, directory))
dataset = data.root2pandas(datalist, 'bbbbTree')

#classifierparameters
classifierparams = [40, 0.3, 2020]

starttime = time.time()
dataset = RunReweightingModel(dataset, vbfanabkgparams, classifierparams, case,
                              directory, tag, False, True, 0)

##Save everything in a root file
print "[INFO] Saving background model weight in file . . . "
data.pandas2root(
    dataset, 'bbbbTree',
    'outputskims/%s/%s/SKIM_GGFKILLER_BKG_MODEL_tree.root' % (case, directory))
data.roothist2root(
    datalist, 'eff_histo',
Beispiel #3
0
        datasetwithweights, 'bbbbTree',
        'outputskims/%s/SKIM_BKG_MODEL_%s_tree.root' % (case, tag))
    data.roothist2root(
        'Data', '%s' % (case), 'eff_histo',
        'outputskims/%s/SKIM_BKG_MODEL_%s_hist.root' % (case, tag))
    os.system(
        "hadd -f outputskims/%s/SKIM_BKG_MODEL_%s.root outputskims/%s/SKIM_BKG_MODEL_%s_tree.root outputskims/%s/SKIM_BKG_MODEL_%s_hist.root"
        % (case, tag, case, tag, case, tag))
    os.system(
        "rm outputskims/%s/SKIM_BKG_MODEL_%s_tree.root outputskims/%s/SKIM_BKG_MODEL_%s_hist.root"
        % (case, tag, case, tag))


#############ML CODE IS BELOW ######################
#Get data and create panda dataframes with specific variables, a.k.a. slicing the data AND create model
dataset2016 = data.root2pandas('outputskims/2016case2/SKIM_Data.root',
                               'bbbbTree')
RunReweightingModel(dataset2016, '2016case2')
dataset2017 = data.root2pandas('outputskims/2017case2/SKIM_Data.root',
                               'bbbbTree')
RunReweightingModel(dataset2017, '2017case2')
dataset2018 = data.root2pandas('outputskims/2018case2/SKIM_Data.root',
                               'bbbbTree')
RunReweightingModel(dataset2018, '2018case2')

#Get data and create panda dataframes with specific variables, a.k.a. slicing the data AND create model (2016 analysis selection)
dataset2016analysis = data.root2pandas('outputskims/2016case3/SKIM_Data.root',
                                       'bbbbTree')
RunReweightingModel(dataset2016analysis, '2016case3')

#Get data and create panda dataframes with specific variables, a.k.a. slicing the data AND create model but infected with signal
vbfsignal2016_8000 = data.root2pandas(
Beispiel #4
0
def AddGGFMVA(skim, ggfmvafile):
    # open picked file and use it back again
    #print '  *Adding the ggfmva in %s'%ggfmvafile
    infile = open(ggfmvafile, 'rb')
    ggfmva = pickle.load(infile)
    infile.close()
    variables = ggfmva.get('vars')
    X = skim[list(set(variables))]
    y_pred = ggfmva.get('model').predict_proba(X)[:, 1]
    return y_pred


def TreeDevelopment(sample, filelist, columns_input, case, directory, lepveto,
                    ggfkillerfile, ggfmva1file, ggfmva2file):
    #Make initial skim using defined branches
    skim = data.root2pandas(filelist, 'bbbbTree', branches=columns_input)
    #Veto on leptons
    if lepveto == True:
        skim = skim[(skim.IsolatedElectron_Multiplicity == 0)
                    & (skim.IsolatedMuon_Multiplicity == 0)]
    #Create two new columns with mHH (one for SM(1), other for BSM(2) )
    skim['HH_m_1'] = skim['HH_m']
    skim['HH_m_2'] = skim['HH_m']
    #Rotation variables:
    theta = math.atan(-float(1 / 1.05))
    skim['H1_m_rot'] = skim['H1_m'] * math.cos(theta) - (skim['H2_m'] *
                                                         math.sin(theta))
    skim['H2_m_rot'] = skim['H1_m'] * math.sin(theta) + (skim['H2_m'] *
                                                         math.cos(theta))
    #Additional variables for the MVAs (abs values, combinations tcs)
    skim['abs_JJ_eta'] = abs(skim['JJ_eta'])