WPILibC++ 2023.4.3-108-ge5452e3
radiation.h
Go to the documentation of this file.
1// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5// Copyright (c) 2016 Nic Holthaus
6//
7// The MIT License (MIT)
8//
9// Permission is hereby granted, free of charge, to any person obtaining a copy
10// of this software and associated documentation files (the "Software"), to deal
11// in the Software without restriction, including without limitation the rights
12// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13// copies of the Software, and to permit persons to whom the Software is
14// furnished to do so, subject to the following conditions:
15//
16// The above copyright notice and this permission notice shall be included in
17// all copies or substantial portions of the Software.
18//
19// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25// SOFTWARE.
26//
27//--------------------------------------------------------------------------------------------------
28//
29// Copyright (c) 2016 Nic Holthaus
30//
31//--------------------------------------------------------------------------------------------------
32
33#pragma once
34
35#include "units/base.h"
36#include "units/energy.h"
37#include "units/frequency.h"
38#include "units/mass.h"
39
40namespace units {
41/**
42 * @namespace units::radiation
43 * @brief namespace for unit types and containers representing radiation values
44 * @details The SI units for radiation are:
45 * - source activity: becquerel
46 * - absorbed dose: gray
47 * - equivalent dose: sievert
48 * @anchor radiationContainers
49 * @sa See unit_t for more information on unit type containers.
50 */
51#if !defined(DISABLE_PREDEFINED_UNITS) || \
52 defined(ENABLE_PREDEFINED_RADIATION_UNITS)
53UNIT_ADD_WITH_METRIC_PREFIXES(radiation, becquerel, becquerels, Bq,
54 unit<std::ratio<1>, units::frequency::hertz>)
56 radiation, gray, grays, Gy,
57 compound_unit<energy::joules, inverse<mass::kilogram>>)
58UNIT_ADD_WITH_METRIC_PREFIXES(radiation, sievert, sieverts, Sv,
59 unit<std::ratio<1>, grays>)
60UNIT_ADD(radiation, curie, curies, Ci, unit<std::ratio<37>, gigabecquerels>)
62 unit<std::ratio<1>, megabecquerels>)
63UNIT_ADD(radiation, rad, rads, rads, unit<std::ratio<1>, centigrays>)
64
65UNIT_ADD_CATEGORY_TRAIT(radioactivity)
66#endif
67
68using namespace radiation;
69} // namespace units
#define UNIT_ADD_CATEGORY_TRAIT(unitCategory)
Macro to create the is_category_unit type trait.
Definition: base.h:381
typename units::detail::inverse_impl< U >::type inverse
represents the inverse unit type of class U.
Definition: base.h:1145
typename units::detail::compound_impl< U, Us... >::type compound_unit
Represents a unit type made up from other units.
Definition: base.h:1445
Definition: BFloat16.h:88
Unit Conversion Library namespace.
Definition: magnetic_flux.h:31
compound_unit< energy::joules, inverse< mass::kilogram > > rd
Definition: radiation.h:61
UNIT_ADD(moment_of_inertia, kilogram_square_meter, kilogram_square_meters, kg_sq_m, compound_unit< mass::kilograms, area::square_meters >) using namespace moment_of_inertia
grays
Definition: radiation.h:56
Gy
Definition: radiation.h:56
gray
Definition: radiation.h:56
compound_unit< energy::joules, inverse< mass::kilogram > > rutherford
Definition: radiation.h:61
UNIT_ADD_WITH_METRIC_PREFIXES(magnetic_flux, weber, webers, Wb, unit< std::ratio< 1 >, units::category::magnetic_flux_unit >) UNIT_ADD(magnetic_flux
compound_unit< energy::joules, inverse< mass::kilogram > > rutherfords
Definition: radiation.h:61
Type representing an arbitrary unit.
Definition: base.h:895