14using timestream::TCDataKind;
22 std::vector<TCData<TCDataKind::PTC,Eigen::MatrixXd>>
ptcs0,
ptcs;
60 Eigen::Matrix<uint16_t,Eigen::Dynamic,1>
flag2;
73 template <
class K
idsProc,
class RawObs>
77 template <
class K
idsProc>
93 template <
class K
idsProc,
class RawObs>
97 template <mapmaking::MapType map_type>
168 auto key = beammap_flux.first +
"_flux";
171 calib.
apt_meta[key].push_back(beammap_flux.first +
" flux density");
188 Eigen::VectorXd tau_el(1);
193 for (
auto const& [key, val] : tau_freq) {
199 for (Eigen::Index i=0; i<
calib.
arrays.size(); ++i) {
215 calib.
apt_meta[
"kids_tone"].push_back(
"index of tone in network");
230 calib.
apt_meta[
"array_order"].push_back(std::to_string(arr_index) +
": " + arr_name);
244template <
class K
idsProc,
class RawObs>
249 auto [kids_models, kids_model_header] = kidsproc.load_fit_report(rawobs);
253 for (
const auto &h: kids_model_header) {
254 std::string name = h;
260 for (
const auto &v: kids_models) {
261 calib.
apt[name].segment(j,v.rows()) = v.col(i);
302template <
class K
idsProc,
class RawObs>
304 using tuple_t = std::tuple<TCData<TCDataKind::RTC, Eigen::MatrixXd>,
305 std::vector<kids::KidsData<kids::KidsDataKind::RawTimeStream>>>;
310 tula::logging::progressbar pb(
311 [&](
const auto &msg) {
logger->info(
"{}", msg); }, 100,
"RTC progress ");
315 [&]() -> std::optional<tuple_t> {
322 pb.count(telescope.scan_indices.cols(), 1);
325 TCData<TCDataKind::RTC, Eigen::MatrixXd> rtcdata;
327 rtcdata.scan_indices.data = telescope.scan_indices.col(scan);
329 rtcdata.index.data = scan;
332 std::vector<kids::KidsData<kids::KidsDataKind::RawTimeStream>> scan_rawobs;
334 scan_rawobs = kidsproc.load_rawobs(rawobs, scan, telescope.scan_indices, start_indices, end_indices);
339 return tuple_t(rtcdata,scan_rawobs);
349template <
class K
idsProc>
353 auto& rtcdata = std::get<0>(input_tuple);
355 auto& scan_rawobs = std::get<1>(input_tuple);
361 Eigen::Index si = rtcdata.scan_indices.data(2);
364 Eigen::Index sl = rtcdata.scan_indices.data(3) - rtcdata.scan_indices.data(2) + 1;
373 rtcdata.pointing_offsets_arcsec.data[axis] = offset.segment(si,sl);
383 std::vector<kids::KidsData<kids::KidsDataKind::RawTimeStream>>().swap(scan_rawobs);
388 logger->info(
"starting scan {}. {}/{} scans completed", rtcdata.index.data + 1,
n_scans_done,
392 logger->info(
"raw time chunk processing for scan {}", rtcdata.index.data + 1);
411 logger->info(
"writing raw time chunk");
413 ptcdata.pointing_offsets_arcsec.data, calib_scan);
418 ptcdata.map_indices.data = std::move(map_indices);
421 ptcs0.at(ptcdata.index.data) = std::move(ptcdata);
422 calib_scans0.at(ptcdata.index.data) = std::move(calib_scan);
450 logger->info(
"calculating sensitivity");
453 Eigen::MatrixXd det_sens, noise_flux;
457 calib.
apt[
"sens"](i) = tula::alg::median(det_sens);
493 std::vector<Eigen::MatrixXd> lat, lon;
496 for (Eigen::Index i=0; i<
ptcs.size(); ++i) {
498 Eigen::MatrixXd ptc_lat(
ptcs[i].scans.data.rows(),
ptcs[i].scans.data.cols());
499 Eigen::MatrixXd ptc_lon(
ptcs[i].scans.data.rows(),
ptcs[i].scans.data.cols());
504 double az_off =
calib.
apt[
"x_t"](det_index);
505 double el_off =
calib.
apt[
"y_t"](det_index);
510 ptcs[i].pointing_offsets_arcsec.data,
512 ptc_lat.col(j) = std::move(det_lat);
513 ptc_lon.col(j) = std::move(det_lon);
517 lat.push_back(std::move(ptc_lat));
518 lon.push_back(std::move(ptc_lon));
524 logger->info(
"adding final apt and detector pointing to tod files");
527 netCDF::NcFile fo(val, netCDF::NcFile::write);
530 if (x.first!=
"flag2") {
532 std::vector<std::size_t> start_index_apt = {0};
534 std::vector<std::size_t> size_apt = {1};
535 netCDF::NcVar apt_v = fo.getVar(
"apt_" + x.first);
536 if (!apt_v.isNull()) {
537 for (std::size_t i=0; i< TULA_SIZET(
calib.
n_dets); ++i) {
538 start_index_apt[0] = i;
539 apt_v.putVar(start_index_apt, size_apt, &
calib.
apt[x.first](i));
546 netCDF::NcVar det_lat_v = fo.getVar(
"det_lat");
547 netCDF::NcVar det_lon_v = fo.getVar(
"det_lon");
550 netCDF::NcVar det_ra_v = fo.getVar(
"det_ra");
551 netCDF::NcVar det_dec_v = fo.getVar(
"det_dec");
554 std::vector<std::size_t> start_index = {0, 0};
556 std::vector<std::size_t> size = {1, TULA_SIZET(
calib.
n_dets)};
559 for (Eigen::Index i=0; i<lat.size(); ++i) {
561 for (std::size_t j=0; j < TULA_SIZET(lat[i].rows()); ++j) {
565 Eigen::VectorXd lat_row = lat[i].row(j);
566 det_lat_v.putVar(start_index, size, lat_row.data());
569 Eigen::VectorXd lon_row = lon[i].row(j);
570 det_lon_v.putVar(start_index, size, lon_row.data());
577 det_ra_v.putVar(start_index, size, ra.data());
580 det_dec_v.putVar(start_index, size, dec.data());
593 logger->info(
"calculating map psd");
596 logger->info(
"calculating map histogram");
604 bool keep_going =
true;
607 boost::random::mt19937 eng;
610 boost::random::uniform_int_distribution<> rands{0,1};
634 tula::logging::progressbar pb(
635 [&](
const auto &msg) {
logger->info(
"{}", msg); }, 100,
"PTC progress ");
641 if (current_iter > 0) {
642 if (!ptcproc.run_fruit_loops) {
644 logger->info(
"subtracting gaussian from tod");
646 ptcproc.add_gaussian<timestream::TCProc::SourceType::NegativeGaussian>(ptcs[i], params, telescope.pixel_axes, map_grouping,
647 calib.apt,omb.pixel_size_rad, omb.n_rows, omb.n_cols);
650 logger->info(
"subtracting map from tod");
652 ptcproc.map_to_tod<timestream::TCProc::SourceType::NegativeMap>(omb, ptcs[i], calib, ptcs[i].map_indices.data, telescope.pixel_axes,
659 logger->info(
"processed time chunk processing for scan {}", i + 1);
666 logger->info(
"adding gaussian to tod");
672 logger->info(
"adding map to tod");
685 ptcs[i].weights.data.resize(
ptcs[i].scans.data.cols());
686 ptcs[i].weights.data.setOnes();
690 logger->info(
"calculating weights");
699 logger->debug(
"writing chunk summary");
704 logger->debug(
"calculating stats");
713 logger->info(
"writing processed time chunk");
723 logger->info(
"starting mapmaking");
727 for (Eigen::Index i=0; i<
n_maps; ++i) {
745 for (
auto& ptcdata:
ptcs) {
747 ptcdata.noise.data = Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic>::Zero(
omb.
n_noise,
calib.
n_dets)
748 .unaryExpr([&](
int dummy){
return 2 * rands(eng) - 1; });
750 ptcdata.noise.data = Eigen::Matrix<int, Eigen::Dynamic, 1>::Zero(
omb.
n_noise)
751 .unaryExpr([&](
int dummy){
return 2 * rands(eng) - 1; });
757 logger->info(
"running mapmaking");
761 for (
auto& ptc :
ptcs) {
799 logger->info(
"normalizing maps");
803 double init_row = -99;
804 double init_col = -99;
806 logger->info(
"fitting maps");
811 auto array = maps_to_arrays(i);
813 double init_fwhm = toltec_io.array_fwhm_arcsec[array]*ASEC_TO_RAD/omb.pixel_size_rad;
815 auto [det_params, det_perror, good_fit] =
816 map_fitter.fit_to_gaussian<engine_utils::mapFitter::beammap>(omb.signal[i], omb.weight[i],
817 init_fwhm, init_row, init_col);
819 params.row(i) = det_params;
820 perrors.row(i) = det_perror;
821 good_fits(i) = good_fit;
825 params.row(i) = p0.row(i);
826 perrors.row(i) = perror0.row(i);
838 if (current_iter < beammap_iter_max) {
840 if ((converged.array() ==
true).all()) {
841 logger->info(
"all maps converged");
844 else if (current_iter > 1) {
846 if (beammap_iter_tolerance > 0) {
848 logger->info(
"checking convergence");
849 grppi::map(tula::grppi_utils::dyn_ex(omb.parallel_policy), det_in_vec, det_out_vec, [&](
auto i) {
853 if (!ptcproc.run_fruit_loops) {
854 diff = abs((params.row(i).array() - p0.row(i).array())/p0.row(i).array());
857 diff = abs(omb_copy.signal[i].array() - omb.signal[i].array()/omb_copy.signal[i].array());
860 auto d = (diff.array()).isNaN().select(0,diff);
861 if ((d.array() <= beammap_iter_tolerance).all()) {
865 converge_iter(i) = current_iter;
871 logger->info(
"{} maps converged on iter {}", (converged.array() ==
true).count(), current_iter);
874 if ((converged.array() ==
true).all()) {
875 logger->info(
"all maps converged");
880 logger->info(
"bypassing convergence check");
889 logger->info(
"max iteration reached");
901 int n_flagged_dets = 0;
903 logger->info(
"flagging detectors");
907 auto array_index =
calib.
apt[
"array"](i);
956 std::map<Eigen::Index, double> nw_median_sens;
959 logger->debug(
"calculating mean sensitivities");
973 Eigen::VectorXd sens(n_good_det);
978 for (Eigen::Index m=0; m<sens.size(); m++) {
980 sens(k) = nw_sens(m);
986 nw_median_sens[nw] = tula::alg::median(sens);
989 nw_median_sens[nw] = tula::alg::median(nw_sens);
995 logger->debug(
"flagging sensitivities");
1014 std::map<std::string, double> array_median_x_t, array_median_y_t;
1017 logger->debug(
"calculating array median positions");
1033 Eigen::VectorXd x_t, y_t;
1036 x_t.resize(n_good_det);
1037 y_t.resize(n_good_det);
1042 for (Eigen::Index m=0; m<array_x_t.size(); m++) {
1044 x_t(k) = array_x_t(m);
1045 y_t(k) = array_y_t(m);
1051 array_median_x_t[array_name] = tula::alg::median(x_t);
1052 array_median_y_t[array_name] = tula::alg::median(y_t);
1056 array_median_x_t[array_name] = tula::alg::median(array_x_t);
1057 array_median_y_t[array_name] = tula::alg::median(array_y_t);
1062 logger->debug(
"flagging detector positions");
1065 auto array_index =
calib.
apt[
"array"](i);
1069 double dist = sqrt(pow(
calib.
apt[
"x_t"](i) - array_median_x_t[array_name],2) +
1070 pow(
calib.
apt[
"y_t"](i) - array_median_y_t[array_name],2));
1085 logger->info(
"{} detectors were flagged", n_flagged_dets);
1088 logger->debug(
"calculating flux conversion factors");
1091 auto array_index =
calib.
apt[
"array"](i);
1122 double ref_det_x_t = 0;
1123 double ref_det_y_t = 0;
1138 logger->info(
"finding a reference detector");
1152 Eigen::VectorXd x_t, y_t, det_indices, dist;
1155 x_t.resize(n_good_det);
1156 y_t.resize(n_good_det);
1157 det_indices.resize(n_good_det);
1162 for (Eigen::Index i=0; i<array_x_t.size(); ++i) {
1164 x_t(k) = array_x_t(i);
1165 y_t(k) = array_y_t(i);
1173 dist = pow(x_t.array(),2) + pow(y_t.array(),2);
1176 dist = pow(array_x_t.array(),2) + pow(array_y_t.array(),2);
1177 det_indices = Eigen::VectorXd::LinSpaced(array_x_t.size(), std::get<0>(
calib.
array_limits[array]),
1192 static_cast<float>(ref_det_x_t),
static_cast<float>(ref_det_y_t));
1195 logger->info(
"no reference detector selected");
1218 Eigen::VectorXd rot_az_off = cos(-
calib.
apt[
"derot_elev"].array())*
calib.
apt[
"x_t_derot"].array() -
1220 Eigen::VectorXd rot_alt_off = sin(-
calib.
apt[
"derot_elev"].array())*
calib.
apt[
"x_t_derot"].array() +
1224 calib.
apt[
"x_t_derot"] = -rot_az_off;
1225 calib.
apt[
"y_t_derot"] = -rot_alt_off;
1228 logger->info(
"derotating apt");
1235template <mapmaking::MapType map_type>
1240 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>* f_io =
nullptr;
1242 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>* n_io =
nullptr;
1245 std::string dir_name;
1264 logger->info(
"writing apt table");
1278 apt_table.col(i) =
flag2.cast<
double> ();
1286 logger->info(
"done writing apt table {}.ecsv",apt_filename);
1316 if (!f_io->empty()) {
1319 tula::logging::progressbar pb(
1320 [&](
const auto &msg) {
logger->info(
"{}", msg); }, 100,
"output progress ");
1322 for (Eigen::Index i=0; i<f_io->size(); ++i) {
1325 logger->debug(
"adding primary header to file {}",i);
1328 if (!mb->
noise.empty()) {
1329 logger->debug(
"adding primary header to noise file {}",i);
1334 logger->debug(
"done adding primary headers");
1338 Eigen::Index step = 2;
1340 if (!mb->
kernel.empty()) {
1348 for (Eigen::Index i=0; i<
n_maps; ++i) {
1351 logger->debug(
"adding map");
1368 logger->debug(
"adding beammap header keys");
1372 f_io->at(map_index).hdus.at(k)->addKey(
"BEAMMAP." + key,
calib.
apt[key](i), key
1375 f_io->at(map_index).hdus.at(k)->addKey(
"BEAMMAP." + key, 0.0, key
1380 f_io->at(map_index).hdus.at(k)->addKey(
"BEAMMAP." + key,
flag2(i), key
1391 logger->info(
"maps have been written to:");
1392 for (Eigen::Index i=0; i<f_io->size(); ++i) {
1393 logger->info(
"{}.fits",f_io->at(i).filepath);
1403 logger->debug(
"writing psds");
1404 write_psd<map_type>(mb, dir_name);
1405 logger->debug(
"writing histograms");
1406 write_hist<map_type>(mb, dir_name);
Eigen::Vector< int, Eigen::Dynamic > converge_iter
Definition beammap.h:37
void run_loop()
Definition beammap.h:602
Eigen::Index beammap_reference_det_found
Definition beammap.h:46
Eigen::Matrix< uint16_t, Eigen::Dynamic, 1 > flag2
Definition beammap.h:60
void setup()
Definition beammap.h:101
Eigen::MatrixXd perror0
Definition beammap.h:40
AptFlags
Definition beammap.h:49
@ Position
Definition beammap.h:56
@ ElFWHM
Definition beammap.h:53
@ Good
Definition beammap.h:50
@ Sens
Definition beammap.h:55
@ AzFWHM
Definition beammap.h:52
@ Sig2Noise
Definition beammap.h:54
@ BadFit
Definition beammap.h:51
void timestream_pipeline(KidsProc &, RawObs &)
Definition beammap.h:303
void pipeline(KidsProc &, RawObs &)
Definition beammap.h:245
std::vector< int > det_in_vec
Definition beammap.h:67
std::vector< TCData< TCDataKind::PTC, Eigen::MatrixXd > > ptcs
Definition beammap.h:22
Eigen::Index current_iter
Definition beammap.h:31
void output()
Definition beammap.h:1236
std::vector< int > det_out_vec
Definition beammap.h:67
void loop_pipeline()
Definition beammap.h:434
Eigen::Matrix< bool, Eigen::Dynamic, 1 > good_fits
Definition beammap.h:63
std::vector< engine::Calib > calib_scans0
Definition beammap.h:28
std::vector< TCData< TCDataKind::PTC, Eigen::MatrixXd > > ptcs0
Definition beammap.h:22
Eigen::MatrixXd p0
Definition beammap.h:40
std::vector< int > scan_out_vec
Definition beammap.h:66
std::vector< engine::Calib > calib_scans
Definition beammap.h:28
Eigen::Matrix< bool, Eigen::Dynamic, 1 > converged
Definition beammap.h:34
Eigen::MatrixXd perrors
Definition beammap.h:43
std::string map_parallel_policy
Definition beammap.h:19
std::vector< int > scan_in_vec
Definition beammap.h:66
void set_apt_flags()
Definition beammap.h:895
mapmaking::MapBuffer omb_copy
Definition beammap.h:25
void process_apt()
Definition beammap.h:1120
Eigen::MatrixXd params
Definition beammap.h:43
auto run_timestream(KidsProc &)
Definition beammap.h:350
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
void write_map_summary(map_buffer_t &)
Definition engine.h:1574
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< 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
Eigen::VectorXI arrays_to_maps
Definition engine.h:225
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< 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 redu_type
Definition engine.h:207
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::string obsnum
Definition engine.h:210
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > coadd_fits_io_vec
Definition engine.h:243
std::vector< std::string > date_obs
Definition engine.h:162
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
Eigen::Index n_nws
Definition calib.h:50
Eigen::Index n_arrays
Definition calib.h:53
std::map< Eigen::Index, std::tuple< Eigen::Index, Eigen::Index > > array_limits
Definition calib.h:56
std::map< Eigen::Index, double > array_beam_areas
Definition calib.h:65
Eigen::VectorXI nws
Definition calib.h:44
Eigen::VectorXI arrays
Definition calib.h:44
std::map< std::string, std::string > apt_header_units
Definition calib.h:116
YAML::Node apt_meta
Definition calib.h:38
std::map< std::string, Eigen::VectorXd > apt
Definition calib.h:22
std::map< std::string, std::string > apt_header_description
Definition calib.h:151
Eigen::VectorXd hwpr_angle
Definition calib.h:24
std::map< Eigen::Index, std::tuple< Eigen::Index, Eigen::Index > > nw_limits
Definition calib.h:56
std::vector< std::string > apt_header_keys
Definition calib.h:81
Eigen::Index n_dets
Definition calib.h:47
void setup()
Definition calib.cpp:245
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
std::string source_name
Definition telescope.h:23
double d_fsmp
Definition telescope.h:42
double tau_225_GHz
Definition telescope.h:45
Eigen::MatrixXI scan_indices
Definition telescope.h:51
std::string project_id
Definition telescope.h:23
std::string pixel_axes
Definition telescope.h:59
std::map< std::string, Eigen::VectorXd > tel_header
Definition telescope.h:56
int n_params
Definition fitting.h:23
@ map
Definition toltec_io.h:22
std::map< Eigen::Index, std::string > array_name_map
Definition toltec_io.h:54
@ apt
Definition toltec_io.h:15
@ raw
Definition toltec_io.h:33
std::string create_filename(const std::string, const std::string, std::string, std::string, const bool)
Definition toltec_io.h:86
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_jinc_parallel(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:485
void calc_median_rms()
Definition map.cpp:416
void calc_map_hist()
Definition map.cpp:346
Eigen::Index n_rows
Definition map.h:65
std::string parallel_policy
Definition map.h:59
Eigen::Index n_cols
Definition map.h:65
void calc_map_psd()
Definition map.cpp:269
std::vector< Eigen::MatrixXd > coverage
Definition map.h:78
std::vector< Eigen::MatrixXd > signal
Definition map.h:78
std::vector< Eigen::MatrixXd > weight
Definition map.h:78
bool randomize_dets
Definition map.h:87
std::vector< Eigen::MatrixXd > kernel
Definition map.h:78
Eigen::Index n_noise
Definition map.h:67
void normalize_maps()
Definition map.cpp:126
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 populate_maps_naive_parallel(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:439
auto calc_tau(Eigen::DenseBase< Derived > &, double)
Definition calibrate.h:128
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
bool run_kernel
Definition rtcproc.h:24
auto remove_nearby_tones(TCData< TCDataKind::PTC, Eigen::MatrixXd > &, calib_t &, std::string)
Definition rtcproc.h:520
bool run_extinction
Definition rtcproc.h:29
timestream::Calibration calibration
Definition rtcproc.h:37
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
@ Map
Definition timestream.h:271
@ Gaussian
Definition timestream.h:267
bool run_fruit_loops
Definition timestream.h:279
void add_gaussian(TCData< tcdata_t, Eigen::MatrixXd > &, Eigen::DenseBase< Derived > &, std::string &, std::string &, apt_t &, double, Eigen::Index, Eigen::Index)
Definition timestream.h:838
#define STD_TO_FWHM
Definition constants.h:45
#define mJY_ASEC_to_MJY_SR
Definition constants.h:54
#define RAD_TO_ASEC
Definition constants.h:36
void to_ecsv_from_matrix(std::string filepath, Eigen::DenseBase< Derived > &table, std::vector< std::string > header, YAML::Node meta)
Definition ecsv_io.h:50
static double unix_to_modified_julian_date(double unix_time)
Definition utils.h:170
auto calc_det_pointing(tel_data_t &tel_data, double az_off, double el_off, const std::string pixel_axes, pointing_offset_t &pointing_offsets, const std::string map_grouping)
Definition pointing.h:11
auto tangent_to_abs(Eigen::DenseBase< Derived > &lat, Eigen::DenseBase< Derived > &lon, const double cra, const double cdec)
Definition pointing.h:88
static const std::string current_date_time()
Definition utils.h:91
auto calc_std_dev(Eigen::DenseBase< DerivedA > &data)
Definition utils.h:336
@ FilteredObs
Definition map.h:19
@ FilteredCoadd
Definition map.h:21
@ RawObs
Definition map.h:18
@ RawCoadd
Definition map.h:20
@ Good
Definition timestream.h:27
void calc_sensitivity(std::vector< tc_t > &ptcs, Eigen::DenseBase< DerivedA > &sensitivities, Eigen::DenseBase< DerivedB > &noisefluxes, double fsmp, Eigen::Index det, internal::Interval< double > freqrange={3., 5.})
Definition sensitivity.h:259
The raw obs struct This represents a single observation that contains a set of data items and calibra...
Definition io.h:50
bool beammap_subtract_reference
Definition engine.h:131
std::map< std::string, double > lower_sig2noise
Definition engine.h:146
std::map< std::string, double > beammap_fluxes_mJy_beam
Definition engine.h:121
Eigen::Index beammap_reference_det
Definition engine.h:134
std::map< std::string, double > upper_fwhm_arcsec
Definition engine.h:146
std::map< std::string, double > max_dist_arcsec
Definition engine.h:147
double lower_sens_factor
Definition engine.h:150
std::map< std::string, double > lower_fwhm_arcsec
Definition engine.h:146
int beammap_tod_output_iter
Definition engine.h:140
std::map< std::string, double > beammap_fluxes_MJy_Sr
Definition engine.h:122
bool beammap_derotate
Definition engine.h:137
std::map< std::string, double > upper_sig2noise
Definition engine.h:147
double upper_sens_factor
Definition engine.h:150
mapmaking::NaiveMapmaker naive_mm
Definition engine.h:107
engine::Telescope telescope
Definition engine.h:94
engine_utils::mapFitter map_fitter
Definition engine.h:97
engine::Diagnostics diagnostics
Definition engine.h:96
engine_utils::toltecIO toltec_io
Definition engine.h:95
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_tod_output
Definition engine.h:79
bool run_mapmaking
Definition engine.h:82
TC data class.
Definition timestream.h:55