12using timestream::TCDataKind;
20 template <
class K
idsProc,
class RawObs>
27 template <mapmaking::MapType map_type>
36template <
class K
idsProc,
class RawObs>
44 boost::random::mt19937 eng;
47 boost::random::uniform_int_distribution<> rands{0,1};
50 tula::logging::progressbar pb(
51 [&](
const auto &msg) {
logger->info(
"{}", msg); }, 100,
"citlali progress ");
55 [&]() -> std::optional<tuple_t> {
61 pb.count(telescope.scan_indices.cols(), 1);
64 TCData<TCDataKind::RTC, Eigen::MatrixXd> rtcdata;
66 rtcdata.scan_indices.data = telescope.scan_indices.col(scan);
68 rtcdata.index.data = scan;
72 if (omb.randomize_dets) {
74 rtcdata.noise.data = Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic>::Zero(omb.n_noise, calib.n_dets)
75 .unaryExpr([&](int dummy){ return 2 * rands(eng) - 1; });
78 rtcdata.noise.data = Eigen::Matrix<int, Eigen::Dynamic, 1>::Zero(omb.n_noise)
79 .unaryExpr([&](int dummy){ return 2 * rands(eng) - 1; });
83 std::vector<kids::KidsData<kids::KidsDataKind::RawTimeStream>> scan_rawobs;
93 Eigen::Index sl = rtcdata.scan_indices.data(3) - rtcdata.scan_indices.data(2) + 1;
104 std::vector<kids::KidsData<kids::KidsDataKind::RawTimeStream>>().swap(scan_rawobs);
121 logger->info(
"normalizing maps");
122 if (map_method !=
"maximum_likelihood") {
123 if (rtcproc.run_polarization) {
124 omb.normalize_polarized_maps();
127 omb.normalize_maps();
131 logger->info(
"calculating map psd");
134 logger->info(
"calculating map histogram");
137 omb.calc_median_err();
139 omb.calc_median_rms();
143 write_map_summary(omb);
151 auto farm = grppi::farm(
n_threads,[&](input_t &rtcdata) {
153 Eigen::Index si = rtcdata.scan_indices.data(2);
155 Eigen::Index sl = rtcdata.scan_indices.data(3) - rtcdata.scan_indices.data(2) + 1;
164 rtcdata.pointing_offsets_arcsec.data[axis] = offset.segment(si,sl);
175 rtcdata.flags.data.resize(rtcdata.scans.data.rows(), rtcdata.scans.data.cols());
176 rtcdata.flags.data.setConstant(0);
181 auto& mask =
masks[i];
186 for (
int j = 0; j < rtcdata.flags.data.rows(); ++j) {
192 size = end_index - start_index + 1;
194 if (mask(j + si) == 0) {
195 rtcdata.flags.data.block(start_index, start, size, end - start + 1).setOnes();
198 logger->debug(
"{}/{} gaps flagged", rtcdata.flags.data.col(start).template cast<int>().sum(), rtcdata.flags.data.rows());
206 logger->info(
"starting scan {}. {}/{} scans completed", rtcdata.index.data + 1,
n_scans_done,
210 logger->info(
"raw time chunk processing for scan {}", rtcdata.index.data + 1);
227 logger->info(
"writing raw time chunk");
229 ptcdata.pointing_offsets_arcsec.data,
calib);
235 logger->info(
"subtracting map from tod");
243 logger->info(
"processed time chunk processing for scan {}", ptcdata.index.data + 1);
250 logger->info(
"calculating weights");
257 bool run_omb =
false;
258 logger->info(
"populating noise maps");
268 logger->info(
"adding map to tod");
279 logger->info(
"calculating weights");
288 logger->info(
"writing processed time chunk");
290 ptcdata.pointing_offsets_arcsec.data,
calib);
300 logger->debug(
"calculating stats");
312 run_noise_fruit =
false;
316 logger->info(
"populating maps");
339template <mapmaking::MapType map_type>
344 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>* f_io =
nullptr;
346 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>* n_io =
nullptr;
349 std::string dir_name;
376 if (!f_io->empty()) {
379 tula::logging::progressbar pb(
380 [&](
const auto &msg) {
logger->info(
"{}", msg); }, 100,
"output progress ");
382 for (Eigen::Index i=0; i<f_io->size(); ++i) {
385 logger->debug(
"adding primary header to file {}",i);
389 if (!mb->
noise.empty()) {
390 logger->debug(
"adding primary header to noise file {}",i);
395 logger->debug(
"done adding primary headers");
398 for (Eigen::Index i=0; i<
n_maps; ++i) {
405 logger->info(
"maps have been written to:");
406 for (Eigen::Index i=0; i<f_io->size(); ++i) {
407 logger->info(
"{}.fits",f_io->at(i).filepath);
412 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>().swap(*f_io);
413 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>().swap(*n_io);
416 logger->debug(
"writing psds");
417 write_psd<map_type>(mb, dir_name);
418 logger->debug(
"writing histograms");
419 write_hist<map_type>(mb, dir_name);
423 logger->debug(
"writing source table");
424 write_sources<map_type>(mb, dir_name);
Eigen::Index hwpr_start_indices
Definition engine.h:208
void obsnum_setup()
Definition engine.h:353
std::string obsnum_dir_name
Definition engine.h:184
void write_stats()
Definition engine.h:2251
std::string parallel_policy
Definition engine.h:196
std::map< std::string, Eigen::VectorXd > pointing_offsets_arcsec
Definition engine.h:241
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > filtered_coadd_fits_io_vec
Definition engine.h:251
std::vector< Eigen::Index > start_indices
Definition engine.h:205
std::vector< Eigen::VectorXd > nw_times
Definition engine.h:166
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > noise_fits_io_vec
Definition engine.h:246
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > coadd_noise_fits_io_vec
Definition engine.h:250
std::string tod_output_type
Definition engine.h:223
std::string coadd_dir_name
Definition engine.h:184
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > filtered_noise_fits_io_vec
Definition engine.h:247
bool verbose_mode
Definition engine.h:172
int n_maps
Definition engine.h:229
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > filtered_fits_io_vec
Definition engine.h:247
int n_scans_done
Definition engine.h:199
void add_tod_header()
Definition engine.h:1054
std::vector< Eigen::Index > end_indices
Definition engine.h:205
Eigen::VectorXd t_common
Definition engine.h:164
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > filtered_coadd_noise_fits_io_vec
Definition engine.h:251
void add_phdu(fits_io_type &, map_buffer_t &, Eigen::Index)
Definition engine.h:1737
std::vector< Eigen::VectorXi > masks
Definition engine.h:165
std::string map_grouping
Definition engine.h:226
std::shared_ptr< spdlog::logger > logger
Definition engine.h:161
std::map< std::string, std::string > tod_filename
Definition engine.h:187
std::string tod_type
Definition engine.h:211
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > coadd_fits_io_vec
Definition engine.h:250
void write_chunk_summary(TCData< tc_t, Eigen::MatrixXd > &)
Definition engine.h:1529
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > fits_io_vec
Definition engine.h:246
int n_threads
Definition engine.h:193
std::string map_method
Definition engine.h:226
void write_maps(fits_io_type &, fits_io_type &, map_buffer_t &, Eigen::Index)
Definition engine.h:2030
void setup()
Definition lali.h:31
void output()
Definition lali.h:340
auto run()
Definition lali.h:148
void pipeline(KidsProc &, RawObs &)
Definition lali.h:37
bool run_hwpr
Definition calib.h:41
std::map< std::string, Eigen::VectorXd > apt
Definition calib.h:22
Eigen::VectorXd hwpr_angle
Definition calib.h:24
std::map< Eigen::Index, std::tuple< Eigen::Index, Eigen::Index > > nw_limits
Definition calib.h:56
Eigen::Index n_dets
Definition calib.h:47
void calc_stats(timestream::TCData< tcdata_kind, Eigen::MatrixXd > &)
Definition diagnostics.h:61
bool sim_obs
Definition telescope.h:20
std::map< std::string, Eigen::VectorXd > tel_data
Definition telescope.h:54
double fsmp
Definition telescope.h:42
double d_fsmp
Definition telescope.h:42
Eigen::MatrixXI scan_indices
Definition telescope.h:51
std::string pixel_axes
Definition telescope.h:59
void populate_maps_jinc(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, map_buffer_t &, map_buffer_t &, Eigen::DenseBase< Derived > &, std::string &, apt_t &, double, bool, bool)
Definition jinc_mm.h:211
void populate_maps_ml(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, map_buffer_t &, map_buffer_t &, Eigen::DenseBase< Derived > &, std::string &, calib_t &, double, bool, bool)
Definition ml_mm.h:37
std::vector< Eigen::MatrixXd > signal
Definition map.h:78
std::vector< Eigen::Tensor< double, 3 > > noise
Definition map.h:81
double pixel_size_rad
Definition map.h:69
void populate_maps_naive(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, map_buffer_t &, map_buffer_t &, Eigen::DenseBase< Derived > &, std::string &, apt_t &, double, bool, bool)
Definition naive_mm.h:95
Eigen::Index n_terms
Definition filter.h:19
void append_to_netcdf(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, std::string, std::string, std::string &, pointing_offset_t &, calib_t &)
Definition ptcproc.h:498
void calc_weights(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, apt_type &, tel_type &)
Definition ptcproc.h:300
void run(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, TCData< TCDataKind::PTC, Eigen::MatrixXd > &, calib_type &, std::string, std::string)
Definition ptcproc.h:173
auto reset_weights(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, calib_t &, std::string)
Definition ptcproc.h:383
void remove_flagged_dets(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, apt_t &)
Definition rtcproc.h:493
bool run_polarization
Definition rtcproc.h:23
timestream::Filter filter
Definition rtcproc.h:35
bool run_tod_filter
Definition rtcproc.h:26
auto remove_nearby_tones(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, calib_t &, std::string)
Definition rtcproc.h:516
void append_to_netcdf(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, std::string, std::string, std::string &, pointing_offset_t &, calib_t &)
Definition rtcproc.h:553
auto run(TCData< TCDataKind::RTC, Eigen::MatrixXd > &, TCData< TCDataKind::PTC, Eigen::MatrixXd > &, calib_t &, telescope_t &, double, std::string)
Definition rtcproc.h:261
void map_to_tod(mb_t &, TCData< tcdata_t, Eigen::MatrixXd > &, calib_t &, Eigen::DenseBase< Derived > &, std::string, std::string)
Definition timestream.h:624
auto remove_bad_dets(TCData< tcdata_t, Eigen::MatrixXd > &, calib_t &, std::string)
Definition timestream.h:703
@ NegativeMap
Definition timestream.h:272
@ Map
Definition timestream.h:271
bool run_fruit_loops
Definition timestream.h:279
mapmaking::MapBuffer tod_mb
Definition timestream.h:296
@ FilteredObs
Definition map.h:19
@ FilteredCoadd
Definition map.h:21
@ RawObs
Definition map.h:18
@ RawCoadd
Definition map.h:20
int run(const rc_t &rc)
Definition main.cpp:104
The raw obs struct This represents a single observation that contains a set of data items and calibra...
Definition io.h:50
mapmaking::NaiveMapmaker naive_mm
Definition engine.h:109
engine::Telescope telescope
Definition engine.h:96
mapmaking::MLMapmaker ml_mm
Definition engine.h:111
engine::Diagnostics diagnostics
Definition engine.h:98
timestream::PTCProc ptcproc
Definition engine.h:105
mapmaking::JincMapmaker jinc_mm
Definition engine.h:110
mapmaking::MapBuffer omb
Definition engine.h:108
mapmaking::MapBuffer cmb
Definition engine.h:108
timestream::RTCProc rtcproc
Definition engine.h:102
engine::Calib calib
Definition engine.h:95
bool run_noise
Definition engine.h:86
bool interp_over_gaps
Definition engine.h:73
bool run_source_finder
Definition engine.h:90
bool run_tod_output
Definition engine.h:81
bool run_mapmaking
Definition engine.h:84
TC data class.
Definition timestream.h:55