matrixsimulator.h
Go to the documentation of this file.
1 #ifndef MATRIXSIMULATOR_H
2 #define MATRIXSIMULATOR_H
3 
4 #include <opencv2/core/core.hpp>
5 #include <opencv2/highgui/highgui.hpp>
6 #include <memory>
7 
8 #include "helper.h"
9 #include "spline.h"
10 #include "efficiency.h"
11 #include "source.h"
12 #include "PSF.h"
13 #include "CCD.h"
14 #include "Slit.h"
15 
17  int order;
18  double wavelength;
19  cv::Mat transformation_matrix = cv::Mat(2,3,CV_64FC1);
20  std::vector<double> decomposed_matrix;
21 
22 };
23 
25  double blaze;
26  double gpmm;
27 };
28 
30 
38 {
39 public:
49  void read_transformations(std::string path);
50 
61  cv::Mat get_transformation_matrix(int order, double wavelength);
71  void set_wavelength(int N);
81  void set_wavelength(std::vector<double> wavelength);
85  void calc_sim_matrices();
86  #ifdef USE_GPU
87  cv::gpu::GpuMat transform_slit(cv::gpu::GpuMat& slit_image, cv::Mat& transformation_matrix, double weight);
88  int simulate_order(int order, cv::gpu::GpuMat& slit_image, cv::gpu::GpuMat& output_image, bool aberrations);
89  void simulate_spectrum(cv::gpu::GpuMat& slit_image);
90  #endif
91 
100  cv::Mat transform_slit(cv::Mat& slit_image, cv::Mat& transformation_matrix, double weight);
109  int simulate_order(int order, cv::Mat& slit_image, cv::Mat& output_image, bool aberrations);
113  void simulate_spectrum();
114 
115  void set_efficiencies(std::vector<Efficiency *> &efficiencies);
123  void add_efficiency(Efficiency *eff);
124 
130  void add_source(Source * src);
131 
137  void load_spectrograph_model(std::string path, int fiber_number);
143  void set_order_range(int min_order, int max_order);
149  void set_ccd(CCD * ccd);
155  void set_slit(Slit * slit);
161  void set_psfs(PSF * psfs);
162 
163  int raw_n;
164 
165 
166  void prepare_sources(std::vector<Source *> sources);
167  void save_to_file(std::string filename, bool downsample=true, bool bleed=true, bool overwrite=false);
168  void transformation_to_file(std::string filename);
169  CCD * ccd;
170  double get_blaze();
171  double get_gpmm();
172 private:
173  cv::Mat img;
177  void calc_splines();
178 
179  std::map<int, std::vector<raw_transformation> > raw_transformations;
180 
181  std::vector<Efficiency*> efficiencies;
182  std::vector<Source*> sources;
183 
184  std::map<int, std::vector<double> > sim_wavelength;
185  std::map<int, std::vector<cv::Mat> > sim_matrices;
186  std::map<int, std::vector<double> > sim_efficiencies;
187  std::map<int, std::vector<double> > sim_spectra;
188 
189  std::map<int, tk::spline > tr_p;
190  std::map<int, tk::spline > tr_r;
191  std::map<int, tk::spline > tr_q;
192  std::map<int, tk::spline > tr_phi;
193  std::map<int, tk::spline > tr_tx;
194  std::map<int, tk::spline > tr_ty;
195 
198  std::vector<int> orders;
199 
201 
202 
203 
204 };
205 
206 #endif // MATRIXSIMULATOR_H
std::map< int, std::vector< cv::Mat > > sim_matrices
Definition: matrixsimulator.h:185
Base class of all spectral sources.
Definition: source.h:13
std::map< int, std::vector< double > > sim_efficiencies
Definition: matrixsimulator.h:186
Definition: efficiency.h:26
cv::Mat img
Definition: matrixsimulator.h:173
int order
Definition: matrixsimulator.h:17
PSF * psfs
Definition: matrixsimulator.h:196
Slit * slit
Definition: matrixsimulator.h:197
Class handles point spread functions.
Definition: PSF.h:38
class handels spectrum simulation
Definition: matrixsimulator.h:37
cv::Mat transformation_matrix
Definition: matrixsimulator.h:19
std::map< int, std::vector< double > > sim_spectra
Definition: matrixsimulator.h:187
CCD * ccd
Definition: matrixsimulator.h:169
double wavelength
Definition: matrixsimulator.h:18
Definition: matrixsimulator.h:16
std::map< int, tk::spline > tr_q
Definition: matrixsimulator.h:191
double gpmm
Definition: matrixsimulator.h:26
class representing a CCD detector
Definition: CCD.h:21
std::vector< double > decomposed_matrix
Definition: matrixsimulator.h:20
std::map< int, tk::spline > tr_tx
Definition: matrixsimulator.h:193
std::map< int, tk::spline > tr_r
Definition: matrixsimulator.h:190
double blaze
Definition: matrixsimulator.h:25
std::vector< int > orders
Definition: matrixsimulator.h:198
std::map< int, tk::spline > tr_phi
Definition: matrixsimulator.h:192
std::map< int, std::vector< raw_transformation > > raw_transformations
Definition: matrixsimulator.h:179
Definition: Slit.h:6
std::map< int, std::vector< double > > sim_wavelength
Definition: matrixsimulator.h:184
std::map< int, tk::spline > tr_p
Definition: matrixsimulator.h:189
spectrograph_information spec_info
Definition: matrixsimulator.h:200
std::vector< Efficiency * > efficiencies
Definition: matrixsimulator.h:181
Definition: matrixsimulator.h:24
int raw_n
Definition: matrixsimulator.h:163
std::map< int, tk::spline > tr_ty
Definition: matrixsimulator.h:194
std::vector< Source * > sources
Definition: matrixsimulator.h:182