QwAnalysis
QwUnits.h
Go to the documentation of this file.
1 #ifndef QWUNITS_H
2 #define QWUNITS_H
3 
4 /**
5  * \ingroup QwAnalysis
6  *
7  * \section unitsoverview Units in the QwAnalysis framework
8  *
9  * As more and more analyzers start contributing code to the Qweak analysis
10  * code, it is important to use some conventions to avoid confusion. One of
11  * the conventions is the use of a standard system of coordinates. The other
12  * is a unified set of units. This way we will avoid errors when angles are
13  * not converted from degrees to radians, or centimeters and inches are in
14  * mixed up.
15  *
16  * The basic units in the QwAnalysis framework are:
17  * \li Length: <b>cm</b>
18  * \li Time: <b>ms</b>
19  * \li Energy: <b>MeV</b>
20  * \li Angles: <b>rad</b>
21  * \li Magnetic field: <b>T</b>
22  *
23  * How are these units to be used? Any variable that is being used inside
24  * subsystems and <b>especially when passing information to other subsystems</b>
25  * should have values in these units.
26  *
27  * This does not mean that every single constant has to be defined in these
28  * units, or that output has to use these units. A set of conversion constants
29  * is defined to make life easier.
30  *
31  * Take as an example the magnetic field map. The values stored in the map file
32  * by the external program are in kG. To convert those values, we would write:
33  * \code
34  * double bx, by, bz;
35  * mapfile >> bx >> by >> bz; // read values
36  * bx *= Qw::kG; by *= Qw::kG; bz *= Qw::kG; // define the units (kG)
37  * \endcode
38  * From now on, the values in bx, by, bz are in standard Qweak units (T). To
39  * write out the values in Gauss we write:
40  * \code
41  * cout << bx/Qw::G << "," << by/Qw::G << "," << bz/Qw::G << " G" << endl;
42  * \endcode
43  * For Tesla we would write
44  * \code
45  * cout << bx/Qw::T << "," << by/Qw::T << "," << bz/Qw::T << " T" << endl;
46  * \endcode
47  *
48  * If there are hard-coded values in the analyzer (which should be avoided),
49  * we should use these units to define them:
50  * \code
51  * const double position_r3 = 398.8 * Qw::cm;
52  * const double helicity_window = 1.0 * Qw::ms;
53  * const double noise_frequency = 60.0 * Qw::Hz;
54  * \endcode
55  */
56 namespace Qw {
57 
58  /// Length units: base unit is mm
59  //@{
60  // metric
61  static const double cm = 1.0;
62  static const double mm = 0.1 * cm;
63  static const double m = 1.0e2 * cm;
64  static const double km = 1.0e3 * m;
65  // imperial
66  static const double in = 2.54 * cm;
67  static const double mil = 0.001 * in;
68  //@}
69 
70  /// Time units: base unit is ms
71  //@{
72  static const double ms = 1.0;
73  static const double us = 1.0e-3 * ms;
74  static const double ns = 1.0e-6 * ms;
75  static const double sec = 1.0e3 * ms; // SI notation is s, but sec avoids ambiguity
76  static const double min = 60.0 * sec;
77  static const double hour = 60.0 * min;
78  static const double day = 24.0 * hour;
79  //@}
80 
81  /// Frequency units: base unit is kHz
82  //@{
83  static const double Hz = 1.0 / sec;
84  static const double kHz = 1.0 / ms;
85  static const double MHz = 1.0e3 * kHz;
86  //@}
87 
88  //@{
89  /// Energy: base unit is MeV
90  static const double V = 1.0;
91  static const double e = 1.0e-6;
92  static const double eV = 1.0e-6;
93  static const double keV = 1.0e-3;
94  static const double MeV = 1.0;
95  static const double GeV = 1.0e3;
96  static const double MeV2 = MeV * MeV;
97  static const double GeV2 = GeV * GeV;
98  //@}
99 
100  //@{
101  /// Angles: base unit is radian
102  static const double pi = 3.14159265;
103  static const double deg2rad = pi / 180.0;
104  static const double rad2deg = 180.0 / pi;
105  static const double rad = 1.0;
106  static const double deg = deg2rad;
107  //@}
108 
109  //@{
110  /// Magnetic field: base unit is T
111  static const double T = V * sec / (m * m);
112  static const double G = 1.0e-4 * T;
113  static const double kG = 1.0e3 * G;
114  //@}
115 
116  //@{
117  /// Physical constants
118  static const double c = 299792458. * m / sec; ///< Speed of light
119  static const double Mp = 938.272013 * MeV; ///< Mass of the proton
120  //@}
121 
122 } // namespace Qw
123 
124 #endif // QWUNITS_H
static const double pi
Angles: base unit is radian.
Definition: QwUnits.h:102
static const double G
Definition: QwUnits.h:112
static const double ms
Time units: base unit is ms.
Definition: QwUnits.h:72
static const double us
Definition: QwUnits.h:73
static const double in
Definition: QwUnits.h:66
static const double Hz
Frequency units: base unit is kHz.
Definition: QwUnits.h:83
static const double km
Definition: QwUnits.h:64
static const double m
Definition: QwUnits.h:63
static const double MeV2
Definition: QwUnits.h:96
static const double sec
Definition: QwUnits.h:75
static const double mil
Definition: QwUnits.h:67
static const double deg
Definition: QwUnits.h:106
static const double e
Definition: QwUnits.h:91
static const double mm
Definition: QwUnits.h:62
static const double rad
Definition: QwUnits.h:105
static const double kG
Definition: QwUnits.h:113
static const double keV
Definition: QwUnits.h:93
static const double day
Definition: QwUnits.h:78
static const double V
Energy: base unit is MeV.
Definition: QwUnits.h:90
static const double GeV2
Definition: QwUnits.h:97
static const double T
Magnetic field: base unit is T.
Definition: QwUnits.h:111
static const double rad2deg
Definition: QwUnits.h:104
static const double min
Definition: QwUnits.h:76
static const double GeV
Definition: QwUnits.h:95
static const double Mp
Mass of the proton.
Definition: QwUnits.h:119
static const double eV
Definition: QwUnits.h:92
static const double deg2rad
Definition: QwUnits.h:103
static const double MeV
Definition: QwUnits.h:94
static const double hour
Definition: QwUnits.h:77
static const double ns
Definition: QwUnits.h:74
static const double kHz
Definition: QwUnits.h:84
static const double c
Physical constants.
Definition: QwUnits.h:118
static const double cm
Length units: base unit is mm.
Definition: QwUnits.h:61
static const double MHz
Definition: QwUnits.h:85