Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TpcPrototypeGenFitTrkFitter.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file TpcPrototypeGenFitTrkFitter.h
1 
8 #ifndef TRACKRECO_TpcPrototypeGenFitTrkFitter_H
9 #define TRACKRECO_TpcPrototypeGenFitTrkFitter_H
10 
11 #include <fun4all/SubsysReco.h>
12 
13 #include <TMatrixFfwd.h> // for TMatrixF
14 #include <TVector3.h> // for TVector3
15 
16 #include <cstddef> // for NULL
17 #include <memory> // for shared_ptr
18 #include <string>
19 #include <vector>
20 
21 class TClonesArray;
22 
23 namespace PHGenFit
24 {
25 class Track;
26 } /* namespace PHGenFit */
27 
28 namespace genfit
29 {
30 class GFRaveVertex;
31 class GFRaveVertexFactory;
32 class Track;
33 } /* namespace genfit */
34 
35 class SvtxTrack;
36 namespace PHGenFit
37 {
38 class Fitter;
39 } /* namespace PHGenFit */
40 
41 class SvtxTrackMap;
42 class SvtxVertexMap;
43 class TrkrCluster;
44 class SvtxVertex;
45 class PHCompositeNode;
46 //class PHG4TruthInfoContainer;
48 class TTree;
49 class TpcPrototypeTrack;
50 
53 {
54  public:
61  {
65  };
66 
68  {
69  MIE,
76  };
77 
79  TpcPrototypeGenFitTrkFitter(const std::string& name = "TpcPrototypeGenFitTrkFitter");
80 
83 
85  int Init(PHCompositeNode*);
86 
89 
92 
94  int End(PHCompositeNode*);
95 
96  //Flags of different kinds of outputs
97  enum Flag
98  {
99  //all disabled
100  NONE = 0,
101  };
102 
103  //Set the flag
104  //Flags should be set like set_flag(TpcPrototypeGenFitTrkFitter::TRUTH, true) from macro
105  void set_flag(const Flag& flag, const bool& value)
106  {
107  if (value)
108  _flags |= flag;
109  else
110  _flags &= (~flag);
111  }
112 
116  {
118  }
120  {
121  return _eval_outname;
122  }
123 
125  void init_eval_tree();
126  void reset_eval_variables();
127 
128  bool is_do_eval() const
129  {
130  return _do_eval;
131  }
132 
133  void set_do_eval(bool doEval)
134  {
135  _do_eval = doEval;
136  }
137 
138  bool is_do_evt_display() const
139  {
140  return _do_evt_display;
141  }
142 
143  void set_do_evt_display(bool doEvtDisplay)
144  {
145  _do_evt_display = doEvtDisplay;
146  }
147 
149  {
150  return _vertexing_method;
151  }
152 
153  void set_vertexing_method(const std::string& vertexingMethod)
154  {
155  _vertexing_method = vertexingMethod;
156  }
157 
159  {
160  return _fit_primary_tracks;
161  }
162 
163  void set_fit_primary_tracks(bool fitPrimaryTracks)
164  {
165  _fit_primary_tracks = fitPrimaryTracks;
166  }
167 
169  {
170  return _output_mode;
171  }
172 
176  void set_output_mode(OutPutMode outputMode)
177  {
178  _output_mode = outputMode;
179  }
180 
182  {
184  }
185 
186  void set_track_fitting_alg_name(const std::string& trackFittingAlgName)
187  {
188  _track_fitting_alg_name = trackFittingAlgName;
189  }
190 
192  {
193  return _primary_pid_guess;
194  }
195 
196  void set_primary_pid_guess(int primaryPidGuess)
197  {
198  _primary_pid_guess = primaryPidGuess;
199  }
200 
201  double get_fit_min_pT() const
202  {
203  return _fit_min_pT;
204  }
205 
206  void set_fit_min_pT(double cutMinPT)
207  {
208  _fit_min_pT = cutMinPT;
209  }
210 
212  {
214  }
215 
216  void set_over_write_svtxtrackmap(bool overWriteSvtxtrackmap)
217  {
218  _over_write_svtxtrackmap = overWriteSvtxtrackmap;
219  }
220 
222  {
224  }
225 
226  void set_over_write_svtxvertexmap(bool overWriteSvtxvertexmap)
227  {
228  _over_write_svtxvertexmap = overWriteSvtxvertexmap;
229  }
230 
231  bool is_use_truth_vertex() const
232  {
233  return _use_truth_vertex;
234  }
235 
236  void set_use_truth_vertex(bool useTruthVertex)
237  {
238  _use_truth_vertex = useTruthVertex;
239  }
240 
241  double get_vertex_min_ndf() const
242  {
243  return _vertex_min_ndf;
244  }
245 
246  void set_vertex_min_ndf(double vertexMinPT)
247  {
248  _vertex_min_ndf = vertexMinPT;
249  }
250 
251  private:
253  int _event;
254 
257 
260 
261  /*
262  * fit track with SvtxTrack as input seed.
263  * \param intrack Input SvtxTrack
264  * \param invertex Input Vertex, if fit track as a primary vertex
265  */
266  std::shared_ptr<PHGenFit::Track> ReFitTrack(PHCompositeNode*, const SvtxTrack* intrack, const SvtxVertex* invertex = NULL);
267 
268  // build a track as a container displaying unused clusters
269  std::shared_ptr<PHGenFit::Track> DisplayCluster(const TrkrCluster* cluster);
270 
272  std::shared_ptr<SvtxTrack> MakeSvtxTrack(const SvtxTrack* svtxtrack, const std::shared_ptr<PHGenFit::Track>& genfit_track, const SvtxVertex* vertex = NULL);
273 
275  std::shared_ptr<TpcPrototypeTrack> MakeTpcPrototypeTrack(const SvtxTrack* svtxtrack);
276 
278  bool FillSvtxVertexMap(
279  const std::vector<genfit::GFRaveVertex*>& rave_vertices,
280  const std::vector<genfit::Track*>& gf_tracks);
281 
282  bool pos_cov_uvn_to_rz(
283  const TVector3& u,
284  const TVector3& v,
285  const TVector3& n,
286  const TMatrixF& pos_in,
287  const TMatrixF& cov_in,
288  TMatrixF& pos_out,
289  TMatrixF& cov_out) const;
290 
292  const TVector3& u,
293  const TVector3& v,
294  const TVector3& n,
295  const TMatrixF& cov_in,
296  TMatrixF& cov_out) const;
297 
298  bool pos_cov_XYZ_to_RZ(
299  const TVector3& n,
300  const TMatrixF& pos_in,
301  const TMatrixF& cov_in,
302  TMatrixF& pos_out,
303  TMatrixF& cov_out) const;
304 
309  TMatrixF get_rotation_matrix(
310  const TVector3 x,
311  const TVector3 y,
312  const TVector3 z,
313  const TVector3 xp = TVector3(1., 0., 0.),
314  const TVector3 yp = TVector3(0., 1., 0.),
315  const TVector3 zp = TVector3(0., 0., 1.)) const;
316 
318  unsigned int _flags;
319 
320  //bool _make_separate_nodes;
322 
325 
327 
330 
332 
335 
337  double _fit_min_pT;
339 
341 
344 
345  //PHRaveVertexFactory* _vertex_finder;
346 
348  // PHG4TruthInfoContainer* _truth_container;
352 
357 
360  bool _do_eval;
361 
364 
365  TTree* _eval_tree;
367  TClonesArray* _tca_particlemap;
368  TClonesArray* _tca_vtxmap;
369  TClonesArray* _tca_trackmap;
370  TClonesArray* _tca_tpctrackmap;
371  TClonesArray* _tca_vertexmap;
372  TClonesArray* _tca_trackmap_refit;
373  TClonesArray* _tca_primtrackmap;
374  TClonesArray* _tca_vertexmap_refit;
375 
383 
385 };
386 
387 #endif