Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SVReco.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file SVReco.h
1 #ifndef __SVReco_H__
2 #define __SVReco_H__
3 
4 #include <fun4all/SubsysReco.h>
5 #include <GenFit/GFRaveVertex.h>
6 #include <GenFit/Track.h>
7 #include <string>
8 #include <vector>
9 #include <map>
10 
11 namespace genfit {
12  class GFRaveVertexFactory;
13 } /* namespace genfit */
14 
15 namespace PHGenFit {
16  class Track;
17  class Fitter;
18 } /* namespace PHGenFit */
19 
20 class SvtxTrack;
21 class SvtxTrackMap;
22 class SvtxVertexMap;
23 class SvtxVertex;
24 class PHCompositeNode;
27 //class SvtxClusterMap;
29 class SvtxEvalStack;
30 class JetMap;
31 class TFile;
32 class TTree;
33 
35 class SVReco {
36  public:
37 
39  SVReco(const std::string &name = "SVReco");
40 
42  ~SVReco();
43 
46 
48  int InitRun(PHCompositeNode *);
49 
54 
55  //Uses \param vtx to refit \param svtxtrk. @return the PHGenFit version of the track.
57  //Uses \param vtx to refit \param svtxtrk. @return the PHGenFit version of the track.
59  //Looks up \param svtxtrk id in {@link _svtxtrk_gftrk_map}. If \param svtxtrk is NULL @return NULL.
61  void reset_eval_variables();
62 
63  void set_do_eval(bool doEval){
64  _do_eval = doEval;
65  }
67  void set_use_ladder_geom(bool useLadderGeom){
68  _use_ladder_geom = useLadderGeom;
69  }
70 
71  void set_do_evt_display(bool doEvtDisplay){
72  _do_evt_display = doEvtDisplay;
73  }
74 
75  void set_reverse_mag_field(bool reverseMagField){
76  _reverse_mag_field = reverseMagField;
77  }
78 
79  void set_mag_field_re_scaling_factor(float magFieldReScalingFactor){
80  _mag_field_re_scaling_factor = magFieldReScalingFactor;
81  }
83  void set_vertexing_method(const std::string& vertexingMethod){
84  _vertexing_method = vertexingMethod;
85  }
86 
87  void set_mag_field_file_name(const std::string& magFieldFileName){
88  _mag_field_file_name = magFieldFileName;
89  }
90 
93  }
94 
95  void set_track_fitting_alg_name(const std::string& trackFittingAlgName){
96  _track_fitting_alg_name = trackFittingAlgName;
97  }
99  void set_primary_pid_guess(int primaryPidGuess){
100  _primary_pid_guess = primaryPidGuess;
101  }
102 
103  void set_cut_min_pT(double cutMinPT){
104  _cut_min_pT = cutMinPT;
105  }
106 
107  void set_cut_dca(double cutDCA){
108  _cut_dca = cutDCA;
109  }
110 
111  void set_cut_chi2ndf(double cutChi2Ndf){
112  _cut_chi2_ndf = cutChi2Ndf;
113  }
114 
115  void set_cut_ncluster(bool cutNcluster){
116  _cut_Ncluster = cutNcluster;
117  }
118 
119  void set_n_maps_layer(unsigned int n){
120  _n_maps_layer = n;
121  }
122 
123  void set_n_intt_layer(unsigned int n){
124  _n_intt_layer = n;
125  }
126 
127  private:
128 
130  int GetNodes(PHCompositeNode *);
131 
134 
136  PHGenFit::Track* MakeGenFitTrack(const SvtxTrack* intrack);
138  PHGenFit::Track* MakeGenFitTrack(const SvtxTrack* intrack, const SvtxVertex* invertex);
140  PHGenFit::Track* MakeGenFitTrack(const SvtxTrack* intrack, const genfit::GFRaveVertex* invertex);
142 // PHGenFit::Track* MakeGenFitTrack(const PHGenFit::Track* intrack, const genfit::GFRaveVertex* invertex);
144  std::shared_ptr<SvtxTrack> MakeSvtxTrack(const SvtxTrack* svtx_track,
145  const PHGenFit::Track* phgf_track, const SvtxVertex* vertex);
147  void FillVertexMap(
148  const std::vector<genfit::GFRaveVertex*> & rave_vertices,
149  const std::vector<genfit::Track*> & gf_tracks);
151 
152  void FillSVMap(
153  const std::vector<genfit::GFRaveVertex*> & rave_vertices,
154  const std::vector<genfit::Track*> & gf_tracks);
155 
156  int GetSVMass_mom(
157  const genfit::GFRaveVertex* rave_vtx,
158  float & vtx_mass,
159  float & vtx_px,
160  float & vtx_py,
161  float & vtx_pz,
162  int & ntrk_good_pv
163  );
164 
167 
169  std::vector<PHGenFit::Track*> _main_rf_phgf_tracks;
170 
173 
176 
179 
180  unsigned int _n_maps_layer;
181  unsigned int _n_intt_layer;
182 
185  double _cut_min_pT;
186  double _cut_dca;
188 
190 
194 
201 
203  bool _do_eval;
204 
208  float gf_prim_vtx[3];
209  float gf_prim_vtx_err[3];
211  float rv_prim_vtx[3];
212  float rv_prim_vtx_err[3];
214 
216  int rv_sv_jet_id[10];
217  int rv_sv_jet_prop[10][2];
218  float rv_sv_jet_pT[10];
219  float rv_sv_jet_px[10];
220  float rv_sv_jet_py[10];
221  float rv_sv_jet_pz[10];
222 
224  float rv_sv_pT00_vtx_x[10][30];
225  float rv_sv_pT00_vtx_y[10][30];
226  float rv_sv_pT00_vtx_z[10][30];
227  float rv_sv_pT00_vtx_ex[10][30];
228  float rv_sv_pT00_vtx_ey[10][30];
229  float rv_sv_pT00_vtx_ez[10][30];
230  int rv_sv_pT00_vtx_ntrk[10][30];
233  float rv_sv_pT00_vtx_mass[10][30];
235  float rv_sv_pT00_vtx_pT[10][30];
237  float rv_sv_pT00_vtx_chi2[10][30];
238  float rv_sv_pT00_vtx_ndf[10][30];
239 
241  float rv_sv_pT05_vtx_x[10][30];
242  float rv_sv_pT05_vtx_y[10][30];
243  float rv_sv_pT05_vtx_z[10][30];
244  float rv_sv_pT05_vtx_ex[10][30];
245  float rv_sv_pT05_vtx_ey[10][30];
246  float rv_sv_pT05_vtx_ez[10][30];
247  int rv_sv_pT05_vtx_ntrk[10][30];
250  float rv_sv_pT05_vtx_mass[10][30];
252  float rv_sv_pT05_vtx_pT[10][30];
254  float rv_sv_pT05_vtx_chi2[10][30];
255  float rv_sv_pT05_vtx_ndf[10][30];
256 
258  float rv_sv_pT10_vtx_x[10][30];
259  float rv_sv_pT10_vtx_y[10][30];
260  float rv_sv_pT10_vtx_z[10][30];
261  float rv_sv_pT10_vtx_ex[10][30];
262  float rv_sv_pT10_vtx_ey[10][30];
263  float rv_sv_pT10_vtx_ez[10][30];
264  int rv_sv_pT10_vtx_ntrk[10][30];
267  float rv_sv_pT10_vtx_mass[10][30];
269  float rv_sv_pT10_vtx_pT[10][30];
271  float rv_sv_pT10_vtx_chi2[10][30];
272  float rv_sv_pT10_vtx_ndf[10][30];
273 
275  float rv_sv_pT15_vtx_x[10][30];
276  float rv_sv_pT15_vtx_y[10][30];
277  float rv_sv_pT15_vtx_z[10][30];
278  float rv_sv_pT15_vtx_ex[10][30];
279  float rv_sv_pT15_vtx_ey[10][30];
280  float rv_sv_pT15_vtx_ez[10][30];
281  int rv_sv_pT15_vtx_ntrk[10][30];
284  float rv_sv_pT15_vtx_mass[10][30];
286  float rv_sv_pT15_vtx_pT[10][30];
288  float rv_sv_pT15_vtx_chi2[10][30];
289  float rv_sv_pT15_vtx_ndf[10][30];
293 
294  std::map<unsigned int, unsigned int> _svtxtrk_gftrk_map;
295  std::map<unsigned int, float> _svtxtrk_wt_map;
296  std::map<unsigned int, float> _svtxtrk_pt_map;
297  std::vector<unsigned int> _svtxtrk_id;
298 
299 };
300 
301 #endif //* __SVReco_H__ *//