PandaRoot
PndFsmTrack.h
Go to the documentation of this file.
1 //--------------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: PndFsmTrack.hh,v 1.13 2006/10/06 15:19:11 aida Exp $
4 //
5 // Description:
6 // Class PndFsmTrack
7 //
8 // Candidate "Tracks" or "Particles" for the Fast Simulation
9 //
10 // This software was developed for the PANDA collaboration. If you
11 // use all or part of it, please give an appropriate acknowledgement.
12 //
13 // Author List:
14 // Klaus Goetzen Original Author
15 //
16 // Copyright Information:
17 // Copyright (C) 2006 GSI
18 //
19 //------------------------------------------------------------------------
20 
21 #ifndef PNDFSMTRACK_H
22 #define PNDFSMTRACK_H
23 
24 //----------------------
25 // Base Class Headers --
26 //----------------------
27 
28 //-------------------------------
29 // Collaborating class Headers --
30 //-------------------------------
31 #include "TLorentzVector.h"
32 #include "TVector3.h"
33 #include "TMatrixD.h"
34 
35 //#include "CLHEP/Vector/LorentzVector.h"
36 //#include "CLHEP/Geometry/HepPoint.h"
37 //#include "PDT/PdtEntry.hh"
38 //#include "G4Data/GVertex.hh"
39 
40 //--------------------------------------------
41 // Collaborating class forward declarations --
42 // -------------------------------------------
43 #include <iosfwd>
44 #include <vector>
45 
46 class PndFsmResponse;
47 // class FsmHitMap;
48 
49 class PndFsmTrack {
50  public:
51  //--------------------
52  // Public interface --
53  //--------------------
54 
55  //
56  // Constructors
57  //
58 
59  PndFsmTrack();
60  PndFsmTrack(TLorentzVector p4, TVector3 start, TVector3 stop, double charge, int pdt, signed long trackId);
61 
62  //
63  // Destructor
64  //
65  virtual ~PndFsmTrack();
66 
67  //
68  // Accessors to contained information
69  //
70  TLorentzVector p4() { return _p4; } // 4-momentum
71  TVector3 startVtx() { return _startVtx; }
72  TVector3 stopVtx() { return _stopVtx; }
73  double charge() { return _charge; }
74  int pdt() { return _pdt; }
75  signed long gTrackId() { return _gTrackId; }
76  PndFsmResponse *detResponse() { return _detResponse; }
77  double Mass2() { return _Mass2; }
78  double MvddEdX() { return _MvddEdX; }
79  double TpcdEdX() { return _TpcdEdX; }
80  double SttdEdX() { return _SttdEdX; }
81 
82  // for the time being partial interface conservation for migration purpose
83  bool hitMapValid() { return false; }
84  bool hitMapResponse(unsigned int) { return false; } // index //[R.K.03/2017] unused variable(s)
85 
86  //
87  // Modifiers
88  //
89  void setP4(TLorentzVector l);
90  void setStartVtx(TVector3 v);
91  void setStopVtx(TVector3 v);
92  void setCharge(double c);
93  void setGTrackId(signed long id);
94  void setPdt(int pdt);
95  void setDetResponse(PndFsmResponse *resp);
96 
97  void setMass2(double c);
98  void setMvddEdX(double c);
99  void setTpcdEdX(double c);
100  void setSttdEdX(double c);
101 
102  // Operations
103 
104  void print(std::ostream &o);
105 
106  private:
107  TLorentzVector _p4;
108  TVector3 _startVtx;
109  TVector3 _stopVtx;
110  double _charge;
111  int _pdt;
112  signed long _gTrackId;
113  double _Mass2;
114  double _MvddEdX;
115  double _TpcdEdX;
116  double _SttdEdX;
117  PndFsmResponse *_detResponse;
118  // adding helix representation for some realism
119  double fPar5[5]; // helix fit parameters: d0, phi0, omega, z0, tandip
120  TVector3 fReference; // reference point to helix rep
121  TMatrixD fCov5;
122  TMatrixD fCov7;
123 
124  public:
125  double *GetHelixParams() { return fPar5; }
126  TMatrixD &GetHelixCov() { return fCov5; }
127  TMatrixD &Cov7() { return fCov7; }
128  void SetP7Cov(TMatrixD &p7cov);
129  void SetP4Cov(TMatrixD &p4cov);
130  void SetVCov(TMatrixD &vcov);
131 
132  Double_t GetHelixD0() const { return fPar5[0]; }
133  Double_t GetHelixPhi0() const { return fPar5[1]; }
134  Double_t GetHelixOmega() const { return fPar5[2]; }
135  Double_t GetHelixZ0() const { return fPar5[3]; }
136  Double_t GetHelixTanDip() const { return fPar5[4]; }
137 
138  void HelixRep(TVector3 reference);
139  void Propagate(TVector3 origin, double deltaError = 2.5);
140 };
141 
142 #endif
signed long gTrackId()
Definition: PndFsmTrack.h:75
TVector3 stopVtx()
Definition: PndFsmTrack.h:72
Double_t GetHelixD0() const
Definition: PndFsmTrack.h:132
void setMass2(double c)
void setCharge(double c)
void setStopVtx(TVector3 v)
double TpcdEdX()
Definition: PndFsmTrack.h:79
void setPdt(int pdt)
Double_t GetHelixOmega() const
Definition: PndFsmTrack.h:134
double Mass2()
Definition: PndFsmTrack.h:77
Double_t GetHelixTanDip() const
Definition: PndFsmTrack.h:136
bool hitMapResponse(unsigned int)
Definition: PndFsmTrack.h:84
void setDetResponse(PndFsmResponse *resp)
void setMvddEdX(double c)
double MvddEdX()
Definition: PndFsmTrack.h:78
Double_t GetHelixZ0() const
Definition: PndFsmTrack.h:135
double charge()
Definition: PndFsmTrack.h:73
__m128 v
Definition: P4_F32vec4.h:3
void SetP7Cov(TMatrixD &p7cov)
TMatrixD & GetHelixCov()
Definition: PndFsmTrack.h:126
double * GetHelixParams()
Definition: PndFsmTrack.h:125
TMatrixD & Cov7()
Definition: PndFsmTrack.h:127
TLorentzVector p4()
Definition: PndFsmTrack.h:70
void SetVCov(TMatrixD &vcov)
double SttdEdX()
Definition: PndFsmTrack.h:80
void setP4(TLorentzVector l)
bool hitMapValid()
Definition: PndFsmTrack.h:83
void setSttdEdX(double c)
void setTpcdEdX(double c)
void SetP4Cov(TMatrixD &p4cov)
virtual ~PndFsmTrack()
void setStartVtx(TVector3 v)
TVector3 startVtx()
Definition: PndFsmTrack.h:71
void HelixRep(TVector3 reference)
Double_t GetHelixPhi0() const
Definition: PndFsmTrack.h:133
PndFsmResponse * detResponse()
Definition: PndFsmTrack.h:76
void setGTrackId(signed long id)
void Propagate(TVector3 origin, double deltaError=2.5)
void print(std::ostream &o)
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52