Back to home page

sPhenix code displayed by LXR

 
 

    


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   // The "standard PHObject response" functions...
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   //! import PHObject CopyFrom, in order to avoid clang warning
0056   using PHObject::CopyFrom;
0057 
0058   //! copy content from base class
0059   virtual void CopyFrom(const SvtxTrack&)
0060   {
0061   }
0062 
0063   //! copy content from base class
0064   virtual void CopyFrom(SvtxTrack*)
0065   {
0066   }
0067 
0068   //
0069   // basic track information ---------------------------------------------------
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 /*i*/, int /*j*/) const { return NAN; }
0129   virtual void set_error(int /*i*/, int /*j*/, float /*value*/) {}
0130 
0131   //
0132   // state methods -------------------------------------------------------------
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 /*pathlength*/) const { return 0; }
0137   virtual void clear_states() {}
0138 
0139   virtual const SvtxTrackState* get_state(float /*pathlength*/) const { return nullptr; }
0140   virtual SvtxTrackState* get_state(float /*pathlength*/) { return nullptr; }
0141   virtual SvtxTrackState* insert_state(const SvtxTrackState*) { return nullptr; }
0142   virtual size_t erase_state(float /*pathlength*/) { 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   // The folllowing functions are deprecated as of SvtxTrack_v4
0154   // This includes the cluster key getters/setters,
0155   // any DCA getters/setters, and any calo projection getters/setters
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 /*clusterid*/) {}
0162   virtual size_t erase_cluster_key(TrkrDefs::cluskey /*clusterid*/) { 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 /*clusterid*/) {}
0173   virtual size_t erase_cluster(unsigned int /*clusterid*/) { return 0; }
0174   virtual ConstClusterIter begin_clusters() const;
0175   virtual ConstClusterIter find_cluster(unsigned int /*clusterid*/) 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 /*layer*/) const { return 0.; }
0182   virtual void set_cal_dphi(CAL_LAYER /*layer*/, float /*dphi*/) {}
0183   virtual float get_cal_deta(CAL_LAYER /*layer*/) const { return 0.; }
0184   virtual void set_cal_deta(CAL_LAYER /*layer*/, float /*deta*/) {}
0185   virtual float get_cal_energy_3x3(CAL_LAYER /*layer*/) const { return 0.; }
0186   virtual void set_cal_energy_3x3(CAL_LAYER /*layer*/, float /*energy_3x3*/) {}
0187   virtual float get_cal_energy_5x5(CAL_LAYER /*layer*/) const { return 0.; }
0188   virtual void set_cal_energy_5x5(CAL_LAYER /*layer*/, float /*energy_5x5*/) {}
0189   virtual unsigned int get_cal_cluster_id(CAL_LAYER /*layer*/) const { return 0; }
0190   virtual void set_cal_cluster_id(CAL_LAYER /*layer*/, unsigned int /*id*/) {}
0191   virtual TrkrDefs::cluskey get_cal_cluster_key(CAL_LAYER /*layer*/) const { return 0; }
0192   virtual void set_cal_cluster_key(CAL_LAYER /*layer*/, TrkrDefs::cluskey /*key*/) {}
0193   virtual float get_cal_cluster_e(CAL_LAYER /*layer*/) const { return 0.; }
0194   virtual void set_cal_cluster_e(CAL_LAYER /*layer*/, float /*e*/) {}
0195 
0196   virtual float get_acts_covariance(unsigned int /*i*/, unsigned int /*j*/) const { return NAN; }
0197   virtual void set_acts_covariance(unsigned int /*i*/, unsigned int /*j*/, float /*value*/) {}
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   // truth track interface ---------------------------------------------------
0218   //
0219 
0220   // SvtxTrack_FastSim
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   // SvtxTrack_FastSim_v1
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 /*volume*/, PHG4HitDefs::keytype /*id*/) {}
0234   virtual HitIdIter begin_g4hit_id();
0235   virtual HitIdConstIter begin_g4hit_id() const;
0236   virtual HitIdIter find_g4hit_id(int /*volume*/);
0237   virtual HitIdConstIter find_g4hit_id(int /*volume*/) const;
0238   virtual HitIdIter end_g4hit_id();
0239   virtual HitIdConstIter end_g4hit_id() const;
0240   virtual size_t remove_g4hit_id(int /*volume*/, PHG4HitDefs::keytype /*id*/) { return 0; }
0241   virtual size_t remove_g4hit_volume(int /*volume*/) { 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