FEDRA emulsion software from the OPERA Collaboration
Vectors.h
Go to the documentation of this file.
1 #ifndef _SYSAL_VECTORS_
2 #define _SYSAL_VECTORS_
3 
4 #include <math.h>
5 #include "TVectors.h"
6 
7 #pragma pack(push)
8 #pragma pack(4)
9 
10 struct Vector
11 {
12  float X;
13  float Y;
14  float Z;
15 
16  Vector() {};
17  Vector(float x,float y,float z) : X(x), Y(y), Z(z) {};
18  Vector(TVector &T) : X(T.X), Y(T.Y), Z(T.Z) {};
19  };
20 
21 #pragma pack(pop)
22 
23 inline float operator!(Vector A)
24 { return sqrt(A.X*A.X+A.Y*A.Y+A.Z*A.Z); };
25 
27 { return Vector(-A.X,-A.Y,-A.Z); };
28 
30 { return Vector(A.X+B.X,A.Y+B.Y,A.Z+B.Z); };
31 
33 { return Vector(A.X-B.X,A.Y-B.Y,A.Z-B.Z); };
34 
36 { return Vector(A.Y*B.Z-A.Z*B.Y,A.Z*B.X-A.X*B.Z,A.X*B.Y-A.Y*B.X); };
37 
38 inline float operator*(Vector A,Vector B)
39 { return A.X*B.X+A.Y*B.Y+A.Z*B.Z; };
40 
41 inline Vector operator*(float A,Vector B)
42 { return Vector(A*B.X,A*B.Y,A*B.Z); };
43 
44 inline Vector operator*(Vector A,float B)
45 { return Vector(B*A.X,B*A.Y,B*A.Z); };
46 
47 inline Vector operator/(Vector A,float B)
48 { return Vector(A.X/B,A.Y/B,A.Z/B); };
49 
50 #endif
51 
52 ␚
float operator!(Vector A)
Definition: Vectors.h:23
Vector operator/(Vector A, float B)
Definition: Vectors.h:47
float operator*(Vector A, Vector B)
Definition: Vectors.h:38
Vector operator+(Vector A, Vector B)
Definition: Vectors.h:29
Vector operator^(Vector A, Vector B)
Definition: Vectors.h:35
Vector operator-(Vector A)
Definition: Vectors.h:26
struct @6 B
Definition: TVectors.h:8
Definition: Struct.h:13
float X
Definition: Vectors.h:12
double y
Definition: Struct.h:15
double x
Definition: Struct.h:14
double z
Definition: Struct.h:16
Vector(TVector &T)
Definition: Vectors.h:18
Vector(float x, float y, float z)
Definition: Vectors.h:17
float Y
Definition: Vectors.h:13
Vector()
Definition: Vectors.h:16
float Z
Definition: Vectors.h:14