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