EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SvtxVertex_v1.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file SvtxVertex_v1.h
1 #ifndef TRACKBASEHISTORIC_SVTXVERTEXV1_H
2 #define TRACKBASEHISTORIC_SVTXVERTEXV1_H
3 
4 #include "SvtxVertex.h"
5 
6 #include <cstddef> // for size_t
7 #include <iostream>
8 #include <set>
9 
10 class PHObject;
11 
12 class SvtxVertex_v1 : public SvtxVertex
13 {
14  public:
15  SvtxVertex_v1();
16  ~SvtxVertex_v1() override {}
17 
18  // PHObject virtual overloads
19 
20  void identify(std::ostream& os = std::cout) const override;
21  void Reset() override { *this = SvtxVertex_v1(); }
22  int isValid() const override;
23  PHObject* CloneMe() const override { return new SvtxVertex_v1(*this); }
24 
25  // vertex info
26 
27  unsigned int get_id() const override { return _id; }
28  void set_id(unsigned int id) override { _id = id; }
29 
30  float get_t0() const override { return _t0; }
31  void set_t0(float t0) override { _t0 = t0; }
32 
33  float get_x() const override { return _pos[0]; }
34  void set_x(float x) override { _pos[0] = x; }
35 
36  float get_y() const override { return _pos[1]; }
37  void set_y(float y) override { _pos[1] = y; }
38 
39  float get_z() const override { return _pos[2]; }
40  void set_z(float z) override { _pos[2] = z; }
41 
42  float get_chisq() const override { return _chisq; }
43  void set_chisq(float chisq) override { _chisq = chisq; }
44 
45  unsigned int get_ndof() const override { return _ndof; }
46  void set_ndof(unsigned int ndof) override { _ndof = ndof; }
47 
48  float get_position(unsigned int coor) const override { return _pos[coor]; }
49  void set_position(unsigned int coor, float xi) override { _pos[coor] = xi; }
50 
51  float get_error(unsigned int i, unsigned int j) const override; //< get vertex error covar
52  void set_error(unsigned int i, unsigned int j, float value) override; //< set vertex error covar
53 
54  //
55  // associated track ids methods
56  //
57  void clear_tracks() override { _track_ids.clear(); }
58  bool empty_tracks() override { return _track_ids.empty(); }
59  size_t size_tracks() const override { return _track_ids.size(); }
60  void insert_track(unsigned int trackid) override { _track_ids.insert(trackid); }
61  size_t erase_track(unsigned int trackid) override { return _track_ids.erase(trackid); }
62  ConstTrackIter begin_tracks() const override { return _track_ids.begin(); }
63  ConstTrackIter find_track(unsigned int trackid) const override { return _track_ids.find(trackid); }
64  ConstTrackIter end_tracks() const override { return _track_ids.end(); }
65  TrackIter begin_tracks() override { return _track_ids.begin(); }
66  TrackIter find_track(unsigned int trackid) override { return _track_ids.find(trackid); }
67  TrackIter end_tracks() override { return _track_ids.end(); }
68 
69  private:
70  unsigned int covar_index(unsigned int i, unsigned int j) const;
71 
72  unsigned int _id; //< unique identifier within container
73  float _t0; //< collision time
74  float _pos[3]; //< collision position x,y,z
75  float _chisq; //< vertex fit chisq
76  unsigned int _ndof; //< degrees of freedom
77  float _err[6]; //< error covariance matrix (packed storage) (+/- cm^2)
78  std::set<unsigned int> _track_ids; //< list of track ids
79 
81 };
82 
83 #endif