Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef PHTRACKPRUNER_H
0004 #define PHTRACKPRUNER_H
0005 
0006 #include <fun4all/SubsysReco.h>
0007 #include <phparameter/PHParameterInterface.h>
0008 #include <trackbase/ActsGeometry.h>
0009 
0010 #include <map>
0011 #include <string>
0012 
0013 class PHCompositeNode;
0014 class TrackSeedContainer;
0015 class TrackSeed;
0016 class SvtxTrackSeed;
0017 class SvtxTrackMap;
0018 class SvtxTrack;
0019 class TrkrClusterContainer;
0020 class TF1;
0021 class TFile;
0022 class TNtuple;
0023 
0024 class PHTrackPruner : public SubsysReco
0025 {
0026  public:
0027   PHTrackPruner(const std::string &name = "PHTrackPruner");
0028 
0029   ~PHTrackPruner() override;
0030 
0031   int InitRun(PHCompositeNode *topNode) override;
0032 
0033   int process_event(PHCompositeNode *) override;
0034 
0035   int End(PHCompositeNode *) override;
0036 
0037   void set_pruned_svtx_seed_map_name(const std::string &map_name) { _pruned_svtx_seed_map_name = map_name; }
0038   void set_svtx_seed_map_name(const std::string &map_name) { _svtx_seed_map_name = map_name; }
0039   void set_si_seed_map_name(const std::string &map_name) { _si_seed_map_name = map_name; }
0040   void set_tpc_seed_map_name(const std::string &map_name) { _tpc_seed_map_name = map_name; }
0041   void set_svtx_track_map_name(const std::string &map_name) { _svtx_track_map_name = map_name; }
0042 
0043   void set_track_pt_low_cut(const double val) { m_track_pt_low_cut = val; }
0044   void set_track_quality_high_cut(const double val) { m_track_quality_high_cut = val; }
0045 
0046   void set_nmvtx_clus_low_cut(const int n) { m_nmvtx_clus_low_cut = n; }
0047   void set_nintt_clus_low_cut(const int n) { m_nintt_clus_low_cut = n; }
0048   void set_ntpc_clus_low_cut(const int n) { m_ntpc_clus_low_cut = n; }
0049   void set_ntpot_clus_low_cut(const int n) { m_ntpot_clus_low_cut = n; }
0050 
0051   void set_nmvtx_states_low_cut(const int n) { m_nmvtx_states_low_cut = n; }
0052   void set_nintt_states_low_cut(const int n) { m_nintt_states_low_cut = n; }
0053   void set_ntpc_states_low_cut(const int n) { m_ntpc_states_low_cut = n; }
0054   void set_ntpot_states_low_cut(const int n) { m_ntpot_states_low_cut = n; }
0055 
0056  private:
0057   int GetNodes(PHCompositeNode *topNode);
0058   bool checkTrack(SvtxTrack *track);
0059 
0060   short int findCrossingGeometrically(unsigned int tpcid, unsigned int si_id);
0061   double getBunchCrossing(unsigned int trid, double z_mismatch);
0062 
0063   TrackSeedContainer *_pruned_svtx_seed_map{nullptr};
0064   TrackSeedContainer *_svtx_seed_map{nullptr};
0065   TrackSeedContainer *_tpc_seed_map{nullptr};
0066   TrackSeedContainer *_si_seed_map{nullptr};
0067   TrackSeed *_tpc_seed{nullptr};
0068   TrackSeed *_si_seed{nullptr};
0069   SvtxTrackMap *_svtx_track_map{nullptr};
0070   SvtxTrack *_svtx_track{nullptr};
0071   TrkrClusterContainer *_cluster_map{nullptr};
0072   ActsGeometry *_tGeometry{nullptr};
0073   int m_event = 0;
0074 
0075   std::string _tpc_seed_map_name = "TpcTrackSeedContainer";
0076   std::string _si_seed_map_name = "SiliconTrackSeedContainer";
0077   std::string _svtx_seed_map_name = "SvtxTrackSeedContainer";
0078   std::string _pruned_svtx_seed_map_name = "PrunedSvtxTrackSeedContainer";
0079   std::string _svtx_track_map_name = "SvtxTrackMap";
0080 
0081   double m_track_pt_low_cut = 0.5;
0082   double m_track_quality_high_cut = 100;
0083   int m_nmvtx_clus_low_cut = 3;
0084   int m_nintt_clus_low_cut = 2;
0085   int m_ntpc_clus_low_cut = 35;
0086   int m_ntpot_clus_low_cut = 2;
0087 
0088   int m_nmvtx_states_low_cut = 3;
0089   int m_nintt_states_low_cut = 2;
0090   int m_ntpc_states_low_cut = 35;
0091   int m_ntpot_states_low_cut = 2;
0092 
0093 };
0094 
0095 #endif  //  PHTRACKPRUNER_H