File indexing completed on 2025-08-06 08:18:16
0001 #ifndef TRACKBASEHISTORIC_TRACKSEED_H
0002 #define TRACKBASEHISTORIC_TRACKSEED_H
0003
0004 #include <phool/PHObject.h>
0005
0006 #include <trackbase/TrkrDefs.h>
0007 #include <g4main/PHG4HitDefs.h>
0008 #include <cmath>
0009 #include <limits>
0010 #include <set>
0011
0012 class TrackSeed : public PHObject
0013 {
0014 public:
0015 typedef std::set<TrkrDefs::cluskey> ClusterKeySet;
0016 typedef ClusterKeySet::const_iterator ConstClusterKeyIter;
0017 typedef ClusterKeySet::iterator ClusterKeyIter;
0018
0019 ~TrackSeed() override = default;
0020
0021 void identify(std::ostream& os = std::cout) const override
0022 {
0023 os << "TrackSeed base class\n";
0024 }
0025
0026 int isValid() const override { return 0; }
0027 PHObject* CloneMe() const override { return nullptr; }
0028 using PHObject::CopyFrom;
0029
0030 virtual void CopyFrom(const TrackSeed&) {}
0031
0032 virtual void CopyFrom(TrackSeed*) {}
0033
0034
0035
0036 virtual int get_charge() const { return std::numeric_limits<int>::max(); }
0037 virtual float get_phi() const { return NAN; }
0038 virtual float get_pz() const { return NAN; }
0039 virtual float get_qOverR() const { return NAN; }
0040 virtual float get_X0() const { return NAN; }
0041 virtual float get_Y0() const { return NAN; }
0042 virtual float get_slope() const { return NAN; }
0043 virtual float get_Z0() const { return NAN; }
0044 virtual float get_eta() const { return NAN; }
0045 virtual float get_theta() const { return NAN; }
0046 virtual float get_pt() const { return NAN; }
0047 virtual float get_p() const { return NAN; }
0048 virtual float get_px() const { return NAN; }
0049 virtual float get_py() const { return NAN; }
0050 virtual short int get_crossing() const { return 0; }
0051
0052 virtual unsigned int get_silicon_seed_index() const { return 0; }
0053 virtual unsigned int get_tpc_seed_index() const { return 0; }
0054 virtual short int get_crossing_estimate() const { return 0; }
0055
0056 virtual bool empty_cluster_keys() const { return true; }
0057 virtual size_t size_cluster_keys() const { return 0; }
0058
0059 virtual ConstClusterKeyIter find_cluster_key(TrkrDefs::cluskey) const;
0060 virtual ConstClusterKeyIter begin_cluster_keys() const;
0061 virtual ConstClusterKeyIter end_cluster_keys() const;
0062 virtual ClusterKeyIter begin_cluster_keys();
0063 virtual ClusterKeyIter find_cluster_keys(unsigned int);
0064 virtual ClusterKeyIter end_cluster_keys();
0065
0066
0067
0068
0069
0070 virtual void set_crossing(const short int) {}
0071 virtual void set_qOverR(const float) {}
0072 virtual void set_X0(const float) {}
0073 virtual void set_Y0(const float) {}
0074 virtual void set_slope(const float) {}
0075 virtual void set_Z0(const float) {}
0076 virtual void set_phi(const float) {}
0077
0078 virtual void set_silicon_seed_index(const unsigned int) {}
0079 virtual void set_tpc_seed_index(const unsigned int) {}
0080 virtual void set_crossing_estimate(const short int) {}
0081
0082 virtual void clear_cluster_keys() {}
0083
0084 virtual void insert_cluster_key(TrkrDefs::cluskey) {}
0085 virtual size_t erase_cluster_key(TrkrDefs::cluskey) { return 0; }
0086
0087
0088
0089
0090 typedef std::map<int, std::set<PHG4HitDefs::keytype> > HitIdMap;
0091 typedef HitIdMap::iterator HitIdIter;
0092 typedef HitIdMap::const_iterator HitIdConstIter;
0093
0094 virtual unsigned int get_truth_track_id() const { return std::numeric_limits<unsigned int>::max(); }
0095 virtual void set_truth_track_id(unsigned int) {}
0096 virtual void set_num_measurements(int) {}
0097 virtual unsigned int get_num_measurements() const { return 0; }
0098 virtual bool empty_g4hit_id() const { return true; }
0099 virtual size_t size_g4hit_id() const { return 0; }
0100 virtual void add_g4hit_id(int, PHG4HitDefs::keytype) {}
0101 virtual HitIdIter begin_g4hit_id();
0102 virtual HitIdConstIter begin_g4hit_id() const;
0103 virtual HitIdIter find_g4hit_id(int);
0104 virtual HitIdConstIter find_g4hit_id(int) const;
0105 virtual HitIdIter end_g4hit_id();
0106 virtual HitIdConstIter end_g4hit_id() const;
0107 virtual size_t remove_g4hit_id(int, PHG4HitDefs::keytype) { return 0; }
0108 virtual size_t remove_g4hit_volume(int) { return 0; }
0109 virtual void clear_g4hit_id() {}
0110 virtual const HitIdMap& g4hit_ids() const;
0111
0112
0113 protected:
0114 TrackSeed() = default;
0115
0116 ClassDefOverride(TrackSeed, 1);
0117 };
0118
0119 #endif