#ifndef __SEGMENTPISTONSENSOR_H__ #define __SEGMENTPISTONSENSOR_H__ #ifndef __SOURCE_H__ #include "source.h" #endif #ifndef __IMAGING_H__ #include "imaging.h" #endif #ifndef __RAYTRACING_H__ #include "rayTracing.h" #endif #ifndef __GMTMIRRORS_H__ #include "gmtMirrors.h" #endif struct segmentPistonSensor { float ri, ro; float lenslet_height; float lenslet_size; complex_amplitude lenslet; mask lenslet_mask; source lenslet_src; float dispersion; int N_LAMBDA; int N_GS; float pixel_scale; float field_of_view; imaging camera; imaging *camera_array; float nyquist_factor; int BIN_IMAGE; int N_PX_LENSLET, N_PX_LENSLET2; int N_PX, N_PX2; int N_PX_IMAGE; int N_LENSLET, N_LENSLET2; imaging FFT; source fft_src; float *fft_phase; mask fft_mask; int D_px, D_px2; float m2px, R, lambda0, spectral_bandwidth; void setup(gmt_m1 *M1, source *src, float dispersion, float field_of_view, float _nyquist_factor_); void setup(gmt_m1 *M1, source *src, float dispersion, float field_of_view, float _nyquist_factor_, int _BIN_IMAGE_); void setup(gmt_m1 *M1, source *src, float _lenslet_size_, float dispersion, float field_of_view, float _nyquist_factor_); void setup(gmt_m1 *M1, source *src, float _lenslet_size_, float dispersion, float field_of_view, float _nyquist_factor_, int _BIN_IMAGE_); void setup_alt(gmt_m1 *M1, source *src, float dispersion, float field_of_view, float _nyquist_factor_, int _BIN_IMAGE_); void cleanup(void); void cleanup_alt(void); void propagate(source *src); void propagate(source *src, float middle_mask_width); void propagate_alt(source *src); void readout(float exposureTime, float readoutNoiseRms, float nBackgroundPhoton); void fft(void); void info(void); }; #endif // __SEGMENTPISTONSENSOR_H__