File indexing completed on 2025-08-06 08:18:16
0001 #ifndef TRACKBASEHISTORIC_TRACKSEED_V2_H
0002 #define TRACKBASEHISTORIC_TRACKSEED_V2_H
0003
0004 #include "TrackSeed.h"
0005
0006 #include <trackbase/TrkrDefs.h>
0007
0008 #include <limits.h>
0009 #include <cmath>
0010 #include <iostream>
0011
0012 class TrackSeed_v2 : public TrackSeed
0013 {
0014 public:
0015 TrackSeed_v2() = default;
0016
0017
0018 TrackSeed_v2(const TrackSeed&);
0019 TrackSeed_v2(const TrackSeed_v2&);
0020 TrackSeed_v2& operator=(const TrackSeed_v2& seed);
0021
0022 void identify(std::ostream& os = std::cout) const override;
0023 void Reset() override { *this = TrackSeed_v2(); }
0024 int isValid() const override { return 1; }
0025 void CopyFrom(const TrackSeed&) override;
0026 void CopyFrom(TrackSeed* seed) override { CopyFrom(*seed); }
0027 PHObject* CloneMe() const override { return new TrackSeed_v2(*this); }
0028
0029
0030
0031
0032 float get_px() const override;
0033 float get_py() const override;
0034 float get_pz() const override;
0035 float get_p() const override;
0036 float get_pt() const override;
0037
0038 float get_eta() const override;
0039 float get_theta() const override;
0040
0041
0042
0043 int get_charge() const override;
0044 float get_qOverR() const override { return m_qOverR; }
0045 float get_X0() const override { return m_X0; }
0046 float get_Y0() const override { return m_Y0; }
0047 float get_Z0() const override { return m_Z0; }
0048 float get_slope() const override { return m_slope; }
0049 float get_phi() const override { return m_phi; }
0050 short int get_crossing() const override { return m_crossing; }
0051
0052 bool empty_cluster_keys() const override { return m_cluster_keys.empty(); }
0053 size_t size_cluster_keys() const override { return m_cluster_keys.size(); }
0054
0055 ConstClusterKeyIter find_cluster_key(TrkrDefs::cluskey clusterid) const override { return m_cluster_keys.find(clusterid); }
0056 ConstClusterKeyIter begin_cluster_keys() const override { return m_cluster_keys.begin(); }
0057 ConstClusterKeyIter end_cluster_keys() const override { return m_cluster_keys.end(); }
0058 ClusterKeyIter find_cluster_keys(unsigned int clusterid) override { return m_cluster_keys.find(clusterid); }
0059 ClusterKeyIter begin_cluster_keys() override { return m_cluster_keys.begin(); }
0060 ClusterKeyIter end_cluster_keys() override { return m_cluster_keys.end(); }
0061
0062
0063
0064
0065
0066
0067 void set_crossing(const short int crossing) override { m_crossing = crossing; }
0068 void set_qOverR(const float qOverR) override { m_qOverR = qOverR; }
0069 void set_X0(const float X0) override { m_X0 = X0; }
0070 void set_Y0(const float Y0) override { m_Y0 = Y0; }
0071 void set_Z0(const float Z0) override { m_Z0 = Z0; }
0072 void set_slope(const float slope) override { m_slope = slope; }
0073 void set_phi(const float phi) override { m_phi = phi; }
0074
0075 void clear_cluster_keys() override { m_cluster_keys.clear(); }
0076 void insert_cluster_key(TrkrDefs::cluskey clusterid) override { m_cluster_keys.insert(clusterid); }
0077 size_t erase_cluster_key(TrkrDefs::cluskey clusterid) override { return m_cluster_keys.erase(clusterid); }
0078
0079
0080
0081 private:
0082 ClusterKeySet m_cluster_keys;
0083
0084 float m_qOverR = NAN;
0085 float m_X0 = NAN;
0086 float m_Y0 = NAN;
0087 float m_slope = NAN;
0088 float m_Z0 = NAN;
0089 float m_phi = NAN;
0090
0091 short int m_crossing = std::numeric_limits<short int>::max();
0092
0093 ClassDefOverride(TrackSeed_v2, 1);
0094 };
0095
0096 #endif