File indexing completed on 2026-08-31 08:21:24
0001 #include "Tpc_PolyTrackVertexContainerv1.h"
0002 #include "Tpc_PolyTrackVertex.h"
0003
0004 Tpc_PolyTrackVertexContainerv1::Tpc_PolyTrackVertexContainerv1()
0005 {
0006 Reset();
0007 }
0008
0009 Tpc_PolyTrackVertexContainerv1::~Tpc_PolyTrackVertexContainerv1()
0010 {
0011 Reset();
0012 }
0013
0014 void Tpc_PolyTrackVertexContainerv1::identify(std::ostream& os) const
0015 {
0016 os << "Tpc_PolyTrackVertexContainerv1 with " << m_vertices.size()
0017 << " vertices and " << m_collision_x.size()
0018 << " collision vertices" << std::endl;
0019 }
0020
0021 void Tpc_PolyTrackVertexContainerv1::Reset()
0022 {
0023 for (Tpc_PolyTrackVertex* vtx : m_vertices)
0024 {
0025 delete vtx;
0026 }
0027 m_vertices.clear();
0028 m_collision_vertex_valid = 0;
0029 clear_collision_vertices();
0030 }
0031
0032 int Tpc_PolyTrackVertexContainerv1::isValid() const
0033 {
0034 return 1;
0035 }
0036
0037 PHObject* Tpc_PolyTrackVertexContainerv1::CloneMe() const
0038 {
0039 Tpc_PolyTrackVertexContainerv1* copy = new Tpc_PolyTrackVertexContainerv1();
0040 copy->m_collision_vertex_valid = m_collision_vertex_valid;
0041 copy->m_collision_x = m_collision_x;
0042 copy->m_collision_y = m_collision_y;
0043 copy->m_collision_z = m_collision_z;
0044 copy->m_collision_z_rms = m_collision_z_rms;
0045 copy->m_collision_ntracks = m_collision_ntracks;
0046 copy->m_collision_min_clusters = m_collision_min_clusters;
0047 for (Tpc_PolyTrackVertex* vtx : m_vertices)
0048 {
0049 if (vtx)
0050 {
0051 copy->m_vertices.push_back(static_cast<Tpc_PolyTrackVertex*>(vtx->CloneMe()));
0052 }
0053 }
0054 return copy;
0055 }
0056
0057 const Tpc_PolyTrackVertex* Tpc_PolyTrackVertexContainerv1::get_vertex(unsigned int i) const
0058 {
0059 if (i >= m_vertices.size())
0060 {
0061 return nullptr;
0062 }
0063 return m_vertices[i];
0064 }
0065
0066 Tpc_PolyTrackVertex* Tpc_PolyTrackVertexContainerv1::get_vertex(unsigned int i)
0067 {
0068 if (i >= m_vertices.size())
0069 {
0070 return nullptr;
0071 }
0072 return m_vertices[i];
0073 }
0074
0075 double Tpc_PolyTrackVertexContainerv1::get_collision_x(unsigned int i) const
0076 {
0077 if (i >= m_collision_x.size())
0078 {
0079 return 0.0;
0080 }
0081 return m_collision_x[i];
0082 }
0083
0084 double Tpc_PolyTrackVertexContainerv1::get_collision_y(unsigned int i) const
0085 {
0086 if (i >= m_collision_y.size())
0087 {
0088 return 0.0;
0089 }
0090 return m_collision_y[i];
0091 }
0092
0093 double Tpc_PolyTrackVertexContainerv1::get_collision_z(unsigned int i) const
0094 {
0095 if (i >= m_collision_z.size())
0096 {
0097 return 0.0;
0098 }
0099 return m_collision_z[i];
0100 }
0101
0102 double Tpc_PolyTrackVertexContainerv1::get_collision_z_rms(unsigned int i) const
0103 {
0104 if (i >= m_collision_z_rms.size())
0105 {
0106 return 0.0;
0107 }
0108 return m_collision_z_rms[i];
0109 }
0110
0111 unsigned int Tpc_PolyTrackVertexContainerv1::get_collision_ntracks(unsigned int i) const
0112 {
0113 if (i >= m_collision_ntracks.size())
0114 {
0115 return 0;
0116 }
0117 return m_collision_ntracks[i];
0118 }
0119
0120 void Tpc_PolyTrackVertexContainerv1::clear_collision_vertices()
0121 {
0122 m_collision_x.clear();
0123 m_collision_y.clear();
0124 m_collision_z.clear();
0125 m_collision_z_rms.clear();
0126 m_collision_ntracks.clear();
0127 }
0128
0129 void Tpc_PolyTrackVertexContainerv1::add_collision_vertex(double x, double y, double z, double z_rms, unsigned int ntracks)
0130 {
0131 m_collision_x.push_back(x);
0132 m_collision_y.push_back(y);
0133 m_collision_z.push_back(z);
0134 m_collision_z_rms.push_back(z_rms);
0135 m_collision_ntracks.push_back(ntracks);
0136 }