CRXS  1.0
Comic Ray Cross Section Tools
 All Classes Namespaces Functions Variables Pages
linAlg_tools.h
1 #ifndef CRXS__LA_tools_H
2 #define CRXS__LA_tools_H
3 
4 #include "math.h"
5 
6 namespace CRXS {
7 
8  class LA{
9 
10  public:
12  static double len (double* a);
13 
15  static void cross (double* v1, double* v2, double* cross_res);
16 
18  static double dot(double* v1, double* v2);
19 
21  static double dist( double* a, double *b , double* c, double* p );
22  static double sign(double x);
23 
25  static bool inside(double* a, double *b , double* c, double* d, double* p);
26  };
27 
28  class Integration{
29 
30  public:
31  static double integrate_trapeze( double (*integrand)(double, void*), double min, double max, void* parameter ){
32  double res = 0;
33  double dd = (max-min)/steps;
34  double d;
35  for (int i=0; i<steps; i++) {
36  d = min + dd * ( 0.5 + i );
37  res += integrand(d,parameter);
38  }
39  res *= dd;
40  return res;
41  };
42  static int steps;
43  static void SetTrapezeIntegrationSteps( int _steps ){steps=_steps;};
44 
45  };
46 }
47 
48 #endif
49 
50 
51 
52 
static bool inside(double *a, double *b, double *c, double *d, double *p)
true if vector p is inside of the volume of vectors a,b,c,d
Definition: linAlg_tools.cxx:48
static double dot(double *v1, double *v2)
dot product of vectors v1 and v2
Definition: linAlg_tools.cxx:20
Definition: linAlg_tools.h:8
static double dist(double *a, double *b, double *c, double *p)
distance of vector p from the plane through vectors a,b,c
Definition: linAlg_tools.cxx:25
static void cross(double *v1, double *v2, double *cross_res)
cross product of vector v1 and v2 returned into vector cross_res
Definition: linAlg_tools.cxx:13
static double len(double *a)
Length of a vector a.
Definition: linAlg_tools.cxx:8
Definition: linAlg_tools.h:28