This notebook was created by Svitozar Serkez. Source and license info is on GitHub. August 2016.

Tutorial N6. Genesis postprocessor.

This example will cover the following topics:

  • Analyze the single run results
  • Analyze the statistical properties from many runs

Requirements

  • invtap_tdp\ - Folder with experimental results.

NB... there is software like xgenesis ....

1) also pyton-based (same language) 2) already included in OCELOT

why write again?

Import of modules


In [1]:
# the output of plotting commands is displayed inline within frontends, 
# directly below the code cell that produced it
%matplotlib inline
from __future__ import print_function
# this python library provides generic shallow (copy) and deep copy (deepcopy) operations 
from copy import deepcopy

# import from Ocelot graphical modules
import sys, os
from ocelot import *
from ocelot.utils.xfel_utils import *
from ocelot.gui.accelerator import *
from ocelot.gui.genesis_plot import *
#from ocelot.optics.elements import Filter_freq

import numpy as np
from copy import copy
#import matplotlib.pyplot as plt
# load beam distribution


initializing ocelot...

Setting project directory


In [2]:
proj_dir = 'materials/invtap_tdp'
out_file = proj_dir + '/run_0' + '/run.0.s1.gout'

In [3]:
out = readGenesisOutput(out_file)

In [4]:
gen_outplot_e(out)
plt.show()


    plotting Electrons

In [5]:
gen_outplot_ph(out)
plt.show()


    plotting Radiation

In [6]:
gen_outplot_z(out,z=inf)
plt.show()


    plotting bunch profile at 42.84 [m]

Genesis Field file dfl

can be read with readRadiationFile function


In [7]:
dfl=readRadiationFile(out_file+'.dfl', out.ncar)


    reading radiation file
      done

In [8]:
gen_outplot_dfl(dfl, out)
plt.show()


    plotting dfl file
      E_pulse= 1.823e-07 J
      done in 0.73 seconds

In [9]:
gen_outplot_dfl(dfl, out, freq_domain=True,far_field=True)
plt.show()


    plotting dfl file
      calculating spectrum
        done in 0.88 seconds
      calculating far field
        done in 2.44 seconds
      done in 4.03 seconds

In [4]:
dpa=read_particle_file(out_file+'.dpa',out('nbins'),out('npart'))
dist=dpa2dist(out,dpa)

In [5]:
plot_dist(dist, showfig=True)


    plotting dist file

Statistical properties postprocessing

since the SASE FEL radiation properties change shot-to-shot, one needs to visualize the averaged FEL radiation parameters


In [4]:
# this function plots the averaged properties of FEL radiation
gen_stat_plot(proj_dir,run_inp=[],stage_inp=[1],param_inp=[],s_param_inp=['p_int'],z_param_inp=['p_int','spec'],dfl_param_inp=[],s_inp=['max'],z_inp=['end'], savefig=0, saveval=0, showfig=1)


 
    processing runs [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29] of stage 1
['p_int', 'increment', 'p_mid', 'phi_mid', 'r_size', 'el_energy', 'bunching', 'xrms', 'yrms', 'error', 'e-spread', 'spec', 'phi_mid_disp', 'rad_t_size_weighted']
    processing S parameters ['p_int']
    processing Z parameters ['p_int', 'spec']
Out[4]:
[<matplotlib.lines.Line2D at 0xa47dcf8>]

