import numpy as np
import math

massmax = 1.2e9
massmin = 1.0e6
bins = 300
binwidth = math.log10(massmax/massmin)/bins

f=open('PopIII_haloes_xray-sources_distribution.txt','r')

fo = open('xray_source_histogram.txt','w')

sourcelist = []
emissionlist = []

line = f.readline()
while line != '':
   halomass = float(line.split()[0])
   emission = float(line.split()[1])
   sourcelist.append(halomass)
   emissionlist.append(emission)
   line = f.readline()

sourcecount = np.zeros(bins+1)
totalemission = np.zeros(bins+1)

for halomass,emission in zip(sourcelist,emissionlist):
   index = int((math.log10(halomass/massmin)+0.5*binwidth)/binwidth) 
   sourcecount[index] = sourcecount[index] + 1
   totalemission[index] = totalemission[index] + emission

cumulation = 0.0
bin = math.log10(massmin) + 0.5*binwidth
for count,emission in zip(sourcecount,totalemission):
    cumulation = cumulation + emission
    fo.write(str(10**bin)+" "+str(count)+" "+str(emission)+" "+str(cumulation)+"\n")
    bin =  bin + binwidth

f.close()
fo.close()


