1
0
Fork 0
mirror of https://github.com/gwm17/catima.git synced 2024-11-26 12:08:52 -05:00
catima/catimac.pxd
2017-07-25 18:19:11 +02:00

82 lines
2.7 KiB
Cython

from libcpp.pair cimport pair
from libcpp.vector cimport vector
cdef extern from "catima/structures.h" namespace "catima":
cdef struct Target:
double A
int Z
cdef struct Projectile:
double A
double Z
double Q
double T
cdef struct Result:
double Ein
double Eout
double Eloss
double range
double dEdxi
double dEdxo
double sigma_E
double sigma_a
double sigma_r
double tof
cdef cppclass MultiResult
cdef cppclass Material:
Material() except +
void add_element(double , int , double )
pair[Target,double] getElement(int)
int ncomponents()
double M()
double density()
void density(double val)
double thickness()
void thickness(double val)
cdef cppclass Layers:
Layers() except +
const vector[Material]& get_materials() const
void add(Material m)
int num()const
Material& operator[](int i)
Layers& operator=(const Layers& other)
cdef extern from "catima/config.h" namespace "catima":
cdef struct Config:
char z_effective;
char skip;
char dedx;
cdef extern from "catima/catima.h" namespace "catima":
cdef double dedx(Projectile &p, double T, const Material &t,const Config &c)
cdef double range(Projectile &p, double T, const Material &t, const Config &c);
cdef double dedx_from_range(Projectile &p, double T, const Material &t, const Config &c);
cdef double energy_out(Projectile &p, double T, const Material &t, const Config &c);
cdef double domega2de(Projectile &p, double T, const Material &t, const Config &c);
cdef double da2de(Projectile &p, double T, const Material &t, const Config &c);
cdef double range_straggling(Projectile &p, double T, const Material &t, const Config &c);
cdef double da2dx(Projectile &p, double T, const Material &t, const Config &c);
cdef double dedx_rms(Projectile &p, Target &t, const Config &c);
cdef double angular_variance(Projectile &p, double T, const Material &t, const Config& c);
cdef Result calculate(Projectile &p, const Material &t, const Config &c);
cdef MultiResult calculate(Projectile &p, const Layers &layers, const Config &c);
cdef extern from "catima/calculations.h" namespace "catima":
cdef double z_effective(const Projectile &p, const Target &t, const Config &c);
cdef double z_eff_Pierce_Blann(double z, double beta);
cdef extern from "catima/constants.h" namespace "catima":
cdef int max_datapoints;
cdef extern from "catima/storage.h" namespace "catima":
cdef cppclass Interpolator:
double eval(double)
double derivative(double)