1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#ifndef EventFilter_Utilities_FRDStreamSource_h
#define EventFilter_Utilities_FRDStreamSource_h
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/LuminosityBlock.h"
#include "FWCore/Framework/interface/Run.h"
#include "FWCore/Framework/interface/InputSourceMacros.h"
#include "FWCore/Sources/interface/ProducerSourceFromFiles.h"
#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
#include "DataFormats/Provenance/interface/Timestamp.h"
#include <unistd.h>
#include <string>
#include <vector>
#include <fstream>
class FRDStreamSource : public edm::ProducerSourceFromFiles {
public:
// construction/destruction
FRDStreamSource(edm::ParameterSet const& pset, edm::InputSourceDescription const& desc);
~FRDStreamSource() override {}
private:
// member functions
bool setRunAndEventInfo(edm::EventID& id,
edm::TimeValue_t& theTime,
edm::EventAuxiliary::ExperimentType& eType) override;
void produce(edm::Event& e) override;
bool openFile(const std::string& fileName);
private:
// member data
std::vector<std::string> fileNames_;
std::vector<std::string>::const_iterator itFileName_;
std::vector<std::string>::const_iterator endFileName_;
std::ifstream fin_;
std::unique_ptr<FEDRawDataCollection> rawData_;
std::vector<char> buffer_;
const bool verifyAdler32_;
const bool verifyChecksum_;
const bool useL1EventID_;
uint16_t detectedFRDversion_ = 0;
uint16_t flags_ = 0;
};
#endif // EventFilter_Utilities_FRDStreamSource_h
|