FEDRA emulsion software from the OPERA Collaboration
Vectors.linux.h
Go to the documentation of this file.
1#ifndef _SYSAL_VECTORS_
2#define _SYSAL_VECTORS_
3
4#include <math.h>
5#include "TVectors.linux.h"
6
7//#pragma pack(push)
8//#pragma pack(4)
9
10struct 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
23inline 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
38inline float operator*(Vector A,Vector B)
39{ return A.X*B.X+A.Y*B.Y+A.Z*B.Z; };
40
41inline Vector operator*(float A,Vector B)
42{ return Vector(A*B.X,A*B.Y,A*B.Z); };
43
44inline Vector operator*(Vector A,float B)
45{ return Vector(B*A.X,B*A.Y,B*A.Z); };
46
47inline 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.linux.h:23
Vector operator/(Vector A, float B)
Definition: Vectors.linux.h:47
float operator*(Vector A, Vector B)
Definition: Vectors.linux.h:38
Vector operator+(Vector A, Vector B)
Definition: Vectors.linux.h:29
Vector operator^(Vector A, Vector B)
Definition: Vectors.linux.h:35
Vector operator-(Vector A)
Definition: Vectors.linux.h:26
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.linux.h:18
Vector(float x, float y, float z)
Definition: Vectors.linux.h:17
float Y
Definition: Vectors.h:13
Vector()
Definition: Vectors.linux.h:16
float Z
Definition: Vectors.h:14