Go to the documentation of this file.
16 const std::vector <bool> &apply)
20 profileNums_(obsdb.recnum()),
21 profileNumCurrent_(0),
34 if (!
obsdb_.obs_sort_var().empty() &&
35 obsdb_.obs_sort_order() ==
"descending") {
53 if (
obsdb_.obs_sort_var().empty()) {
62 if (
obsdb_.obs_sort_order() ==
"descending") {
66 auto it_profidx_sorted = profidx_sorted.begin();
72 std::advance(it_profidx_sorted, 1);
76 throw eckit::BadParameter(
"sort order is ascending.", Here());
103 if (!
obsdb_.obs_sort_var().empty() &&
104 obsdb_.obs_sort_order() ==
"descending") {
117 std::vector <size_t> allProfileNums = {0};
120 if (profNum_j != profNum) {
121 allProfileNums.emplace_back(profNum_j);
126 if (allProfileNums.size() !=
obsdb_.nrecs()) {
127 throw eckit::BadValue(
"incorrect number of profiles in unsorted sample", Here());
std::vector< size_t > profileIndices_
Indices for this profile.
oops::Parameter< bool > ValidateTotalNumProf
If not sorting observations, ensure number of profiles is consistent.
size_t profileNumCurrent_
Current profile number in the sample.
const ProfileConsistencyCheckParameters & options_
Configurable parameters.
size_t profileNumToFind_
Next profile number to find in the sample.
void determineProfileIndices()
Determine indices in entire sample for this profile.
Options controlling the operation of the ProfileConsistencyChecks filter.
ioda::ObsSpace & obsdb_
Observation database.
const std::vector< bool > & apply_
Observations to apply the filter to.
int numLevelsToCheck_
Number of profile levels to which QC checks should be applied.
ProfIdxIter profidx_current_
Iterator pointing to current profile index (initially points to beginning).
ProfileIndices(ioda::ObsSpace &obsdb, const ProfileConsistencyCheckParameters &options, const std::vector< bool > &apply)
const std::vector< size_t > profileNums_
Profile numbers for the entire sample.
void validateTotalNumProf()
oops::OptionalParameter< int > maxlev