Back to home page

sPhenix code displayed by LXR

 
 

    


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   // access the sub evals (and the cached values)
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   // backtrace through to PHG4Hits
0056   std::set<PHG4Particle*> all_truth_particles(const Vertex* vertex);
0057 
0058   // backtrace through to PHG4VtxPoints
0059   std::set<PHG4VtxPoint*> all_truth_points(const Vertex* vertex);
0060   PHG4VtxPoint* max_truth_point_by_ntracks(const Vertex* vertex);
0061 
0062   // forwardtrace through to SvtxVertexs
0063   std::set<const Vertex*> all_vertexes_from(PHG4VtxPoint* truthpoint);
0064   const Vertex* best_vertex_from(PHG4VtxPoint* truthpoint);
0065 
0066   // overlap calculations
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  // G4EVAL_SVTXVERTEXEVAL_H