3 #include <CLHEP/Units/SystemOfUnits.h> 71 for (
size_t j = 0;
j <
units.size();
j++) {
73 symbol =
units[
j]->GetSymbol();
74 if (stri ==
name || stri == symbol)
75 return units[
j]->GetValue();
78 std::cout <<
"Warning from ALIUnitDefinition::GetValueOf(" << stri <<
")." 79 <<
" The unit " << stri <<
" does not exist in UnitsTable." 80 <<
" Return Value = 0." << std::endl;
92 for (
size_t j = 0;
j <
units.size();
j++) {
94 symbol =
units[
j]->GetSymbol();
95 if (stri ==
name || stri == symbol)
99 std::cout <<
"Warning from ALIUnitDefinition::GetCategory(" << stri <<
")." 100 <<
" The unit " << stri <<
" does not exist in UnitsTable." 101 <<
" Return category = None" << std::endl;
117 using namespace CLHEP;
119 std::make_shared<ALIUnitDefinition>(
"kilometer",
"km",
"Length", kilometer);
120 std::make_shared<ALIUnitDefinition>(
"meter",
"m",
"Length", meter);
121 std::make_shared<ALIUnitDefinition>(
"centimeter",
"cm",
"Length", centimeter);
122 std::make_shared<ALIUnitDefinition>(
"millimeter",
"mm",
"Length", millimeter);
123 std::make_shared<ALIUnitDefinition>(
"micrometer",
"mum",
"Length", micrometer);
124 std::make_shared<ALIUnitDefinition>(
"nanometer",
"nm",
"Length", nanometer);
125 std::make_shared<ALIUnitDefinition>(
"angstrom",
"Ang",
"Length", angstrom);
126 std::make_shared<ALIUnitDefinition>(
"fermi",
"fm",
"Length", fermi);
129 std::make_shared<ALIUnitDefinition>(
"kilometer2",
"km2",
"Surface", kilometer2);
130 std::make_shared<ALIUnitDefinition>(
"meter2",
"m2",
"Surface", meter2);
131 std::make_shared<ALIUnitDefinition>(
"centimeter2",
"cm2",
"Surface", centimeter2);
132 std::make_shared<ALIUnitDefinition>(
"millimeter2",
"mm2",
"Surface", millimeter2);
133 std::make_shared<ALIUnitDefinition>(
"barn",
"barn",
"Surface", barn);
134 std::make_shared<ALIUnitDefinition>(
"millibarn",
"mbarn",
"Surface", millibarn);
135 std::make_shared<ALIUnitDefinition>(
"microbarn",
"mubarn",
"Surface", microbarn);
136 std::make_shared<ALIUnitDefinition>(
"nanobarn",
"nbarn",
"Surface", nanobarn);
137 std::make_shared<ALIUnitDefinition>(
"picobarn",
"pbarn",
"Surface", picobarn);
140 std::make_shared<ALIUnitDefinition>(
"kilometer3",
"km3",
"Volume", kilometer3);
141 std::make_shared<ALIUnitDefinition>(
"meter3",
"m3",
"Volume", meter3);
142 std::make_shared<ALIUnitDefinition>(
"centimeter3",
"cm3",
"Volume", centimeter3);
143 std::make_shared<ALIUnitDefinition>(
"millimeter3",
"mm3",
"Volume", millimeter3);
146 std::make_shared<ALIUnitDefinition>(
"radian",
"rad",
"Angle", radian);
147 std::make_shared<ALIUnitDefinition>(
"milliradian",
"mrad",
"Angle", milliradian);
148 std::make_shared<ALIUnitDefinition>(
"milliradian",
"murad",
"Angle", 0.001 * milliradian);
149 std::make_shared<ALIUnitDefinition>(
"steradian",
"sr",
"Angle", steradian);
150 std::make_shared<ALIUnitDefinition>(
"degree",
"deg",
"Angle", degree);
153 std::make_shared<ALIUnitDefinition>(
"second",
"s",
"Time",
second);
154 std::make_shared<ALIUnitDefinition>(
"millisecond",
"ms",
"Time", millisecond);
155 std::make_shared<ALIUnitDefinition>(
"microsecond",
"mus",
"Time", microsecond);
156 std::make_shared<ALIUnitDefinition>(
"nanosecond",
"ns",
"Time", nanosecond);
157 std::make_shared<ALIUnitDefinition>(
"picosecond",
"ps",
"Time", picosecond);
160 std::make_shared<ALIUnitDefinition>(
"hertz",
"Hz",
"Frequency", hertz);
161 std::make_shared<ALIUnitDefinition>(
"kilohertz",
"kHz",
"Frequency", kilohertz);
162 std::make_shared<ALIUnitDefinition>(
"megahertz",
"MHz",
"Frequency", megahertz);
165 std::make_shared<ALIUnitDefinition>(
"eplus",
"e+",
"Electric charge", eplus);
166 std::make_shared<ALIUnitDefinition>(
"coulomb",
"C",
"Electric charge", coulomb);
169 std::make_shared<ALIUnitDefinition>(
"electronvolt",
"eV",
"Energy", electronvolt);
170 std::make_shared<ALIUnitDefinition>(
"kiloelectronvolt",
"keV",
"Energy", kiloelectronvolt);
171 std::make_shared<ALIUnitDefinition>(
"megaelectronvolt",
"MeV",
"Energy", megaelectronvolt);
172 std::make_shared<ALIUnitDefinition>(
"gigaelectronvolt",
"GeV",
"Energy", gigaelectronvolt);
173 std::make_shared<ALIUnitDefinition>(
"teraelectronvolt",
"TeV",
"Energy", teraelectronvolt);
174 std::make_shared<ALIUnitDefinition>(
"petaelectronvolt",
"PeV",
"Energy", petaelectronvolt);
175 std::make_shared<ALIUnitDefinition>(
"joule",
"J",
"Energy",
joule);
178 std::make_shared<ALIUnitDefinition>(
"milligram",
"mg",
"Mass", milligram);
179 std::make_shared<ALIUnitDefinition>(
"gram",
"g",
"Mass", gram);
180 std::make_shared<ALIUnitDefinition>(
"kilogram",
"kg",
"Mass", kilogram);
183 std::make_shared<ALIUnitDefinition>(
"g/cm3",
"g/cm3",
"Volumic Mass",
g / cm3);
184 std::make_shared<ALIUnitDefinition>(
"mg/cm3",
"mg/cm3",
"Volumic Mass", mg / cm3);
185 std::make_shared<ALIUnitDefinition>(
"kg/m3",
"kg/m3",
"Volumic Mass", kg / m3);
188 std::make_shared<ALIUnitDefinition>(
"watt",
"W",
"Power", watt);
191 std::make_shared<ALIUnitDefinition>(
"newton",
"N",
"Force", newton);
194 std::make_shared<ALIUnitDefinition>(
"pascal",
"Pa",
"Pressure", pascal);
195 std::make_shared<ALIUnitDefinition>(
"bar",
"bar",
"Pressure", bar);
196 std::make_shared<ALIUnitDefinition>(
"atmosphere",
"atm",
"Pressure", atmosphere);
199 std::make_shared<ALIUnitDefinition>(
"ampere",
"A",
"Electric current", ampere);
200 std::make_shared<ALIUnitDefinition>(
"milliampere",
"mA",
"Electric current", milliampere);
201 std::make_shared<ALIUnitDefinition>(
"microampere",
"muA",
"Electric current", microampere);
202 std::make_shared<ALIUnitDefinition>(
"nanoampere",
"nA",
"Electric current", nanoampere);
205 std::make_shared<ALIUnitDefinition>(
"volt",
"V",
"Electric potential", volt);
206 std::make_shared<ALIUnitDefinition>(
"kilovolt",
"kV",
"Electric potential", kilovolt);
207 std::make_shared<ALIUnitDefinition>(
"megavolt",
"MV",
"Electric potential", megavolt);
210 std::make_shared<ALIUnitDefinition>(
"weber",
"Wb",
"Magnetic flux", weber);
213 std::make_shared<ALIUnitDefinition>(
"tesla",
"T",
"Magnetic flux density", tesla);
214 std::make_shared<ALIUnitDefinition>(
"kilogauss",
"kG",
"Magnetic flux density", kilogauss);
215 std::make_shared<ALIUnitDefinition>(
"gauss",
"G",
"Magnetic flux density", gauss);
218 std::make_shared<ALIUnitDefinition>(
"kelvin",
"K",
"Temperature", kelvin);
221 std::make_shared<ALIUnitDefinition>(
"mole",
"mol",
"Amount of substance", mole);
224 std::make_shared<ALIUnitDefinition>(
"becquerel",
"Bq",
"Activity", becquerel);
225 std::make_shared<ALIUnitDefinition>(
"curie",
"Ci",
"Activity", curie);
228 std::make_shared<ALIUnitDefinition>(
"gray",
"Gy",
"Dose", gray);
234 std::cout <<
"\n ----- The Table of Units ----- \n";
256 if (
this != &right) {
286 size_t nbCat = theUnitsTable.size();
288 while ((
i < nbCat) && (theUnitsTable[
i]->GetName() !=
category))
291 std::cout <<
" ALIBestUnit: the category " <<
category <<
" does not exist !!" << std::endl;
292 std::cerr <<
"Missing unit category !" << std::endl;
308 size_t nbCat = theUnitsTable.size();
310 while ((
i < nbCat) && (theUnitsTable[
i]->GetName() !=
category))
313 std::cerr <<
" ALIBestUnit: the category " <<
category <<
" does not exist." << std::endl;
314 std::cerr <<
"Unit category not existing !" << std::endl;
333 ALIint len = theUnitsTable[
a.IndexOfCategory]->GetSymbMxLen();
335 ALIint ksup(-1), kinf(-1);
342 for (
size_t k = 0;
k < List.size();
k++) {
344 if (
value == 1.E12) {
349 }
else if (
value <= -1.E12) {
358 if ((ratio >= 1.) && (ratio < rsup)) {
362 if ((ratio < 1.) && (ratio > rinf)) {
376 flux <<
a.Value[
j] / (List[
index]->GetValue()) <<
" ";
379 #ifdef ALIUSE_STD_NAMESPACE 380 std::ios::fmtflags oldform =
std::cout.flags();
385 flux.setf(std::ios::left, std::ios::adjustfield);
386 flux << std::setw(len) << List[
index]->GetSymbol();
ALIint operator!=(const ALIUnitsCategory &) const
ALIint operator!=(const ALIUnitDefinition &) const
std::ostream & operator<<(std::ostream &flux, ALIBestUnit a)
std::vector< ALIUnitsCategory * > ALIUnitsTable
ALIUnitDefinition & operator=(const ALIUnitDefinition &)
constexpr double joule(6.24150e+12)
ALIBestUnit(ALIdouble internalValue, ALIstring category)
ALIUnitDefinition(ALIstring name, ALIstring symbol, ALIstring category, ALIdouble value)
static ALIstring GetCategory(ALIstring)
ALIUnitsContainer UnitsList
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
U second(std::pair< T, U > const &p)
ALIint operator==(const ALIUnitDefinition &) const
ALIUnitsCategory & operator=(const ALIUnitsCategory &)
static void PrintUnitsTable()
ALIstring GetName() const
Abs< T >::type abs(const T &t)
ALIUnitsCategory(ALIstring name)
reco::JetExtendedAssociation::JetExtendedData Value
static void BuildUnitsTable()
Basic3DVector unit() const
std::vector< std::shared_ptr< ALIUnitDefinition > > ALIUnitsContainer
ALIint operator==(const ALIUnitsCategory &) const
static ALIdouble GetValueOf(ALIstring)
TString units(TString variable, Char_t axis)
static ALIUnitsTable theUnitsTable
static ALIUnitsTable & GetUnitsTable()