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

In This Package:

DaqLtb.cc

Go to the documentation of this file.
00001 /*
00002  *  DaqLtb.cc
00003  *  DaqEvent
00004  *
00005  *  Created by Simon Patton on 08/31/2010.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include "Event/DaqLtb.h"
00010 
00011 #include "Conventions/Detectors.h"
00012 #include "Event/DaqLtbFrame.h"
00013 #include "LtbReadoutFormat/LtbHead.h"
00014 #include "LtbReadoutFormat/LtbReadout.h"
00015 #include "LtbReadoutFormat/LtbTraits.h"
00016 
00017 using DayaBay::Detector;
00018 using DayaBay::DaqLtb;
00019 using DayaBay::DaqLtbFrame;
00020 using DybDaq::LtbHead;
00021 using DybDaq::LtbReadout;
00022 using DybDaq::LtbTraits;
00023 
00024 DaqLtb::DaqLtb(const LtbReadout& ltbReadout,
00025                const Detector& detector) :
00026     m_ltbReadout(const_cast<LtbReadout*>(&ltbReadout)),
00027     m_detector(&detector),
00028     m_framePtrs(0) {
00029 }
00030 
00031 DaqLtb::DaqLtb(const unsigned int localTriggerNumber,
00032                const unsigned int rawTriggerTotal,
00033                const unsigned int ltbStatus,
00034                const Detector& detector) :
00035     m_ltbReadout(new LtbReadout(localTriggerNumber,
00036                                 rawTriggerTotal,
00037                                 ltbStatus,
00038                                 false,
00039                                 LtbTraits::defaultTraits())),
00040     m_detector(&detector),
00041     m_framePtrs(0) {
00042 }
00043 
00044 DaqLtb::~DaqLtb() {
00045     if (0 != m_framePtrs) {
00046         LtbFramePtrList::iterator finished = m_framePtrs->end();
00047         for(LtbFramePtrList::iterator frame = m_framePtrs->begin();
00048             frame != finished;
00049             ++frame) {
00050             delete *frame;
00051         }
00052         delete m_framePtrs;
00053     }
00054 }
00055 
00056 const DaqLtbFrame&  DaqLtb::firstFrame() const {
00057     return *(frames().front());
00058 }
00059 
00060 const DaqLtb::LtbFramePtrList& DaqLtb::frames() const {
00061     if (0 == m_framePtrs) {
00062         LtbFramePtrList** framePtrs = const_cast<LtbFramePtrList**>(&m_framePtrs);
00063         *(framePtrs) = new LtbFramePtrList();
00064         const LtbReadout::LtbFramePtrList& frames = m_ltbReadout->ltbFrames();
00065         const LtbReadout::LtbFramePtrList::const_iterator finished = frames.end();
00066         for (LtbReadout::LtbFramePtrList::const_iterator frame = frames.begin();
00067              finished != frame;
00068              ++frame) {
00069             (*framePtrs)->push_back(new DaqLtbFrame(*(*frame),
00070                                                     *m_detector));
00071         }
00072     }
00073     return *m_framePtrs;
00074 }
00075 
00076 unsigned int DaqLtb::localTriggerNumber() const {
00077     return m_ltbReadout->head().localTriggerNumber();
00078 }
00079 
00080 const LtbReadout* DaqLtb::ltbReadout() const {
00081     return m_ltbReadout;
00082 }
00083 
00084 bool DaqLtb::addFrame(DaqLtbFrame* frame) {
00085     if (0 == m_framePtrs) {
00086         m_framePtrs = new LtbFramePtrList();
00087     }
00088     m_framePtrs->push_back(frame);
00089     m_ltbReadout->addFrame(frame->ltbFrame());
00090     return true;
00091 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:24:28 2011 for DaqEvent by doxygen 1.4.7