File indexing completed on 2023-03-17 10:59:27
0001 #include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h"
0002 #include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader2005.h"
0003 #include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader2013.h"
0004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0005 #include <iostream>
0006
0007 CSCDMBHeader::CSCDMBHeader(uint16_t firmware_version) : theHeaderFormat(), theFirmwareVersion(firmware_version) {
0008 if (theFirmwareVersion >= 2013) {
0009 theHeaderFormat = std::make_shared<CSCDMBHeader2013>();
0010 } else {
0011 theHeaderFormat = std::make_shared<CSCDMBHeader2005>();
0012 }
0013 }
0014
0015 CSCDMBHeader::CSCDMBHeader(const uint16_t *buf, uint16_t firmware_version)
0016 : theHeaderFormat(), theFirmwareVersion(firmware_version) {
0017 if (theFirmwareVersion >= 2013) {
0018 theHeaderFormat = std::make_shared<CSCDMBHeader2013>(buf);
0019 } else {
0020 theHeaderFormat = std::make_shared<CSCDMBHeader2005>(buf);
0021 }
0022 }
0023
0024 CSCDMBHeader2005 CSCDMBHeader::dmbHeader2005() const {
0025 const CSCDMBHeader2005 *result = dynamic_cast<const CSCDMBHeader2005 *>(theHeaderFormat.get());
0026 if (result == nullptr) {
0027 throw cms::Exception("Could not get 2005 DMB header format");
0028 }
0029 return *result;
0030 }
0031
0032 CSCDMBHeader2013 CSCDMBHeader::dmbHeader2013() const {
0033 const CSCDMBHeader2013 *result = dynamic_cast<const CSCDMBHeader2013 *>(theHeaderFormat.get());
0034 if (result == nullptr) {
0035 throw cms::Exception("Could not get 2013 DMB header format");
0036 }
0037 return *result;
0038 }