File indexing completed on 2025-08-07 08:11:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #pragma once
0014 #include <cmath>
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 namespace Acts::Legacy {
0032
0033 template <typename SpacePoint>
0034 class SPForSeed {
0035
0036
0037
0038
0039 public:
0040 SPForSeed();
0041 SPForSeed(SpacePoint* const& , const float* );
0042 SPForSeed(SpacePoint* const& , const float* , const float* );
0043 SPForSeed(const SPForSeed& );
0044 virtual ~SPForSeed();
0045 SPForSeed& operator=(const SPForSeed& );
0046
0047 void set(SpacePoint* const& , const float* );
0048 void set(SpacePoint* const& , const float* , const float* );
0049 void setQuality(float );
0050 void setParam(const float& );
0051
0052 const SpacePoint* spacepoint = nullptr;
0053 const float& x() const { return m_x; }
0054 const float& y() const { return m_y; }
0055 const float& z() const { return m_z; }
0056 const float& radius() const { return m_r; }
0057 float phi() const { return atan2(m_y, m_x); }
0058 const float& covr() const { return m_covr; }
0059 const float& covz() const { return m_covz; }
0060 const float& param() const { return m_param; }
0061 const float& quality() const { return m_q; }
0062
0063 const int& surface() const { return m_surface; }
0064
0065 protected:
0066 float m_x = 0;
0067 float m_y = 0;
0068 float m_z = 0;
0069 float m_r = 0;
0070 float m_covr = 0;
0071 float m_covz = 0;
0072 float m_param = 0;
0073 float m_q = 0;
0074
0075 int m_surface = 0;
0076 };
0077
0078
0079
0080
0081
0082 template <typename SpacePoint>
0083 inline SPForSeed<SpacePoint>::SPForSeed() {
0084 spacepoint = 0;
0085 m_x = 0.;
0086 m_y = 0.;
0087 m_z = 0.;
0088 m_r = 0.;
0089 m_covr = 0.;
0090 m_covz = 0.;
0091 m_param = 0.;
0092 m_q = 0.;
0093 }
0094
0095 template <typename SpacePoint>
0096 inline SPForSeed<SpacePoint>& SPForSeed<SpacePoint>::operator=(
0097 const SPForSeed<SpacePoint>& sp) {
0098 if (&sp != this) {
0099 spacepoint = sp.spacepoint;
0100 m_x = sp.m_x;
0101 m_y = sp.m_y;
0102 m_z = sp.m_z;
0103 m_r = sp.m_r;
0104 m_covr = sp.m_covr;
0105 m_covz = sp.m_covz;
0106 m_q = sp.m_q;
0107 }
0108 return (*this);
0109 }
0110
0111 template <typename SpacePoint>
0112 inline SPForSeed<SpacePoint>::SPForSeed(SpacePoint* const& sp, const float* r) {
0113 set(sp, r);
0114 m_param = 0.;
0115 }
0116
0117 template <typename SpacePoint>
0118 inline SPForSeed<SpacePoint>::SPForSeed(SpacePoint* const& sp, const float* r,
0119 const float* sc) {
0120 set(sp, r, sc);
0121 m_param = 0.;
0122 }
0123
0124
0125
0126
0127
0128 template <typename SpacePoint>
0129 inline SPForSeed<SpacePoint>::SPForSeed(const SPForSeed& sp) {
0130 *this = sp;
0131 }
0132
0133
0134
0135
0136
0137 template <typename SpacePoint>
0138 inline SPForSeed<SpacePoint>::~SPForSeed() = default;
0139
0140
0141
0142
0143
0144 template <typename SpacePoint>
0145 inline void SPForSeed<SpacePoint>::set(SpacePoint* const& sp, const float* r) {
0146 spacepoint = sp;
0147 m_x = r[0];
0148 m_y = r[1];
0149 m_z = r[2];
0150 m_r = std::hypot(m_x, m_y);
0151 m_surface = sp->surface;
0152 m_q = 100000.;
0153
0154 if (!sp->clusterList().second) {
0155 m_covr = sp->covr * 9.;
0156 m_covz = sp->covz * 9.;
0157 if (m_covr < 0.06) {
0158 m_covr = 0.06;
0159 }
0160 if (m_covz < 0.06) {
0161 m_covz = 0.06;
0162 }
0163 } else {
0164 m_covr = sp->covr * 8.;
0165 m_covz = sp->covz * 8.;
0166 if (m_covr < 0.1) {
0167 m_covr = 0.1;
0168 }
0169 if (m_covz < 0.1) {
0170 m_covz = 0.1;
0171 }
0172 }
0173 }
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183 template <typename SpacePoint>
0184 inline void SPForSeed<SpacePoint>::set(SpacePoint* const& sp, const float* r,
0185 const float* sc) {
0186 spacepoint = sp;
0187 m_x = r[0];
0188 m_y = r[1];
0189 m_z = r[2];
0190 m_r = std::hypot(m_x, m_y);
0191 m_q = 100000.;
0192 if (!sp->clusterList().second) {
0193 m_covr = sp->covr * 9. * sc[0];
0194 m_covz = sp->covz * 9. * sc[1];
0195 if (m_covr < 0.06) {
0196 m_covr = 0.06;
0197 }
0198 if (m_covz < 0.06) {
0199 m_covz = 0.06;
0200 }
0201 } else {
0202 m_covr = sp->covr * 8. * sc[2];
0203 m_covz = sp->covz * 8. * sc[3];
0204 if (m_covr < 0.1) {
0205 m_covr = 0.1;
0206 }
0207 if (m_covz < 0.1) {
0208 m_covz = 0.1;
0209 }
0210 }
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237 }
0238 template <typename SpacePoint>
0239 inline void SPForSeed<SpacePoint>::setParam(const float& p) {
0240 m_param = p;
0241 }
0242 template <typename SpacePoint>
0243 inline void SPForSeed<SpacePoint>::setQuality(float q) {
0244 if (q <= m_q) {
0245 m_q = q;
0246 }
0247 }
0248
0249 }