File indexing completed on 2025-08-05 08:18:01
0001 #ifndef G4EVAL_SVTXVERTEXEVAL_H
0002 #define G4EVAL_SVTXVERTEXEVAL_H
0003
0004 #include "SvtxTrackEval.h"
0005
0006 #include <map>
0007 #include <set>
0008 #include <string> // for string
0009 #include <utility>
0010
0011 class PHCompositeNode;
0012
0013 class PHG4Particle;
0014 class PHG4TruthInfoContainer;
0015 class PHG4VtxPoint;
0016
0017 class SvtxClusterEval;
0018 class SvtxHitEval;
0019 class SvtxTrackMap;
0020 class SvtxTruthEval;
0021
0022 class Vertex;
0023 class SvtxVertex;
0024 class SvtxVertexMap;
0025
0026 class SvtxVertexEval
0027 {
0028 public:
0029 SvtxVertexEval(PHCompositeNode* topNode);
0030 virtual ~SvtxVertexEval();
0031
0032 void next_event(PHCompositeNode* topNode);
0033 void do_caching(bool do_cache)
0034 {
0035 _do_cache = do_cache;
0036 _trackeval.do_caching(do_cache);
0037 }
0038 void set_strict(bool strict)
0039 {
0040 _strict = strict;
0041 _trackeval.set_strict(strict);
0042 }
0043 void set_verbosity(int verbosity)
0044 {
0045 _verbosity = verbosity;
0046 _trackeval.set_verbosity(verbosity);
0047 }
0048
0049
0050 SvtxTrackEval* get_track_eval() { return &_trackeval; }
0051 SvtxClusterEval* get_cluster_eval() { return _trackeval.get_cluster_eval(); }
0052 SvtxHitEval* get_hit_eval() { return _trackeval.get_hit_eval(); }
0053 SvtxTruthEval* get_truth_eval() { return _trackeval.get_truth_eval(); }
0054
0055
0056 std::set<PHG4Particle*> all_truth_particles(const Vertex* vertex);
0057
0058
0059 std::set<PHG4VtxPoint*> all_truth_points(const Vertex* vertex);
0060 PHG4VtxPoint* max_truth_point_by_ntracks(const Vertex* vertex);
0061
0062
0063 std::set<const Vertex*> all_vertexes_from(PHG4VtxPoint* truthpoint);
0064 const Vertex* best_vertex_from(PHG4VtxPoint* truthpoint);
0065
0066
0067 unsigned int get_ntracks_contribution(const Vertex* svtxvertex, PHG4VtxPoint* truthpoint);
0068
0069 unsigned int get_errors() { return _errors + _trackeval.get_errors(); }
0070
0071 void set_use_initial_vertex(bool use_init_vertex) { _use_initial_vertex = use_init_vertex; }
0072 void set_use_genfit_vertex(bool use_genfit_vertex) { _use_genfit_vertex = use_genfit_vertex; }
0073
0074 void set_track_nodename(const std::string& name);
0075
0076 private:
0077 void get_node_pointers(PHCompositeNode* topNode);
0078 bool has_node_pointers();
0079
0080 SvtxTrackEval _trackeval;
0081 SvtxVertexMap* _vertexmap = nullptr;
0082 SvtxTrackMap* _trackmap = nullptr;
0083 PHG4TruthInfoContainer* _truthinfo = nullptr;
0084
0085 bool _strict = false;
0086 bool _use_initial_vertex = true;
0087 bool _use_genfit_vertex = false;
0088 int _verbosity = 0;
0089 unsigned int _errors = 0;
0090
0091 bool _do_cache = true;
0092 std::map<const Vertex*, std::set<PHG4Particle*> > _cache_all_truth_particles;
0093 std::map<const Vertex*, std::set<PHG4VtxPoint*> > _cache_all_truth_points;
0094 std::map<const Vertex*, PHG4VtxPoint*> _cache_max_truth_point_by_ntracks;
0095 std::map<PHG4VtxPoint*, std::set<const Vertex*> > _cache_all_vertexes_from_point;
0096 std::map<PHG4VtxPoint*, const Vertex*> _cache_best_vertex_from_point;
0097 std::map<std::pair<const Vertex*, PHG4VtxPoint*>, unsigned int> _cache_get_ntracks_contribution;
0098 std::string m_TrackNodeName;
0099 };
0100
0101 #endif