18 : ProducerSourceFromFiles(pset,desc,
true),
19 verifyAdler32_(pset.getUntrackedParameter<bool> (
"verifyAdler32",
true)),
20 useL1EventID_(pset.getUntrackedParameter<bool> (
"useL1EventID",
false))
24 produces<FEDRawDataCollection>();
30 if (
fin_.peek() == EOF ) {
41 const uint32_t headerSize[4]={0,2*
sizeof(
uint32),(4+1024)*
sizeof(uint32_t),7*
sizeof(uint32_t)};
47 *((uint32_t*)(&
buffer_[0]))=detectedFRDversion_;
48 fin_.read(&
buffer_[0] +
sizeof(uint32_t),headerSize[detectedFRDversion_]-
sizeof(uint32_t));
54 fin_.read(&
buffer_[0],headerSize[detectedFRDversion_]);
60 id =
edm::EventID(frdEventMsg->run(), frdEventMsg->lumi(), frdEventMsg->event());
62 const uint32_t totalSize = frdEventMsg->size();
63 if ( totalSize >
buffer_.size() ) {
67 fin_.read(&
buffer_[0]+headerSize[detectedFRDversion_],totalSize-headerSize[detectedFRDversion_]);
77 uint32_t adler = adler32(0
L,Z_NULL,0);
78 adler = adler32(adler,(Bytef*)frdEventMsg->payload(),frdEventMsg->eventSize());
80 if ( adler != frdEventMsg->adler32() ) {
82 "Found a wrong Adler32 checksum: expected 0x" << std::hex << frdEventMsg->adler32() <<
83 " but calculated 0x" << adler;
89 uint32_t eventSize = frdEventMsg->eventSize();
90 char*
event = (
char*)frdEventMsg->payload();
91 bool foundTCDSFED=
false;
92 bool foundGTPFED=
false;
95 while (eventSize > 0) {
96 eventSize -=
sizeof(
fedt_t);
99 eventSize -= (fedSize -
sizeof(
fedh_t));
117 if (GTPEvmBoardSense)
138 memcpy(fedData.
data(),
event + eventSize, fedSize);
140 assert(eventSize == 0);
153 std::cout <<
" open file.. " << fileName << std::endl;
156 size_t pos = fileName.find(
':');
157 if (pos!=std::string::npos) {
159 if (prefix!=
"file")
return false;
165 return fin_.is_open();
unsigned int detectedFRDversion_
unsigned int getgpshigh(const unsigned char *)
bool gtpe_board_sense(const unsigned char *p)
unsigned int get(const unsigned char *, bool)
std::vector< char > buffer_
virtual void produce(edm::Event &e)
std::auto_ptr< FEDRawDataCollection > rawData_
std::vector< std::string > const & fileNames() const
void resize(size_t newsize)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
#define FED_EVSZ_EXTRACT(a)
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)
unsigned long long uint64_t
const bool verifyAdler32_
EventNumber_t event() const
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
unsigned int gtpe_get(const unsigned char *)
volatile std::atomic< bool > shutdown_flag false
unsigned int getgpslow(const unsigned char *)
virtual bool setRunAndEventInfo(edm::EventID &id, edm::TimeValue_t &theTime)
FRDStreamSource(edm::ParameterSet const &pset, edm::InputSourceDescription const &desc)