Classes | Namespaces
energy.h File Reference

Dimensioned variables representing energy. More...

#include "lardataalg/Utilities/quantities.h"
#include <string_view>
#include <ratio>

Go to the source code of this file.

Classes

struct  util::quantities::units::ElectronVolt
 

Namespaces

 util::quantities
 Types of variables with a unit.
 
 util::quantities::units
 Definitions of actual units.
 
 util::quantities::energy_literals
 Literal constants for energy quantities.
 

Typedefs

Particle energy quantities

These energy quantities are tied to util::quantities::units::ElectronVolt. A few options are provided:

  • most general template, scaled_electronvolt, allowing to choose both the scale of the unit (e.g. std::exa for exaelectronvolt) and the type of the numerical representation
  • generic templates (e.g. electronvolt_as), allowing to choose which numerical representation to use
  • double precision (e.g. electronvolt), ready for use
template<typename R , typename T = double>
using util::quantities::scaled_electronvolt = concepts::scaled_quantity< units::ElectronVolt, R, T >
 The most generic units::ElectronVolt-based quantity. More...
 
template<typename T = double>
using util::quantities::electronvolt_as = scaled_electronvolt< std::ratio< 1 >, T >
 Type of energy stored in electronvolt. More...
 
using util::quantities::electronvolt = electronvolt_as<>
 Type of energy stored in electronvolts, in double precision. More...
 
template<typename T = double>
using util::quantities::microelectronvolt_as = concepts::rescale< electronvolt_as< T >, std::micro >
 Type of energy stored in microelectronvolt. More...
 
using util::quantities::microelectronvolt = microelectronvolt_as<>
 Type of energy stored in microelectronvolt, in double precision. More...
 
template<typename T = double>
using util::quantities::millielectronvolt_as = concepts::rescale< electronvolt_as< T >, std::milli >
 Type of energy stored in millielectronvolt. More...
 
using util::quantities::millielectronvolt = millielectronvolt_as<>
 Type of energy stored in millielectronvolt, in double precision. More...
 
template<typename T = double>
using util::quantities::kiloelectronvolt_as = concepts::rescale< electronvolt_as< T >, std::kilo >
 Type of energy stored in kiloelectronvolt. More...
 
using util::quantities::kiloelectronvolt = kiloelectronvolt_as<>
 Type of energy stored in kiloelectronvolt, in double precision. More...
 
template<typename T = double>
using util::quantities::megaelectronvolt_as = concepts::rescale< electronvolt_as< T >, std::mega >
 Type of energy stored in megaelectronvolt. More...
 
using util::quantities::megaelectronvolt = megaelectronvolt_as<>
 Type of energy stored in megaelectronvolt, in double precision. More...
 
template<typename T = double>
using util::quantities::gigaelectronvolt_as = concepts::rescale< electronvolt_as< T >, std::giga >
 Type of energy stored in gigaelectronvolt. More...
 
using util::quantities::gigaelectronvolt = gigaelectronvolt_as<>
 Type of energy stored in gigaelectronvolt, in double precision. More...
 
template<typename T = double>
using util::quantities::teraelectronvolt_as = concepts::rescale< electronvolt_as< T >, std::tera >
 Type of energy stored in teraelectronvolt. More...
 
using util::quantities::teraelectronvolt = teraelectronvolt_as<>
 Type of energy stored in teraelectronvolt, in double precision. More...
 

Functions

constexpr electronvolt util::quantities::energy_literals::operator""_eV (long double v)
 Literal electronvolt value. More...
 
constexpr electronvolt util::quantities::energy_literals::operator""_eV (unsigned long long int v)
 
constexpr microelectronvolt util::quantities::energy_literals::operator""_ueV (long double v)
 Literal microelectronvolt value. More...
 
constexpr microelectronvolt util::quantities::energy_literals::operator""_ueV (unsigned long long int v)
 
constexpr millielectronvolt util::quantities::energy_literals::operator""_meV (long double v)
 Literal millielectronvolt value. More...
 
constexpr millielectronvolt util::quantities::energy_literals::operator""_meV (unsigned long long int v)
 
constexpr kiloelectronvolt util::quantities::energy_literals::operator""_keV (long double v)
 Literal kilovolt value. More...
 
constexpr kiloelectronvolt util::quantities::energy_literals::operator""_keV (unsigned long long int v)
 
constexpr megaelectronvolt util::quantities::energy_literals::operator""_MeV (long double v)
 Literal megaelectronvolt value. More...
 
constexpr megaelectronvolt util::quantities::energy_literals::operator""_MeV (unsigned long long int v)
 
constexpr gigaelectronvolt util::quantities::energy_literals::operator""_GeV (long double v)
 Literal gigaelectronvolt value. More...
 
constexpr gigaelectronvolt util::quantities::energy_literals::operator""_GeV (unsigned long long int v)
 
constexpr teraelectronvolt util::quantities::energy_literals::operator""_TeV (long double v)
 Literal teraelectronvolt value. More...
 
constexpr teraelectronvolt util::quantities::energy_literals::operator""_TeV (unsigned long long int v)
 

Detailed Description

Dimensioned variables representing energy.

Author
Gianluca Petrillo (petri.nosp@m.llo@.nosp@m.slac..nosp@m.stan.nosp@m.ford..nosp@m.edu)
Date
January 20, 2020
See also
lardataalg/Utilities/quantities.h

Set of basic quantities related to energy. Currently, quantities are defined based on the following units:

This is a header-only library.

Todo:
Also belong here: joule, watt, eV/c, eV/c^2

Definition in file energy.h.