Citlali
Loading...
Searching...
No Matches
map.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4
5#include <Eigen/Core>
6#include <unsupported/Eigen/CXX11/Tensor>
7
8#include <tula/config/flatconfig.h>
9#include <tula/config/yamlconfig.h>
10
14
15namespace mapmaking {
16
23
24// wcs information
25struct WCS {
26 // pixel size
27 std::vector<float> cdelt;
28
29 // map size in pixels
30 std::vector<int> naxis;
31
32 // reference pixels
33 std::vector<float> crpix;
34
35 // reference sky value
36 std::vector<float> crval;
37
38 // map unit
39 std::vector<std::string> cunit;
40
41 // coord type
42 std::vector<std::string> ctype;
43};
44
45class MapBuffer {
46public:
47 // wcs object
49
50 // placeholder vectors for grppi map
51 std::vector<int> map_in_vec, map_out_vec;
52
53 // name of map buffer (i.e. omb, cmb)
54 std::string name;
55
56 // reference sky value
57 std::vector<float> crval_config;
58 // parallel policy for fft
59 std::string parallel_policy;
60 //obsnums
61 std::vector<std::string> obsnums;
62 // map grouping
63 std::string map_grouping;
64 // number of rows and columns
65 Eigen::Index n_rows, n_cols;
66 // number of noise maps
67 Eigen::Index n_noise;
68 // pixel size in radians
70 // tangent plane pixel positions
71 Eigen::VectorXd rows_tan_vec, cols_tan_vec;
72 // signal map units
73 std::string sig_unit;
74 // exposure time
75 double exposure_time = 0;
76
77 // maps (n_rows, n_cols) of length n_maps
78 std::vector<Eigen::MatrixXd> signal, weight, kernel, coverage;
79
80 // noise maps (n_rows, n_cols, n_noise) of length n_maps
81 std::vector<Eigen::Tensor<double,3>> noise;
82
83 // pointing matrix (n_pixels, 9) of length n_maps (M in Benton 2015)
84 std::vector<Eigen::MatrixXd> pointing;
85
86 // randomize noise maps on detectors
88
89 // coverage cut
90 double cov_cut;
91
92 // smoothing window for psd
93 int smooth_window = 10;
94
95 // number of bins for histogram
97
98 // vector to hold psds
99 std::vector<Eigen::VectorXd> psds, psd_freqs;
100
101 // vector to hold 2D psds
102 std::vector<Eigen::MatrixXd> psd_2ds, psd_2d_freqs;
103
104 // vector to hold hists
105 std::vector<Eigen::VectorXd> hists, hist_bins;
106
107 // vector to hold noise psds
108 std::vector<Eigen::VectorXd> noise_psds, noise_psd_freqs;
109
110 // vector to hold noise 2D psds
111 std::vector<Eigen::MatrixXd> noise_psd_2ds, noise_psd_2d_freqs;
112
113 // vector to hold noise hists
114 std::vector<Eigen::VectorXd> noise_hists, noise_hist_bins;
115
116 // vector to hold mean rms values
117 Eigen::VectorXd median_rms, median_err;
118
119 // number of sources found by source finder
120 std::vector<int> n_sources;
121
122 // source finding mode
124
125 // minimum source sigma
127 // mask window around source
129
130 // hold source row/col locations
131 std::vector<Eigen::VectorXi> row_source_locs, col_source_locs;
132
133 // fitted source parameters and errors [n_sources x n_params]
134 Eigen::MatrixXd source_params, source_perror;
135
136 // constructor
137 MapBuffer();
138 MapBuffer(std::string);
139
140 // get config file
141 void get_config(tula::config::YamlConfig &, std::vector<std::vector<std::string>> &,
142 std::vector<std::vector<std::string>> &, std::string, std::string);
143
144 // normalize signal and noise maps by the weight maps
145 void normalize_maps();
146 void calculate_stokes(std::vector<Eigen::MatrixXd>&, const Eigen::MatrixXd&,
147 Eigen::Index, Eigen::Index, int, int);
148 void calculate_stokes(std::vector<Eigen::Tensor<double,3>>&, const Eigen::MatrixXd&,
149 Eigen::Index, Eigen::Index, int, int);
150 void process_maps_for_pixel(Eigen::Index, Eigen::Index, int, int, const Eigen::MatrixXd&);
151 void zero_out_maps(Eigen::Index, Eigen::Index, int, int);
152 // normalize polarized maps
154
155 // calculate map coverage region
156 std::tuple<double, Eigen::MatrixXd, Eigen::Index, Eigen::Index> calc_cov_region(Eigen::Index);
157
158 // calculate map psds
159 void calc_map_psd();
160 // calculate map histograms
161 void calc_map_hist();
162
163 // calculate mean square error of weight maps
164 void calc_median_err();
165 // calculate average rms of noise maps
166 void calc_median_rms();
167 // calculate mean rms of signal maps within an annulus
168 void calc_median_rms_annulus(double, double);
169 // find sources in maps
170 bool find_sources(Eigen::Index);
171};
172
173} // namespace mapmaking
Definition map.h:45
Eigen::VectorXd cols_tan_vec
Definition map.h:71
bool find_sources(Eigen::Index)
Definition map.cpp:472
void calc_median_rms()
Definition map.cpp:416
std::string map_grouping
Definition map.h:63
void process_maps_for_pixel(Eigen::Index, Eigen::Index, int, int, const Eigen::MatrixXd &)
Definition map.cpp:199
std::vector< Eigen::VectorXi > row_source_locs
Definition map.h:131
Eigen::MatrixXd source_perror
Definition map.h:134
WCS wcs
Definition map.h:48
std::vector< Eigen::VectorXd > noise_psds
Definition map.h:108
std::tuple< double, Eigen::MatrixXd, Eigen::Index, Eigen::Index > calc_cov_region(Eigen::Index)
Definition map.cpp:253
double exposure_time
Definition map.h:75
void calc_median_rms_annulus(double, double)
Definition map.cpp:441
std::vector< Eigen::MatrixXd > psd_2ds
Definition map.h:102
std::vector< int > map_in_vec
Definition map.h:51
std::vector< Eigen::VectorXd > hists
Definition map.h:105
std::vector< Eigen::VectorXd > noise_hists
Definition map.h:114
void calc_median_err()
Definition map.cpp:393
std::string sig_unit
Definition map.h:73
std::vector< Eigen::VectorXd > psds
Definition map.h:99
double source_window_rad
Definition map.h:128
void calc_map_hist()
Definition map.cpp:346
void calculate_stokes(std::vector< Eigen::MatrixXd > &, const Eigen::MatrixXd &, Eigen::Index, Eigen::Index, int, int)
Definition map.cpp:173
Eigen::VectorXd rows_tan_vec
Definition map.h:71
Eigen::Index n_rows
Definition map.h:65
std::vector< Eigen::MatrixXd > pointing
Definition map.h:84
std::string name
Definition map.h:54
std::vector< int > map_out_vec
Definition map.h:51
std::vector< Eigen::VectorXd > noise_psd_freqs
Definition map.h:108
void normalize_polarized_maps()
Definition map.cpp:227
std::vector< int > n_sources
Definition map.h:120
std::string parallel_policy
Definition map.h:59
Eigen::Index n_cols
Definition map.h:65
std::vector< Eigen::MatrixXd > noise_psd_2d_freqs
Definition map.h:111
void calc_map_psd()
Definition map.cpp:269
int hist_n_bins
Definition map.h:96
MapBuffer()
Definition map.cpp:9
std::vector< float > crval_config
Definition map.h:57
std::vector< std::string > obsnums
Definition map.h:61
std::vector< Eigen::MatrixXd > coverage
Definition map.h:78
std::vector< Eigen::MatrixXd > signal
Definition map.h:78
std::vector< Eigen::MatrixXd > noise_psd_2ds
Definition map.h:111
Eigen::MatrixXd source_params
Definition map.h:134
std::vector< Eigen::VectorXi > col_source_locs
Definition map.h:131
std::string source_finder_mode
Definition map.h:123
std::vector< Eigen::MatrixXd > weight
Definition map.h:78
bool randomize_dets
Definition map.h:87
Eigen::VectorXd median_err
Definition map.h:117
double cov_cut
Definition map.h:90
std::vector< Eigen::MatrixXd > kernel
Definition map.h:78
Eigen::Index n_noise
Definition map.h:67
Eigen::VectorXd median_rms
Definition map.h:117
void zero_out_maps(Eigen::Index, Eigen::Index, int, int)
Definition map.cpp:209
std::vector< Eigen::VectorXd > psd_freqs
Definition map.h:99
std::vector< Eigen::MatrixXd > psd_2d_freqs
Definition map.h:102
void normalize_maps()
Definition map.cpp:126
int smooth_window
Definition map.h:93
std::vector< Eigen::VectorXd > hist_bins
Definition map.h:105
void get_config(tula::config::YamlConfig &, std::vector< std::vector< std::string > > &, std::vector< std::vector< std::string > > &, std::string, std::string)
Definition map.cpp:15
double source_sigma
Definition map.h:126
std::vector< Eigen::VectorXd > noise_hist_bins
Definition map.h:114
std::vector< Eigen::Tensor< double, 3 > > noise
Definition map.h:81
double pixel_size_rad
Definition map.h:69
Definition jinc_mm.h:24
MapType
Definition map.h:17
@ FilteredObs
Definition map.h:19
@ FilteredCoadd
Definition map.h:21
@ RawCoadd
Definition map.h:20
The raw obs struct This represents a single observation that contains a set of data items and calibra...
Definition io.h:50
Definition map.h:25
std::vector< float > cdelt
Definition map.h:27
std::vector< std::string > cunit
Definition map.h:39
std::vector< float > crpix
Definition map.h:33
std::vector< int > naxis
Definition map.h:30
std::vector< float > crval
Definition map.h:36
std::vector< std::string > ctype
Definition map.h:42