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_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