File indexing completed on 2026-08-31 08:21:23
0001
0002
0003 #ifndef TPCTRACKRECO_TPCPOLYCLUSTERV1_H
0004 #define TPCTRACKRECO_TPCPOLYCLUSTERV1_H
0005
0006 #include "Tpc_PolyCluster.h"
0007
0008 #include <iostream>
0009 #include <vector>
0010
0011 class Tpc_PolyClusterv1 : public Tpc_PolyCluster
0012 {
0013 public:
0014 Tpc_PolyClusterv1();
0015 ~Tpc_PolyClusterv1() 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_PolyClusterv1(*this); }
0021
0022 unsigned int get_event() const override { return m_event; }
0023 unsigned int get_cluster_id() const override { return m_cluster_id; }
0024 unsigned int get_source_assembled_track_id() const override { return m_source_assembled_track_id; }
0025 TrkrDefs::cluskey get_trkr_cluster_key() const override { return m_trkr_cluster_key; }
0026 int get_side() const override { return m_side; }
0027 unsigned int get_nhits() const override { return static_cast<unsigned int>(m_hit_indices.size()); }
0028
0029 double get_centroid_x() const override { return m_centroid_x; }
0030 double get_centroid_y() const override { return m_centroid_y; }
0031 double get_centroid_z() const override { return m_centroid_z; }
0032 double get_rms_x() const override { return m_rms_x; }
0033 double get_rms_y() const override { return m_rms_y; }
0034 double get_rms_z() const override { return m_rms_z; }
0035 double get_adc() const override { return m_adc; }
0036 unsigned int get_phi_width() const override { return m_phi_width; }
0037 unsigned int get_time_width() const override { return m_time_width; }
0038 double get_phase() const override { return m_phase; }
0039
0040 void set_event(unsigned int v) override { m_event = v; }
0041 void set_cluster_id(unsigned int v) override { m_cluster_id = v; }
0042 void set_source_assembled_track_id(unsigned int v) override { m_source_assembled_track_id = v; }
0043 void set_trkr_cluster_key(TrkrDefs::cluskey v) override { m_trkr_cluster_key = v; }
0044 void set_side(int v) override { m_side = v; }
0045 void set_centroid_x(double v) override { m_centroid_x = v; }
0046 void set_centroid_y(double v) override { m_centroid_y = v; }
0047 void set_centroid_z(double v) override { m_centroid_z = v; }
0048 void set_rms_x(double v) override { m_rms_x = v; }
0049 void set_rms_y(double v) override { m_rms_y = v; }
0050 void set_rms_z(double v) override { m_rms_z = v; }
0051 void set_adc(double v) override { m_adc = v; }
0052 void set_phi_width(unsigned int v) override { m_phi_width = v; }
0053 void set_time_width(unsigned int v) override { m_time_width = v; }
0054 void set_phase(double v) override { m_phase = v; }
0055
0056 void add_hit(TrkrDefs::hitsetkey hsk, TrkrDefs::hitkey hk,
0057 double x, double y, double z) override
0058 {
0059 m_hit_indices.emplace_back(hsk, hk);
0060 m_hit_x.push_back(x);
0061 m_hit_y.push_back(y);
0062 m_hit_z.push_back(z);
0063 }
0064
0065 unsigned int size_hits() const override { return static_cast<unsigned int>(m_hit_indices.size()); }
0066 HitIndex get_hit_index(unsigned int i) const override
0067 {
0068 if (i >= m_hit_indices.size()) return {0, 0};
0069 return m_hit_indices[i];
0070 }
0071 double get_hit_x(unsigned int i) const override { return i < m_hit_x.size() ? m_hit_x[i] : 0.0; }
0072 double get_hit_y(unsigned int i) const override { return i < m_hit_y.size() ? m_hit_y[i] : 0.0; }
0073 double get_hit_z(unsigned int i) const override { return i < m_hit_z.size() ? m_hit_z[i] : 0.0; }
0074 const std::vector<HitIndex>& get_hit_indices() const override { return m_hit_indices; }
0075
0076 private:
0077 unsigned int m_event{0};
0078 unsigned int m_cluster_id{0};
0079 unsigned int m_source_assembled_track_id{0};
0080 TrkrDefs::cluskey m_trkr_cluster_key {TrkrDefs::CLUSKEYMAX};
0081 int m_side{0};
0082
0083 double m_centroid_x{0.0};
0084 double m_centroid_y{0.0};
0085 double m_centroid_z{0.0};
0086 double m_rms_x{0.0};
0087 double m_rms_y{0.0};
0088 double m_rms_z{0.0};
0089 double m_adc{0.0};
0090 unsigned int m_phi_width{0};
0091 unsigned int m_time_width{0};
0092 double m_phase{0.0};
0093
0094 std::vector<HitIndex> m_hit_indices;
0095 std::vector<double> m_hit_x;
0096 std::vector<double> m_hit_y;
0097 std::vector<double> m_hit_z;
0098
0099 ClassDefOverride(Tpc_PolyClusterv1, 1)
0100 };
0101 #endif