Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
kinematics.h
Go to the documentation of this file.
1 /*
2 *
3 * kinematics.h
4 *
5 */
6 /* orignally written by Dave Thompson, pointer madness and
7  routine name changes for use in the CLAS by Joe Manak
8  the source is currently located in c_bos_io in the files
9  vector3.c, vector4.c, lorentz.c and gottjack.c
10 typedef struct { float32 x,y,z; } vector3_t;
11 typedef struct { float32 t; vector3_t space; } vector4_t;
12 */
13 #include <ntypes.h>
14 #include <stdio.h>
15 
16 /* constants */
17 #ifndef PI
18 #define PI 3.1415927
19 #endif
20 
21 /* 3-vector routines */
22 float v3mag(vector3_t);
23 float v3magsq(vector3_t);
24 float v3radius(vector3_t);
28 void v3dir(vector3_t,float *theta,float *phi);
29 void v3dir_deg(vector3_t,float *theta,float *phi);
37 vector3_t xyz2v3(void *xyz); /*convert x, y, z into a three vector*/
38 void v3print(FILE *stream, vector3_t vec);
39 
40 /* 4-vector routines */
42 float v4mass(vector4_t p);
43 float v4magsq(vector4_t p);
46 vector4_t v4mult(float factor,vector4_t p);
47 vector4_t v4div(float divisor,vector4_t p);
48 vector4_t v3_to_v4(vector3_t *vec3, float mass);
49 vector4_t txyz2v4(void *txyz); /* convert t, x, y, z into a 4-vector*/
50 void v4print(FILE *stream, vector4_t vec);
51 
52 /* lorentz routines */
53 float beta2gamma(float);
54 float gamma2beta(float);
55 float p2gamma(vector4_t);
56 float p2beta(vector4_t);
57 float beta_p_2mass(float p, float beta);
59 vector4_t Lab2ResonanceFrame(float BeamEnergy, vector4_t ScatteredElectron, vector4_t V);
60 
61 /* gottfried-jackson routines */
62 float costheta_gj(vector4_t decay, vector4_t beam, vector4_t product, vector4_t target, vector4_t recoil);
63 float phi_ty(vector4_t decay, vector4_t beam, vector4_t product, vector4_t target, vector4_t recoil);
64 float phi_ty_deg(vector4_t decay, vector4_t beam, vector4_t product, vector4_t target, vector4_t recoil);
65 
66 
67 
68 
69 
vector4_t v4sub(vector4_t p1, vector4_t p2)
vector4_t v4mult(float factor, vector4_t p)
vector3_t v3add(vector3_t, vector3_t)
float gamma2beta(float)
vector3_t v3cross(vector3_t, vector3_t)
float v4dot(vector4_t p1, vector4_t p2)
vector4_t v4boost(vector3_t beta, vector4_t vec)
float costheta_gj(vector4_t decay, vector4_t beam, vector4_t product, vector4_t target, vector4_t recoil)
vector4_t v4add(vector4_t p1, vector4_t p2)
#define xyz
vector3_t xyz2v3(void *xyz)
void v4print(FILE *stream, vector4_t vec)
vector4_t v3_to_v4(vector3_t *vec3, float mass)
vector4_t txyz2v4(void *txyz)
float phi_ty(vector4_t decay, vector4_t beam, vector4_t product, vector4_t target, vector4_t recoil)
float beta_p_2mass(float p, float beta)
vector3_t v3norm(vector3_t)
float v3angle(vector3_t, vector3_t)
vector4_t Lab2ResonanceFrame(float BeamEnergy, vector4_t ScatteredElectron, vector4_t V)
float phi_ty_deg(vector4_t decay, vector4_t beam, vector4_t product, vector4_t target, vector4_t recoil)
float v4mass(vector4_t p)
void v3dir(vector3_t, float *theta, float *phi)
float p2beta(vector4_t)
float v3radius(vector3_t)
float beta2gamma(float)
float v3angle_deg(vector3_t, vector3_t)
float p2gamma(vector4_t)
float v3dot(vector3_t, vector3_t)
void v3dir_deg(vector3_t, float *theta, float *phi)
vector3_t v3sub(vector3_t, vector3_t)
float v4magsq(vector4_t p)
void v3print(FILE *stream, vector3_t vec)
float v3cos_angle(vector3_t, vector3_t)
vector3_t v3div(float, vector3_t)
vector4_t v4div(float divisor, vector4_t p)
float v3magsq(vector3_t)
vector3_t v3mult(float, vector3_t)
float v3mag(vector3_t)