Back to home page

sPhenix code displayed by LXR

 
 

    


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 // have to suppress missingMemberCopy from cppcheck, it does not
0009 // go down to the CopyFrom method where things are done correctly
0010 // cppcheck-suppress missingMemberCopy
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   /// Scaling factor for radius in 1.4T field
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   /// Normalize to 0<theta<pi
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 }