Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PHG4HitKalmanFitter.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PHG4HitKalmanFitter.h
1 
8 #ifndef __PHG4HitKalmanFitter_H__
9 #define __PHG4HitKalmanFitter_H__
10 
11 #include <iostream>
12 #include <string>
13 #include <vector>
14 
15 #include <fun4all/SubsysReco.h>
16 
17 #include <TVector3.h>
18 
20 #include <phgenfit/Measurement.h>
21 
22 class PHG4Particle;
23 namespace PHGenFit
24 {
25  class PlanarMeasurement;
26 } /* namespace PHGenFit */
27 
28 namespace PHGenFit
29 {
30  class Track;
31 } /* namespace PHGenFit */
32 
33 namespace genfit
34 {
35  class GFRaveVertexFactory;
36 } /* namespace genfit */
37 
38 class SvtxTrack;
39 namespace PHGenFit
40 {
41  class Fitter;
42 } /* namespace PHGenFit */
43 
44 class SvtxTrackMap;
45 class SvtxVertexMap;
46 class SvtxVertex;
47 class PHCompositeNode;
49 class SvtxClusterMap;
50 class SvtxEvalStack;
51 class TFile;
52 class TTree;
53 
55 {
56  public:
58  PHG4TrackFastSim(const std::string& name = "PHG4HitKalmanFitter");
59 
62 
64  int Init(PHCompositeNode*);
65 
68 
71 
73  int End(PHCompositeNode*);
74 
76  void Verbosity(int verb)
77  {
78  verbosity = verb; // SubsysReco verbosity
79  }
80 
81  bool is_do_evt_display() const
82  {
83  return _do_evt_display;
84  }
85 
86  void set_do_evt_display(bool doEvtDisplay)
87  {
88  _do_evt_display = doEvtDisplay;
89  }
90 
91  double get_FGEM_phi_resolution() const
92  {
93  return _phi_resolution;
94  }
95 
96  void set_FGEM_phi_resolution(double fgemPhiResolution)
97  {
98  _phi_resolution = fgemPhiResolution;
99  }
100 
101  double get_FGEM_r_resolution() const
102  {
103  return _r_resolution;
104  }
105 
106  void set_FGEM_r_resolution(double fgemRResolution)
107  {
108  _r_resolution = fgemRResolution;
109  }
110 
112  {
113  return _fit_alg_name;
114  }
115 
116  void set_fit_alg_name(const std::string& fitAlgName)
117  {
118  _fit_alg_name = fitAlgName;
119  }
120 
122  {
124  }
125 
126  void set_pat_rec_hit_finding_eff(double patRecHitFindingEff)
127  {
128  if (!(patRecHitFindingEff >= 0 && patRecHitFindingEff <= 1))
129  {
130  std::cout << "ERROR: _pat_rec_hit_finding_eff out of range! \n";
131  }
132  _pat_rec_hit_finding_eff = patRecHitFindingEff;
133  }
134 
135  double get_pat_rec_nosise_prob() const
136  {
137  return _pat_rec_nosise_prob;
138  }
139 
140  void set_pat_rec_nosise_prob(double patRecNosiseProb)
141  {
142  if (!(patRecNosiseProb <= 1. && patRecNosiseProb >= 0))
143  {
144  std::cout << "ERROR: _pat_rec_nosise_prob out of range! \n";
145  return;
146  }
147  _pat_rec_nosise_prob = patRecNosiseProb;
148  }
149 
150  private:
155 
160 
165  std::vector<PHGenFit::Measurement*>& meas_out, TVector3& seed_pos,
166  TVector3& seed_mom, TMatrixDSym& seed_cov, const bool do_smearing = true);
167 
169 
170  PHGenFit::PlanarMeasurement* VertexMeasurement(const TVector3& vtx, const double dr,
171  const double dphi);
172 
176  SvtxTrack* MakeSvtxTrack(const PHGenFit::Track* phgf_track_in);
177 
179  int _event;
180 
183 
184  std::vector<PHG4HitContainer*> _phg4hits;
185  std::vector<std::string> _phg4hits_names;
186 
189 
194 
197 
200 
206 
208 
211 
214 };
215 
216 #endif /*__PHG4HitKalmanFitter_H__*/