File indexing completed on 2026-08-31 08:21:25
0001 #pragma once
0002
0003 #include <fun4all/SubsysReco.h>
0004
0005 #include <string>
0006
0007 class PHCompositeNode;
0008 class Tpc_PolyTrack;
0009 class Tpc_PolyTrackContainer;
0010 class TpcCrossingDecisionContainer;
0011 class ActsGeometry;
0012 class TrackSeedContainer;
0013
0014 class TpcPolyTrackSeedConverter : public SubsysReco
0015 {
0016 public:
0017 explicit TpcPolyTrackSeedConverter(const std::string& name = "TpcPolyTrackSeedConverter");
0018 ~TpcPolyTrackSeedConverter() override = default;
0019
0020 int InitRun(PHCompositeNode*) override;
0021 int process_event(PHCompositeNode*) override;
0022
0023 void setInputNodeName(const std::string& name) { m_inputNodeName = name; }
0024 void setOutputNodeName(const std::string& name) { m_outputNodeName = name; }
0025 void setCrossingDecisionNodeName(const std::string& name) { m_crossingDecisionNodeName = name; }
0026 void setCrossingPeriodNs(double value) { m_crossingPeriodNs = value; }
0027
0028 private:
0029 int getNodes(PHCompositeNode*);
0030 int createNodes(PHCompositeNode*);
0031 bool isValidTrack(const Tpc_PolyTrack*) const;
0032 bool publishSeed(const Tpc_PolyTrack*) const;
0033
0034 std::string m_inputNodeName;
0035 std::string m_outputNodeName;
0036 std::string m_crossingDecisionNodeName {"TPC_CROSSING_DECISIONS"};
0037 Tpc_PolyTrackContainer* m_polyTracks {nullptr};
0038 TpcCrossingDecisionContainer* m_crossingDecisions {nullptr};
0039 ActsGeometry* m_geometry {nullptr};
0040 TrackSeedContainer* m_trackSeeds {nullptr};
0041 double m_crossingPeriodNs {106.56};
0042 };