In [1]:
"""
Example 3

- calculate brilliance curves of 4 different BLs for comparison
"""

import sys
isjupyter = "ipykernel" in sys.modules

import spectra 
if isjupyter:
    spectra.Start(mode="c") 
    import plotly.io as pio
    pio.renderers.default = "notebook"
else:
    spectra.Start(src="l") 

spectra.Open("sample.json") 

ublnames = ["SX-BL", "X-ray-BL"]
bmblnames = ["BM-BL", "Wiggler-BL"]

# brilliance curve for undulator beamlines
for ubl in ublnames:
    spectra.SelectBL(ubl)
    spectra.SelectCalculation("far", "Kvalue", "simpcalc", "allharm")
    spectra.StartCalculation(folder="./output", prefix=ubl, serial=-1)

# spectrum for BM/Wiggler beamlines
for bmbl in bmblnames:
    spectra.SelectBL(bmbl)
    spectra.SelectCalculation("far", "energy", "simpcalc")
    spectra.StartCalculation(prefix=bmbl, serial=-1)

# compare the brilliance
if isjupyter:
    from IPython.display import display, HTML
    display(HTML("<h2>Brilliance curves for different sources"))
    spectra.ConfigurePlot(xscale="Logarithmic", yscale="Logarithmic")
    spectra.PostProcessCLI.Plot(data=[*ublnames, *bmblnames], item="GA. Brilliance")
else:
    spectra.ShowPostProcessor()
    spectra.PostProcess.Plot("GA. Brilliance")
    spectra.PostProcess.ComparativePlot(*ublnames, *bmblnames)
    spectra.PostProcess.PlotScale(x="log", y="log")

if not isjupyter:
    input("Completed. Press enter to exit. ")
spectra.Exit()
                                                  

Brilliance curves for different sources

In [ ]: