DD4hep  1.30.0
Detector Description Toolkit for High Energy Physics
ExpressionEvaluator.cpp
Go to the documentation of this file.
1 //==========================================================================
2 // AIDA Detector description implementation
3 //--------------------------------------------------------------------------
4 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
5 // All rights reserved.
6 //
7 // For the licensing terms see $DD4hepINSTALL/LICENSE.
8 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
9 //
10 // Author : M.Frank
11 //
12 //==========================================================================
13 
15 #include "Parsers/config.h"
16 #include "Evaluator/Evaluator.h"
17 #include "Evaluator/detail/Evaluator.h"
18 #include "Evaluator/DD4hepUnits.h"
19 
21 
22 namespace units = dd4hep;
23 
24 namespace {
25 
26  dd4hep::tools::Evaluator _cgsUnits() {
27  // ===================================================================================
28  // CGS units
29  return dd4hep::tools::Evaluator(100., 1000., 1.0, 1.0, 1.0, 1.0, 1.0, 1.0);
30  }
31 
32  dd4hep::tools::Evaluator _tgeoUnits() {
33  // ===================================================================================
34  // DDG4 units (TGeo) 1 sec = 10^9 [nsec]
35  // 1 Coulomb = 1/e As
36  // Ampere = C/s = 1/e * As / s = 1. / 1.60217733e-19
37  // kilogram = joule*s*s/(m*m) 1/e_SI * 1 *1 / 1e2 / 1e2
38 
39  // e.setSystemOfUnits(1.e+2, 1./1.60217733e-6, 1.0, 1./1.60217733e-19, 1.0, 1.0, 1.0);
40  // use the units as defined in DD4hepUnits.h:
41  return dd4hep::tools::Evaluator( units::meter,
42  units::kilogram,
43  units::second,
44  units::ampere,
45  units::kelvin,
46  units::mole,
47  units::candela,
48  units::rad );
49  }
50 
51  dd4hep::tools::Evaluator _g4Units() {
52  // ===================================================================================
53  // Geant4 units
54  // Geant4: kilogram = joule*s*s/(m*m) 1/e_SI * 1e-6 * 1e9 1e9 / 1e3 / 1e3 = 1. / 1.60217733e-25
55  return dd4hep::tools::Evaluator(1.e+3, 1./1.60217733e-25, 1.e+9, 1./1.60217733e-10, 1.0, 1.0, 1.0, 1.0);
56  }
57 }
58 
60 namespace dd4hep {
61 
62  const tools::Evaluator& evaluator() {
63  static const tools::Evaluator e = _tgeoUnits();
64  return e;
65  }
66 
68  const tools::Evaluator& g4Evaluator() {
69  static const tools::Evaluator e = _g4Units();
70  return e;
71  }
72 
74  const tools::Evaluator& cgsEvaluator() {
75  static const tools::Evaluator e = _cgsUnits();
76  return e;
77  }
78 }
79 
dd4hep::g4Evaluator
const dd4hep::tools::Evaluator & g4Evaluator()
Access to G4 evaluator. Note: Uses Geant4 units!
Definition: ExpressionEvaluator.cpp:68
dd4hep::evaluator
const dd4hep::tools::Evaluator & evaluator()
Definition: ExpressionEvaluator.cpp:62
dd4hep
Namespace for the AIDA detector description toolkit.
Definition: AlignmentsCalib.h:28
dd4hep::cgsEvaluator
const tools::Evaluator & cgsEvaluator()
Access to G4 evaluator. Note: Uses cgs units!
Definition: ExpressionEvaluator.cpp:74