File indexing completed on 2025-08-06 08:18:16
0001 #include "TrackSeed_v2.h"
0002
0003 TrackSeed_v2::TrackSeed_v2(const TrackSeed& seed)
0004 {
0005 TrackSeed_v2::CopyFrom(seed);
0006 }
0007
0008
0009
0010
0011 TrackSeed_v2::TrackSeed_v2(const TrackSeed_v2& seed)
0012 : TrackSeed(seed)
0013 {
0014 TrackSeed_v2::CopyFrom(seed);
0015 }
0016
0017 TrackSeed_v2& TrackSeed_v2::operator=(const TrackSeed_v2& seed)
0018 {
0019 if (this != &seed)
0020 {
0021 CopyFrom(seed);
0022 }
0023 return *this;
0024 }
0025
0026 void TrackSeed_v2::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 m_phi = seed.get_phi();
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_v2::identify(std::ostream& os) const
0047 {
0048 os << "TrackSeed_v2 object ";
0049 os << "charge " << get_charge() << std::endl;
0050 os << "beam crossing " << get_crossing() << std::endl;
0051 os << "(pt,pz) = (" << get_pt()
0052 << ", " << get_pz() << ")" << std::endl;
0053 os << " phi " << m_phi << " eta " << get_eta() << std::endl;
0054 os << "(X0,Y0,Z0) = (" << m_X0 << ", " << m_Y0 << ", " << m_Z0
0055 << ")" << std::endl;
0056 os << "R and slope " << fabs(1. / m_qOverR) << ", " << m_slope << std::endl;
0057 os << "list of cluster keys size: " << m_cluster_keys.size() << std::endl;
0058 ;
0059 if (m_cluster_keys.size() > 0)
0060 {
0061 for (TrackSeed::ConstClusterKeyIter iter = begin_cluster_keys();
0062 iter != end_cluster_keys();
0063 ++iter)
0064 {
0065 TrkrDefs::cluskey cluster_key = *iter;
0066 os << cluster_key << ", ";
0067 }
0068 }
0069
0070 os << std::endl;
0071 return;
0072 }
0073
0074 float TrackSeed_v2::get_pt() const
0075 {
0076
0077 return 0.3 * 1.4 / 100. * fabs(1. / m_qOverR);
0078 }
0079
0080 float TrackSeed_v2::get_theta() const
0081 {
0082 float theta = atan(1. / m_slope);
0083
0084 if (theta < 0)
0085 {
0086 theta += M_PI;
0087 }
0088 return theta;
0089 }
0090
0091 float TrackSeed_v2::get_eta() const
0092 {
0093 return -log(tan(get_theta() / 2.));
0094 }
0095
0096 float TrackSeed_v2::get_p() const
0097 {
0098 return get_pt() * std::cosh(get_eta());
0099 }
0100
0101 float TrackSeed_v2::get_px() const
0102 {
0103 return get_pt() * std::cos(m_phi);
0104 }
0105
0106 float TrackSeed_v2::get_py() const
0107 {
0108 return get_pt() * std::sin(m_phi);
0109 }
0110
0111 float TrackSeed_v2::get_pz() const
0112 {
0113 return get_p() * std::cos(get_theta());
0114 }
0115
0116 int TrackSeed_v2::get_charge() const
0117 {
0118 return (m_qOverR < 0) ? -1 : 1;
0119 }