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 if (!interp_over_gaps) {
335 scan_rawobs = kidsproc.load_rawobs(rawobs, scan, telescope.scan_indices, start_indices, end_indices);
338 scan_rawobs = kidsproc.load_rawobs_gaps(rawobs, scan, telescope.scan_indices, start_indices,
339 t_common, nw_times, 1 / (2 * telescope.fsmp));
342 Eigen::Index sl = rtcdata.scan_indices.data(3) - rtcdata.scan_indices.data(2) + 1;
356 return tuple_t(rtcdata,scan_rawobs);
363 run_timestream(kidsproc));
366template <
class K
idsProc>
370 auto& rtcdata = std::get<0>(input_tuple);
372 auto& scan_rawobs = std::get<1>(input_tuple);
378 Eigen::Index si = rtcdata.scan_indices.data(2);
381 Eigen::Index sl = rtcdata.scan_indices.data(3) - rtcdata.scan_indices.data(2) + 1;
390 rtcdata.pointing_offsets_arcsec.data[axis] = offset.segment(si,sl);
399 rtcdata.flags.data.resize(rtcdata.scans.data.rows(), rtcdata.scans.data.cols());
400 rtcdata.flags.data.setConstant(0);
405 auto& mask =
masks[i];
410 for (
int j = 0; j < rtcdata.flags.data.rows(); ++j) {
416 size = end_index - start_index + 1;
418 if (mask(j + si) == 0) {
419 rtcdata.flags.data.block(start_index, start, size, end - start + 1).setOnes();
422 logger->debug(
"{}/{} gaps flagged", rtcdata.flags.data.col(start).template cast<int>().sum(), rtcdata.flags.data.rows());
430 logger->info(
"starting scan {}. {}/{} scans completed", rtcdata.index.data + 1,
n_scans_done,
434 logger->info(
"raw time chunk processing for scan {}", rtcdata.index.data + 1);
453 logger->info(
"writing raw time chunk");
455 ptcdata.pointing_offsets_arcsec.data, calib_scan);
460 ptcdata.map_indices.data = std::move(map_indices);
463 ptcs0.at(ptcdata.index.data) = std::move(ptcdata);
464 calib_scans0.at(ptcdata.index.data) = std::move(calib_scan);
492 logger->info(
"calculating sensitivity");
495 Eigen::MatrixXd det_sens, noise_flux;
499 calib.
apt[
"sens"](i) = tula::alg::median(det_sens);
535 std::vector<Eigen::MatrixXd> lat, lon;
538 for (Eigen::Index i=0; i<
ptcs.size(); ++i) {
540 Eigen::MatrixXd ptc_lat(
ptcs[i].scans.data.rows(),
ptcs[i].scans.data.cols());
541 Eigen::MatrixXd ptc_lon(
ptcs[i].scans.data.rows(),
ptcs[i].scans.data.cols());
546 double az_off =
calib.
apt[
"x_t"](det_index);
547 double el_off =
calib.
apt[
"y_t"](det_index);
552 ptcs[i].pointing_offsets_arcsec.data,
554 ptc_lat.col(j) = std::move(det_lat);
555 ptc_lon.col(j) = std::move(det_lon);
559 lat.push_back(std::move(ptc_lat));
560 lon.push_back(std::move(ptc_lon));
566 logger->info(
"adding final apt and detector pointing to tod files");
569 netCDF::NcFile fo(val, netCDF::NcFile::write);
572 if (x.first!=
"flag2") {
574 std::vector<std::size_t> start_index_apt = {0};
576 std::vector<std::size_t> size_apt = {1};
577 netCDF::NcVar apt_v = fo.getVar(
"apt_" + x.first);
578 if (!apt_v.isNull()) {
579 for (std::size_t i=0; i< TULA_SIZET(
calib.
n_dets); ++i) {
580 start_index_apt[0] = i;
581 apt_v.putVar(start_index_apt, size_apt, &
calib.
apt[x.first](i));
588 netCDF::NcVar det_lat_v = fo.getVar(
"det_lat");
589 netCDF::NcVar det_lon_v = fo.getVar(
"det_lon");
592 netCDF::NcVar det_ra_v = fo.getVar(
"det_ra");
593 netCDF::NcVar det_dec_v = fo.getVar(
"det_dec");
596 std::vector<std::size_t> start_index = {0, 0};
598 std::vector<std::size_t> size = {1, TULA_SIZET(
calib.
n_dets)};
601 for (Eigen::Index i=0; i<lat.size(); ++i) {
603 for (std::size_t j=0; j < TULA_SIZET(lat[i].rows()); ++j) {
607 Eigen::VectorXd lat_row = lat[i].row(j);
608 det_lat_v.putVar(start_index, size, lat_row.data());
611 Eigen::VectorXd lon_row = lon[i].row(j);
612 det_lon_v.putVar(start_index, size, lon_row.data());
619 det_ra_v.putVar(start_index, size, ra.data());
622 det_dec_v.putVar(start_index, size, dec.data());
635 logger->info(
"calculating map psd");
638 logger->info(
"calculating map histogram");
646 bool keep_going =
true;
649 boost::random::mt19937 eng;
652 boost::random::uniform_int_distribution<> rands{0,1};
676 tula::logging::progressbar pb(
677 [&](
const auto &msg) {
logger->info(
"{}", msg); }, 100,
"PTC progress ");
683 if (current_iter > 0) {
684 if (!ptcproc.run_fruit_loops) {
686 logger->info(
"subtracting gaussian from tod");
688 ptcproc.add_gaussian<timestream::TCProc::SourceType::NegativeGaussian>(ptcs[i], params, telescope.pixel_axes, map_grouping,
689 calib.apt,omb.pixel_size_rad, omb.n_rows, omb.n_cols);
692 logger->info(
"subtracting map from tod");
694 ptcproc.map_to_tod<timestream::TCProc::SourceType::NegativeMap>(omb, ptcs[i], calib, ptcs[i].map_indices.data, telescope.pixel_axes,
701 logger->info(
"processed time chunk processing for scan {}", i + 1);
708 logger->info(
"adding gaussian to tod");
714 logger->info(
"adding map to tod");
727 ptcs[i].weights.data.resize(
ptcs[i].scans.data.cols());
728 ptcs[i].weights.data.setOnes();
732 logger->info(
"calculating weights");
741 logger->debug(
"writing chunk summary");
746 logger->debug(
"calculating stats");
755 logger->info(
"writing processed time chunk");
765 logger->info(
"starting mapmaking");
769 for (Eigen::Index i=0; i<
n_maps; ++i) {
787 for (
auto& ptcdata:
ptcs) {
789 ptcdata.noise.data = Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic>::Zero(
omb.
n_noise,
calib.
n_dets)
790 .unaryExpr([&](
int dummy){
return 2 * rands(eng) - 1; });
792 ptcdata.noise.data = Eigen::Matrix<int, Eigen::Dynamic, 1>::Zero(
omb.
n_noise)
793 .unaryExpr([&](
int dummy){
return 2 * rands(eng) - 1; });
799 logger->info(
"running mapmaking");
803 for (
auto& ptc :
ptcs) {
841 logger->info(
"normalizing maps");
845 double init_row = -99;
846 double init_col = -99;
848 logger->info(
"fitting maps");
853 auto array = maps_to_arrays(i);
855 double init_fwhm = toltec_io.array_fwhm_arcsec[array]*ASEC_TO_RAD/omb.pixel_size_rad;
857 auto [det_params, det_perror, good_fit] =
858 map_fitter.fit_to_gaussian<engine_utils::mapFitter::beammap>(omb.signal[i], omb.weight[i],
859 init_fwhm, init_row, init_col);
861 params.row(i) = det_params;
862 perrors.row(i) = det_perror;
863 good_fits(i) = good_fit;
867 params.row(i) = p0.row(i);
868 perrors.row(i) = perror0.row(i);
880 if (current_iter < beammap_iter_max) {
882 if ((converged.array() ==
true).all()) {
883 logger->info(
"all maps converged");
886 else if (current_iter > 1) {
888 if (beammap_iter_tolerance > 0) {
890 logger->info(
"checking convergence");
891 grppi::map(tula::grppi_utils::dyn_ex(omb.parallel_policy), det_in_vec, det_out_vec, [&](
auto i) {
895 if (!ptcproc.run_fruit_loops) {
896 diff = abs((params.row(i).array() - p0.row(i).array())/p0.row(i).array());
899 diff = abs(omb_copy.signal[i].array() - omb.signal[i].array()/omb_copy.signal[i].array());
902 auto d = (diff.array()).isNaN().select(0,diff);
903 if ((d.array() <= beammap_iter_tolerance).all()) {
907 converge_iter(i) = current_iter;
913 logger->info(
"{} maps converged on iter {}", (converged.array() ==
true).count(), current_iter);
916 if ((converged.array() ==
true).all()) {
917 logger->info(
"all maps converged");
922 logger->info(
"bypassing convergence check");
931 logger->info(
"max iteration reached");
943 int n_flagged_dets = 0;
945 logger->info(
"flagging detectors");
949 auto array_index =
calib.
apt[
"array"](i);
998 std::map<Eigen::Index, double> nw_median_sens;
1001 logger->debug(
"calculating mean sensitivities");
1015 Eigen::VectorXd sens(n_good_det);
1020 for (Eigen::Index m=0; m<sens.size(); m++) {
1022 sens(k) = nw_sens(m);
1028 nw_median_sens[nw] = tula::alg::median(sens);
1031 nw_median_sens[nw] = tula::alg::median(nw_sens);
1037 logger->debug(
"flagging sensitivities");
1040 auto nw_index =
calib.
apt[
"nw"](i);
1056 std::map<std::string, double> array_median_x_t, array_median_y_t;
1059 logger->debug(
"calculating array median positions");
1075 Eigen::VectorXd x_t, y_t;
1078 x_t.resize(n_good_det);
1079 y_t.resize(n_good_det);
1084 for (Eigen::Index m=0; m<array_x_t.size(); m++) {
1086 x_t(k) = array_x_t(m);
1087 y_t(k) = array_y_t(m);
1093 array_median_x_t[array_name] = tula::alg::median(x_t);
1094 array_median_y_t[array_name] = tula::alg::median(y_t);
1098 array_median_x_t[array_name] = tula::alg::median(array_x_t);
1099 array_median_y_t[array_name] = tula::alg::median(array_y_t);
1104 logger->debug(
"flagging detector positions");
1107 auto array_index =
calib.
apt[
"array"](i);
1111 double dist = sqrt(pow(
calib.
apt[
"x_t"](i) - array_median_x_t[array_name],2) +
1112 pow(
calib.
apt[
"y_t"](i) - array_median_y_t[array_name],2));
1127 logger->info(
"{} detectors were flagged", n_flagged_dets);
1130 logger->debug(
"calculating flux conversion factors");
1133 auto array_index =
calib.
apt[
"array"](i);
1164 double ref_det_x_t = 0;
1165 double ref_det_y_t = 0;
1180 logger->info(
"finding a reference detector");
1194 Eigen::VectorXd x_t, y_t, det_indices, dist;
1197 x_t.resize(n_good_det);
1198 y_t.resize(n_good_det);
1199 det_indices.resize(n_good_det);
1204 for (Eigen::Index i=0; i<array_x_t.size(); ++i) {
1206 x_t(k) = array_x_t(i);
1207 y_t(k) = array_y_t(i);
1215 dist = pow(x_t.array(),2) + pow(y_t.array(),2);
1218 dist = pow(array_x_t.array(),2) + pow(array_y_t.array(),2);
1219 det_indices = Eigen::VectorXd::LinSpaced(array_x_t.size(), std::get<0>(
calib.
array_limits[array]),
1234 static_cast<float>(ref_det_x_t),
static_cast<float>(ref_det_y_t));
1237 logger->info(
"no reference detector selected");
1260 Eigen::VectorXd rot_az_off = cos(-
calib.
apt[
"derot_elev"].array())*
calib.
apt[
"x_t_derot"].array() -
1262 Eigen::VectorXd rot_alt_off = sin(-
calib.
apt[
"derot_elev"].array())*
calib.
apt[
"x_t_derot"].array() +
1266 calib.
apt[
"x_t_derot"] = -rot_az_off;
1267 calib.
apt[
"y_t_derot"] = -rot_alt_off;
1270 logger->info(
"derotating apt");
1277template <mapmaking::MapType map_type>
1282 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>* f_io =
nullptr;
1284 std::vector<fitsIO<file_type_enum::write_fits, CCfits::ExtHDU*>>* n_io =
nullptr;
1287 std::string dir_name;
1306 logger->info(
"writing apt table");
1320 apt_table.col(i) =
flag2.cast<
double> ();
1328 logger->info(
"done writing apt table {}.ecsv",apt_filename);
1358 if (!f_io->empty()) {
1361 tula::logging::progressbar pb(
1362 [&](
const auto &msg) {
logger->info(
"{}", msg); }, 100,
"output progress ");
1364 for (Eigen::Index i=0; i<f_io->size(); ++i) {
1367 logger->debug(
"adding primary header to file {}",i);
1370 if (!mb->
noise.empty()) {
1371 logger->debug(
"adding primary header to noise file {}",i);
1376 logger->debug(
"done adding primary headers");
1380 Eigen::Index step = 2;
1382 if (!mb->
kernel.empty()) {
1390 for (Eigen::Index i=0; i<
n_maps; ++i) {
1393 logger->debug(
"adding map");
1410 logger->debug(
"adding beammap header keys");
1414 f_io->at(map_index).hdus.at(k)->addKey(
"BEAMMAP." + key,
calib.
apt[key](i), key
1417 f_io->at(map_index).hdus.at(k)->addKey(
"BEAMMAP." + key, 0.0, key
1422 f_io->at(map_index).hdus.at(k)->addKey(
"BEAMMAP." + key,
flag2(i), key
1433 logger->info(
"maps have been written to:");
1434 for (Eigen::Index i=0; i<f_io->size(); ++i) {
1435 logger->info(
"{}.fits",f_io->at(i).filepath);
1445 logger->debug(
"writing psds");
1446 write_psd<map_type>(mb, dir_name);
1447 logger->debug(
"writing histograms");
1448 write_hist<map_type>(mb, dir_name);
Eigen::Vector< int, Eigen::Dynamic > converge_iter
Definition beammap.h:37
void run_loop()
Definition beammap.h:644
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:1278
std::vector< int > det_out_vec
Definition beammap.h:67
void loop_pipeline()
Definition beammap.h:476
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:937
mapmaking::MapBuffer omb_copy
Definition beammap.h:25
void process_apt()
Definition beammap.h:1162
Eigen::MatrixXd params
Definition beammap.h:43
auto run_timestream(KidsProc &)
Definition beammap.h:367
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
void write_map_summary(map_buffer_t &)
Definition engine.h:1584
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::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
Eigen::VectorXI arrays_to_maps
Definition engine.h:232
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
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::string redu_type
Definition engine.h:214
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::string obsnum
Definition engine.h:217
std::vector< fitsIO< file_type_enum::write_fits, CCfits::ExtHDU * > > coadd_fits_io_vec
Definition engine.h:250
std::vector< std::string > date_obs
Definition engine.h:169
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
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
double fsmp
Definition telescope.h:42
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:136
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
bool run_kernel
Definition rtcproc.h:24
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
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: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
@ 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:133
std::map< std::string, double > lower_sig2noise
Definition engine.h:148
std::map< std::string, double > beammap_fluxes_mJy_beam
Definition engine.h:123
Eigen::Index beammap_reference_det
Definition engine.h:136
std::map< std::string, double > upper_fwhm_arcsec
Definition engine.h:148
std::map< std::string, double > max_dist_arcsec
Definition engine.h:149
double lower_sens_factor
Definition engine.h:152
std::map< std::string, double > lower_fwhm_arcsec
Definition engine.h:148
int beammap_tod_output_iter
Definition engine.h:142
std::map< std::string, double > beammap_fluxes_MJy_Sr
Definition engine.h:124
bool beammap_derotate
Definition engine.h:139
std::map< std::string, double > upper_sig2noise
Definition engine.h:149
double upper_sens_factor
Definition engine.h:152
mapmaking::NaiveMapmaker naive_mm
Definition engine.h:109
engine::Telescope telescope
Definition engine.h:96
engine_utils::mapFitter map_fitter
Definition engine.h:99
engine::Diagnostics diagnostics
Definition engine.h:98
engine_utils::toltecIO toltec_io
Definition engine.h:97
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_tod_output
Definition engine.h:81
bool run_mapmaking
Definition engine.h:84
TC data class.
Definition timestream.h:55