00001 #ifndef EVENTREADOUTFORMAT_EVENTREADOUT_H
00002 #define EVENTREADOUTFORMAT_EVENTREADOUT_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <vector>
00013
00014 #include "EventReadoutFormat/EventBuffer.h"
00015
00016 namespace DybDaq {
00017 class CbltTraits;
00018 class EventHeader;
00019 class FadcReadout;
00020 class FeeReadout;
00021 class LtbReadout;
00022 class FecReadout;
00023 class RtmReadout;
00024 class RomData;
00025 class RomFragment;
00026 }
00027
00028 #include "DaqReadoutFormat/DaqContainer.h"
00029
00030 namespace DybDaq {
00031
00032 class EventReadout : public DaqContainer {
00033
00034 public:
00035
00036 typedef std::vector<const RomFragment*> RomFragmentPtrList;
00037
00041 EventReadout(const EventReadout& rhs);
00042
00046 EventReadout(const unsigned int site,
00047 const unsigned int detector,
00048 const unsigned int run,
00049 const unsigned int event,
00050 const unsigned int dataType,
00051 const bool rawCblt,
00052 const bool triggerMismatch,
00053 const bool invalidData,
00054 const EventTraits& traits);
00055
00059 EventReadout(const unsigned int site,
00060 const unsigned int detector,
00061 const unsigned int run,
00062 const unsigned int event,
00063 const unsigned int dataType,
00064 const bool rawCblt,
00065 const bool triggerMismatch,
00066 const bool invalidData,
00067 const CbltTraits& cbltTraits,
00068 const EventTraits& traits);
00069
00073 EventReadout(const ByteBuffer& byteBuffer);
00074
00078 virtual ~EventReadout();
00079
00083 virtual const DaqTraits& daqTraits() const;
00084
00088 const EventHeader& header() const;
00089
00093 const RomFragmentPtrList& romFragments() const;
00094
00098 virtual unsigned int bufferSize() const;
00099
00100 void addReadout(const FadcReadout* readout,
00101 const unsigned int slot);
00102
00103 void addReadout(const FeeReadout* readout,
00104 const unsigned int slot);
00105
00106 void addReadout(const LtbReadout* readout,
00107 const unsigned int slot);
00108
00109 void addReadout(const FecReadout* readout,
00110 const unsigned int slot);
00111
00112 void addReadout(const RtmReadout* readout,
00113 const unsigned int slot);
00114
00115
00116 protected:
00117
00121 virtual unsigned int gatherComponents(OutputBufferList& outputBuffers) const;
00122
00126 virtual unsigned int inspectComponents(DaqBuffer::Bytes& inspectors) const;
00127
00131 virtual void expanded(const unsigned int size);
00132
00133 private:
00134
00138 EventReadout();
00139
00143 EventReadout& operator=(const EventReadout& rhs);
00144
00145 void addReadout(const RomData* readout,
00146 const unsigned int slot,
00147 const unsigned int moduleType);
00148
00152 const RomFragment& add(const RomFragment* fragment);
00153
00157 mutable EventHeader* m_header;
00158
00162 mutable std::vector<const RomFragment*>* m_fragments;
00163
00167 const CbltTraits* m_cbltTraits;
00168
00169 };
00170
00171 }
00172
00173 #endif // EVENTREADOUTFORMAT_EVENTREADOUT_H