9 #ifndef LARDATAALG_DETECTORINFO_DETECTORTIMINGTYPES_H 10 #define LARDATAALG_DETECTORINFO_DETECTORTIMINGTYPES_H 86 template <
typename Cat>
95 template <
typename Cat,
typename =
void>
100 template <
typename Cat>
102 using type =
typename Cat::category_t;
105 template <
typename Cat>
109 template <
typename Cat,
typename TimeUnit = util::quantities::microsecond>
122 using frequency_t = decltype(1.0 / std::declval<typename time_interval_t::quantity_t>());
141 static std::string
name() {
return category_t::name(); }
144 template <
typename OC>
145 static constexpr
bool same_category_as = std::is_same_v<category_of<OC>,
category_t>;
148 template <
typename OC>
149 static constexpr
bool category_compatible_with = same_category_as<category_of<OC>>;
158 static std::string
name() {
return {
"electronics time"}; }
178 static std::string
name() {
return {
"TPC electronics time"}; }
201 static std::string
name() {
return {
"optical electronics time"}; }
228 static std::string
name() {
return {
"hardware trigger time"}; }
251 static std::string
name() {
return {
"simulation time"}; }
411 template <
typename T>
415 template <
typename T>
432 template <
typename T,
typename =
void>
435 template <
typename Q>
438 std::enable_if_t<std::is_same_v<typename Q::baseunit_t, util::quantities::units::Tick>>>
444 template <
typename,
typename =
void>
448 template <
typename WC>
451 std::enable_if_t<util::quantities::concepts::is_interval_or_point_v<WC>>>
461 template <
typename Cat>
465 template <
typename T>
474 #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).
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).
timescale_traits< TriggerTimeCategory >::time_point_t trigger_time
A point in time on the trigger time scale.
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.
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 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.
Namespace including different time scales as defined in LArSoft.
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.