21 : ProducerSourceFromFiles(pset,desc,
true),
22 verifyAdler32_(pset.getUntrackedParameter<
bool> (
"verifyAdler32",
true)),
23 verifyChecksum_(pset.getUntrackedParameter<
bool> (
"verifyChecksum",
true)),
24 useL1EventID_(pset.getUntrackedParameter<
bool> (
"useL1EventID",
false))
28 produces<FEDRawDataCollection>();
34 if (
fin_.peek() == EOF ) {
50 *((uint32_t*)(&
buffer_[0]))=detectedFRDversion_;
63 id =
edm::EventID(frdEventMsg->run(), frdEventMsg->lumi(), frdEventMsg->event());
65 const uint32_t totalSize = frdEventMsg->size();
66 if ( totalSize >
buffer_.size() ) {
81 crc =
crc32c(crc,(
const unsigned char*)frdEventMsg->payload(),frdEventMsg->eventSize());
82 if ( crc != frdEventMsg->crc32c() ) {
84 "Found a wrong crc32c checksum: expected 0x" << std::hex << frdEventMsg->crc32c() <<
85 " but calculated 0x" << crc;
90 uint32_t adler = adler32(0
L,Z_NULL,0);
91 adler = adler32(adler,(Bytef*)frdEventMsg->payload(),frdEventMsg->eventSize());
93 if ( adler != frdEventMsg->adler32() ) {
95 "Found a wrong Adler32 checksum: expected 0x" << std::hex << frdEventMsg->adler32() <<
96 " but calculated 0x" << adler;
100 rawData_ = std::make_unique<FEDRawDataCollection>();
102 uint32_t eventSize = frdEventMsg->eventSize();
103 char*
event = (
char*)frdEventMsg->payload();
104 bool foundTCDSFED=
false;
105 bool foundGTPFED=
false;
108 while (eventSize > 0) {
109 assert(eventSize>=
sizeof(
fedt_t));
110 eventSize -=
sizeof(
fedt_t);
113 assert(eventSize>=fedSize -
sizeof(
fedt_t));
114 eventSize -= (fedSize -
sizeof(
fedt_t));
119 throw cms::Exception(
"FedRawDataInputSource::fillFEDRawDataCollection") <<
"Out of range FED ID : " <<
fedId;
133 if (GTPEvmBoardSense)
153 fedData.resize(fedSize);
154 memcpy(fedData.data(),
event + eventSize, fedSize);
156 assert(eventSize == 0);
169 std::cout <<
" open file.. " << fileName << std::endl;
172 size_t pos = fileName.find(
':');
173 if (pos!=std::string::npos) {
175 if (prefix!=
"file")
return false;
181 return fin_.is_open();
unsigned int detectedFRDversion_
unsigned int getgpshigh(const unsigned char *)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool gtpe_board_sense(const unsigned char *p)
std::unique_ptr< FEDRawDataCollection > rawData_
unsigned int get(const unsigned char *, bool)
void produce(edm::Event &e) override
const uint32 FRDHeaderVersionSize[6]
std::vector< char > buffer_
std::vector< std::string > const & fileNames() const
#define FED_EVSZ_EXTRACT(a)
bool setRunAndEventInfo(edm::EventID &id, edm::TimeValue_t &theTime, edm::EventAuxiliary::ExperimentType &eType) override
bool openFile(const std::string &fileName)
unsigned long long TimeValue_t
std::vector< std::string >::const_iterator itFileName_
bool evm_board_sense(const unsigned char *p, size_t size)
const bool verifyChecksum_
uint32_t crc32c(uint32_t crc, const unsigned char *buf, size_t len)
unsigned long long uint64_t
const bool verifyAdler32_
const uint32_t gpstimelow
const uint32_t gpstimehigh
unsigned int gtpe_get(const unsigned char *)
const struct Header_v1 header
unsigned int getgpslow(const unsigned char *)
FRDStreamSource(edm::ParameterSet const &pset, edm::InputSourceDescription const &desc)