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;
88 Eigen::Index sl = rtcdata.scan_indices.data(3) - rtcdata.scan_indices.data(2) + 1;
93 std::vector<kids::KidsData<kids::KidsDataKind::RawTimeStream>>().swap(scan_rawobs);
110 logger->info(
"normalizing maps");
111 if (map_method !=
"maximum_likelihood") {
112 if (rtcproc.run_polarization) {
113 omb.normalize_polarized_maps();
116 omb.normalize_maps();
120 logger->info(
"calculating map psd");
123 logger->info(
"calculating map histogram");
126 omb.calc_median_err();
128 omb.calc_median_rms();
132 write_map_summary(omb);
140 auto farm = grppi::farm(
n_threads,[&](input_t &rtcdata) {
142 Eigen::Index si = rtcdata.scan_indices.data(2);
144 Eigen::Index sl = rtcdata.scan_indices.data(3) - rtcdata.scan_indices.data(2) + 1;
153 rtcdata.pointing_offsets_arcsec.data[axis] = offset.segment(si,sl);
166 logger->info(
"starting scan {}. {}/{} scans completed", rtcdata.index.data + 1,
n_scans_done,
170 logger->info(
"raw time chunk processing for scan {}", rtcdata.index.data + 1);
187 logger->info(
"writing raw time chunk");
189 ptcdata.pointing_offsets_arcsec.data,
calib);
195 logger->info(
"subtracting map from tod");
203 logger->info(
"processed time chunk processing for scan {}", ptcdata.index.data + 1);
210 logger->info(
"calculating weights");
217 bool run_omb =
false;
218 logger->info(
"populating noise maps");
228 logger->info(
"adding map to tod");
239 logger->info(
"calculating weights");
248 logger->info(
"writing processed time chunk");
250 ptcdata.pointing_offsets_arcsec.data,
calib);
260 logger->debug(
"calculating stats");
272 run_noise_fruit =
false;
276 logger->info(
"populating maps");
299template <mapmaking::MapType map_type>
304 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>* f_io =
nullptr;
306 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>* n_io =
nullptr;
309 std::string dir_name;
336 if (!f_io->empty()) {
339 tula::logging::progressbar pb(
340 [&](
const auto &msg) {
logger->info(
"{}", msg); }, 100,
"output progress ");
342 for (Eigen::Index i=0; i<f_io->size(); ++i) {
345 logger->debug(
"adding primary header to file {}",i);
349 if (!mb->
noise.empty()) {
350 logger->debug(
"adding primary header to noise file {}",i);
355 logger->debug(
"done adding primary headers");
358 for (Eigen::Index i=0; i<
n_maps; ++i) {
365 logger->info(
"maps have been written to:");
366 for (Eigen::Index i=0; i<f_io->size(); ++i) {
367 logger->info(
"{}.fits",f_io->at(i).filepath);
372 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>().swap(*f_io);
373 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>().swap(*n_io);
376 logger->debug(
"writing psds");
377 write_psd<map_type>(mb, dir_name);
378 logger->debug(
"writing histograms");
379 write_hist<map_type>(mb, dir_name);
383 logger->debug(
"writing source table");
384 write_sources<map_type>(mb, dir_name);
Eigen::Index hwpr_start_indices
Definition engine.h:201
void obsnum_setup()
Definition engine.h:346
std::string obsnum_dir_name
Definition engine.h:177
void write_stats()
Definition engine.h:2239
std::string parallel_policy
Definition engine.h:189
std::map< std::string, Eigen::VectorXd > pointing_offsets_arcsec
Definition engine.h:234
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > filtered_coadd_fits_io_vec
Definition engine.h:244
std::vector< Eigen::Index > start_indices
Definition engine.h:198
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > noise_fits_io_vec
Definition engine.h:239
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > coadd_noise_fits_io_vec
Definition engine.h:243
std::string tod_output_type
Definition engine.h:216
std::string coadd_dir_name
Definition engine.h:177
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > filtered_noise_fits_io_vec
Definition engine.h:240
bool verbose_mode
Definition engine.h:165
int n_maps
Definition engine.h:222
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > filtered_fits_io_vec
Definition engine.h:240
int n_scans_done
Definition engine.h:192
void add_tod_header()
Definition engine.h:1044
std::vector< Eigen::Index > end_indices
Definition engine.h:198
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > filtered_coadd_noise_fits_io_vec
Definition engine.h:244
void add_phdu(fits_io_type &, map_buffer_t &, Eigen::Index)
Definition engine.h:1727
std::string map_grouping
Definition engine.h:219
std::shared_ptr< spdlog::logger > logger
Definition engine.h:159
std::map< std::string, std::string > tod_filename
Definition engine.h:180
std::string tod_type
Definition engine.h:204
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > coadd_fits_io_vec
Definition engine.h:243
void write_chunk_summary(TCData< tc_t, Eigen::MatrixXd > &)
Definition engine.h:1519
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > fits_io_vec
Definition engine.h:239
int n_threads
Definition engine.h:186
std::string map_method
Definition engine.h:219
void write_maps(fits_io_type &, fits_io_type &, map_buffer_t &, Eigen::Index)
Definition engine.h:2018
void setup()
Definition lali.h:31
void output()
Definition lali.h:300
auto run()
Definition lali.h:137
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
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 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
void append_to_netcdf(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, std::string, std::string, std::string &, pointing_offset_t &, calib_t &)
Definition ptcproc.h:499
void calc_weights(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, apt_type &, tel_type &)
Definition ptcproc.h:301
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:384
void remove_flagged_dets(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, apt_t &)
Definition rtcproc.h:497
bool run_polarization
Definition rtcproc.h:23
auto remove_nearby_tones(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, calib_t &, std::string)
Definition rtcproc.h:520
void append_to_netcdf(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, std::string, std::string, std::string &, pointing_offset_t &, calib_t &)
Definition rtcproc.h:557
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:107
engine::Telescope telescope
Definition engine.h:94
mapmaking::MLMapmaker ml_mm
Definition engine.h:109
engine::Diagnostics diagnostics
Definition engine.h:96
timestream::PTCProc ptcproc
Definition engine.h:103
mapmaking::JincMapmaker jinc_mm
Definition engine.h:108
mapmaking::MapBuffer omb
Definition engine.h:106
mapmaking::MapBuffer cmb
Definition engine.h:106
timestream::RTCProc rtcproc
Definition engine.h:100
engine::Calib calib
Definition engine.h:93
bool run_noise
Definition engine.h:84
bool run_source_finder
Definition engine.h:88
bool run_tod_output
Definition engine.h:79
bool run_mapmaking
Definition engine.h:82
TC data class.
Definition timestream.h:55