Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-08-31 08:21:20

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef TPCTRACKRECO_TPCASSEMBLEDTRACK_H
0004 #define TPCTRACKRECO_TPCASSEMBLEDTRACK_H
0005 
0006 #include <phool/PHObject.h>
0007 #include <trackbase/TrkrDefs.h>
0008 
0009 #include <iostream>
0010 #include <utility>
0011 #include <vector>
0012 
0013 // A full TPC track built by connecting already reconstructed Tpc_ModuleTrack
0014 // pieces across modules/sectors.  Concrete payload lives in versioned
0015 // subclasses (Tpc_AssembledTrackv1, ...), following the same schema-evolution pattern
0016 // as Tpc_ModuleTrack/Tpc_ModuleTrackv1.
0017 class Tpc_AssembledTrack : public PHObject
0018 {
0019  public:
0020   Tpc_AssembledTrack() = default;
0021   ~Tpc_AssembledTrack() override = default;
0022 
0023   void identify(std::ostream& os = std::cout) const override
0024   {
0025     os << "Tpc_AssembledTrack base class" << std::endl;
0026   }
0027   int isValid() const override { return 0; }
0028 
0029   // --- Identity ---
0030   virtual unsigned int get_event() const { return 0; }
0031   virtual unsigned int get_track_id() const { return 0; }
0032   virtual int get_side() const { return 0; }
0033 
0034   // --- Topology ---
0035   virtual unsigned int get_nsegments() const { return 0; }
0036   virtual unsigned int get_nblobs() const { return 0; }
0037   virtual unsigned int get_nrawhits() const { return 0; }
0038   virtual unsigned int get_first_layer() const { return 0; }
0039   virtual unsigned int get_last_layer() const { return 0; }
0040   virtual unsigned int get_first_sector() const { return 0; }
0041   virtual unsigned int get_last_sector() const { return 0; }
0042   virtual unsigned int get_first_region() const { return 0; }
0043   virtual unsigned int get_last_region() const { return 0; }
0044 
0045   // --- Full-track fit in global sector-unwrapped coordinates ---
0046   // global_phi is in radians.  It is built from sector + local pad using the
0047   // same local pad/phi calibration constants as Tpc_ModuleTrackReco.
0048   virtual double get_phi_slope() const { return 0.0; }
0049   virtual double get_phi_intercept() const { return 0.0; }
0050   virtual double get_tbin_slope() const { return 0.0; }
0051   virtual double get_tbin_intercept() const { return 0.0; }
0052   virtual double get_chi2_phi() const { return 0.0; }
0053   virtual double get_chi2_tbin() const { return 0.0; }
0054   virtual int get_ndof_phi() const { return 0; }
0055   virtual int get_ndof_tbin() const { return 0; }
0056 
0057   // --- Setters ---
0058   virtual void set_event(unsigned int) {}
0059   virtual void set_track_id(unsigned int) {}
0060   virtual void set_side(int) {}
0061   virtual void set_nsegments(unsigned int) {}
0062   virtual void set_nblobs(unsigned int) {}
0063   virtual void set_nrawhits(unsigned int) {}
0064   virtual void set_first_layer(unsigned int) {}
0065   virtual void set_last_layer(unsigned int) {}
0066   virtual void set_first_sector(unsigned int) {}
0067   virtual void set_last_sector(unsigned int) {}
0068   virtual void set_first_region(unsigned int) {}
0069   virtual void set_last_region(unsigned int) {}
0070   virtual void set_phi_slope(double) {}
0071   virtual void set_phi_intercept(double) {}
0072   virtual void set_tbin_slope(double) {}
0073   virtual void set_tbin_intercept(double) {}
0074   virtual void set_chi2_phi(double) {}
0075   virtual void set_chi2_tbin(double) {}
0076   virtual void set_ndof_phi(int) {}
0077   virtual void set_ndof_tbin(int) {}
0078 
0079   // --- Event vertex estimated from full-track pairs ---
0080   // r/phi are from the r-phi projection; tbin is from the r-tbin projection.
0081   virtual int get_vertex_valid() const { return 0; }
0082   virtual double get_vertex_x() const { return 0.0; }
0083   virtual double get_vertex_y() const { return 0.0; }
0084   virtual double get_vertex_r() const { return 0.0; }
0085   virtual double get_vertex_phi() const { return 0.0; }
0086   virtual double get_vertex_tbin() const { return 0.0; }
0087   virtual unsigned int get_vertex_npairs() const { return 0; }
0088   virtual double get_vertex_quality() const { return 0.0; }
0089 
0090   virtual void set_vertex_valid(int) {}
0091   virtual void set_vertex_x(double) {}
0092   virtual void set_vertex_y(double) {}
0093   virtual void set_vertex_r(double) {}
0094   virtual void set_vertex_phi(double) {}
0095   virtual void set_vertex_tbin(double) {}
0096   virtual void set_vertex_npairs(unsigned int) {}
0097   virtual void set_vertex_quality(double) {}
0098 
0099   // --- Preliminary GenFit seed from the connector fit ---
0100   virtual int get_seed_valid() const { return 0; }
0101   virtual double get_seed_x() const { return 0.0; }
0102   virtual double get_seed_y() const { return 0.0; }
0103   virtual double get_seed_z() const { return 0.0; }
0104   virtual double get_seed_px() const { return 0.0; }
0105   virtual double get_seed_py() const { return 0.0; }
0106   virtual double get_seed_pz() const { return 0.0; }
0107   virtual double get_seed_cov(unsigned int, unsigned int) const { return 0.0; }
0108 
0109   virtual void set_seed_valid(int) {}
0110   virtual void set_seed_x(double) {}
0111   virtual void set_seed_y(double) {}
0112   virtual void set_seed_z(double) {}
0113   virtual void set_seed_px(double) {}
0114   virtual void set_seed_py(double) {}
0115   virtual void set_seed_pz(double) {}
0116   virtual void set_seed_cov(unsigned int, unsigned int, double) {}
0117 
0118   // Source Tpc_ModuleTrack ids used by this assembled track.
0119   virtual void add_source_track(unsigned int /*track_id*/,
0120                                 unsigned int /*region*/,
0121                                 unsigned int /*sector*/) {}
0122   virtual unsigned int size_source_tracks() const { return 0; }
0123   virtual unsigned int get_source_track_id(unsigned int) const { return 0; }
0124   virtual unsigned int get_source_region(unsigned int) const { return 0; }
0125   virtual unsigned int get_source_sector(unsigned int) const { return 0; }
0126 
0127   // Hit index references copied from source in-module tracks.
0128   using HitIndex = std::pair<TrkrDefs::hitsetkey, TrkrDefs::hitkey>;
0129   virtual void add_hit_index(TrkrDefs::hitsetkey, TrkrDefs::hitkey) {}
0130   virtual unsigned int size_hit_indices() const { return 0; }
0131   virtual HitIndex get_hit_index(unsigned int) const { return {0, 0}; }
0132   virtual const std::vector<HitIndex>& get_hit_indices() const
0133   {
0134     static const std::vector<HitIndex> empty_indices;
0135     return empty_indices;
0136   }
0137 
0138  private:
0139   ClassDefOverride(Tpc_AssembledTrack, 0)
0140 };
0141 #endif