In [13]:
gen_corr_plot(proj_dir,run_inp=[],p1=('rad_t_size_weighted',1,inf,'max'),p2=('p_int',4,inf,'max'),saveval=1, showfig=True)


 
    reading output file "run.0.s1.gout"
 
    reading output file "run.1.s1.gout"
 
    reading output file "run.2.s1.gout"
 
    reading output file "run.3.s1.gout"
 
    reading output file "run.4.s1.gout"
 
    reading output file "run.5.s1.gout"
 
    reading output file "run.6.s1.gout"
 
    reading output file "run.7.s1.gout"
 
    reading output file "run.8.s1.gout"
 
    reading output file "run.9.s1.gout"
 
    reading output file "run.10.s1.gout"
 
    reading output file "run.11.s1.gout"
 
    reading output file "run.12.s1.gout"
 
    reading output file "run.13.s1.gout"
 
    reading output file "run.14.s1.gout"
 
    reading output file "run.15.s1.gout"
 
    reading output file "run.16.s1.gout"
 
    reading output file "run.17.s1.gout"
 
    reading output file "run.18.s1.gout"
 
    reading output file "run.19.s1.gout"
 
    reading output file "run.20.s1.gout"
 
    reading output file "run.21.s1.gout"
 
    reading output file "run.22.s1.gout"
 
    reading output file "run.23.s1.gout"
 
    reading output file "run.24.s1.gout"
 
    reading output file "run.25.s1.gout"
 
    reading output file "run.26.s1.gout"
 
    reading output file "run.27.s1.gout"
 
    reading output file "run.28.s1.gout"
 
    reading output file "run.29.s1.gout"
 
    reading output file "run.0.s4.gout"
 
    reading output file "run.1.s4.gout"
 
    reading output file "run.2.s4.gout"
 
    reading output file "run.3.s4.gout"
 
    reading output file "run.4.s4.gout"
 
    reading output file "run.5.s4.gout"
 
    reading output file "run.6.s4.gout"
 
    reading output file "run.7.s4.gout"
 
    reading output file "run.8.s4.gout"
 
    reading output file "run.9.s4.gout"
 
    reading output file "run.10.s4.gout"
 
    reading output file "run.11.s4.gout"
 
    reading output file "run.12.s4.gout"
 
    reading output file "run.13.s4.gout"
 
    reading output file "run.14.s4.gout"
 
    reading output file "run.15.s4.gout"
 
    reading output file "run.16.s4.gout"
 
    reading output file "run.17.s4.gout"
 
    reading output file "run.18.s4.gout"
 
    reading output file "run.19.s4.gout"
 
    reading output file "run.20.s4.gout"
 
    reading output file "run.21.s4.gout"
 
    reading output file "run.22.s4.gout"
 
    reading output file "run.23.s4.gout"
 
    reading output file "run.24.s4.gout"
 
    reading output file "run.25.s4.gout"
 
    reading output file "run.26.s4.gout"
 
    reading output file "run.27.s4.gout"
 
    reading output file "run.28.s4.gout"
 
    reading output file "run.29.s4.gout"
      saving corr_rad_t_size_weighted_s1_atinf_max__p_int_s4_atinf_max.txt
Out[13]:
<matplotlib.collections.PathCollection at 0xa4cff60>

In [ ]:


In [ ]:


In [ ]:


In [ ]:
a=('ad',2,'ersre',5)
str(a)

In [ ]:
b='_'.join(('1',2,'3'))

In [ ]:
for i in a: i=str(i)

In [1]:
aa={}

In [2]:
aa['r']='gg'

In [3]:
aa


Out[3]:
{'r': 'gg'}

In [ ]:


In [11]:
dir(out)


Out[11]:
['E',
 'I',
 '__call__',
 '__doc__',
 '__init__',
 '__module__',
 'aw',
 'beam_charge',
 'bunching',
 'dt',
 'e_spread',
 'el_e_spread',
 'el_energy',
 'energy',
 'error',
 'filename',
 'freq_ev',
 'freq_ev1',
 'freq_lamd',
 'increment',
 'leng',
 'max_power',
 'n',
 'nSlices',
 'nZ',
 'ncar',
 'p_int',
 'p_mid',
 'parameters',
 'path',
 'phi',
 'phi_mid',
 'phi_mid_disp',
 'power',
 'power_int',
 'power_z',
 'qfld',
 'r_size',
 'rad_t_size_weighted',
 's',
 'sliceKeys',
 'sliceKeys_used',
 'sliceValues',
 'sn_Imax',
 'spec',
 't',
 'xrms',
 'yrms',
 'z',
 'zSlice']

In [ ]:


In [ ]: