#ifndef PULSETRAIN_H
#define PULSETRAIN_H
#include<complex>
#include<vector>
typedef std::complex<double> Creal;

class Pulsetrain {

private:
	double lambda = 0;			// Wavelength
	double omega = 0;			// Angular Frequency
	double E0 = 0;				// field strength
	std::vector<double> t0;		// times of maxima
	double FWHM = 0;			// Full width at half maximum
	double tau = 0;				// width
	double phi = 0;				// phase
	double tau_envelope = 0;
	double t0_envelope = 0;

// ------- FUNCTIONS -------
public:
	Pulsetrain();

	// Init Pulse [a.u] with given parameters [SI]
	Pulsetrain(double lambda_SI, double I0_SI, std::vector<double> t0_SI, double phi_SI, double FWHM_SI, double t0_env, double FWHM_env);
	~Pulsetrain();

	// set Pulsetrain
	void set(double lambda_SI, double I0_SI, std::vector<double> t0_SI, double phi_SI, double FWHM_SI, double t0_env, double FWHM_env);

	// Calculate field for given pulse [a.u]
	double getField(double t_au);


};
#endif
