ceo 0.1.0

CUDA Engined Optics
Documentation
#ifndef __SHACKHARTMANN__
#define __SHACKHARTMANN__

#ifndef __UTILITIES_H__
#include "utilities.h"
#endif

#ifndef __SOURCE_H__
#include "source.h"
#endif

#ifndef __IMAGING_H__
#include "imaging.h"
#endif

#ifndef __CENTROIDING_H__
#include "centroiding.h"
#endif

struct shackHartmann {

  int N_WFS;
  int N_SIDE_LENSLET, N_LENSLET;
  int N_ACTUATOR;
  int N_SLOPE;
  float *d__c0, *d__cx0, *d__cy0;
  mask valid_lenslet;
  mask valid_actuator;
  imaging camera;
  centroiding data_proc;
  int DFT_osf;
  float lenslet_pitch;
  float pixel_scale;
  float intensity_threshold;
  float slopes_gain;
  void setup(int N_SIDE_LENSLET, int N_PX_LENSLET, float d,
             int DFT_osf_, int N_PX_IMAGE, int BIN_IMAGE, int N_GS);
  void cleanup(void);
  void identify_valid_lenslet(source *src, float threshold);
  void set_reference_slopes(source *src);
  void calibrate(source *src, float threshold);
  void propagate(source *gs);
  void propagate(source *gs, int *maks);
  void process(void);
  void analyze(source *gs);
  void get_valid_reference_slopes(float *d__valid_slopes);
  void get_valid_slopes(float *d__valid_slopes);
  void masked_slopes(float *d__valid_slopes, mask *lenslet_mask);
  void get_valid_slopes_norm(float *d__valid_slopes_norm);
  float* get_frame_dev_ptr(void);
  void update_lenslet(float *filter);
};
 
struct geometricShackHartmann {

  int N_WFS;
  int N_SIDE_LENSLET, N_LENSLET;
  int N_ACTUATOR;
  int N_SLOPE;
  float *d__c0, *d__cx0, *d__cy0;
  mask valid_lenslet;
  mask valid_actuator;
  imaging camera;
  centroiding data_proc;
  int DFT_osf;
  float lenslet_pitch;
  float pixel_scale;
  float intensity_threshold;
  float slopes_gain;
  float *_d__c_, *_d__cx_, *_d__cy_;
  int N_FRAME;
  cublasHandle_t handle;
  void setup(int N_SIDE_LENSLET, float d, int N_GS);
  void cleanup(void);
  void identify_valid_lenslet(source *src, float threshold);
  void set_reference_slopes(source *src);
  void calibrate(source *src, float threshold);
  void propagate(source *gs);
  void propagate(source *gs, int *maks);
  void process(void);
  void analyze(source *gs);
  void get_valid_reference_slopes(float *d__valid_slopes);
  void get_valid_slopes(float *d__valid_slopes);
  void masked_slopes(float *d__valid_slopes, mask *lenslet_mask);
  void get_valid_slopes_norm(float *d__valid_slopes_norm);
  void folded_slopes(float *d__valid_slopes, mask *lenslet_mask);
  void reset(void);
};

struct tt7 {

  int N_WFS;
  int N_SIDE_LENSLET, N_LENSLET;
  int N_ACTUATOR;
  int N_SLOPE;
  float *d__c0, *d__cx0, *d__cy0;
  mask valid_lenslet;
  mask valid_actuator;
  imaging camera;
  centroiding data_proc;
  int DFT_osf;
  float lenslet_pitch;
  float pixel_scale;
  float intensity_threshold;
  float slopes_gain;
  void setup(int N_SIDE_LENSLET, int N_PX_LENSLET, float d,
             int DFT_osf_, int N_PX_IMAGE, int BIN_IMAGE, int N_GS);
  void cleanup(void);
  void identify_valid_lenslet(source *src, float threshold);
  void set_reference_slopes(source *src);
  void calibrate(source *src, float threshold);
  void propagate(source *gs);
  void propagate(source *gs, int *maks);
  void process(void);
  void analyze(source *gs);
  void get_valid_reference_slopes(float *d__valid_slopes);
  void get_valid_slopes(float *d__valid_slopes);
  void masked_slopes(float *d__valid_slopes, mask *lenslet_mask);
  void get_valid_slopes_norm(float *d__valid_slopes_norm);
  float* get_frame_dev_ptr(void);
  void update_lenslet(float *filter);
};

#endif // __SHACKHARTMANN__