00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_Units_H
00010 #define ThePEG_Units_H
00011
00012 #include "ThePEG/Vectors/Lorentz5Vector.fh"
00013 #include "ThePEG/Vectors/LorentzVector.fh"
00014 #include "ThePEG/Vectors/ThreeVector.fh"
00015 #include "ThePEG/Vectors/Transverse.fh"
00016 #include "ThePEG_Qty.h"
00017
00018 namespace ThePEG {
00019
00031 namespace Units {
00032
00034 typedef QTY<0,1,0>::Type Energy;
00035
00037 typedef Energy Mass;
00038
00040 typedef QTY<1,0,0>::Type Length;
00041
00043 typedef Length Time;
00044
00046 typedef QTY<-1,0,0>::Type InvLength;
00047
00049 typedef double Velocity;
00050
00052 typedef QTY<0,0,1>::Type Charge;
00053
00055 typedef QTY<1,1,0>::Type AngularMomentum;
00056
00058 typedef QTY<-1,1,0>::Type Tension;
00059
00061 typedef QTY<2,0,0>::Type Area;
00062
00064 typedef QTY<-2,0,0>::Type InvArea;
00065
00067 typedef Area CrossSection;
00068
00074 typedef QTY<0, 2, 0>::Type Energy2;
00075 typedef QTY<0, 3, 0>::Type Energy3;
00076 typedef QTY<0, 4, 0>::Type Energy4;
00077 typedef QTY<0, 5, 0>::Type Energy5;
00078 typedef QTY<0, 6, 0>::Type Energy6;
00079 typedef QTY<0, 7, 0>::Type Energy7;
00080 typedef QTY<0, 8, 0>::Type Energy8;
00081 typedef QTY<0, 9, 0>::Type Energy9;
00082 typedef QTY<0,10, 0>::Type Energy10;
00083 typedef QTY<0,11, 0>::Type Energy11;
00084 typedef QTY<0,12, 0>::Type Energy12;
00085
00086 typedef QTY<0, 1,0, 1,2,1>::Type SqrtEnergy;
00087 typedef QTY<0,-1,0, 1,2,1>::Type InvSqrtEnergy;
00088
00089 typedef QTY<0, -1, 0>::Type InvEnergy;
00090 typedef QTY<0, -2, 0>::Type InvEnergy2;
00091 typedef QTY<0, -3, 0>::Type InvEnergy3;
00092 typedef QTY<0, -4, 0>::Type InvEnergy4;
00093 typedef QTY<0, -5, 0>::Type InvEnergy5;
00094 typedef QTY<0, -6, 0>::Type InvEnergy6;
00095 typedef QTY<0, -7, 0>::Type InvEnergy7;
00096 typedef QTY<0, -8, 0>::Type InvEnergy8;
00097 typedef QTY<0, -9, 0>::Type InvEnergy9;
00098 typedef QTY<0,-10, 0>::Type InvEnergy10;
00099 typedef QTY<0,-11, 0>::Type InvEnergy11;
00100 typedef QTY<0,-12, 0>::Type InvEnergy12;
00102
00104 typedef QTY<2,2,0>::Type Energy2XSec;
00105
00107 typedef QTY<2,-2,0>::Type DiffXSec;
00108
00110 typedef QTY<2,-4,0>::Type Diff2XSec;
00111
00113 typedef QTY<2,-6,0>::Type Diff3XSec;
00114
00116 typedef Energy2 Scale;
00117
00119 typedef ThreeVector<Length> Point;
00120
00122 typedef ThreeVector<Length> Distance;
00123
00125 typedef ThreeVector<double> Axis;
00126
00128 typedef ThreeVector<Energy> Momentum3;
00129
00131 typedef ThreeVector<double> Boost;
00132
00134 typedef LorentzVector<Length> LorentzDistance;
00135
00138 typedef Lorentz5Vector<Length> Lorentz5Distance;
00139
00141 typedef LorentzVector<Length> LorentzPoint;
00142
00144 typedef LorentzVector<Energy> LorentzMomentum;
00145
00148 typedef Lorentz5Vector<Energy> Lorentz5Momentum;
00149
00151 typedef Transverse<Energy> TransverseMomentum;
00152
00154
00155 const Length millimeter = TypeTraits<Length>::baseunit;
00156 const Energy MeV = TypeTraits<Energy>::baseunit;
00157 const Charge eplus = TypeTraits<Charge>::baseunit;
00158
00159 const Energy keV = 1.0e-3 * MeV;
00160 const Energy GeV = 1.0e3 * MeV;
00161 const Energy TeV = 1.0e6 * MeV;
00162
00163 const Energy2 MeV2 = MeV * MeV;
00164 const Energy2 GeV2 = GeV * GeV;
00165 const InvEnergy InvGeV = 1/GeV;
00166
00167 const Length meter = 1.0e3 * millimeter;
00168 const Length mm = millimeter;
00169 const Length centimeter = 10.0*millimeter;
00170 const Length micrometer = 1.0e-3 * millimeter;
00171 const Length nanometer = 1.0e-6 * millimeter;
00172 const Length picometer = 1.0e-9 * millimeter;
00173 const Length femtometer = 1.0e-12 * millimeter;
00174
00175 const Area picobarn = 1.0e-40 * meter * meter;
00176 const Area nanobarn = 1.0e3 * picobarn;
00177 const Area microbarn = 1.0e6 * picobarn;
00178 const Area millibarn = 1.0e9 * picobarn;
00179 const Area barn = 1.0e12 * picobarn;
00180 const Area femtobarn = 1.0e-3 * picobarn;
00182
00184 const QTY<1,1,0>::Type hbarc = 197.326968e-15 * MeV * meter;
00186 const QTY<1,1,0>::Type hbar_Planck = hbarc / 1.0;
00187 }
00188
00193 namespace UnitRemoval {
00195
00196 const Units::Energy E = Units::MeV;
00197
00198 const Units::Energy2 E2 = E*E;
00199 const Units::Energy3 E3 = E*E2;
00200 const Units::Energy4 E4 = E2*E2;
00201
00202 const Units::InvEnergy InvE = 1.0/E;
00203 const Units::InvEnergy2 InvE2 = 1.0/E2;
00204 const Units::InvEnergy3 InvE3 = 1.0/E3;
00205 const Units::InvEnergy4 InvE4 = 1.0/E4;
00206
00207 const Units::SqrtEnergy SqrtE = sqrt(E);
00208 const Units::InvSqrtEnergy InvSqrtE = 1.0/sqrt(E);
00210 }
00211
00212 }
00213
00214 #endif