File indexing completed on 2025-08-06 08:18:31
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef TRACKRECO_PHRAVEVERTEXING_H
0009 #define TRACKRECO_PHRAVEVERTEXING_H
0010
0011 #include <fun4all/SubsysReco.h>
0012
0013 #include <map> // for map, map<>::value_compare
0014 #include <string>
0015 #include <vector>
0016
0017 namespace genfit
0018 {
0019 class GFRaveVertex;
0020 class GFRaveVertexFactory;
0021 class Track;
0022 }
0023
0024 namespace PHGenFit
0025 {
0026 class Fitter;
0027 }
0028
0029 class PHTimer;
0030 class SvtxTrack;
0031 class SvtxTrackMap;
0032 class SvtxVertexMap;
0033 class PHCompositeNode;
0034 class PHG4TruthInfoContainer;
0035
0036
0037 class PHRaveVertexing : public SubsysReco
0038 {
0039 public:
0040 typedef std::map<const genfit::Track*, unsigned int> GenFitTrackMap;
0041
0042
0043 PHRaveVertexing(const std::string& name = "PHRaveVertexing");
0044
0045
0046 ~PHRaveVertexing() override;
0047
0048
0049 int Init(PHCompositeNode*) override;
0050
0051
0052 int InitRun(PHCompositeNode*) override;
0053
0054
0055 int process_event(PHCompositeNode*) override;
0056
0057
0058 int End(PHCompositeNode*) override;
0059
0060 const std::string& get_vertexing_method() const
0061 {
0062 return _vertexing_method;
0063 }
0064
0065 void set_vertexing_method(const std::string& vertexingMethod)
0066 {
0067 _vertexing_method = vertexingMethod;
0068 }
0069
0070 int get_primary_pid_guess() const
0071 {
0072 return _primary_pid_guess;
0073 }
0074
0075 void set_primary_pid_guess(int primaryPidGuess)
0076 {
0077 _primary_pid_guess = primaryPidGuess;
0078 }
0079
0080 bool is_over_write_svtxvertexmap() const
0081 {
0082 return _over_write_svtxvertexmap;
0083 }
0084
0085 void set_over_write_svtxvertexmap(bool overWriteSvtxvertexmap)
0086 {
0087 _over_write_svtxvertexmap = overWriteSvtxvertexmap;
0088 }
0089
0090 void set_svtxvertexmaprefit_node_name(const std::string & name) {_svtxvertexmaprefit_node_name = name;}
0091
0092 double get_vertex_min_ndf() const
0093 {
0094 return _vertex_min_ndf;
0095 }
0096
0097 void set_vertex_min_ndf(double vertexMinPT)
0098 {
0099 _vertex_min_ndf = vertexMinPT;
0100 }
0101
0102 void set_nmvtx_clusters_required(unsigned int n)
0103 {
0104 _nmvtx_required = n;
0105 }
0106
0107 private:
0108
0109 int _event;
0110
0111
0112 int GetNodes(PHCompositeNode*);
0113
0114
0115 int CreateNodes(PHCompositeNode*);
0116
0117 genfit::Track* TranslateSvtxToGenFitTrack(SvtxTrack* svtx);
0118
0119
0120 bool FillSvtxVertexMap(
0121 const std::vector<genfit::GFRaveVertex*>& rave_vertices,
0122 const GenFitTrackMap& gf_track_map);
0123
0124 bool _over_write_svtxvertexmap;
0125 std::string _svtxvertexmaprefit_node_name;
0126
0127 PHGenFit::Fitter* _fitter;
0128
0129 int _primary_pid_guess;
0130 double _vertex_min_ndf;
0131
0132 unsigned int _nmvtx_required = 3;
0133
0134 genfit::GFRaveVertexFactory* _vertex_finder;
0135
0136
0137 std::string _vertexing_method;
0138
0139
0140 SvtxTrackMap* _trackmap;
0141 SvtxVertexMap* _vertexmap;
0142
0143
0144 SvtxVertexMap* _vertexmap_refit;
0145
0146 PHTimer* _t_translate;
0147 PHTimer* _t_rave;
0148 };
0149
0150 #endif