PandaRoot
PndTrkTrack.h
Go to the documentation of this file.
1 
6 #ifndef PNDTRKTRACK_H
7 #define PNDTRKTRACK_H 1
8 
9 #include "TVector3.h"
10 #include "TVector2.h"
11 #include "PndTrkCluster.h"
12 #include "PndTrackCand.h"
13 #include "PndTrack.h"
14 #include "PndTrkHit.h"
15 #include "PndTrkTools.h"
16 
17 class PndTrkTrack : public TObject {
18 
19  public:
20  PndTrkTrack();
21  PndTrkTrack(PndTrkCluster *cluster);
22  PndTrkTrack(PndTrkCluster *cluster, double x, double y, double radius);
23  PndTrkTrack(PndTrkHit *hit, PndTrkCluster *cluster, double x, double y, double radius);
24  PndTrkTrack(double x, double y, double radius);
25  PndTrkTrack(PndTrack *trk);
26  PndTrkTrack(const PndTrkTrack &track);
27 
28  ~PndTrkTrack();
29 
30  PndTrkTrack &operator=(const PndTrkTrack &track);
31 
32  Bool_t operator==(PndTrkTrack track); // CHECK this needs to be changed
33 
34  void SetRadius(double radius) { fRadius = radius; }
35  void SetCenter(double x, double y)
36  {
37  fCenterX = x;
38  fCenterY = y;
39  }
40  void SetCenter(TVector3 center)
41  {
42  fCenterX = center.X();
43  fCenterY = center.Y();
44  }
45  void SetTanL(double tanl) { fTanL = tanl; }
46  void SetZ0(double z0) { fZ0 = z0; }
47  void SetCluster(PndTrkCluster *cluster) { fCluster = *cluster; }
48  void SetRefHit(PndTrkHit *hit) { fRefHit = hit; }
49  Double_t GetRadius() { return fRadius; }
50  TVector2 GetCenter() { return TVector2(fCenterX, fCenterY); }
51  Double_t GetTanL() { return fTanL; }
52  Double_t GetZ0() { return fZ0; }
53 
55 
56  Double_t ComputePhi(TVector3 hit);
57  Double_t ComputePhiFrom(TVector3 hit, TVector3 from);
58 
59  TVector3 ComputeMomentumAtPosition(TVector3 position, TVector3 &newposition);
60  void ComputeCharge();
63  Int_t GetCharge() { return fCharge; }
64 
65  void Draw(Color_t color = kBlack);
66  void LightUp();
67 
68  void Clear(Option_t *opt = "");
69 
70  protected:
74  int fCharge;
75  double fPhiMin;
76  double fPhiMax;
77  // parameters:
78  // pT = p cos(lam)
79  // pL = p sin(lam)
80  // ==> pL = pT * tan(lam)
81  // z = z0 + s sin(lam) = z0 + tan(lam) [s cos(lam)]
82  // with s cos(lam) = proj track length = -q phi_rad* R
83  // ==> z = z0 - q tanl phi_rad R
84  // If I have z = z0 + k phi_deg ==> k 180/pi = -q tanl R ==> tanl = -q k (180/pi) /R
85 
87 };
88 
89 #endif
double fPhiMax
Definition: PndTrkTrack.h:76
Double_t GetRadius()
Definition: PndTrkTrack.h:49
void Clear(Option_t *opt="")
PndTrack ConvertToPndTrack()
Bool_t operator==(PndTrkTrack track)
PndTrackCand ConvertToPndTrackCand()
double fRadius
Definition: PndTrkTrack.h:73
void SetRefHit(PndTrkHit *hit)
Definition: PndTrkTrack.h:48
PndTrkCluster GetCluster()
Definition: PndTrkTrack.h:54
void SetTanL(double tanl)
Definition: PndTrkTrack.h:45
Double_t GetZ0()
Definition: PndTrkTrack.h:52
void SetCluster(PndTrkCluster *cluster)
Definition: PndTrkTrack.h:47
TVector2 GetCenter()
Definition: PndTrkTrack.h:50
double fPhiMin
Definition: PndTrkTrack.h:75
double fZ0
Definition: PndTrkTrack.h:73
Double_t ComputePhi(TVector3 hit)
void ComputeCharge()
Int_t GetCharge()
Definition: PndTrkTrack.h:63
TVector3 ComputeMomentumAtPosition(TVector3 position, TVector3 &newposition)
void SetCenter(double x, double y)
Definition: PndTrkTrack.h:35
PndTrkTrack & operator=(const PndTrkTrack &track)
double fCenterY
Definition: PndTrkTrack.h:73
void SetRadius(double radius)
Definition: PndTrkTrack.h:34
void SetCenter(TVector3 center)
Definition: PndTrkTrack.h:40
void Draw(Color_t color=kBlack)
PndTrkHit * fRefHit
Definition: PndTrkTrack.h:72
void LightUp()
void SetZ0(double z0)
Definition: PndTrkTrack.h:46
ClassDef(PndTrkTrack, 1)
double fTanL
Definition: PndTrkTrack.h:73
double fCenterX
Definition: PndTrkTrack.h:73
Double_t GetTanL()
Definition: PndTrkTrack.h:51
PndTrkCluster fCluster
Definition: PndTrkTrack.h:71
Double_t ComputePhiFrom(TVector3 hit, TVector3 from)