# `TCIntEval` and `TCJitEval` These classes are generaly used when you use the cling root interpreter with Uranie. So they are not detailed here. Their documentation can be find in the C++ version of this documentation, but their uses are very similar to a `TPythonEval` class. Using C function in python can be done with the ROOT cling interpreter and the `TCIntEval`. Suppose you have a C rosenbrock function defined in the `UserFunctions.C` file as follow. ```cpp void rosenbrock(double *in, double *out) { double x, y, d1, d2; x = in[0]; y = in[1]; d1 = (1-x); d2 = (y-x*x); out[0] = d1*d1 + d2*d2; } ``` To use this function in Uranie, you need to load the script, and define the `TCIntEVal` (a `TCJitEval` does not work in python interpreter) ```python ROOT.gROOT.LoadMacro("UserFunctions.C") fun = Relauncher.TCIntEval("rosenbrock") ``` It is also possible to simply use a C++ function in python, through the ROOT cling interpreter out of the {{Relaun}} paradigm (for single-purpose estimation for instance). This discussion is already covered in [](#overview_python_handbook_py_cpp_function).