00001 #include "Event/ReadoutTriggerDataPkg.h" 00002 #include "Event/ReadoutTriggerDataFrame.h" 00003 #include <ostream> 00004 00005 DayaBay::ReadoutTriggerDataPkg::~ReadoutTriggerDataPkg(){ 00006 TriggerFrameCollection::iterator it=m_frames.begin(); 00007 for ( ; it!=m_frames.end(); it++ ) { 00008 if (*it && (*it)->package()==this ) delete *it; 00009 } 00010 m_frames.clear(); 00011 } 00012 00013 std::ostream& DayaBay::ReadoutTriggerDataPkg::fillStream(std::ostream& s) const 00014 { 00015 s << "Begin ReadoutTriggerDataPkg\n" 00016 << "\tDet: " << m_detector.detName() << "\n" 00017 << "\tReadout: " << m_readout << "\n" 00018 << "\tTrigger Number: " << m_trigNumber << "\n" 00019 << "\tNumber Sub Triggers: " << m_numSubTriggers << "\n" 00020 << "\tStatus: " << m_boardStatus << "\n" 00021 << "\tLocal SN: " << m_localSN << "\n" 00022 << "\tFrames"<< std::endl; 00023 TriggerFrameCollection::const_iterator it, done = m_frames.end(); 00024 for (it=m_frames.begin(); it != done; ++it) { 00025 s << **it << std::endl; 00026 } 00027 s << "End ReadoutTriggerDataPkg" << std::endl; 00028 return s; 00029 } 00030 00031 void DayaBay::ReadoutTriggerDataPkg::addFrame(DayaBay::ReadoutTriggerDataFrame* tdf) 00032 { 00033 tdf->setPackage(this); 00034 m_frames.push_back(tdf); 00035 m_numSubTriggers=m_frames.size(); 00036 } 00037 00038 DayaBay::ReadoutTriggerDataPkg::ReadoutTriggerDataPkg(const DayaBay::ReadoutTriggerDataPkg& rh) 00039 { 00041 m_readout=0; 00043 m_frames.clear(); 00044 00045 std::vector<DayaBay::ReadoutTriggerDataFrame*> frames = rh.frames(); 00046 std::vector<DayaBay::ReadoutTriggerDataFrame*>::iterator it, done=frames.end(); 00047 00048 for (it = frames.begin(); it != done; ++it) { 00049 DayaBay::ReadoutTriggerDataFrame *nf = new DayaBay::ReadoutTriggerDataFrame(**it); 00050 nf->setPackage(this); 00051 this->addFrame(nf); 00052 } 00053 00054 m_detector=rh.detector(); 00055 m_trigNumber=rh.trigNumber(); 00058 m_boardStatus=rh.boardStatus(); 00059 m_localSN=rh.localSN(); 00060 00061 } 00062 00063 DayaBay::ReadoutTriggerDataPkg& DayaBay::ReadoutTriggerDataPkg::operator=(const DayaBay::ReadoutTriggerDataPkg& rh) 00064 { 00065 if (this == &rh) return *this; 00066 00067 std::vector<DayaBay::ReadoutTriggerDataFrame*> frames = rh.frames(); 00068 std::vector<DayaBay::ReadoutTriggerDataFrame*> newframes; 00069 00070 std::vector<DayaBay::ReadoutTriggerDataFrame*>::iterator it, done=frames.end(); 00071 00072 for (it = frames.begin(); it != done; ++it) { 00073 DayaBay::ReadoutTriggerDataFrame *nf = new DayaBay::ReadoutTriggerDataFrame(**it); 00074 nf->setPackage(this); 00075 this->addFrame(nf); 00076 } 00077 //this->setFrames(newframes); 00078 //this->setFrames(newframes); 00081 m_readout=0; 00082 m_detector=rh.detector(); 00083 m_trigNumber=rh.trigNumber(); 00086 m_boardStatus=rh.boardStatus(); 00087 m_localSN=rh.localSN(); 00088 00089 return *this; 00090 } 00091 00092 DayaBay::DaqLtb* DayaBay::ReadoutTriggerDataPkg::daqLtb() const { 00093 DaqLtb* result = new DaqLtb(m_trigNumber, 00094 // TODO: Fix this! 00095 0, //int rawTriggerTotal, 00096 m_boardStatus, 00097 m_detector); 00098 const TriggerFrameCollection::const_iterator finished = m_frames.end(); 00099 for (TriggerFrameCollection::const_iterator frame = m_frames.begin(); 00100 finished != frame; 00101 ++frame) { 00102 result->addFrame((*frame)->daqLtbFrame(m_detector)); 00103 } 00104 return result; 00105 }