12#ifndef O2_FRAMEWORK_DEVICEMETRICSINFO_H_
13#define O2_FRAMEWORK_DEVICEMETRICSINFO_H_
106 if constexpr (std::is_same_v<T, int>) {
108 }
else if constexpr (std::is_same_v<T, uint64_t>) {
110 }
else if constexpr (std::is_same_v<T, StringMetric>) {
112 }
else if constexpr (std::is_same_v<T, float>) {
114 }
else if constexpr (std::is_same_v<T, int8_t>) {
117 static_assert(always_static_assert_v<T>,
"Unsupported type");
176 template <typename T, size_t I = metricStorageSize<T>()>
179 if constexpr (std::is_same_v<T, int>) {
180 return info.intMetrics[metricIdx];
181 }
else if constexpr (std::is_same_v<T, uint64_t>) {
182 return info.uint64Metrics[metricIdx];
183 }
else if constexpr (std::is_same_v<T, StringMetric>) {
184 return info.stringMetrics[metricIdx];
185 }
else if constexpr (std::is_same_v<T, float>) {
186 return info.floatMetrics[metricIdx];
187 }
else if constexpr (std::is_same_v<T, int8_t>) {
188 return info.enumMetrics[metricIdx];
190 static_assert(always_static_assert_v<T>,
"Unsupported type");
194 static void clearMetrics(std::vector<DeviceMetricsInfo>& infos);
#define O2_BUILTIN_UNREACHABLE
Timeframe settings Average distance in cm of events merged into Randomize distance around average distance of merged events Simulate correct bunch interactions instead of placing only the average number of events A value[n] sets TFlen for[n] collisions in Number of bunches per trainsort Number of bunch trains Instantaneous interaction rate Do not simulate border Total number of collisions to be placed in the interior of all time Do not select random but walk over array of events in stride steps h Event generator settings h configStandalone Use CPU for GPU Force usage of the specified GPU device no CPU fallback Continue processing after an error First event to Number of events to Number of iterations to Number of iterations to Number of initial iterations excluded from const char Directory with events to Events directory is and not inside events Show standalone event Run event generator maximum time bin of continuous for triggered for automatic continuous for automatic continuous triggered uint64_t
GLint GLint GLsizei GLint GLenum GLenum type
GLuint GLsizei const GLchar * label
Defining ITS Vertex explicitly as messageable.
std::array< size_t, metricStorageSize< T >()> TimestampsStorage
constexpr size_t metricStorageSize()
std::ostream & operator<<(std::ostream &s, ChannelType const &type)
Stream operators so that we can use ChannelType with Boost.Test.
std::array< T, metricStorageSize< T >()> MetricsStorage
static std::array< T, I > const & get(DeviceMetricsInfo const &info, size_t metricIdx)
static size_t metricsStorageSize(std::span< DeviceMetricsInfo const > infos)
static void clearMetrics(std::vector< DeviceMetricsInfo > &infos)
std::vector< size_t > maxDomain
std::vector< MetricsStorage< float > > floatMetrics
std::vector< TimestampsStorage< int > > intTimestamps
std::vector< float > average
std::vector< TimestampsStorage< float > > floatTimestamps
std::vector< MetricsStorage< StringMetric > > stringMetrics
std::vector< MetricsStorage< uint64_t > > uint64Metrics
std::vector< MetricsStorage< int > > intMetrics
std::vector< MetricPrefix > metricPrefixes
std::vector< MetricLabel > metricLabels
std::vector< TimestampsStorage< int8_t > > enumTimestamps
std::vector< size_t > minDomain
std::vector< bool > changed
std::vector< MetricPrefixIndex > metricLabelsPrefixesSortedIdx
std::vector< TimestampsStorage< uint64_t > > uint64Timestamps
std::vector< MetricLabelIndex > metricLabelsAlphabeticallySortedIdx
std::vector< MetricInfo > metrics
std::vector< MetricsStorage< int8_t > > enumMetrics
std::vector< TimestampsStorage< StringMetric > > stringTimestamps
static constexpr size_t MAX_METRIC_LABEL_SIZE
static constexpr size_t MAX_METRIC_PREFIX_SIZE
char prefix[MAX_METRIC_PREFIX_SIZE]
Temporary struct to hold a metric after it has been parsed.
char const * beginStringValue
char const * endStringValue
static constexpr ptrdiff_t MAX_SIZE