File indexing completed on 2025-08-03 08:17:36
0001 #ifndef TRACKBASEHISTORIC_SVTXTRACK_H
0002 #define TRACKBASEHISTORIC_SVTXTRACK_H
0003
0004 #include "SvtxTrackState.h"
0005 #include "TrackSeed.h"
0006
0007 #include <trackbase/TrkrDefs.h>
0008
0009 #include <g4main/PHG4HitDefs.h>
0010 #include <phool/PHObject.h>
0011
0012 #include <limits.h>
0013 #include <cmath>
0014 #include <iostream>
0015 #include <map>
0016 #include <set>
0017
0018 class SvtxTrack : public PHObject
0019 {
0020 public:
0021 typedef std::map<float, SvtxTrackState*> StateMap;
0022 typedef StateMap::const_iterator ConstStateIter;
0023 typedef StateMap::iterator StateIter;
0024
0025 typedef std::set<unsigned int> ClusterSet;
0026 typedef ClusterSet::const_iterator ConstClusterIter;
0027 typedef ClusterSet::iterator ClusterIter;
0028
0029 typedef std::set<TrkrDefs::cluskey> ClusterKeySet;
0030 typedef ClusterKeySet::const_iterator ConstClusterKeyIter;
0031 typedef ClusterKeySet::iterator ClusterKeyIter;
0032
0033 enum CAL_LAYER
0034 {
0035 PRES = 0,
0036 CEMC = 1,
0037 HCALIN = 2,
0038 HCALOUT = 3,
0039 OUTER_CEMC = 4,
0040 OUTER_HCALIN = 5,
0041 OUTER_HCALOUT = 6
0042 };
0043
0044 ~SvtxTrack() override = default;
0045
0046
0047 void identify(std::ostream& os = std::cout) const override
0048 {
0049 os << "SvtxTrack base class" << std::endl;
0050 }
0051
0052 int isValid() const override { return 0; }
0053 PHObject* CloneMe() const override { return nullptr; }
0054
0055
0056 using PHObject::CopyFrom;
0057
0058
0059 virtual void CopyFrom(const SvtxTrack&)
0060 {
0061 }
0062
0063
0064 virtual void CopyFrom(SvtxTrack*)
0065 {
0066 }
0067
0068
0069
0070
0071
0072 virtual unsigned int get_id() const { return UINT_MAX; }
0073 virtual void set_id(unsigned int) {}
0074
0075 virtual TrackSeed* get_tpc_seed() const { return nullptr; }
0076 virtual void set_tpc_seed(TrackSeed*) {}
0077
0078 virtual TrackSeed* get_silicon_seed() const { return nullptr; }
0079 virtual void set_silicon_seed(TrackSeed*) {}
0080
0081 virtual short int get_crossing() const { return SHRT_MAX; }
0082 virtual void set_crossing(short int) {}
0083
0084 virtual unsigned int get_vertex_id() const { return UINT_MAX; }
0085 virtual void set_vertex_id(unsigned int) {}
0086
0087 virtual bool get_positive_charge() const { return false; }
0088 virtual void set_positive_charge(bool) {}
0089
0090 virtual int get_charge() const { return -1; }
0091 virtual void set_charge(int) {}
0092
0093 virtual float get_chisq() const { return NAN; }
0094 virtual void set_chisq(float) {}
0095
0096 virtual unsigned int get_ndf() const { return UINT_MAX; }
0097 virtual void set_ndf(int) {}
0098
0099 virtual float get_quality() const { return NAN; }
0100
0101 virtual float get_x() const { return NAN; }
0102 virtual void set_x(float) {}
0103
0104 virtual float get_y() const { return NAN; }
0105 virtual void set_y(float) {}
0106
0107 virtual float get_z() const { return NAN; }
0108 virtual void set_z(float) {}
0109
0110 virtual float get_pos(unsigned int) const { return NAN; }
0111
0112 virtual float get_px() const { return NAN; }
0113 virtual void set_px(float) {}
0114
0115 virtual float get_py() const { return NAN; }
0116 virtual void set_py(float) {}
0117
0118 virtual float get_pz() const { return NAN; }
0119 virtual void set_pz(float) {}
0120
0121 virtual float get_mom(unsigned int) const { return NAN; }
0122
0123 virtual float get_p() const { return NAN; }
0124 virtual float get_pt() const { return NAN; }
0125 virtual float get_eta() const { return NAN; }
0126 virtual float get_phi() const { return NAN; }
0127
0128 virtual float get_error(int , int ) const { return NAN; }
0129 virtual void set_error(int , int , float ) {}
0130
0131
0132
0133
0134 virtual bool empty_states() const { return false; }
0135 virtual size_t size_states() const { return 0; }
0136 virtual size_t count_states(float ) const { return 0; }
0137 virtual void clear_states() {}
0138
0139 virtual const SvtxTrackState* get_state(float ) const { return nullptr; }
0140 virtual SvtxTrackState* get_state(float ) { return nullptr; }
0141 virtual SvtxTrackState* insert_state(const SvtxTrackState*) { return nullptr; }
0142 virtual size_t erase_state(float ) { return 0; }
0143
0144 virtual ConstStateIter begin_states() const;
0145 virtual ConstStateIter find_state(float pathlength) const;
0146 virtual ConstStateIter end_states() const;
0147
0148 virtual StateIter begin_states();
0149 virtual StateIter find_state(float pathlength);
0150 virtual StateIter end_states();
0151
0152
0153
0154
0155
0156
0157 virtual void clear_cluster_keys() {}
0158 virtual bool empty_cluster_keys() const { return false; }
0159 virtual size_t size_cluster_keys() const { return 0; }
0160
0161 virtual void insert_cluster_key(TrkrDefs::cluskey ) {}
0162 virtual size_t erase_cluster_key(TrkrDefs::cluskey ) { return 0; }
0163 virtual ConstClusterKeyIter find_cluster_key(TrkrDefs::cluskey clusterid) const;
0164 virtual ConstClusterKeyIter begin_cluster_keys() const;
0165 virtual ConstClusterKeyIter end_cluster_keys() const;
0166 virtual ClusterKeyIter begin_cluster_keys();
0167 virtual ClusterKeyIter find_cluster_keys(unsigned int clusterid);
0168 virtual ClusterKeyIter end_cluster_keys();
0169 virtual void clear_clusters() {}
0170 virtual bool empty_clusters() const { return false; }
0171 virtual size_t size_clusters() const { return 0; }
0172 virtual void insert_cluster(unsigned int ) {}
0173 virtual size_t erase_cluster(unsigned int ) { return 0; }
0174 virtual ConstClusterIter begin_clusters() const;
0175 virtual ConstClusterIter find_cluster(unsigned int ) const;
0176 virtual ConstClusterIter end_clusters() const;
0177 virtual ClusterIter begin_clusters();
0178 virtual ClusterIter find_cluster(unsigned int clusterid);
0179 virtual ClusterIter end_clusters();
0180
0181 virtual float get_cal_dphi(CAL_LAYER ) const { return 0.; }
0182 virtual void set_cal_dphi(CAL_LAYER , float ) {}
0183 virtual float get_cal_deta(CAL_LAYER ) const { return 0.; }
0184 virtual void set_cal_deta(CAL_LAYER , float ) {}
0185 virtual float get_cal_energy_3x3(CAL_LAYER ) const { return 0.; }
0186 virtual void set_cal_energy_3x3(CAL_LAYER , float ) {}
0187 virtual float get_cal_energy_5x5(CAL_LAYER ) const { return 0.; }
0188 virtual void set_cal_energy_5x5(CAL_LAYER , float ) {}
0189 virtual unsigned int get_cal_cluster_id(CAL_LAYER ) const { return 0; }
0190 virtual void set_cal_cluster_id(CAL_LAYER , unsigned int ) {}
0191 virtual TrkrDefs::cluskey get_cal_cluster_key(CAL_LAYER ) const { return 0; }
0192 virtual void set_cal_cluster_key(CAL_LAYER , TrkrDefs::cluskey ) {}
0193 virtual float get_cal_cluster_e(CAL_LAYER ) const { return 0.; }
0194 virtual void set_cal_cluster_e(CAL_LAYER , float ) {}
0195
0196 virtual float get_acts_covariance(unsigned int , unsigned int ) const { return NAN; }
0197 virtual void set_acts_covariance(unsigned int , unsigned int , float ) {}
0198
0199 virtual float get_dca() const { return NAN; }
0200 virtual void set_dca(float) {}
0201 virtual float get_dca_error() const { return NAN; }
0202 virtual void set_dca_error(float) {}
0203 virtual float get_dca2d() const { return NAN; }
0204 virtual void set_dca2d(float) {}
0205 virtual float get_dca2d_error() const { return NAN; }
0206 virtual void set_dca2d_error(float) {}
0207 virtual float get_dca3d_xy() const { return NAN; }
0208 virtual void set_dca3d_xy(float) {}
0209 virtual float get_dca3d_xy_error() const { return NAN; }
0210 virtual void set_dca3d_xy_error(float) {}
0211 virtual float get_dca3d_z() const { return NAN; }
0212 virtual void set_dca3d_z(float) {}
0213 virtual float get_dca3d_z_error() const { return NAN; }
0214 virtual void set_dca3d_z_error(float) {}
0215
0216
0217
0218
0219
0220
0221 virtual unsigned int get_truth_track_id() const { return UINT_MAX; }
0222 virtual void set_truth_track_id(unsigned int) {}
0223 virtual void set_num_measurements(int) {}
0224 virtual unsigned int get_num_measurements() const { return 0; }
0225
0226
0227 typedef std::map<int, std::set<PHG4HitDefs::keytype> > HitIdMap;
0228 typedef HitIdMap::iterator HitIdIter;
0229 typedef HitIdMap::const_iterator HitIdConstIter;
0230
0231 virtual bool empty_g4hit_id() const { return true; }
0232 virtual size_t size_g4hit_id() const { return 0; }
0233 virtual void add_g4hit_id(int , PHG4HitDefs::keytype ) {}
0234 virtual HitIdIter begin_g4hit_id();
0235 virtual HitIdConstIter begin_g4hit_id() const;
0236 virtual HitIdIter find_g4hit_id(int );
0237 virtual HitIdConstIter find_g4hit_id(int ) const;
0238 virtual HitIdIter end_g4hit_id();
0239 virtual HitIdConstIter end_g4hit_id() const;
0240 virtual size_t remove_g4hit_id(int , PHG4HitDefs::keytype ) { return 0; }
0241 virtual size_t remove_g4hit_volume(int ) { return 0; }
0242 virtual void clear_g4hit_id() {}
0243 virtual const HitIdMap& g4hit_ids() const;
0244
0245 protected:
0246 SvtxTrack() {}
0247
0248 ClassDefOverride(SvtxTrack, 1);
0249 };
0250
0251 #endif