Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:15

0001 #ifndef TRACKBASEHISTORIC_SVTXTRACKINFOV2_H
0002 #define TRACKBASEHISTORIC_SVTXTRACKINFOV2_H
0003 
0004 #include "SvtxTrackInfo.h"
0005 #include "TrackStateInfo_v1.h"
0006 
0007 class PHObject;
0008 
0009 class SvtxTrackInfo_v2 final : public SvtxTrackInfo
0010 {
0011  public:
0012   SvtxTrackInfo_v2() {}
0013 
0014   //* base class copy constructor
0015   SvtxTrackInfo_v2(const SvtxTrackInfo&) {}
0016 
0017   //* copy constructor
0018   SvtxTrackInfo_v2(const SvtxTrackInfo_v2& source)
0019   {
0020     m_track_id = source.get_track_id();
0021     m_outer_tpc_subsurfkey = source.get_subsurfkey();
0022     m_chisq = source.get_chisq();
0023     m_ndf = source.get_ndf();
0024     m_crossing = source.get_crossing();
0025     m_hitbitmap = source.get_hitbitmap();
0026 
0027     set_x(source.get_x());
0028     set_y(source.get_y());
0029     set_z(source.get_z());
0030     set_phi(source.get_phi());
0031     set_theta(source.get_theta());
0032     set_qOp(source.get_qOp());
0033 
0034     set_x_outer_tpc(source.get_x_outer_tpc());
0035     set_y_outer_tpc(source.get_y_outer_tpc());
0036     set_z_outer_tpc(source.get_z_outer_tpc());
0037     set_phi_outer_tpc(source.get_phi_outer_tpc());
0038     set_theta_outer_tpc(source.get_theta_outer_tpc());
0039     set_qOp_outer_tpc(source.get_qOp_outer_tpc());
0040 
0041     for (int i = 0; i < 5; i++)
0042     {
0043       for (int j = i; j < 5; j++)
0044       {
0045         set_covariance(i, j, source.get_covariance(i, j));
0046         set_covariance_outer_tpc(i, j, source.get_covariance_outer_tpc(i, j));
0047       }
0048     }
0049   }
0050 
0051   //* assignment operator
0052   SvtxTrackInfo_v2& operator=(const SvtxTrackInfo_v2& track);
0053 
0054   //* destructor
0055   ~SvtxTrackInfo_v2() override {}
0056 
0057   // The "standard PHObject response" functions...
0058   void identify(std::ostream& os = std::cout) const override
0059   {
0060     os << "SvtxTrackInfo_v2 class" << std::endl;
0061   }
0062   void Reset() override { *this = SvtxTrackInfo_v2(); }
0063 
0064   PHObject* CloneMe() const override { return new SvtxTrackInfo_v2(*this); }
0065 
0066   //! import PHObject CopyFrom, in order to avoid clang warning
0067   using PHObject::CopyFrom;
0068   // copy content
0069   void CopyFrom(const SvtxTrackInfo&) override;
0070   void CopyFrom(SvtxTrackInfo* source) override
0071   {
0072     CopyFrom(*source);
0073   }
0074 
0075   //
0076   // basic track information ---------------------------------------------------
0077   //
0078 
0079   unsigned int get_track_id() const override { return m_track_id; }
0080   void set_track_id(unsigned int id) override { m_track_id = id; }
0081 
0082   uint16_t get_subsurfkey() const override { return m_outer_tpc_subsurfkey; }
0083   void set_subsurfkey(uint16_t key) override { m_outer_tpc_subsurfkey = key; }
0084 
0085   float get_chisq() const override { return m_chisq; }
0086   void set_chisq(float chisq) override { m_chisq = chisq; }
0087 
0088   uint8_t get_ndf() const override { return m_ndf; }
0089   void set_ndf(uint8_t ndf) override { m_ndf = ndf; }
0090 
0091   uint64_t get_hitbitmap() const override { return m_hitbitmap; }
0092   void set_hitbitmap(uint64_t hitbitmap) override { m_hitbitmap = hitbitmap; }
0093 
0094   short int get_crossing() const override { return m_crossing; }
0095   void set_crossing(short int crossing) override { m_crossing = crossing; }
0096 
0097   float get_x() const override { return m_state_vertex.get_x(); }
0098   void set_x(float x) override { m_state_vertex.set_x(x); }
0099 
0100   float get_y() const override { return m_state_vertex.get_y(); }
0101   void set_y(float y) override { m_state_vertex.set_y(y); }
0102 
0103   float get_z() const override { return m_state_vertex.get_z(); }
0104   void set_z(float z) override { m_state_vertex.set_z(z); }
0105 
0106   void set_phi(const float phi) override { m_state_vertex.set_phi(phi); }
0107   void set_theta(const float theta) override { m_state_vertex.set_theta(theta); }
0108   void set_qOp(const float qop) override { m_state_vertex.set_qOp(qop); }
0109 
0110   float get_pos(unsigned int i) const override { return m_state_vertex.get_pos(i); }
0111 
0112   float get_px() const override { return m_state_vertex.get_px(); }
0113   float get_py() const override { return m_state_vertex.get_py(); }
0114   float get_pz() const override { return m_state_vertex.get_pz(); }
0115   float get_mom(unsigned int i) const override { return m_state_vertex.get_mom(i); }
0116 
0117   float get_p() const override { return m_state_vertex.get_p(); }
0118   float get_pt() const override { return m_state_vertex.get_pt(); }
0119   float get_eta() const override { return m_state_vertex.get_eta(); }
0120   float get_phi() const override { return m_state_vertex.get_phi(); }
0121   float get_theta() const override { return m_state_vertex.get_theta(); }
0122   float get_qOp() const override { return m_state_vertex.get_qOp(); }
0123   int get_charge() const override { return m_state_vertex.get_charge(); }
0124 
0125   float get_covariance(int i, int j) const override { return m_state_vertex.get_covariance(i, j); }
0126   void set_covariance(int i, int j, float value) override { m_state_vertex.set_covariance(i, j, value); }
0127 
0128   float get_x_outer_tpc() const override { return m_state_outer_tpc.get_x(); }
0129   void set_x_outer_tpc(float x) override { m_state_outer_tpc.set_x(x); }
0130 
0131   float get_y_outer_tpc() const override { return m_state_outer_tpc.get_y(); }
0132   void set_y_outer_tpc(float y) override { m_state_outer_tpc.set_y(y); }
0133 
0134   float get_z_outer_tpc() const override { return m_state_outer_tpc.get_z(); }
0135   void set_z_outer_tpc(float z) override { m_state_outer_tpc.set_z(z); }
0136 
0137   void set_phi_outer_tpc(const float phi) override { m_state_outer_tpc.set_phi(phi); }
0138   void set_theta_outer_tpc(const float theta) override { m_state_outer_tpc.set_theta(theta); }
0139   void set_qOp_outer_tpc(const float qop) override { m_state_outer_tpc.set_qOp(qop); }
0140 
0141   float get_px_outer_tpc() const override { return m_state_outer_tpc.get_px(); }
0142   float get_py_outer_tpc() const override { return m_state_outer_tpc.get_py(); }
0143   float get_pz_outer_tpc() const override { return m_state_outer_tpc.get_pz(); }
0144 
0145   float get_mom_outer_tpc(unsigned int i) const override { return m_state_outer_tpc.get_mom(i); }
0146 
0147   float get_p_outer_tpc() const override { return m_state_outer_tpc.get_p(); }
0148   float get_pt_outer_tpc() const override { return m_state_outer_tpc.get_pt(); }
0149   float get_eta_outer_tpc() const override { return m_state_outer_tpc.get_eta(); }
0150   float get_phi_outer_tpc() const override { return m_state_outer_tpc.get_phi(); }
0151   float get_theta_outer_tpc() const override { return m_state_outer_tpc.get_theta(); }
0152   float get_qOp_outer_tpc() const override { return m_state_outer_tpc.get_qOp(); }
0153 
0154   float get_covariance_outer_tpc(int i, int j) const override { return m_state_outer_tpc.get_covariance(i, j); }
0155   void set_covariance_outer_tpc(int i, int j, float value) override { m_state_outer_tpc.set_covariance(i, j, value); }
0156 
0157  private:
0158   // track information
0159   unsigned int m_track_id = std::numeric_limits<unsigned int>::quiet_NaN();
0160   uint16_t m_outer_tpc_subsurfkey = std::numeric_limits<uint16_t>::quiet_NaN();
0161   float m_chisq = std::numeric_limits<float>::quiet_NaN();
0162   uint8_t m_ndf = std::numeric_limits<uint8_t>::quiet_NaN();
0163   uint64_t m_hitbitmap = std::numeric_limits<uint64_t>::quiet_NaN();
0164   short int m_crossing = std::numeric_limits<short int>::quiet_NaN();
0165 
0166   // track state information
0167   TrackStateInfo_v1 m_state_vertex;
0168   TrackStateInfo_v1 m_state_outer_tpc;
0169 
0170   ClassDefOverride(SvtxTrackInfo_v2, 1)
0171 };
0172 
0173 #endif