MarlinTPC  1.2.0
helix.h
1 #ifndef HELIX_H
2 #define HELIX_H
3 #include "gearimpl/Vectors.h"
4 #include "TVector3.h"
5 #include <vector>
6 
7 using namespace gear;
8 using namespace std;
9 
10 class Circle
11 {
12 public:
13  Circle();
14 
15  Circle(double x0, double y0, double r);
16  bool calcXPWithCircle(Circle& c, vector<Vector2D>& xp); //calculate crossing point of two circles
17 
18  inline double getR(){return _r;}
19  inline void setR(double r){_r = r;}
20 
21  inline Vector2D getCenter(){return _c;}
22  inline void setCenter(double x, double y){_c[0] = x; _c[1] = y;}
23 
24 private:
25  Vector2D _c; // center of circle
26  double _r; // radius of circle
27 };
28 
29 class Helix : public Circle
30 {
31 public:
32  Helix(double xc, double yc, double r, TVector3 X0, double lambda, double sign);
33  Helix();
34 
35  bool calcXPWithLayer(Circle& c, vector<TVector3>& xp);
36 
37  inline void SetLambda (double l) {_lambda = l;}
38  inline void SetSign (int s ) {_sign = s; }
39 
40  inline void SetX0 (TVector3 x0) {_X0 = x0;}
41 
42  inline void SetLimit (double minz, double maxz) { _MINZ = minz; _MAXZ = maxz;}
43 
44  //inline TVector3 getCenter(){return _c3;}
45 
46 private:
47  double _lambda;
48 
49  int _sign;
50  TVector3 _X0;
51 
52  double _MAXZ;
53  double _MINZ;
54 };
55 #endif //HELIX_H
Definition: helix.h:10
Definition: helix.h:29