#include <CLHEP/Evaluator/Evaluator.h>
|
enum | {
OK
, WARNING_EXISTING_VARIABLE
, WARNING_EXISTING_FUNCTION
, WARNING_BLANK_STRING
,
ERROR_NOT_A_NAME
, ERROR_SYNTAX_ERROR
, ERROR_UNPAIRED_PARENTHESIS
, ERROR_UNEXPECTED_SYMBOL
,
ERROR_UNKNOWN_VARIABLE
, ERROR_UNKNOWN_FUNCTION
, ERROR_EMPTY_PARAMETER
, ERROR_CALCULATION_ERROR
} |
|
|
| Evaluator () |
|
| ~Evaluator () |
|
double | evaluate (const char *expression) |
|
int | status () const |
|
int | error_position () const |
|
void | print_error () const |
|
std::string | error_name () const |
|
void | setVariable (const char *name, double value) |
|
void | setVariable (const char *name, const char *expression) |
|
void | setFunction (const char *name, double(*fun)()) |
|
void | setFunction (const char *name, double(*fun)(double)) |
|
void | setFunction (const char *name, double(*fun)(double, double)) |
|
void | setFunction (const char *name, double(*fun)(double, double, double)) |
|
void | setFunction (const char *name, double(*fun)(double, double, double, double)) |
|
void | setFunction (const char *name, double(*fun)(double, double, double, double, double)) |
|
bool | findVariable (const char *name) const |
|
bool | findFunction (const char *name, int npar) const |
|
void | removeVariable (const char *name) |
|
void | removeFunction (const char *name, int npar) |
|
void | clear () |
|
void | setStdMath () |
|
void | setSystemOfUnits (double meter=1.0, double kilogram=1.0, double second=1.0, double ampere=1.0, double kelvin=1.0, double mole=1.0, double candela=1.0) |
|
Evaluator of arithmetic expressions with an extendable dictionary. Example:
double res = eval.
evaluate(
"sin(30*degree)");
- Author
- Evgeni Chernyaev Evgue.nosp@m.ni.T.nosp@m.chern.nosp@m.iaev.nosp@m.@cern.nosp@m..ch
Definition at line 26 of file Evaluator.h.
◆ anonymous enum
List of possible statuses. Status of the last operation can be obtained with status(). In case if status() is an ERROR the corresponding error message can be printed with print_error().
- See also
- status
-
error_position
-
print_error
Enumerator |
---|
OK | Everything OK
|
WARNING_EXISTING_VARIABLE | Redefinition of existing variable
|
WARNING_EXISTING_FUNCTION | Redefinition of existing function
|
WARNING_BLANK_STRING | Empty input string
|
ERROR_NOT_A_NAME | Not allowed sysmbol in the name of variable or function
|
ERROR_SYNTAX_ERROR | Systax error
|
ERROR_UNPAIRED_PARENTHESIS | Unpaired parenthesis
|
ERROR_UNEXPECTED_SYMBOL | Unexpected sysbol
|
ERROR_UNKNOWN_VARIABLE | Non-existing variable
|
ERROR_UNKNOWN_FUNCTION | Non-existing function
|
ERROR_EMPTY_PARAMETER | Function call has empty parameter
|
ERROR_CALCULATION_ERROR | Error during calculation
|
Definition at line 39 of file Evaluator.h.
◆ Evaluator()
HepTool::Evaluator::Evaluator |
( |
| ) |
|
◆ ~Evaluator()
HepTool::Evaluator::~Evaluator |
( |
| ) |
|
◆ clear()
void HepTool::Evaluator::clear |
( |
| ) |
|
◆ error_name()
std::string HepTool::Evaluator::error_name |
( |
| ) |
const |
get a string defining the error name
◆ error_position()
int HepTool::Evaluator::error_position |
( |
| ) |
const |
Returns position in the input string where the problem occured.
◆ evaluate()
double HepTool::Evaluator::evaluate |
( |
const char * | expression | ) |
|
Evaluates the arithmetic expression given as character string. The expression may consist of numbers, variables and functions separated by arithmetic (+, - , /, *, ^, **) and logical operators (==, !=, >, >=, <, <=, &&, ||).
- Parameters
-
expression | input expression. |
- Returns
- result of the evaluation.
- See also
- status
-
error_position
-
print_error
◆ findFunction()
bool HepTool::Evaluator::findFunction |
( |
const char * | name, |
|
|
int | npar ) const |
Finds the function in the dictionary.
- Parameters
-
name | name of the function to be unset. |
npar | number of parameters of the function.
|
- Returns
- true if such a function exists, false otherwise.
◆ findVariable()
bool HepTool::Evaluator::findVariable |
( |
const char * | name | ) |
const |
Finds the variable in the dictionary.
- Parameters
-
name | name of the variable. |
- Returns
- true if such a variable exists, false otherwise.
◆ print_error()
void HepTool::Evaluator::print_error |
( |
| ) |
const |
Prints error message if status() is an ERROR.
◆ removeFunction()
void HepTool::Evaluator::removeFunction |
( |
const char * | name, |
|
|
int | npar ) |
Removes the function from the dictionary.
- Parameters
-
name | name of the function to be unset. |
npar | number of parameters of the function. |
◆ removeVariable()
void HepTool::Evaluator::removeVariable |
( |
const char * | name | ) |
|
Removes the variable from the dictionary.
- Parameters
-
name | name of the variable. |
◆ setFunction() [1/6]
void HepTool::Evaluator::setFunction |
( |
const char * | name, |
|
|
double(* | fun )() ) |
Adds to the dictionary a function without parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.
- Parameters
-
name | function name. |
fun | pointer to the real function in the user code. |
◆ setFunction() [2/6]
void HepTool::Evaluator::setFunction |
( |
const char * | name, |
|
|
double(* | fun )(double) ) |
Adds to the dictionary a function with one parameter. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.
- Parameters
-
name | function name. |
fun | pointer to the real function in the user code. |
◆ setFunction() [3/6]
void HepTool::Evaluator::setFunction |
( |
const char * | name, |
|
|
double(* | fun )(double, double) ) |
Adds to the dictionary a function with two parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.
- Parameters
-
name | function name. |
fun | pointer to the real function in the user code. |
◆ setFunction() [4/6]
void HepTool::Evaluator::setFunction |
( |
const char * | name, |
|
|
double(* | fun )(double, double, double) ) |
Adds to the dictionary a function with three parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.
- Parameters
-
name | function name. |
fun | pointer to the real function in the user code. |
◆ setFunction() [5/6]
void HepTool::Evaluator::setFunction |
( |
const char * | name, |
|
|
double(* | fun )(double, double, double, double) ) |
Adds to the dictionary a function with four parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.
- Parameters
-
name | function name. |
fun | pointer to the real function in the user code. |
◆ setFunction() [6/6]
void HepTool::Evaluator::setFunction |
( |
const char * | name, |
|
|
double(* | fun )(double, double, double, double, double) ) |
Adds to the dictionary a function with five parameters. If such a function already exist in the dictionary, then status will be set to WARNING_EXISTING_FUNCTION.
- Parameters
-
name | function name. |
fun | pointer to the real function in the user code. |
◆ setStdMath()
void HepTool::Evaluator::setStdMath |
( |
| ) |
|
Sets standard mathematical functions and constants.
◆ setSystemOfUnits()
void HepTool::Evaluator::setSystemOfUnits |
( |
double | meter = 1.0, |
|
|
double | kilogram = 1.0, |
|
|
double | second = 1.0, |
|
|
double | ampere = 1.0, |
|
|
double | kelvin = 1.0, |
|
|
double | mole = 1.0, |
|
|
double | candela = 1.0 ) |
Sets system of units. Default is the SI system of units. To set the CGS (Centimeter-Gram-Second) system of units one should call: setSystemOfUnits(100., 1000., 1.0, 1.0, 1.0, 1.0, 1.0);
To set system of units accepted in the GEANT4 simulation toolkit one should call:
The basic units in GEANT4 are:
millimeter (millimeter = 1.)
nanosecond (nanosecond = 1.)
Mega electron Volt (MeV = 1.)
positron charge (eplus = 1.)
degree Kelvin (kelvin = 1.)
the amount of substance (mole = 1.)
luminous intensity (candela = 1.)
radian (radian = 1.)
steradian (steradian = 1.)
References Evaluator().
◆ setVariable() [1/2]
void HepTool::Evaluator::setVariable |
( |
const char * | name, |
|
|
const char * | expression ) |
Adds to the dictionary a variable with an arithmetic expression assigned to it. If a variable with such a name already exist in the dictionary, then status will be set to WARNING_EXISTING_VARIABLE.
- Parameters
-
name | name of the variable. |
expression | arithmetic expression. |
◆ setVariable() [2/2]
void HepTool::Evaluator::setVariable |
( |
const char * | name, |
|
|
double | value ) |
Adds to the dictionary a variable with given value. If a variable with such a name already exist in the dictionary, then status will be set to WARNING_EXISTING_VARIABLE.
- Parameters
-
name | name of the variable. |
value | value assigned to the variable. |
◆ status()
int HepTool::Evaluator::status |
( |
| ) |
const |
Returns status of the last operation with the evaluator.
The documentation for this class was generated from the following file: