Back to home page

sPhenix code displayed by LXR

 
 

    


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

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