| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

ReadoutPmtCrate.cc

Go to the documentation of this file.
00001 #include "Event/ReadoutPmtCrate.h"
00002 
00003 DayaBay::ReadoutPmtCrate::~ReadoutPmtCrate(){
00004     delete m_triggerDataPkg;
00005 }
00006 
00007 std::ostream& DayaBay::ReadoutPmtCrate::fillStream(std::ostream& s) const
00008 {
00009     size_t siz = m_channelReadout.size();
00010 
00011     s << "{ " 
00012       << siz << " readouts : " << std::endl;
00013     s << "TriggerDataPackage: ";
00014     if (m_triggerDataPkg){ s << *m_triggerDataPkg << std::endl;}
00015     else{ s << "NOT SET!" << std::endl;}
00016     s << std::endl;
00017     PmtChannelReadouts::const_iterator it, done = m_channelReadout.end();
00018     for (it=m_channelReadout.begin(); it != done; ++it) {
00019       s << (it->first) << (it->second) << std::endl;
00020     }
00021     s << "FADC Readouts:" << &m_fadcReadout << std::endl;
00022     FadcReadouts::const_iterator fadcIt, facd_done = m_fadcReadout.end();
00023     for (fadcIt=m_fadcReadout.begin();fadcIt!=facd_done;++fadcIt){
00024         s << "\t" << (fadcIt->first) << (fadcIt->second) << std::endl;
00025     }
00026     s << "}";
00027     return s;
00028 }
00029 
00030 DayaBay::ReadoutPmtCrate::ReadoutPmtCrate(const DayaBay::ReadoutPmtCrate& rh)
00031     : Readout(rh)
00032 {
00033     DayaBay::ReadoutPmtCrate::PmtChannelReadouts channels = rh.channelReadout();
00034     DayaBay::ReadoutPmtCrate::PmtChannelReadouts::iterator it, done = channels.end();
00035     for (it = channels.begin(); it != done; ++it) {
00036         it->second.setReadout(this);
00037     }
00038     this->setChannelReadout(channels);
00039     
00041     DayaBay::ReadoutTriggerDataPkg *trigDatPkg = new DayaBay::ReadoutTriggerDataPkg(*(rh.triggerDataPkg()));
00042     trigDatPkg->setReadout(this);
00043     this->setTriggerDataPkg(trigDatPkg);
00044     this->setFadcReadout(rh.fadcReadout());
00045 }
00046   
00047 DayaBay::ReadoutPmtCrate& DayaBay::ReadoutPmtCrate::operator=(const DayaBay::ReadoutPmtCrate& rh)
00048 {
00049     if (this == &rh) return *this;
00050 
00051     (Readout&)(*this) = (Readout&)(rh);
00052 
00053     DayaBay::ReadoutPmtCrate::PmtChannelReadouts channels = rh.channelReadout();
00054     DayaBay::ReadoutPmtCrate::PmtChannelReadouts::iterator it, done = channels.end();
00055     for (it = channels.begin(); it != done; ++it) {
00056         it->second.setReadout(this);
00057     }
00058     this->setChannelReadout(channels);
00059     
00061     DayaBay::ReadoutTriggerDataPkg *trigDatPkg = new DayaBay::ReadoutTriggerDataPkg(*(rh.triggerDataPkg()));
00062     trigDatPkg->setReadout(this);
00063     this->setTriggerDataPkg(trigDatPkg);
00064     this->setFadcReadout(rh.fadcReadout());
00065     return *this;
00066 }
00067 
00068 const DayaBay::DaqCrate* DayaBay::ReadoutPmtCrate::daqCrate(const unsigned int run,
00069                                                             const unsigned int event,
00070                                                             const unsigned int ltbSlot) const {
00071     DaqPmtCrate* result = new DaqPmtCrate(detector(),
00072                                           run,
00073                                           event);
00074     if (0 == m_triggerDataPkg) {
00075         result->addLtb(dummyLtb(),
00076                        ltbSlot);
00077     } else {
00078         result->addLtb(m_triggerDataPkg->daqLtb(),
00079                        ltbSlot);
00080     }
00081 
00082     const PmtChannelReadouts::const_iterator finished = m_channelReadout.end();
00083     for (PmtChannelReadouts::const_iterator channel = m_channelReadout.begin();
00084          finished != channel;
00085          ++channel) {
00086         const DayaBay::FeeChannelId& id = channel->first;
00087         DayaBay::DaqPmtChannel& daqChannel = result->channel(id);
00088         const DayaBay::ReadoutPmtChannel& content = channel->second;
00089         const unsigned int endHits = content.size();
00090         for (unsigned int hit = 0;
00091              endHits != hit;
00092              ++hit) {
00093             daqChannel.addHit(hit + 1,
00094                               content.adcCycle(hit),
00095                               content.adcRange(hit) == DayaBay::FeeGain::kHigh,
00096                               content.pedestal(hit),
00097                               content.adc(hit),
00098                               content.tdc(hit));
00099         }
00100     }
00101     return result;
00102 }
00103 
00104 const DayaBay::DaqLtb* DayaBay::ReadoutPmtCrate::dummyLtb() const {
00105     DaqLtb* result = new DaqLtb(triggerNumber(),
00106                                 1,
00107                                 0,
00108                                 detector());
00109     DaqLtbFrame* frame = new DaqLtbFrame(0,
00110                                          triggerType(),
00111                                          triggerTime(),
00112                                          0,
00113                                          0,
00114                                          false,
00115                                          false,
00116                                          false,
00117                                          0,
00118                                          detector());
00119     result->addFrame(frame);
00120     return result;
00121 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:24:49 2011 for ReadoutEvent by doxygen 1.4.7