File indexing completed on 2025-08-06 08:18:12
0001
0002
0003
0004
0005
0006
0007 #include "TrkrClusterv3.h"
0008
0009 #include <cmath>
0010 #include <utility> // for swap
0011
0012 namespace
0013 {
0014
0015 template <class T>
0016 inline constexpr T square(const T& x)
0017 {
0018 return x * x;
0019 }
0020 }
0021
0022 TrkrClusterv3::TrkrClusterv3()
0023 : m_cluskey(TrkrDefs::CLUSKEYMAX)
0024 , m_subsurfkey(TrkrDefs::SUBSURFKEYMAX)
0025 , m_adc(0xFFFFFFFF)
0026 {
0027 for (int i = 0; i < 2; i++)
0028 {
0029 m_local[i] = NAN;
0030 for (int j = 0; j < 2; j++)
0031 {
0032 m_actsLocalErr[i][j] = NAN;
0033 }
0034 }
0035 }
0036
0037 void TrkrClusterv3::identify(std::ostream& os) const
0038 {
0039 os << "---TrkrClusterv3--------------------" << std::endl;
0040
0041 os << " (rphi,z) = (" << getLocalX();
0042 os << ", " << getLocalY() << ") cm ";
0043
0044 os << " adc = " << getAdc() << std::endl;
0045
0046 os << "Error " << std::endl;
0047 os << " ( ";
0048 os << getActsLocalError(0, 0) << " , ";
0049 os << getActsLocalError(0, 1) << " ) " << std::endl;
0050 os << " ( ";
0051 os << getActsLocalError(1, 0) << ", ";
0052 os << getActsLocalError(1, 1) << " ) " << std::endl;
0053
0054 os << std::endl;
0055 os << "-----------------------------------------------" << std::endl;
0056
0057 return;
0058 }
0059
0060 int TrkrClusterv3::isValid() const
0061 {
0062 if (m_cluskey == TrkrDefs::CLUSKEYMAX)
0063 {
0064 return 0;
0065 }
0066 for (int i = 0; i < 2; ++i)
0067 {
0068 if (std::isnan(getPosition(i)))
0069 {
0070 return 0;
0071 }
0072 for (int j = 0; j < 2; ++j)
0073 {
0074 if (std::isnan(getActsLocalError(i, j)))
0075 {
0076 return 0;
0077 }
0078 }
0079 }
0080 if (m_adc == 0xFFFFFFFF)
0081 {
0082 return 0;
0083 }
0084
0085 return 1;
0086 }
0087
0088 void TrkrClusterv3::CopyFrom(const TrkrCluster& source)
0089 {
0090
0091 if (this == &source)
0092 {
0093 return;
0094 }
0095
0096
0097 TrkrCluster::CopyFrom(source);
0098
0099 setLocalX(source.getLocalX());
0100 setLocalY(source.getLocalY());
0101
0102 for (int j = 0; j < 2; ++j)
0103 {
0104 for (int i = 0; i < 2; ++i)
0105 {
0106 setActsLocalError(i, j, source.getActsLocalError(i, j));
0107 }
0108 }
0109
0110 setSubSurfKey(source.getSubSurfKey());
0111 setAdc(source.getAdc());
0112 }
0113
0114 float TrkrClusterv3::getRPhiError() const
0115 {
0116 return std::sqrt(m_actsLocalErr[0][0]);
0117 }
0118
0119 float TrkrClusterv3::getZError() const
0120 {
0121 return std::sqrt(m_actsLocalErr[1][1]);
0122 }
0123
0124 void TrkrClusterv3::setActsLocalError(unsigned int i, unsigned int j,
0125 float value)
0126 {
0127 m_actsLocalErr[i][j] = value;
0128 }