File indexing completed on 2025-08-05 08:16:30
0001
0002
0003 #ifndef GLOBALVERTEX_SVTXVERTEXV1_H
0004 #define GLOBALVERTEX_SVTXVERTEXV1_H
0005
0006 #include "SvtxVertex.h"
0007
0008 #include <cstddef> // for size_t
0009 #include <iostream>
0010 #include <limits>
0011 #include <set>
0012
0013 class PHObject;
0014
0015 class SvtxVertex_v1 : public SvtxVertex
0016 {
0017 public:
0018 SvtxVertex_v1();
0019 ~SvtxVertex_v1() override = default;
0020
0021
0022
0023 void identify(std::ostream& os = std::cout) const override;
0024 void Reset() override { *this = SvtxVertex_v1(); }
0025 int isValid() const override;
0026 PHObject* CloneMe() const override { return new SvtxVertex_v1(*this); }
0027
0028
0029
0030 unsigned int get_id() const override { return _id; }
0031 void set_id(unsigned int id) override { _id = id; }
0032
0033 float get_t0() const override { return get_t(); }
0034 void set_t0(float t0) override { set_t(t0); }
0035
0036 float get_t() const override { return _t0; }
0037 void set_t(float t0) override { _t0 = t0; }
0038
0039 float get_x() const override { return _pos[0]; }
0040 void set_x(float x) override { _pos[0] = x; }
0041
0042 float get_y() const override { return _pos[1]; }
0043 void set_y(float y) override { _pos[1] = y; }
0044
0045 float get_z() const override { return _pos[2]; }
0046 void set_z(float z) override { _pos[2] = z; }
0047
0048 float get_chisq() const override { return _chisq; }
0049 void set_chisq(float chisq) override { _chisq = chisq; }
0050
0051 unsigned int get_ndof() const override { return _ndof; }
0052 void set_ndof(unsigned int ndof) override { _ndof = ndof; }
0053
0054 float get_position(unsigned int coor) const override { return _pos[coor]; }
0055 void set_position(unsigned int coor, float xi) override { _pos[coor] = xi; }
0056
0057 float get_error(unsigned int i, unsigned int j) const override;
0058 void set_error(unsigned int i, unsigned int j, float value) override;
0059
0060
0061
0062
0063 void clear_tracks() override { _track_ids.clear(); }
0064 bool empty_tracks() override { return _track_ids.empty(); }
0065 size_t size_tracks() const override { return _track_ids.size(); }
0066 void insert_track(unsigned int trackid) override { _track_ids.insert(trackid); }
0067 size_t erase_track(unsigned int trackid) override { return _track_ids.erase(trackid); }
0068 ConstTrackIter begin_tracks() const override { return _track_ids.begin(); }
0069 ConstTrackIter find_track(unsigned int trackid) const override { return _track_ids.find(trackid); }
0070 ConstTrackIter end_tracks() const override { return _track_ids.end(); }
0071 TrackIter begin_tracks() override { return _track_ids.begin(); }
0072 TrackIter find_track(unsigned int trackid) override { return _track_ids.find(trackid); }
0073 TrackIter end_tracks() override { return _track_ids.end(); }
0074
0075 private:
0076 unsigned int covar_index(unsigned int i, unsigned int j) const;
0077
0078 unsigned int _id{std::numeric_limits<unsigned int>::max()};
0079 float _t0{std::numeric_limits<float>::quiet_NaN()};
0080 float _pos[3]{};
0081 float _chisq{std::numeric_limits<float>::quiet_NaN()};
0082 unsigned int _ndof{std::numeric_limits<unsigned int>::max()};
0083 float _err[6]{};
0084 std::set<unsigned int> _track_ids;
0085
0086 ClassDefOverride(SvtxVertex_v1, 1);
0087 };
0088
0089 #endif