00001 #include "Event/SimParticleHistory.h" 00002 #include "Event/SimTrack.h" 00003 #include "Event/SimVertex.h" 00004 00005 using namespace DayaBay; 00006 00007 SimParticleHistory::~SimParticleHistory() 00008 { 00009 std::list<SimTrack*>::iterator trackIt; 00010 for(trackIt = m_tracks.begin(); trackIt != m_tracks.end(); ++trackIt) 00011 delete (*trackIt); 00012 m_tracks.clear(); 00013 00014 std::list<SimVertex*>::iterator vertexIt; 00015 for(vertexIt = m_vertices.begin(); vertexIt != m_vertices.end(); ++vertexIt) 00016 delete (*vertexIt); 00017 m_vertices.clear(); 00018 } 00019 00020 std::ostream& DayaBay::SimParticleHistory::fillStream(std::ostream& s) const 00021 { 00022 s << "{ " << std::endl; 00023 00024 s << m_tracks.size() << " tracks:\n"; 00025 std::list<SimTrack*>::const_iterator trackIt; 00026 for(trackIt = m_tracks.begin(); trackIt != m_tracks.end(); ++trackIt) { 00027 (*trackIt)->fillStream(s); 00028 s << std::endl; 00029 } 00030 00031 s << m_vertices.size() << " vertices:\n"; 00032 std::list<SimVertex*>::const_iterator vertexIt; 00033 for(vertexIt = m_vertices.begin(); vertexIt != m_vertices.end(); ++vertexIt) { 00034 (*vertexIt)->fillStream(s); 00035 s << std::endl; 00036 } 00037 00038 s << m_primaryTracks.size() << " primaryTracks:\n" 00039 << "}" << std::endl; 00040 00041 return s; 00042 } 00043 00044 00045 // For most users. 00046 const SimTrackReference SimParticleHistory::track(int trackid) const 00047 { 00048 std::map<int, SimTrackReference>::const_iterator it; 00049 it = m_idToTrack.find(trackid); 00050 if(it == m_idToTrack.end()) { 00051 return SimTrackReference(NULL,-999); 00052 } 00053 return it->second; 00054 } 00055 00056 00057 // For the generators: 00058 void SimParticleHistory::addTrack(SimTrack* t) 00059 { 00060 m_tracks.push_back(t); 00061 } 00062 00063 void SimParticleHistory::addPrimaryTrack(const SimTrack* t) 00064 { 00065 m_primaryTracks.push_back(t); 00066 } 00067 00068 void SimParticleHistory::addTrackRef(int id,const DayaBay::SimTrackReference& ref) 00069 { 00070 m_idToTrack[id] = ref; 00071 } 00072 00073 void SimParticleHistory::addVertex(SimVertex* v) 00074 { 00075 m_vertices.push_back(v); 00076 } 00077