Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:17:22

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 
0004 /*!
0005  *  \file PHTpcDeltaZCorrection.h
0006  *  \brief Navigate along a given track and correct TPC cluster z position to account for particle finite velocity in the TPC
0007  *  \author Hugo Pereira Da Costa <hugo.pereira-da-costa@cea.fr>
0008  */
0009 
0010 #ifndef TRACKRECO_PHTPCDELTAZCORRECTION_H
0011 #define TRACKRECO_PHTPCDELTAZCORRECTION_H
0012 
0013 #include <fun4all/SubsysReco.h>
0014 #include <phparameter/PHParameterInterface.h>
0015 #include <trackbase/ActsGeometry.h>
0016 #include <trackbase/TrkrDefs.h>
0017 
0018 class TrackSeedContainer;
0019 class TrkrClusterContainer;
0020 class TrackSeed;
0021 
0022 class PHTpcDeltaZCorrection : public SubsysReco, public PHParameterInterface
0023 {
0024  public:
0025   /// constructor
0026   PHTpcDeltaZCorrection(const std::string &name = "PHTpcDeltaZCorrection");
0027 
0028   /// destructor
0029   ~PHTpcDeltaZCorrection() override = default;
0030 
0031   int InitRun(PHCompositeNode *topNode) override;
0032   int process_event(PHCompositeNode *topNode) override;
0033   int End(PHCompositeNode *topNode) override;
0034   void SetDefaultParameters() override;
0035   void setTrkrClusterContainerName(std::string &name) { m_clusterContainerName = name; }
0036 
0037  private:
0038   /// load nodes
0039   int load_nodes(PHCompositeNode *);
0040 
0041   /// process tracks
0042   void process_tracks();
0043 
0044   /// process track
0045   void process_track(unsigned int, TrackSeed *);
0046 
0047   /// Acts tracking geometry for surface lookup
0048   ActsGeometry *m_tGeometry = nullptr;
0049 
0050   /// track map
0051   TrackSeedContainer *m_track_map = nullptr;
0052 
0053   /// cluster map
0054   TrkrClusterContainer *m_cluster_map = nullptr;
0055 
0056   // cluster container name
0057   std::string m_clusterContainerName = "TRKR_CLUSTER";
0058 
0059   /// list of corrected cluster keys
0060   /** needed to prevent clusters to be corrected twice, when same cluster is used for two different tracks */
0061   std::set<TrkrDefs::cluskey> m_corrected_clusters;
0062 };
0063 
0064 #endif  // PHTpcDeltaZCorrection_H