Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:31

0001 /*!
0002  *  \file       PHRaveVertexing.h
0003  *  \brief      Refit SvtxTracks with PHGenFit.
0004  *  \details    Refit SvtxTracks with PHGenFit.
0005  *  \author     Haiwang Yu <yuhw@nmsu.edu>
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 } /* namespace genfit */
0023 
0024 namespace PHGenFit
0025 {
0026 class Fitter;
0027 } /* namespace PHGenFit */
0028 
0029 class PHTimer;
0030 class SvtxTrack;
0031 class SvtxTrackMap;
0032 class SvtxVertexMap;
0033 class PHCompositeNode;
0034 class PHG4TruthInfoContainer;
0035 
0036 //! \brief      Refit SvtxTracks with PHGenFit.
0037 class PHRaveVertexing : public SubsysReco
0038 {
0039  public:
0040   typedef std::map<const genfit::Track*, unsigned int> GenFitTrackMap;
0041 
0042   //! Default constructor
0043   PHRaveVertexing(const std::string& name = "PHRaveVertexing");
0044 
0045   //! dtor
0046   ~PHRaveVertexing() override;
0047 
0048   //!Initialization, called for initialization
0049   int Init(PHCompositeNode*) override;
0050 
0051   //!Initialization Run, called for initialization of a run
0052   int InitRun(PHCompositeNode*) override;
0053 
0054   //!Process Event, called for each event
0055   int process_event(PHCompositeNode*) override;
0056 
0057   //!End, write and close files
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   //! Event counter
0109   int _event;
0110 
0111   //! Get all the nodes
0112   int GetNodes(PHCompositeNode*);
0113 
0114   //!Create New nodes
0115   int CreateNodes(PHCompositeNode*);
0116 
0117   genfit::Track* TranslateSvtxToGenFitTrack(SvtxTrack* svtx);
0118 
0119   //! Fill SvtxVertexMap from GFRaveVertexes and Tracks
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;  // require 3 or more mvtx clusters for track to be used in vertexing
0133 
0134   genfit::GFRaveVertexFactory* _vertex_finder;
0135 
0136   //! https://rave.hepforge.org/trac/wiki/RaveMethods
0137   std::string _vertexing_method;
0138 
0139   //! Input Node pointers
0140   SvtxTrackMap* _trackmap;
0141   SvtxVertexMap* _vertexmap;
0142 
0143   //! Output Node pointers
0144   SvtxVertexMap* _vertexmap_refit;
0145 
0146   PHTimer* _t_translate;
0147   PHTimer* _t_rave;
0148 };
0149 
0150 #endif