StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
l3Coordinates.h
1 #ifndef L3_COORDINATES_H
2 #define L3_COORDINATES_H
3 
4 #include <iostream>
5 #include <math.h>
6 
7 //#include "FtfBaseHit.h"
8 
10 {
11  public:
12  l3ThreeVector ( float _x=0, float _y=0, float _z=0 )
13  { x = _x ; y = _y ; z = _z ; } ;
14  void set ( float _x, float _y, float _z )
15  { x = _x ; y = _y ; z = _z ; } ;
16 
17  float x ;
18  float y ;
19  float z ;
20 };
21 
22 
23 
25 
26  private:
27  double xyz[3] ;
28 
29  public:
30  l3xyzCoordinate() { xyz[0] = xyz[1] = xyz[2] = 0 ; } ;
31  l3xyzCoordinate(double X, double Y, double Z )
32  {
33  xyz[0] = X ;
34  xyz[1] = Y ;
35  xyz[2] = Z ;
36  }
37  //virtual ~St_l3_xyz_Coordinate() { ; }; // empty destructor
38 
39  // Copy assignment/constructor for Ftf3DHit
41  Setxyz(hit.x, hit.y, hit.z);
42  }
43 
44  l3xyzCoordinate operator=(l3ThreeVector hit) {
45  Setxyz(hit.x, hit.y, hit.z);
46 
47  return *this;
48  }
49 
50  // Setters and Getters
51  double Getx() const { return xyz[0] ; } ;
52  double Gety() const { return xyz[1] ; } ;
53  double Getz() const { return xyz[2] ; } ;
54  double* Getxyz() { return xyz ; } ;
55 
56  inline double Getr() {
57  return sqrt ( xyz[0]*xyz[0] +
58  xyz[1]*xyz[1] +
59  xyz[2]*xyz[2] );
60  }
61 
62  inline double Gettheta() {
63  return atan2(hypot(xyz[0], xyz[1]), xyz[2]);
64  }
65 
66  inline double Geteta() {
67  return - log(tan(Gettheta()/2));
68  }
69 
70  inline double Getphi() {
71  return atan2(xyz[1], xyz[0]);
72  }
73 
74 
75 
76  void Setx(double X) { xyz[0] = X ; } ;
77  void Sety(double Y) { xyz[1] = Y ; } ;
78  void Setz(double Z) { xyz[2] = Z ; } ;
79  void Setxyz(double X, double Y, double Z )
80  {
81  xyz[0] = X ;
82  xyz[1] = Y ;
83  xyz[2] = Z ;
84  }
85 
86 } ;
87 
89  private:
90  double ptrs[4] ; // pad, time, row, sec as double !
91 
92  public:
93  //St_l3_ptrs_Coordinate() { ptrs[0] = ptrs[1] = ptrs[2] = ptrs[3] = 0 ; } ;
94  // empty constructor
95 
96  l3ptrsCoordinate(double P=0,double T=0, double R=0, double S=0 )
97  {
98  ptrs[0] = P ;
99  ptrs[1] = T ;
100  ptrs[2] = R ;
101  ptrs[3] = S ;
102  } ;
103  //virtual ~St_l3_ptrs_Coordinate() { ;}; // empty destructor
104 
105  // Setters and Getters
106  inline double Getp() const { return ptrs[0] ; } ;
107  inline double Gett() const { return ptrs[1] ; } ;
108  inline double Getr() const { return ptrs[2] ; } ;
109  inline double Gets() const { return ptrs[3] ; } ;
110  inline double* Getptrs() { return ptrs ; } ;
111 
112  inline void Setp(double P) { ptrs[0] = P ; } ;
113  inline void Sett(double T) { ptrs[1] = T ; } ;
114  inline void Setr(double R) { ptrs[2] = R ; } ;
115  inline void Sets(double S) { ptrs[3] = S ; } ;
116  inline void Setptrs(double P,double T, double R, double S ) {
117  ptrs[0] = P ;
118  ptrs[1] = T ;
119  ptrs[2] = R ;
120  ptrs[3] = S ;
121  } ;
122 } ;
123 
124 #endif