Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
1.1 kB
1
Indexable
Never
def hermitian_pulse(pol_num, bandwidth, centre, FWHM, num = 1000, x_type = "freq"):
    '''
    Creates spectrum with \"pol-num\"-th Hermit-Gauss intensity mode. "bandwidth" is a tuple with start and the end of the entire spectrum. 
    "centre" and "FWHM" characterize the pulse itself. The spectrum is composed of \"num\" = 1000 points on default.
    '''

    # exceptions

    if x_type not in ["freq", "wl", "time"]:
        raise Exception("x_type must be either \"freq\", \"nm\" or \"time\"")

    # modules

    import spectral_analysis as sa
    from scipy.special import hermite as hermite_gen

    # and calculations

    hermite_pol = hermite_gen(pol_num)
    def gauss(x, mu, std):
        return 1/(std*np.sqrt(2*np.pi))*np.exp(-(x-mu)**2/(2*std**2))
    
    X = np.linspace(bandwidth[0], bandwidth[1], num = num)
    sd = FWHM/2.355
    Y_gauss = gauss(X, centre, sd)
    Y_hermite = hermite_pol(2*(X-centre)/FWHM)
    Y_out = Y_hermite*Y_gauss

    spectrum_out = sa.spectrum(X, Y_out, "freq", "intensity")
    spectrum_out.normalize(norm = "L2", shift_to_zero = False)

    return spectrum_out