File indexing completed on 2026-08-31 08:21:21
0001
0002
0003 #ifndef TPCTRACKRECO_TPCASSEMBLEDTRACKV1_H
0004 #define TPCTRACKRECO_TPCASSEMBLEDTRACKV1_H
0005
0006 #include "Tpc_AssembledTrack.h"
0007
0008 #include <iostream>
0009 #include <vector>
0010
0011 class Tpc_AssembledTrackv1 : public Tpc_AssembledTrack
0012 {
0013 public:
0014 Tpc_AssembledTrackv1();
0015 ~Tpc_AssembledTrackv1() 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_AssembledTrackv1(*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 int get_side() const override { return m_side; }
0025
0026 unsigned int get_nsegments() const override { return m_nsegments; }
0027 unsigned int get_nblobs() const override { return m_nblobs; }
0028 unsigned int get_nrawhits() const override { return m_nrawhits; }
0029 unsigned int get_first_layer() const override { return m_first_layer; }
0030 unsigned int get_last_layer() const override { return m_last_layer; }
0031 unsigned int get_first_sector() const override { return m_first_sector; }
0032 unsigned int get_last_sector() const override { return m_last_sector; }
0033 unsigned int get_first_region() const override { return m_first_region; }
0034 unsigned int get_last_region() const override { return m_last_region; }
0035
0036 double get_phi_slope() const override { return m_phi_slope; }
0037 double get_phi_intercept() const override { return m_phi_intercept; }
0038 double get_tbin_slope() const override { return m_tbin_slope; }
0039 double get_tbin_intercept() const override { return m_tbin_intercept; }
0040 double get_chi2_phi() const override { return m_chi2_phi; }
0041 double get_chi2_tbin() const override { return m_chi2_tbin; }
0042 int get_ndof_phi() const override { return m_ndof_phi; }
0043 int get_ndof_tbin() const override { return m_ndof_tbin; }
0044
0045 int get_vertex_valid() const override { return m_vertex_valid; }
0046 double get_vertex_x() const override { return m_vertex_x; }
0047 double get_vertex_y() const override { return m_vertex_y; }
0048 double get_vertex_r() const override { return m_vertex_r; }
0049 double get_vertex_phi() const override { return m_vertex_phi; }
0050 double get_vertex_tbin() const override { return m_vertex_tbin; }
0051 unsigned int get_vertex_npairs() const override { return m_vertex_npairs; }
0052 double get_vertex_quality() const override { return m_vertex_quality; }
0053
0054 int get_seed_valid() const override { return m_seed_valid; }
0055 double get_seed_x() const override { return m_seed_x; }
0056 double get_seed_y() const override { return m_seed_y; }
0057 double get_seed_z() const override { return m_seed_z; }
0058 double get_seed_px() const override { return m_seed_px; }
0059 double get_seed_py() const override { return m_seed_py; }
0060 double get_seed_pz() const override { return m_seed_pz; }
0061 double get_seed_cov(unsigned int i, unsigned int j) const override
0062 {
0063 const unsigned int idx = 6 * i + j;
0064 if (i >= 6 || j >= 6 || idx >= m_seed_cov.size()) return 0.0;
0065 return m_seed_cov[idx];
0066 }
0067
0068 void set_vertex_valid(int v) override { m_vertex_valid = v; }
0069 void set_vertex_x(double v) override { m_vertex_x = v; }
0070 void set_vertex_y(double v) override { m_vertex_y = v; }
0071 void set_vertex_r(double v) override { m_vertex_r = v; }
0072 void set_vertex_phi(double v) override { m_vertex_phi = v; }
0073 void set_vertex_tbin(double v) override { m_vertex_tbin = v; }
0074 void set_vertex_npairs(unsigned int v) override { m_vertex_npairs = v; }
0075 void set_vertex_quality(double v) override { m_vertex_quality = v; }
0076
0077 void set_seed_valid(int v) override { m_seed_valid = v; }
0078 void set_seed_x(double v) override { m_seed_x = v; }
0079 void set_seed_y(double v) override { m_seed_y = v; }
0080 void set_seed_z(double v) override { m_seed_z = v; }
0081 void set_seed_px(double v) override { m_seed_px = v; }
0082 void set_seed_py(double v) override { m_seed_py = v; }
0083 void set_seed_pz(double v) override { m_seed_pz = v; }
0084 void set_seed_cov(unsigned int i, unsigned int j, double v) override
0085 {
0086 if (i >= 6 || j >= 6) return;
0087 if (m_seed_cov.size() != 36) m_seed_cov.assign(36, 0.0);
0088 m_seed_cov[6 * i + j] = v;
0089 m_seed_cov[6 * j + i] = v;
0090 }
0091
0092 void set_event(unsigned int v) override { m_event = v; }
0093 void set_track_id(unsigned int v) override { m_track_id = v; }
0094 void set_side(int v) override { m_side = v; }
0095 void set_nsegments(unsigned int v) override { m_nsegments = v; }
0096 void set_nblobs(unsigned int v) override { m_nblobs = v; }
0097 void set_nrawhits(unsigned int v) override { m_nrawhits = v; }
0098 void set_first_layer(unsigned int v) override { m_first_layer = v; }
0099 void set_last_layer(unsigned int v) override { m_last_layer = v; }
0100 void set_first_sector(unsigned int v) override { m_first_sector = v; }
0101 void set_last_sector(unsigned int v) override { m_last_sector = v; }
0102 void set_first_region(unsigned int v) override { m_first_region = v; }
0103 void set_last_region(unsigned int v) override { m_last_region = v; }
0104 void set_phi_slope(double v) override { m_phi_slope = v; }
0105 void set_phi_intercept(double v) override { m_phi_intercept = v; }
0106 void set_tbin_slope(double v) override { m_tbin_slope = v; }
0107 void set_tbin_intercept(double v) override { m_tbin_intercept = v; }
0108 void set_chi2_phi(double v) override { m_chi2_phi = v; }
0109 void set_chi2_tbin(double v) override { m_chi2_tbin = v; }
0110 void set_ndof_phi(int v) override { m_ndof_phi = v; }
0111 void set_ndof_tbin(int v) override { m_ndof_tbin = v; }
0112
0113 void add_source_track(unsigned int track_id,
0114 unsigned int region,
0115 unsigned int sector) override
0116 {
0117 m_source_track_ids.push_back(track_id);
0118 m_source_regions.push_back(region);
0119 m_source_sectors.push_back(sector);
0120 }
0121
0122 unsigned int size_source_tracks() const override
0123 {
0124 return static_cast<unsigned int>(m_source_track_ids.size());
0125 }
0126
0127 unsigned int get_source_track_id(unsigned int i) const override
0128 {
0129 if (i >= m_source_track_ids.size()) return 0;
0130 return m_source_track_ids[i];
0131 }
0132
0133 unsigned int get_source_region(unsigned int i) const override
0134 {
0135 if (i >= m_source_regions.size()) return 0;
0136 return m_source_regions[i];
0137 }
0138
0139 unsigned int get_source_sector(unsigned int i) const override
0140 {
0141 if (i >= m_source_sectors.size()) return 0;
0142 return m_source_sectors[i];
0143 }
0144
0145 void add_hit_index(TrkrDefs::hitsetkey hsk, TrkrDefs::hitkey hk) override
0146 {
0147 m_hit_indices.emplace_back(hsk, hk);
0148 }
0149
0150 unsigned int size_hit_indices() const override
0151 {
0152 return static_cast<unsigned int>(m_hit_indices.size());
0153 }
0154
0155 HitIndex get_hit_index(unsigned int i) const override
0156 {
0157 if (i >= m_hit_indices.size()) return {0, 0};
0158 return m_hit_indices[i];
0159 }
0160
0161 const std::vector<HitIndex>& get_hit_indices() const override
0162 {
0163 return m_hit_indices;
0164 }
0165
0166 private:
0167 unsigned int m_event{0};
0168 unsigned int m_track_id{0};
0169 int m_side{0};
0170
0171 unsigned int m_nsegments{0};
0172 unsigned int m_nblobs{0};
0173 unsigned int m_nrawhits{0};
0174 unsigned int m_first_layer{0};
0175 unsigned int m_last_layer{0};
0176 unsigned int m_first_sector{0};
0177 unsigned int m_last_sector{0};
0178 unsigned int m_first_region{0};
0179 unsigned int m_last_region{0};
0180
0181 double m_phi_slope{0.0};
0182 double m_phi_intercept{0.0};
0183 double m_tbin_slope{0.0};
0184 double m_tbin_intercept{0.0};
0185 double m_chi2_phi{0.0};
0186 double m_chi2_tbin{0.0};
0187 int m_ndof_phi{0};
0188 int m_ndof_tbin{0};
0189
0190 int m_vertex_valid{0};
0191 double m_vertex_x{0.0};
0192 double m_vertex_y{0.0};
0193 double m_vertex_r{0.0};
0194 double m_vertex_phi{0.0};
0195 double m_vertex_tbin{0.0};
0196 unsigned int m_vertex_npairs{0};
0197 double m_vertex_quality{0.0};
0198
0199 int m_seed_valid{0};
0200 double m_seed_x{0.0};
0201 double m_seed_y{0.0};
0202 double m_seed_z{0.0};
0203 double m_seed_px{0.0};
0204 double m_seed_py{0.0};
0205 double m_seed_pz{0.0};
0206 std::vector<double> m_seed_cov;
0207
0208 std::vector<unsigned int> m_source_track_ids;
0209 std::vector<unsigned int> m_source_regions;
0210 std::vector<unsigned int> m_source_sectors;
0211 std::vector<HitIndex> m_hit_indices;
0212
0213 ClassDefOverride(Tpc_AssembledTrackv1, 1)
0214 };
0215 #endif