Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-08-31 08:21:23

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
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