/
ProducerSourceBase.h
80 lines (68 loc) · 3.34 KB
/
ProducerSourceBase.h
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#ifndef Framework_Sources_ProducerSourceBase_h
#define Framework_Sources_ProducerSourceBase_h
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
#include "FWCore/Framework/interface/InputSource.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "DataFormats/Provenance/interface/EventAuxiliary.h"
#include "DataFormats/Provenance/interface/EventID.h"
#include "DataFormats/Provenance/interface/Timestamp.h"
#include "DataFormats/Provenance/interface/RunID.h"
#include "DataFormats/Provenance/interface/RunLumiEventNumber.h"
#include <memory>
namespace edm {
class ParameterSet;
class ParameterSetDescription;
class ProducerSourceBase : public InputSource {
public:
explicit ProducerSourceBase(ParameterSet const& pset, InputSourceDescription const& desc, bool realData, EventAuxiliary::ExperimentType eType = EventAuxiliary::Undefined);
virtual ~ProducerSourceBase();
unsigned int numberEventsInRun() const {return numberEventsInRun_;}
unsigned int numberEventsInLumi() const {return numberEventsInLumi_;}
TimeValue_t presentTime() const {return presentTime_;}
unsigned int timeBetweenEvents() const {return timeBetweenEvents_;}
unsigned int eventCreationDelay() const {return eventCreationDelay_;}
unsigned int numberEventsInThisRun() const {return numberEventsInThisRun_;}
unsigned int numberEventsInThisLumi() const {return numberEventsInThisLumi_;}
EventID const& eventID() const {return eventID_;}
RunNumber_t run() const {return eventID_.run();}
EventNumber_t event() const {return eventID_.event();}
LuminosityBlockNumber_t luminosityBlock() const {return eventID_.luminosityBlock();}
static void fillDescription(ParameterSetDescription& desc);
protected:
void setExperimentType(EventAuxiliary::ExperimentType eType);
private:
virtual ItemType getNextItemType() override;
virtual void initialize(EventID& id, TimeValue_t& time, TimeValue_t& interval);
virtual bool setRunAndEventInfo(EventID& id, TimeValue_t& time) = 0;
virtual void produce(Event& e) = 0;
virtual bool noFiles() const;
virtual size_t fileIndex() const;
virtual void beginJob() override;
virtual void beginRun(Run&) override;
virtual void endRun(Run&) override;
virtual void beginLuminosityBlock(LuminosityBlock&) override;
virtual void endLuminosityBlock(LuminosityBlock&) override;
virtual void readEvent_(EventPrincipal& eventPrincipal) override;
virtual std::shared_ptr<LuminosityBlockAuxiliary> readLuminosityBlockAuxiliary_() override;
virtual std::shared_ptr<RunAuxiliary> readRunAuxiliary_() override;
virtual void skip(int offset) override;
virtual void rewind_() override;
void advanceToNext(EventID& eventID, TimeValue_t& time);
void retreatToPrevious(EventID& eventID, TimeValue_t& time);
unsigned int numberEventsInRun_;
unsigned int numberEventsInLumi_;
TimeValue_t presentTime_;
TimeValue_t origTime_;
TimeValue_t timeBetweenEvents_;
unsigned int eventCreationDelay_; /* microseconds */
unsigned int numberEventsInThisRun_;
unsigned int numberEventsInThisLumi_;
EventNumber_t const zerothEvent_;
EventID eventID_;
EventID origEventID_;
bool isRealData_;
EventAuxiliary::ExperimentType eType_;
};
}
#endif