File indexing completed on 2025-08-06 08:18:34
0001
0002
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