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
|
#ifndef FWCore_Sources_RawInputSource_h
#define FWCore_Sources_RawInputSource_h
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
#include <memory>
#include <utility>
#include "DataFormats/Provenance/interface/EventID.h"
#include "FWCore/Framework/interface/InputSource.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
namespace edm {
class ParameterSet;
class Timestamp;
class RawInputSource : public InputSource {
public:
explicit RawInputSource(ParameterSet const& pset, InputSourceDescription const& desc);
~RawInputSource() override;
static void fillDescription(ParameterSetDescription& description);
//Next::kFile is only needed if the ProductRegistry must be updated
enum class Next { kEvent, kFile, kStop };
protected:
void makeEvent(EventPrincipal& eventPrincipal, EventAuxiliary const& eventAuxiliary);
virtual Next checkNext() = 0;
virtual void read(EventPrincipal& eventPrincipal) = 0;
void setInputFileTransitionsEachEvent() { inputFileTransitionsEachEvent_ = true; }
private:
void readEvent_(EventPrincipal& eventPrincipal) override;
std::shared_ptr<LuminosityBlockAuxiliary> readLuminosityBlockAuxiliary_() override;
std::shared_ptr<RunAuxiliary> readRunAuxiliary_() override;
virtual void reset_();
void rewind_() override;
ItemTypeInfo getNextItemType() override;
void closeFile_() final;
std::shared_ptr<FileBlock> readFile_() final;
virtual void genuineCloseFile() {}
virtual void genuineReadFile() {}
bool inputFileTransitionsEachEvent_;
bool fakeInputFileTransition_;
};
} // namespace edm
#endif
|