File indexing completed on 2026-08-31 08:21:23
0001
0002
0003 #ifndef TPCTRACKRECO_TPCPOLYTRACKV1_H
0004 #define TPCTRACKRECO_TPCPOLYTRACKV1_H
0005
0006 #include "Tpc_PolyTrack.h"
0007
0008 #include <iostream>
0009 #include <vector>
0010
0011 class Tpc_PolyTrackv1 : public Tpc_PolyTrack
0012 {
0013 public:
0014 Tpc_PolyTrackv1();
0015 ~Tpc_PolyTrackv1() override = default;
0016
0017 void identify(std::ostream& os = std::cout) const override;
0018 void Reset() override;
0019 int isValid() const override;
0020 PHObject* CloneMe() const override { return new Tpc_PolyTrackv1(*this); }
0021
0022 unsigned int get_event() const override { return m_event; }
0023 unsigned int get_track_id() const override { return m_track_id; }
0024 unsigned int get_source_assembled_track_id() const override { return m_source_assembled_track_id; }
0025 int get_fit_status() const override { return m_fit_status; }
0026 unsigned int get_nclusters() const override { return m_nclusters; }
0027 double get_x() const override { return m_x; }
0028 double get_y() const override { return m_y; }
0029 double get_z() const override { return m_z; }
0030 double get_px() const override { return m_px; }
0031 double get_py() const override { return m_py; }
0032 double get_pz() const override { return m_pz; }
0033 double get_charge() const override { return m_charge; }
0034 double get_chi2() const override { return m_chi2; }
0035 double get_ndf() const override { return m_ndf; }
0036 double get_dedx() const override { return m_dedx; }
0037 double get_seed_x0() const override { return m_seed_x0; }
0038 double get_seed_y0() const override { return m_seed_y0; }
0039 double get_helix_x0() const override { return m_helix_x0; }
0040 double get_helix_y0() const override { return m_helix_y0; }
0041 double get_seed_z0() const override { return m_seed_z0; }
0042 double get_seed_phi() const override { return m_seed_phi; }
0043 double get_seed_slope() const override { return m_seed_slope; }
0044 double get_seed_q_over_r() const override { return m_seed_q_over_r; }
0045 unsigned int size_cluster_keys() const override { return static_cast<unsigned int>(m_cluster_keys.size()); }
0046 TrkrDefs::cluskey get_cluster_key(unsigned int i) const override
0047 {
0048 if (i >= m_cluster_keys.size()) return TrkrDefs::CLUSKEYMAX;
0049 return m_cluster_keys[i];
0050 }
0051 const std::vector<TrkrDefs::cluskey>& get_cluster_keys() const override { return m_cluster_keys; }
0052 double get_cov(unsigned int i, unsigned int j) const override
0053 {
0054 const unsigned int idx = 6 * i + j;
0055 if (i >= 6 || j >= 6 || idx >= m_cov.size()) return 0.0;
0056 return m_cov[idx];
0057 }
0058
0059 void set_event(unsigned int v) override { m_event = v; }
0060 void set_track_id(unsigned int v) override { m_track_id = v; }
0061 void set_source_assembled_track_id(unsigned int v) override { m_source_assembled_track_id = v; }
0062 void set_fit_status(int v) override { m_fit_status = v; }
0063 void set_nclusters(unsigned int v) override { m_nclusters = v; }
0064 void set_x(double v) override { m_x = v; }
0065 void set_y(double v) override { m_y = v; }
0066 void set_z(double v) override { m_z = v; }
0067 void set_px(double v) override { m_px = v; }
0068 void set_py(double v) override { m_py = v; }
0069 void set_pz(double v) override { m_pz = v; }
0070 void set_charge(double v) override { m_charge = v; }
0071 void set_chi2(double v) override { m_chi2 = v; }
0072 void set_ndf(double v) override { m_ndf = v; }
0073 void set_dedx(double v) override { m_dedx = v; }
0074 void set_seed_x0(double v) override { m_seed_x0 = v; }
0075 void set_seed_y0(double v) override { m_seed_y0 = v; }
0076 void set_helix_x0(double v) override { m_helix_x0 = v; }
0077 void set_helix_y0(double v) override { m_helix_y0 = v; }
0078 void set_seed_z0(double v) override { m_seed_z0 = v; }
0079 void set_seed_phi(double v) override { m_seed_phi = v; }
0080 void set_seed_slope(double v) override { m_seed_slope = v; }
0081 void set_seed_q_over_r(double v) override { m_seed_q_over_r = v; }
0082 void add_cluster_key(TrkrDefs::cluskey v) override
0083 {
0084 m_cluster_keys.push_back(v);
0085 m_nclusters = static_cast<unsigned int>(m_cluster_keys.size());
0086 }
0087 void clear_cluster_keys() override
0088 {
0089 m_cluster_keys.clear();
0090 m_nclusters = 0;
0091 }
0092 void set_cov(unsigned int i, unsigned int j, double v) override
0093 {
0094 if (i >= 6 || j >= 6) return;
0095 if (m_cov.size() != 36) m_cov.assign(36, 0.0);
0096 m_cov[6 * i + j] = v;
0097 m_cov[6 * j + i] = v;
0098 }
0099
0100 private:
0101 unsigned int m_event{0};
0102 unsigned int m_track_id{0};
0103 unsigned int m_source_assembled_track_id{0};
0104 int m_fit_status{0};
0105 unsigned int m_nclusters{0};
0106 double m_x{0.0};
0107 double m_y{0.0};
0108 double m_z{0.0};
0109 double m_px{0.0};
0110 double m_py{0.0};
0111 double m_pz{0.0};
0112 double m_charge{0.0};
0113 double m_chi2{0.0};
0114 double m_ndf{0.0};
0115 double m_dedx{0.0};
0116 double m_seed_x0 {0.0};
0117 double m_seed_y0 {0.0};
0118 double m_helix_x0 {0.0};
0119 double m_helix_y0 {0.0};
0120 double m_seed_z0 {0.0};
0121 double m_seed_phi {0.0};
0122 double m_seed_slope {0.0};
0123 double m_seed_q_over_r {0.0};
0124 std::vector<TrkrDefs::cluskey> m_cluster_keys;
0125 std::vector<double> m_cov;
0126
0127 ClassDefOverride(Tpc_PolyTrackv1, 1)
0128 };
0129 #endif