Go to the documentation of this file.
8 #ifndef UFO_FILTERS_TRACKCHECKUTILS_H_
9 #define UFO_FILTERS_TRACKCHECKUTILS_H_
15 #include "eckit/config/Configuration.h"
16 #include "oops/util/DateTime.h"
17 #include "oops/util/Duration.h"
25 template <
typename DATATYPE>
class ObsDataVector;
31 inline util::Duration
abs(
const util::Duration &duration) {
32 return duration.toSeconds() >= 0 ? duration : -duration;
35 class RecursiveSplitter;
37 namespace TrackCheckUtils {
38 typedef std::array<float, 3>
Point;
61 const util::DateTime &
time);
63 const util::DateTime &
time()
const {
return time_; }
82 const std::vector<bool> &apply,
87 const eckit::Configuration &config,
88 const ioda::ObsSpace &obsdb);
92 const ioda::ObsSpace &obsdb);
95 const std::vector<size_t> &validObsIds,
98 template <
typename VariableType>
100 const std::vector<size_t> &validObsIds,
102 const ioda::ObsSpace &obsdb);
106 const ioda::ObsSpace &obsdb);
111 std::vector<std::vector<bool> > &flagged);
117 #endif // UFO_FILTERS_TRACKCHECKUTILS_H_
ObsLocationTime(float latitude, float longitude, const util::DateTime &time)
std::vector< size_t > getValidObservationIds(const std::vector< bool > &apply, const std::shared_ptr< ioda::ObsDataVector< int >> &flags)
const Point & location() const
void groupObservationsByTypedVariable(const Variable &variable, const std::vector< size_t > &validObsIds, RecursiveSplitter &splitter, const ioda::ObsSpace &obsdb)
Partitions an array into groups of elements equivalent according to certain criteria.
float failedChecksFraction() const
void registerCheckResult(const CheckResult &result)
std::vector< util::DateTime > datetimes
void unregisterCheckResult(const CheckResult &result)
void groupObservationsByVariable(const Variable &variable, const std::vector< size_t > &validObsIds, RecursiveSplitter &splitter, const ioda::ObsSpace &obsdb)
std::array< float, 3 > Point
void groupObservationsByStation(const std::vector< size_t > &validObsIds, RecursiveSplitter &splitter, const eckit::Configuration &config, const ioda::ObsSpace &obsdb)
ObsGroupLocationTimes collectObservationsLocations(const ioda::ObsSpace &obsdb)
std::vector< float > latitudes
util::Duration abs(const util::Duration &duration)
const util::DateTime & time() const
@ NO_MORE_SWEEPS_REQUIRED
Locations/times of all observations processed by the track checking filter.
float distance(const Point &a, const Point &b)
Returns the distance between the two cartesian-mapped Point arguments
void sortTracksChronologically(const std::vector< size_t > &validObsIds, RecursiveSplitter &splitter, const ioda::ObsSpace &obsdb)
void groupObservationsByRecordNumber(const std::vector< size_t > &validObsIds, RecursiveSplitter &splitter, const ioda::ObsSpace &obsdb)
void flagRejectedObservations(const std::vector< bool > &isRejected, std::vector< std::vector< bool > > &flagged)
std::vector< float > longitudes