9 #ifndef LARDATAALG_DETECTORINFO_DETECTORTIMINGTYPES_H
10 #define LARDATAALG_DETECTORINFO_DETECTORTIMINGTYPES_H
19 namespace detinfo::timescales {
88 template <
typename Cat>
99 template <
typename Cat,
typename =
void>
102 template <
typename Cat>
104 {
using type =
typename Cat::category_t; };
106 template <
typename Cat>
110 template <
typename Cat,
typename TimeUnit = util::quantities::microsecond>
125 = decltype(1.0 / std::declval<typename time_interval_t::quantity_t>());
147 template <
typename OC>
152 template <
typename OC>
154 = same_category_as<category_of<OC>>;
165 static std::string
name() {
return {
"electronics time" }; }
188 static std::string
name() {
return {
"TPC electronics time" }; }
214 static std::string
name() {
return {
"optical electronics time" }; }
244 static std::string
name() {
return {
"hardware trigger time" }; }
270 static std::string
name() {
return {
"simulation time" }; }
289 <SimulationTimeCategory, util::quantities::nanosecond>
458 template <
typename T>
462 template <
typename T>
476 namespace detinfo::timescales {
482 template <
typename T,
typename =
void>
486 template <
typename Q>
488 std::is_same_v<typename Q::baseunit_t, util::quantities::units::Tick>
497 template <
typename,
typename =
void>
501 template <
typename WC>
504 <util::quantities::concepts::is_interval_or_point_v<WC>>
518 template <
typename Cat>
523 template <
typename T>
524 struct is_tick_type: details::is_tick_type_impl<T> {};
535 #endif // LARDATAALG_DETECTORINFO_DETECTORTIMINGTYPES_H
timescale_traits< TriggerTimeCategory >::tick_d_t trigger_tick_d
A point on the trigger time scale expressed in its ticks (real).
double std(const std::vector< short > &wf, const double ped_mean, size_t start, size_t nsample)
Dimensioned variables representing frequency quantities.
timescale_traits< ElectronicsTimeCategory >::tick_t electronics_tick
A point on the electronics time scale expressed in its ticks.
microseconds_as<> microseconds
Type of time interval stored in microseconds, in double precision.
decltype(1.0/std::declval< typename time_interval_t::quantity_t >()) frequency_t
Type of frequency for this time scale.
timescale_traits< TriggerTimeCategory >::tick_t trigger_tick
A point on the trigger time scale expressed in its ticks.
Category for electronics time scale.
util::quantities::intervals::microseconds time_interval
A collection of traits for a time scale.
timescale_traits< TriggerTimeCategory >::tick_interval_d_t trigger_time_ticks_d
An interval on the trigger time scale expressed in its ticks (real).
Category for electronics time scale.
timescale_traits< OpticalTimeCategory >::tick_interval_d_t optical_time_ticks_d
timescale_traits< OpticalTimeCategory >::tick_interval_t optical_time_ticks
timescale_traits< TPCelectronicsTimeCategory >::tick_d_t TPCelectronics_tick_d
A point on the TPC electronics time scale expressed in its ticks (real).
tick_as< double > tick_d
Tick number, represented by double.
timescale_traits< TriggerTimeCategory >::time_point_t trigger_time
A point in time on the trigger time scale.
static constexpr bool category_compatible_with
Returns whether the category OC is compatible with this one.
timescale_traits< TriggerTimeCategory >::tick_interval_t trigger_time_ticks
An interval on the trigger time scale expressed in its ticks.
timescale_traits< ElectronicsTimeCategory >::tick_interval_t electronics_time_ticks
An interval on the electronics time scale expressed in its ticks.
timescale_traits< ElectronicsTimeCategory >::tick_interval_d_t electronics_time_ticks_d
An interval on the electronics time scale expressed in its ticks (real).
timescale_traits< SimulationTimeCategory >::time_point_t simulation_time
A point in time on the simulation time scale.
timescale_traits< TPCelectronicsTimeCategory >::tick_interval_t TPCelectronics_time_ticks
An interval on the TPC electronics time scale expressed in its ticks.
static std::string name()
constexpr bool is_tick_v
Whether the specified time T is tick-based.
Evaluates to whether the specified time T is tick-based.
typename std::enable_if< B, T >::type enable_if_t
tick_as<> tick
Tick number, represented by std::ptrdiff_t.
timescale_traits< OpticalTimeCategory >::time_point_t optical_time
A point in time on the optical detector electronics time scale.
timescale_traits< ElectronicsTimeCategory >::tick_d_t electronics_tick_d
A point on the electronics time scale expressed in its ticks (real).
An interval (duration, length, distance) between two quantity points.
Category for trigger time scale.
A template traits for time scale of category Cat.
timescale_traits< TPCelectronicsTimeCategory >::tick_interval_d_t TPCelectronics_time_ticks_d
Category for electronics time scale.
Category for TPC electronics time scale.
Dimensioned variables related to electronics.
static std::string name()
static std::string name()
timescale_traits< OpticalTimeCategory >::tick_t optical_tick
static std::string name()
static std::string name()
An non-mandatory base class for interval and point categories.
Dimensioned variables representing space or time quantities.
typename make_void< Ts...>::type void_t
typename category_of_t< Cat >::type category_of
timescale_traits< OpticalTimeCategory >::tick_d_t optical_tick_d
timescale_traits< TPCelectronicsTimeCategory >::time_point_t TPCelectronics_time
A point in time on the TPC electronics time scale.
Cat category_t
The category this time scale belongs to.
static constexpr bool same_category_as
Returns whether the category OC is the same as this one.
timescale_traits< TPCelectronicsTimeCategory >::tick_t TPCelectronics_tick
A point on the TPC electronics time scale expressed in its ticks.
timescale_traits< ElectronicsTimeCategory >::time_point_t electronics_time
A point in time on the electronics time scale.
static std::string name()
Name of this time scale.