00001 #include "Event/SimHitCollection.h" 00002 #include "Event/SimHitHeader.h" 00003 #include "Event/SimHit.h" 00004 00005 #include "Conventions/Detectors.h" 00006 00007 #include <ostream> 00008 00009 DayaBay::SimHitHeader::~SimHitHeader() 00010 { 00011 m_header = 0; 00012 hc_map::iterator it, done = m_hitCollection.end(); 00013 // wangzhe 00014 // The original line have memory leak problem 00015 // for (it = m_hitCollection.end(); it != done; ++it) { 00016 for (it = m_hitCollection.begin(); it != done; ++it) { 00017 // wz 00018 delete (it->second); 00019 } 00020 m_hitCollection.clear(); 00021 } 00022 00023 00024 std::ostream& DayaBay::SimHitHeader::fillStream(std::ostream& s) const 00025 { 00026 s << "{ " << "hit collections : " << std::endl; 00027 00028 hc_map::const_iterator it, done = m_hitCollection.end(); 00029 for (it = m_hitCollection.begin(); it != done; ++it) { 00030 DayaBay::Detector d(it->first); 00031 00032 s << Site::AsString(d.site()) << "::" << d.detName() 00033 << " collection: " 00034 << std::endl; 00035 it->second->fillStream(s); 00036 } 00037 s << "}"; 00038 return s; 00039 } 00040 00041 void DayaBay::SimHitHeader::addHitCollection(DayaBay::SimHitCollection* hc) 00042 { 00043 m_hitCollection[hc->detector().siteDetPackedData()] = hc; 00044 } 00045 00046 DayaBay::SimHitHeader::hc_map& DayaBay::SimHitHeader::hitCollection() 00047 { 00048 return m_hitCollection; 00049 }