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
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 #-----------------------------------------#
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