File indexing completed on 2026-08-31 08:21:24
0001 #ifndef TPCTRACKRECO_TPCCROSSINGDECISIONV1_H
0002 #define TPCTRACKRECO_TPCCROSSINGDECISIONV1_H
0003
0004
0005 #include "TpcCrossingDecision.h"
0006
0007 #include <iostream>
0008 #include <limits>
0009
0010 class TpcCrossingDecisionv1 : public TpcCrossingDecision
0011 {
0012 public:
0013 TpcCrossingDecisionv1();
0014 ~TpcCrossingDecisionv1() override = default;
0015
0016 void identify(std::ostream& os = std::cout) const override;
0017 void Reset() override;
0018 int isValid() const override;
0019 PHObject* CloneMe() const override { return new TpcCrossingDecisionv1(*this); }
0020
0021 unsigned int get_assembled_track_id() const override { return m_assembled_track_id; }
0022 void set_assembled_track_id(unsigned int v) override { m_assembled_track_id = v; }
0023
0024 short get_selected_crossing() const override { return m_selected_crossing; }
0025 void set_selected_crossing(short v) override { m_selected_crossing = v; }
0026
0027 unsigned int get_silicon_vertex_id() const override { return m_silicon_vertex_id; }
0028 void set_silicon_vertex_id(unsigned int v) override { m_silicon_vertex_id = v; }
0029
0030 float get_tpc_z0() const override { return m_tpc_z0; }
0031 void set_tpc_z0(float v) override { m_tpc_z0 = v; }
0032
0033 float get_silicon_vertex_z() const override { return m_silicon_vertex_z; }
0034 void set_silicon_vertex_z(float v) override { m_silicon_vertex_z = v; }
0035
0036 float get_delta_z() const override { return m_delta_z; }
0037 void set_delta_z(float v) override { m_delta_z = v; }
0038
0039 float get_best_abs_delta_z() const override { return m_best_abs_delta_z; }
0040 void set_best_abs_delta_z(float v) override { m_best_abs_delta_z = v; }
0041
0042 float get_second_best_abs_delta_z() const override { return m_second_best_abs_delta_z; }
0043 void set_second_best_abs_delta_z(float v) override { m_second_best_abs_delta_z = v; }
0044
0045 unsigned char get_selected_tier() const override { return m_selected_tier; }
0046 void set_selected_tier(unsigned char v) override { m_selected_tier = v; }
0047
0048 float get_selected_score() const override { return m_selected_score; }
0049 void set_selected_score(float v) override { m_selected_score = v; }
0050
0051 unsigned short get_number_of_available_crossings() const override { return m_number_of_available_crossings; }
0052 void set_number_of_available_crossings(unsigned short v) override { m_number_of_available_crossings = v; }
0053
0054 unsigned short get_number_of_allowed_crossings() const override { return m_number_of_allowed_crossings; }
0055 void set_number_of_allowed_crossings(unsigned short v) override { m_number_of_allowed_crossings = v; }
0056
0057 unsigned short get_number_of_tested_crossings() const override { return m_number_of_tested_crossings; }
0058 void set_number_of_tested_crossings(unsigned short v) override { m_number_of_tested_crossings = v; }
0059
0060 unsigned short get_number_of_tpc_valid_crossings() const override { return m_number_of_tpc_valid_crossings; }
0061 void set_number_of_tpc_valid_crossings(unsigned short v) override { m_number_of_tpc_valid_crossings = v; }
0062
0063 unsigned short get_number_of_vertex_compatible_crossings() const override { return m_number_of_vertex_compatible_crossings; }
0064 void set_number_of_vertex_compatible_crossings(unsigned short v) override { m_number_of_vertex_compatible_crossings = v; }
0065
0066 unsigned int get_number_of_candidates() const override { return m_candidates.size(); }
0067 const TpcCrossingCandidate* get_candidate(unsigned int index) const override { return index < m_candidates.size() ? &m_candidates[index] : nullptr; }
0068 void add_candidate(const TpcCrossingCandidate& candidate) override { m_candidates.push_back(candidate); }
0069 void clear_candidates() override { m_candidates.clear(); }
0070
0071 unsigned char get_status() const override { return m_status; }
0072 void set_status(unsigned char v) override { m_status = v; }
0073 void set_status(TpcCrossingStatus status) override { set_status(static_cast<unsigned char>(status)); }
0074
0075 private:
0076 static float nan() { return std::numeric_limits<float>::quiet_NaN(); }
0077
0078 unsigned int m_assembled_track_id {0};
0079 short m_selected_crossing {std::numeric_limits<short>::max()};
0080 unsigned int m_silicon_vertex_id {std::numeric_limits<unsigned int>::max()};
0081 float m_tpc_z0 {nan()};
0082 float m_silicon_vertex_z {nan()};
0083 float m_delta_z {nan()};
0084 float m_best_abs_delta_z {nan()};
0085 float m_second_best_abs_delta_z {nan()};
0086 unsigned char m_selected_tier {std::numeric_limits<unsigned char>::max()};
0087 float m_selected_score {nan()};
0088 unsigned short m_number_of_available_crossings {0};
0089 unsigned short m_number_of_allowed_crossings {0};
0090 unsigned short m_number_of_tested_crossings {0};
0091 unsigned short m_number_of_tpc_valid_crossings {0};
0092 unsigned short m_number_of_vertex_compatible_crossings {0};
0093 std::vector<TpcCrossingCandidate> m_candidates;
0094 unsigned char m_status {static_cast<unsigned char>(TpcCrossingStatus::Unknown)};
0095
0096 ClassDefOverride(TpcCrossingDecisionv1, 3)
0097 };
0098
0099 #endif