
#!/usr/bin/python
import os
import struct


def GetMeanEnergy(DstPath):
    f = open(DstPath, "rb")

    data = f.read(23)
    NbPart = struct.unpack('i', data[2:6])[0]
#    Ifaisc = struct.unpack('d', data[6:14])[0]
#    Freq = struct.unpack('d', data[14:22])[0]

#    print ('NbPart: ',NbPart)
#    print ('Intensity: ', Ifaisc)
#    print ('Frequency: ',Freq)

    data = f.read(6*NbPart*8)
    
    Beam_Energy = struct.unpack(str(6*NbPart)+'d', data)[5::6]

    data = f.read(8)
    RestMass =  struct.unpack('d', data)[0]
    f.close()
    
    MeanEnergy = 0
    if len(Beam_Energy) > 0 : 
        MeanEnergy = sum(Beam_Energy)/len(Beam_Energy)
    else:
        raise Exception('No particles !')
    
    return MeanEnergy


#path=r'C:\Users\HaoLuo\TraceWin.exe C:\Users\HaoLuo\QD_DTL.ini dst_file1=C:\Users\HaoLuo\part_dtl1.dst’
#tracewin software,ini file,and dst file
MeanEnergy = GetMeanEnergy('/home/nchauvin/Work/temp/TraceWinTest/Distrib/part_dtl1.dst')
path =r'/home/nchauvin/Work/Codes/TraceWin QD_DTL.ini dst_file1=/home/nchauvin/Work/temp/TraceWinTest/Distrib/part_dtl1.dst energy1='+str(MeanEnergy)
os.system(path)
