File indexing completed on 2026-10-16 08:28:58
0001
0002
0003
0004 #ifndef PHSILICONSEEDPRUNER_H
0005 #define PHSILICONSEEDPRUNER_H
0006
0007 #include <fun4all/SubsysReco.h>
0008
0009 #include <gsl/gsl_rng.h>
0010
0011 #include <cstddef>
0012 #include <string>
0013
0014 class PHCompositeNode;
0015 class TrackSeedContainer;
0016
0017 class PHSiliconSeedPruner : public SubsysReco
0018 {
0019 public:
0020 PHSiliconSeedPruner(const std::string& name = "PHSiliconSeedPruner");
0021 ~PHSiliconSeedPruner() override;
0022
0023 PHSiliconSeedPruner(const PHSiliconSeedPruner&) = delete;
0024 PHSiliconSeedPruner& operator=(const PHSiliconSeedPruner&) = delete;
0025 PHSiliconSeedPruner(PHSiliconSeedPruner&&) = delete;
0026 PHSiliconSeedPruner& operator=(PHSiliconSeedPruner&&) = delete;
0027
0028 int InitRun(PHCompositeNode* topNode) override;
0029 int process_event(PHCompositeNode* topNode) override;
0030
0031 void set_track_map_name(const std::string& name) { m_trackMapName = name; }
0032 void set_output_track_map_name(const std::string& name) { m_outputTrackMapName = name; }
0033 void set_random_seed(unsigned int seed);
0034
0035 private:
0036 static constexpr std::size_t kMvtxLayerCount = 3;
0037 static constexpr std::size_t kMaxRepresentatives = 10;
0038 static constexpr std::size_t kSearchBudget = 2000000;
0039 static constexpr std::size_t kHeuristicRestarts = 256;
0040 static constexpr std::size_t kDebugMinimumGroupSize = 10;
0041
0042 TrackSeedContainer* m_siliconSeeds{nullptr};
0043 TrackSeedContainer* m_prunedSiliconSeeds{nullptr};
0044 std::string m_trackMapName{"SiliconTrackSeedContainer"};
0045 std::string m_outputTrackMapName{"PrunedSiliconTrackSeedContainer"};
0046
0047 unsigned int m_randomSeed{0};
0048 gsl_rng* m_rng{nullptr};
0049 };
0050
0051 #endif