File indexing completed on 2025-08-03 08:17:45
0001
0002
0003 #ifndef AZIMUTHALSEEDER_H
0004 #define AZIMUTHALSEEDER_H
0005
0006 #include <fun4all/SubsysReco.h>
0007 #include <trackbase/ActsGeometry.h>
0008 #include <trackbase/TrkrDefs.h>
0009
0010 #include <string>
0011 #include <vector>
0012 class PHCompositeNode;
0013
0014 class ActsGeometry;
0015 class TrkrClusterContainer;
0016 class TrackSeedContainer;
0017 class TFile;
0018 class TH2;
0019
0020 class AzimuthalSeeder : public SubsysReco
0021 {
0022 public:
0023 using PositionMap = std::map<TrkrDefs::cluskey, Acts::Vector3>;
0024 struct seed
0025 {
0026 std::vector<TrkrDefs::cluskey> ckeys;
0027 std::vector<Acts::Vector3> globpos;
0028 };
0029 using SeedVector = std::vector<seed>;
0030 AzimuthalSeeder(const std::string &name = "AzimuthalSeeder");
0031
0032 ~AzimuthalSeeder() override = default;
0033
0034 int Init(PHCompositeNode *topNode) override;
0035 int InitRun(PHCompositeNode *topNode) override;
0036 int process_event(PHCompositeNode *topNode) override;
0037 int End(PHCompositeNode *topNode) override;
0038 void histos() { m_outfile = true; }
0039 void residualLimit(const float limit) { m_outlierLimit = limit; }
0040
0041 private:
0042 int getNodes(PHCompositeNode *topNode);
0043 int createNodes(PHCompositeNode *topNode);
0044 std::unique_ptr<TFile> file = nullptr;
0045 TH2 *h_phi = nullptr;
0046 TH2 *h_phi2 = nullptr;
0047 TH2 *h_phi3 = nullptr;
0048 bool m_outfile = false;
0049 std::string m_trackMapName = "SiliconTrackSeedContainer";
0050 ActsGeometry *m_tGeometry = nullptr;
0051 TrkrClusterContainer *m_clusterContainer = nullptr;
0052 TrackSeedContainer *m_seedContainer = nullptr;
0053
0054 float m_outlierLimit = 0.1;
0055 };
0056
0057 #endif