Back to home page

sPhenix code displayed by LXR

 
 

    


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   /// Copy constructors
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   ///@name accessors
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   //methods that return member variables
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; }  // returns the stored 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   ///@modifiers
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