18 #ifndef _SUTRA_CENTROIDER_H_
19 #define _SUTRA_CENTROIDER_H_
33 template <
class Tin,
class Tout>
73 template <
typename Q = Tout>
74 typename std::enable_if<std::is_same<Q, float>::value,
int>::type
75 apply_TT_filter_impl(Tout *centroids, std::true_type);
76 int apply_TT_filter_impl(Tout *centroids, std::false_type);
97 int load_img(Tin *img,
int m,
int n,
int location);
107 virtual int get_cog(
float *img,
float *intensities, Tout *centroids,
109 cudaStream_t stream = 0) = 0;
110 virtual int get_cog(
float *intensities, Tout *slopes,
bool noise) = 0;
116 float *img_cal,
float *dark,
float *flat,
117 int *lutPix,
int *validx,
int *validy,
122 float *flat,
int *lutPix,
int *validx,
int *validy,
124 cudaStream_t stream = 0);
127 int calibration(Tin *img_raw,
float *img_cal,
float *dark,
float *flat,
129 cudaStream_t stream = 0);
131 template <
typename T>
this class provides the context in which CarmaObj are created
this class provides the centroider features to COMPASS
CarmaObj< float > * d_ref_Tilt
CarmaObj< float > * d_flat
int load_img(Tin *img, int n, int location)
CarmaObj< float > * d_ref_Tip
int set_scale(float scale)
int calibrate_img_validPix(cudaStream_t stream)
virtual int get_cog(float *img, float *intensities, Tout *centroids, int nvalid, int npix, int ntot, cudaStream_t stream=0)=0
CarmaObj< float > * d_TT_slopes
int set_lutPix(int *lutPix, int n)
CarmaObj< int > * d_validx
CarmaContext * current_context
virtual int get_cog(float *intensities, Tout *slopes, bool noise)=0
CarmaObj< float > * d_centro_filtered
int set_offset(float offset)
CarmaObj< float > * d_intensities
int init_img_raw(int m, int n)
CarmaObj< Tin > * d_img_raw
int calibrate_img_validPix()
virtual string get_type()=0
CarmaObj< float > * d_dark
CarmaObj< int > * d_validy
virtual ~SutraCentroider()
int load_validpos(int *ivalid, int *jvalid, int N)
CarmaObj< int > * d_validMask
int load_img(CarmaObj< Tin > *img)
bool is_type(string typec)
CarmaObj< Tout > * d_bincube
CarmaObj< int > * d_lutPix
CarmaObj< float > * d_img
int set_centroids_ref(float *centroids_ref)
int calibrate_img(cudaStream_t stream)
SutraCentroider(CarmaContext *context, SutraWfs *wfs, long nvalid, float offset, float scale, bool filter_TT, int device)
int init_calib(int n, int m)
int set_flat(float *flat, int n)
int load_img(Tin *img, int m, int n, int location)
int set_dark(float *dark, int n)
CarmaObj< Tout > * d_centroids_ref
int load_img(Tin *img, int n)
int apply_TT_filter(Tout *centroids)
this class provides the wfs features to COMPASS
int calibration_validPix_pyr(Tin *img_raw, float *img_cal, float *dark, float *flat, int *lutPix, int *validx, int *validy, int nvalid, int img_sizex, CarmaDevice *device, cudaStream_t stream=0)
int convert_centro(T *d_odata, T *d_idata, float offset, float scale, int N, CarmaDevice *device)
int fill_validMask(int size, int npix, int blocks, int *d_validMask, int *validx, int *validy, CarmaDevice *device)
SlopeOrder slope_order(std::size_t value)
int calibration(Tin *img_raw, float *img_cal, float *dark, float *flat, int *lutPix, int N, CarmaDevice *device, cudaStream_t stream=0)
int calibration_validPix_sh(int npix, int size, int blocks, Tin *img_raw, float *img_cal, float *dark, float *flat, int *lutPix, int *validx, int *validy, CarmaDevice *device, cudaStream_t stream)