Example #1
0
def ReadData(path_to_file, sname, selection=""):

    # Make data object
    dataobj = Data()

    # Get the data
    indata = root2array(filenames = path_to_file,
                        treename  = "tree",
                        branches = dataobj.t_varnames+dataobj.w_varnames,
                        selection = selection)

    # Add an extra field for the weights
    emptydata = []
    for i in range(len(m_weightnames)):
        emptydata.append(np.zeros(len(indata),dtype=float))
    indata = append_fields(base  = indata,
                           names = m_weightnames, 
                           data  = emptydata,
                           usemask = False,
                           dtypes=float)

    # Loop and calculate the weights
    weight_tool = WeightTool()
    for i in range(len(indata)):
        
        if sname == m_sname_corsika or sname == m_sname_corsikaLE:
            indata[i][m_weightnames[0]] = weight_tool.getWeight(indata[i],sname)
            indata[i][m_weightnames[1]] = 0
            indata[i][m_weightnames[2]] = 0
        elif sname == m_sname_data:
            indata[i][m_weightnames[0]] = 1
            indata[i][m_weightnames[1]] = 0
            indata[i][m_weightnames[2]] = 0

        else:
            indata[i][m_weightnames[0]] = weight_tool.getWeight(indata[i],m_sname_E2)
            indata[i][m_weightnames[1]] = weight_tool.getWeight(indata[i],m_sname_Conv)
            indata[i][m_weightnames[2]] = weight_tool.getWeight(indata[i],m_sname_Prompt)

    # Convert to record array
    #indata = rec2array(indata,fields=dataobj.t_varnames + ['w'])
    indata  = rec2array(indata)

    # Remove nan if exists
    indata = indata[~np.isnan(indata).any(axis=1)]

    # Get Entries
    nEntries = len(indata)
        
    # Set the targets
    # 1 -- signal
    # 0 -- background
    if sname == m_sname_E2: 
        targets = np.ones(nEntries,dtype=int)
    else:  
        targets = np.zeros(nEntries,dtype=int)

    # Set properties of data object
    dataobj.setData(indata)
    dataobj.setTargets(targets)
    dataobj.setName(sname)

    #print "---------------------------------------"
    #print dataobj.data
    #print dataobj.targets
    #print ""

    return dataobj
Example #2
0
dt_nugen = root2array(filenames = f_nugen,
                      branches=variables + weightvars,
                      treename = "tree",
                      selection = sel)

dt_corsika = root2array(filenames = f_corsika,
                        branches=variables + weightvars,
                        treename = "tree",
                        selection = sel+"&&primPDG >= 1000260530")

#-----------------------------------------#
# Calculate the weights
#-----------------------------------------#

wt = WeightTool()

w_nugen = np.zeros(len(dt_nugen),dtype=float)
for i in range(len(dt_nugen)):
    w_nugen[i] = wt.getE2(dt_nugen[i])

w_corsika = np.zeros(len(dt_corsika),dtype=float)
for i in range(len(dt_corsika)):
    w_corsika[i] = wt.getCorsika(dt_corsika[i])

#w_nugen = w_nugen.reshape((len(w_nugen),1))
#w_nugen = pd.DataFrame(w_nugen,columns=['w'])

#-----------------------------------------#
# Merge data
#-----------------------------------------#
Example #3
0
def ReadData(path_to_file, sname, selection=""):

    # Make data object
    dataobj = Data()

    # Get the data
    indata = root2array(filenames=path_to_file,
                        treename="tree",
                        branches=dataobj.t_varnames + dataobj.w_varnames,
                        selection=selection)

    # Add an extra field for the weights
    emptydata = []
    for i in range(len(m_weightnames)):
        emptydata.append(np.zeros(len(indata), dtype=float))
    indata = append_fields(base=indata,
                           names=m_weightnames,
                           data=emptydata,
                           usemask=False,
                           dtypes=float)

    # Loop and calculate the weights
    weight_tool = WeightTool()
    for i in range(len(indata)):

        if sname == m_sname_corsika or sname == m_sname_corsikaLE:
            indata[i][m_weightnames[0]] = weight_tool.getWeight(
                indata[i], sname)
            indata[i][m_weightnames[1]] = 0
            indata[i][m_weightnames[2]] = 0
        elif sname == m_sname_data:
            indata[i][m_weightnames[0]] = 1
            indata[i][m_weightnames[1]] = 0
            indata[i][m_weightnames[2]] = 0

        else:
            indata[i][m_weightnames[0]] = weight_tool.getWeight(
                indata[i], m_sname_E2)
            indata[i][m_weightnames[1]] = weight_tool.getWeight(
                indata[i], m_sname_Conv)
            indata[i][m_weightnames[2]] = weight_tool.getWeight(
                indata[i], m_sname_Prompt)

    # Convert to record array
    #indata = rec2array(indata,fields=dataobj.t_varnames + ['w'])
    indata = rec2array(indata)

    # Remove nan if exists
    indata = indata[~np.isnan(indata).any(axis=1)]

    # Get Entries
    nEntries = len(indata)

    # Set the targets
    # 1 -- signal
    # 0 -- background
    if sname == m_sname_E2:
        targets = np.ones(nEntries, dtype=int)
    else:
        targets = np.zeros(nEntries, dtype=int)

    # Set properties of data object
    dataobj.setData(indata)
    dataobj.setTargets(targets)
    dataobj.setName(sname)

    #print "---------------------------------------"
    #print dataobj.data
    #print dataobj.targets
    #print ""

    return dataobj