Skip to content
Snippets Groups Projects
Commit 5e910366 authored by Robert Butora's avatar Robert Butora
Browse files

vlkb-obscore: fills in em_ from surveys::trans for 2D images

parent 546c6927
No related branches found
No related tags found
No related merge requests found
......@@ -186,6 +186,59 @@ string get_wavelen(int precision, fitsfiles::key_values_by_type key_values)
}
// trim from start (in place)
inline void ltrim(std::string &s) {
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](unsigned char ch) {
return !std::isspace(ch);
}));
}
// trim from end (in place)
inline void rtrim(std::string &s) {
s.erase(std::find_if(s.rbegin(), s.rend(), [](unsigned char ch) {
return !std::isspace(ch);
}).base(), s.end());
}
// trim from both ends (in place)
inline void trim(std::string &s) {
rtrim(s);
ltrim(s);
}
// returns band in wavelen [m]
double parse_transition(string trans)
{
// Surveys::survTransition "num unit" <-- for images
trim(trans);
if(!trans.empty())
{
string::size_type pos = trans.find(' ');
std::string num = trans.substr(0, pos);
std::string unit = trans.substr(pos+1);
LOG_STREAM << "parse trans: " << num << " " << unit << endl;
const double speed_of_light = 299792458.0; // [m/s] in vacuum
double value = stod(num);
if(unit.compare("um") == 0) return value * 1e-6;
else if(unit.compare("mm") == 0) return value * 1e-3;
else if(unit.compare("m") == 0) return value;
else if(unit.compare("GHz") == 0) return (speed_of_light / (value * 1e9));
else if(unit.compare("MHz") == 0) return (speed_of_light / (value * 1e6));
else if(unit.compare("kHz") == 0) return (speed_of_light / (value * 1e3));
else if(unit.compare("Hz") == 0) return (speed_of_light / (value));
else
return 0.0; // ignore
}
else
return 0.0;
}
//----------------------------------------------------------------------
// public API
......@@ -374,10 +427,11 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/
}
else if(icrsBounds.size() == 2) // 2D images
{
//if(!strcmp(survey.survSpecies.c_str(), "Continuum"))
// dem_min = dem_max = 0.0; // FIXME transtod(psurv->transition);
// surv.restFrequency [Hz] <-- is empty for 2D images: take from survTransition ?
// surv.survTransition "num unit" <-- for images
obscoreRow[em_min] = get_wavelen(EM_PRECISION, hdu.key_values);
double val = parse_transition(surv.survTransition);
obscoreRow[em_min] = ((val==0.0) ? "NULL" : to_string(val)); //get_wavelen(EM_PRECISION, hdu.key_values);
obscoreRow[em_max] = obscoreRow[em_min];
obscoreRow[em_res_power] = "NULL";
obscoreRow[em_xel] = "NULL";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment