#include #include #include #include //-------------------------------------------------------------------------------- MultiThresholdDatabaseParms::MultiThresholdDatabaseParms() : _ok(false) { } //-------------------------------------------------------------------------------- MultiThresholdDatabaseParms::MultiThresholdDatabaseParms(int num, const char **parmfiles) : _ok(true) { for (int i=0; i MultiThresholdDatabaseParms::fieldNames(void) const { return _fieldNames; } //-------------------------------------------------------------------------------- int MultiThresholdDatabaseParms::numOutputObarFields(void) const { return (int)_thresh[_outputObarFieldIndex]._obarThresh.size(); } //-------------------------------------------------------------------------------- ObarThreshParms MultiThresholdDatabaseParms::ithOutputObarFieldParms(int i) const { return _thresh[_outputObarFieldIndex]._obarThresh[i]; } //-------------------------------------------------------------------------------- int MultiThresholdDatabaseParms::numFieldParms(void) const { return (int)(_thresh.size()); } //-------------------------------------------------------------------------------- ThresholdDatabaseParms MultiThresholdDatabaseParms::ithFieldParms(int i) const { return _thresh[i]; } //-------------------------------------------------------------------------------- bool ThresholdDatabaseParms::obarMatch(const std::vector &obarThresh) const { if (obarThresh.size() != _obarThresh.size()) { LOG(ERROR) << "DB obar size not same as config"; return false; } for (size_t i=0; i &fields) const { bool status = true; for (size_t i=0; i<_obarThresh.size(); ++i) { if (!_obarThresh[i].hasAllOutsideThresh(fields)) { status = false; } } return status; } //-------------------------------------------------------------------------------- bool ThresholdDatabaseParms::isGoodOutputObar(void) const { return _isOutputObar && _fromDatabase && _obarThresh.size() >= 1; } //-------------------------------------------------------------------------------- bool ThresholdDatabaseParms::isGoodNonoutputObar(void) const { return (!_isOutputObar && ((_fromDatabase && _obarThresh.size() == 1) || (!_fromDatabase))); } //------------------------------------------------------------------- bool ThresholdDatabaseParms::threshTest(double val, double thresh) const { return threshTest(val, thresh, _compare); } //------------------------------------------------------------------- bool ThresholdDatabaseParms::threshTest(double val, double thresh, ThresholdDatabaseParams::Compare_t c) { bool ret = false; switch (c) { case ThresholdDatabaseParams::LE: ret = (val <= thresh); break; case ThresholdDatabaseParams::EQ: ret = (val == thresh); break; case ThresholdDatabaseParams::GE: ret = (val >= thresh); break; default: break; } return ret; } //-------------------------------------------------------------------------------- bool ObarThreshParms::hasAllOutsideThresh(const std::vector &fields) const { if (fields.size() != _outsideThresh.size()) { LOG(ERROR) << "uneven number of fields from input compared to parms"; return false; } for (size_t i=0; i<_outsideThresh.size(); ++i) { if (find(fields.begin(), fields.end(), _outsideThresh[i].first) == fields.end()) { LOG(ERROR) << "Missing parameterized field " << _outsideThresh[i].first; return false; } } return true; } //-------------------------------------------------------------------------------- bool ObarThreshParms::getOutsideThresh(const std::string &fieldName, double &thresh) const { for (size_t i=0; i<_outsideThresh.size(); ++i) { if (_outsideThresh[i].first == fieldName) { thresh = _outsideThresh[i].second; return true; } } LOG(ERROR) << "No outside thresh for " << fieldName; return false; }