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:354
 
std::string obsnum_dir_name
Definition engine.h:184
 
void write_stats()
Definition engine.h:2278
 
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
 
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:1764
 
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
 
void add_tod_header(map_buffer_t &)
Definition engine.h:1056
 
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:1556
 
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:2057
 
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