Back to home page

sPhenix code displayed by LXR

 
 

    


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 }