File indexing completed on 2026-08-31 08:21:24
0001 #include "TpcCrossingDecisionContainerv1.h"
0002
0003 #include "TpcCrossingDecision.h"
0004
0005 ClassImp(TpcCrossingDecisionContainerv1)
0006
0007 TpcCrossingDecisionContainerv1::TpcCrossingDecisionContainerv1()
0008 {
0009 Reset();
0010 }
0011
0012 TpcCrossingDecisionContainerv1::~TpcCrossingDecisionContainerv1()
0013 {
0014 Reset();
0015 }
0016
0017 void TpcCrossingDecisionContainerv1::identify(std::ostream& os) const
0018 {
0019 os << "TpcCrossingDecisionContainerv1 with "
0020 << m_decisions.size()
0021 << " decisions"
0022 << std::endl;
0023 }
0024
0025 void TpcCrossingDecisionContainerv1::Reset()
0026 {
0027 for (auto& decision : m_decisions) { delete decision.second;
0028 }
0029 m_decisions.clear();
0030 }
0031
0032 int TpcCrossingDecisionContainerv1::isValid() const
0033 {
0034 return m_decisions.empty() ? 0 : 1;
0035 }
0036
0037 PHObject* TpcCrossingDecisionContainerv1::CloneMe() const
0038 {
0039 TpcCrossingDecisionContainerv1* copy = new TpcCrossingDecisionContainerv1();
0040 for (const auto& decision : m_decisions)
0041 {
0042 if (decision.second) { copy->m_decisions[decision.first] = static_cast<TpcCrossingDecision*>(decision.second->CloneMe());
0043 }
0044 }
0045 return copy;
0046 }
0047
0048 void TpcCrossingDecisionContainerv1::add_decision(TpcCrossingDecision* decision)
0049 {
0050 if (!decision) { return;
0051 }
0052
0053 const unsigned int assembled_track_id = decision->get_assembled_track_id();
0054 auto iter = m_decisions.find(assembled_track_id);
0055 if (iter != m_decisions.end())
0056 {
0057 delete iter->second;
0058 iter->second = decision;
0059 return;
0060 }
0061 m_decisions[assembled_track_id] = decision;
0062 }
0063
0064 TpcCrossingDecision* TpcCrossingDecisionContainerv1::get_decision(unsigned int assembled_track_id)
0065 {
0066 auto iter = m_decisions.find(assembled_track_id);
0067 return iter == m_decisions.end() ? nullptr : iter->second;
0068 }
0069
0070 const TpcCrossingDecision* TpcCrossingDecisionContainerv1::get_decision(unsigned int assembled_track_id) const
0071 {
0072 auto iter = m_decisions.find(assembled_track_id);
0073 return iter == m_decisions.end() ? nullptr : iter->second;
0074 }