File indexing completed on 2025-08-06 08:18:16
0001 #include "TrackSeed_v1.h"
0002
0003 TrackSeed_v1::TrackSeed_v1(const TrackSeed& seed)
0004 {
0005 TrackSeed_v1::CopyFrom(seed);
0006 }
0007
0008
0009
0010
0011 TrackSeed_v1::TrackSeed_v1(const TrackSeed_v1& seed)
0012 : TrackSeed(seed)
0013 {
0014 TrackSeed_v1::CopyFrom(seed);
0015 }
0016
0017 TrackSeed_v1& TrackSeed_v1::operator=(const TrackSeed_v1& seed)
0018 {
0019 if (this != &seed)
0020 {
0021 CopyFrom(seed);
0022 }
0023 return *this;
0024 }
0025
0026 void TrackSeed_v1::CopyFrom(const TrackSeed& seed)
0027 {
0028 if (this == &seed)
0029 {
0030 return;
0031 }
0032 TrackSeed::CopyFrom(seed);
0033
0034 m_qOverR = seed.get_qOverR();
0035 m_X0 = seed.get_X0();
0036 m_Y0 = seed.get_Y0();
0037 m_slope = seed.get_slope();
0038 m_Z0 = seed.get_Z0();
0039 m_crossing = seed.get_crossing();
0040
0041 m_cluster_keys.clear();
0042 std::copy(seed.begin_cluster_keys(), seed.end_cluster_keys(),
0043 std::inserter(m_cluster_keys, m_cluster_keys.begin()));
0044 }
0045
0046 void TrackSeed_v1::identify(std::ostream& os) const
0047 {
0048 os << "TrackSeed_v1 object ";
0049 os << "charge " << get_charge() << std::endl;
0050 os << "(pt,pz) = (" << get_pt()
0051 << ", " << get_pz() << ")" << std::endl;
0052 os << "(X0,Y0,Z0) = (" << m_X0 << ", " << m_Y0 << ", " << m_Z0
0053 << ")" << std::endl;
0054 os << "R and slope " << fabs(1. / m_qOverR) << ", " << m_slope << std::endl;
0055 os << "list of cluster keys size: " << m_cluster_keys.size() << std::endl;
0056 ;
0057 if (m_cluster_keys.size() > 0)
0058 {
0059 for (TrackSeed::ConstClusterKeyIter iter = begin_cluster_keys();
0060 iter != end_cluster_keys();
0061 ++iter)
0062 {
0063 TrkrDefs::cluskey cluster_key = *iter;
0064 os << cluster_key << ", ";
0065 }
0066 }
0067
0068 os << std::endl;
0069 return;
0070 }
0071
0072 float TrackSeed_v1::get_pt() const
0073 {
0074
0075 return 0.3 * 1.4 / 100. * fabs(1. / m_qOverR);
0076 }
0077
0078 float TrackSeed_v1::get_theta() const
0079 {
0080 float theta = atan(1. / m_slope);
0081
0082 if (theta < 0)
0083 {
0084 theta += M_PI;
0085 }
0086 return theta;
0087 }
0088
0089 float TrackSeed_v1::get_eta() const
0090 {
0091 return -log(tan(get_theta() / 2.));
0092 }
0093
0094 float TrackSeed_v1::get_p() const
0095 {
0096 return get_pt() * std::cosh(get_eta());
0097 }
0098
0099 float TrackSeed_v1::get_pz() const
0100 {
0101 return get_p() * std::cos(get_theta());
0102 }
0103
0104 int TrackSeed_v1::get_charge() const
0105 {
0106 return (m_qOverR < 0) ? -1 : 1;
0107 }