/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 /* 00002 * EventHeader.cc 00003 * RawFileReading 00004 * 00005 * Created by Simon Patton on 7/20/10. 00006 * Copyright 2010 DayaBay Collaboration. All rights reserved. 00007 * 00008 */ 00009 #include "EventReadoutFormat/EventHeader.h" 00010 00011 #include "DaqReadoutFormat/ByteBuffer.h" 00012 #include "EventReadoutFormat/EventTraits.h" 00013 00014 using DybDaq::ByteBuffer; 00015 using DybDaq::DaqTraits; 00016 using DybDaq::EventHeader; 00017 using DybDaq::EventBuffer; 00018 00019 EventHeader::EventHeader(const unsigned int site, 00020 const unsigned int detector, 00021 const unsigned int run, 00022 const unsigned int event, 00023 const unsigned int dataType, 00024 const bool cbltWrapping, 00025 const bool rawCblt, 00026 const bool triggerMismatch, 00027 const bool invalidData, 00028 const bool rpcSortDisabled, 00029 const bool dataSortTimeout, 00030 const EventTraits& traits) : 00031 EventBuffer(new char[traits.headerSize(EventTraits::kEventHeader) * kBytesInInt], 00032 traits) { 00033 m_traits = &traits; 00034 traits.initializeHeader(EventTraits::kEventHeader, 00035 buffer()); 00036 setMajorVersion(traits.majorVersion()); 00037 setMinorVersion(traits.minorVersion()); 00038 setHeaderSize(traits.headerSize(EventTraits::kEventHeader)), 00039 setTotalSize(headerSize()); 00040 setSite(site); 00041 setDetector(detector); 00042 setRun(run); 00043 setEvent(event); 00044 setDataType(dataType); 00045 setCbltWrapping(cbltWrapping); 00046 setRawCblt(rawCblt); 00047 setTriggerMismatch(triggerMismatch); 00048 setInvalidData(invalidData); 00049 setRpcSortDisabled(rpcSortDisabled); 00050 setDataSortTimeout(dataSortTimeout); 00051 } 00052 00053 EventHeader::EventHeader(const ByteBuffer& byteBuffer) : 00054 EventBuffer(byteBuffer, 00055 *((EventTraits*)0)) { 00056 const char* buffer = byteBuffer.cursor(); 00057 m_traits = EventTraits::readTraits(buffer); 00058 byteBuffer.position(byteBuffer.position() + (headerSize() * kBytesInInt)); 00059 } 00060 00061 EventHeader::~EventHeader() { 00062 } 00063 00064 const DaqTraits& EventHeader::daqTraits() const { 00065 return *m_traits; 00066 } 00067 00068 unsigned int EventHeader::formatComponent() const { 00069 return EventTraits::kEventHeader; 00070 } 00071 00072 unsigned int EventHeader::majorVersion() const { 00073 return readUnsignedInt(EventTraits::kMajorVersion); 00074 } 00075 00076 unsigned int EventHeader::minorVersion() const { 00077 return readUnsignedInt(EventTraits::kMinorVersion); 00078 } 00079 00080 unsigned int EventHeader::headerSize() const { 00081 return readUnsignedInt(EventTraits::kEventHeaderSize); 00082 } 00083 00084 unsigned int EventHeader::totalSize() const { 00085 return readUnsignedInt(EventTraits::kEventTotalSize); 00086 } 00087 00088 unsigned int EventHeader::site() const { 00089 return readUnsignedInt(EventTraits::kEventSite); 00090 } 00091 00092 unsigned int EventHeader::detector() const { 00093 return readUnsignedInt(EventTraits::kEventDetector); 00094 } 00095 00096 unsigned int EventHeader::run() const { 00097 return readUnsignedInt(EventTraits::kEventRun); 00098 } 00099 00100 unsigned int EventHeader::event() const { 00101 return readUnsignedInt(EventTraits::kEventNumber); 00102 } 00103 00104 unsigned int EventHeader::dataType() const { 00105 return readUnsignedInt(EventTraits::kEventDataType); 00106 } 00107 00108 bool EventHeader::rpcSortDisabled() const { 00109 return readBool(EventTraits::kRpcSortDisabled); 00110 } 00111 00112 bool EventHeader::cbltWrapping() const { 00113 return readBool(EventTraits::kCbltWrapping); 00114 } 00115 00116 bool EventHeader::rawCblt() const { 00117 return readBool(EventTraits::kRawCblt); 00118 } 00119 00120 bool EventHeader::dataSortTimeout() const{ 00121 return readBool(EventTraits::kDataSortTimeout); 00122 } 00123 00124 bool EventHeader::triggerMismatch() const{ 00125 return readBool(EventTraits::kLtbMismatch); 00126 } 00127 00128 bool EventHeader::invalidData() const{ 00129 return readBool(EventTraits::kInvalidData); 00130 } 00131 00132 unsigned int EventHeader::bufferSize() const { 00133 return headerSize(); 00134 } 00135 00136 void EventHeader::setMajorVersion(const unsigned int majorVersion) { 00137 writeField(majorVersion, 00138 EventTraits::kMajorVersion); 00139 } 00140 00141 void EventHeader::setMinorVersion(const unsigned int minorVersion) { 00142 writeField(minorVersion, 00143 EventTraits::kMinorVersion); 00144 } 00145 00146 void EventHeader::setHeaderSize(const unsigned int headerLength) { 00147 writeField(headerLength, 00148 EventTraits::kEventHeaderSize); 00149 } 00150 00151 void EventHeader::setTotalSize(const unsigned int totalLength) { 00152 writeField(totalLength, 00153 EventTraits::kEventTotalSize); 00154 } 00155 00156 void EventHeader::setSite(const unsigned int site) { 00157 writeField(site, 00158 EventTraits::kEventSite); 00159 } 00160 00161 void EventHeader::setDetector(const unsigned int detector) { 00162 writeField(detector, 00163 EventTraits::kEventDetector); 00164 } 00165 00166 void EventHeader::setRun(const unsigned int run) { 00167 writeField(run, 00168 EventTraits::kEventRun); 00169 } 00170 00171 void EventHeader::setEvent(const unsigned int event) { 00172 writeField(event, 00173 EventTraits::kEventNumber); 00174 } 00175 00176 void EventHeader::setDataType(const unsigned int dataType) { 00177 writeField(dataType, 00178 EventTraits::kEventDataType); 00179 } 00180 00181 void EventHeader::setRpcSortDisabled(const bool disabled) { 00182 writeField(disabled, 00183 EventTraits::kRpcSortDisabled); 00184 } 00185 00186 void EventHeader::setCbltWrapping(const bool cbltWrapping) { 00187 writeField(cbltWrapping, 00188 EventTraits::kCbltWrapping); 00189 } 00190 00191 void EventHeader::setRawCblt(const bool rawCblt) { 00192 writeField(rawCblt, 00193 EventTraits::kRawCblt); 00194 } 00195 00196 void EventHeader::setDataSortTimeout(bool timedOut) { 00197 writeField(timedOut, 00198 EventTraits::kDataSortTimeout); 00199 } 00200 00201 void EventHeader::setTriggerMismatch(const bool triggerMismatch) { 00202 writeField(triggerMismatch, 00203 EventTraits::kLtbMismatch); 00204 } 00205 00206 void EventHeader::setInvalidData(const bool invalidData) { 00207 writeField(invalidData, 00208 EventTraits::kInvalidData); 00209 } 00210 00211 00212