-
Notifications
You must be signed in to change notification settings - Fork 4.4k
/
Copy pathEDAnalyzerBase.h
133 lines (104 loc) · 5.08 KB
/
EDAnalyzerBase.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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#ifndef FWCore_Framework_one_EDAnalyzerBase_h
#define FWCore_Framework_one_EDAnalyzerBase_h
// -*- C++ -*-
//
// Package: FWCore/Framework
// Class : one::EDAnalyzerBase
//
/**\class one::EDAnalyzerBase EDAnalyzerBase.h "FWCore/Framework/interface/one/EDAnalyzerBase.h"
Description: Base class for edm::one::EDAnalyzer<>
Usage:
<usage>
*/
//
// Original Author: Chris Jones
// Created: Thu, 01 Aug 2013 21:21:21 GMT
//
// system include files
// user include files
#include "FWCore/Framework/interface/EDConsumerBase.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/SharedResourcesAcquirer.h"
#include "DataFormats/Provenance/interface/ModuleDescription.h"
#include "FWCore/ParameterSet/interface/ParameterSetfwd.h"
#include "FWCore/Concurrency/interface/WaitingTaskHolder.h"
// forward declarations
namespace edm {
class ModuleCallingContext;
class PreallocationConfiguration;
class ActivityRegistry;
class ThinnedAssociationsHelper;
namespace maker {
template <typename T>
class ModuleHolderT;
}
namespace one {
class EDAnalyzerBase : public EDConsumerBase {
public:
template <typename T>
friend class edm::WorkerT;
template <typename T>
friend class edm::maker::ModuleHolderT;
typedef EDAnalyzerBase ModuleType;
EDAnalyzerBase();
~EDAnalyzerBase() override;
static void fillDescriptions(ConfigurationDescriptions& descriptions);
static void prevalidate(ConfigurationDescriptions& descriptions);
static const std::string& baseType();
// Warning: the returned moduleDescription will be invalid during construction
ModuleDescription const& moduleDescription() const { return moduleDescription_; }
virtual bool wantsProcessBlocks() const = 0;
virtual bool wantsInputProcessBlocks() const = 0;
virtual bool wantsGlobalRuns() const = 0;
virtual bool wantsGlobalLuminosityBlocks() const = 0;
bool wantsStreamRuns() const { return false; }
bool wantsStreamLuminosityBlocks() const { return false; };
virtual SerialTaskQueue* globalRunsQueue();
virtual SerialTaskQueue* globalLuminosityBlocksQueue();
void callWhenNewProductsRegistered(std::function<void(BranchDescription const&)> const& func);
private:
bool doEvent(EventTransitionInfo const&, ActivityRegistry*, ModuleCallingContext const*);
//For now this is a placeholder
/*virtual*/ void preActionBeforeRunEventAsync(WaitingTaskHolder,
ModuleCallingContext const&,
Principal const&) const {}
void doPreallocate(PreallocationConfiguration const&);
virtual void preallocLumis(unsigned int);
void doBeginJob();
void doEndJob();
void doBeginProcessBlock(ProcessBlockPrincipal const&, ModuleCallingContext const*);
void doAccessInputProcessBlock(ProcessBlockPrincipal const&, ModuleCallingContext const*);
void doEndProcessBlock(ProcessBlockPrincipal const&, ModuleCallingContext const*);
void doBeginRun(RunTransitionInfo const&, ModuleCallingContext const*);
void doEndRun(RunTransitionInfo const&, ModuleCallingContext const*);
void doBeginLuminosityBlock(LumiTransitionInfo const&, ModuleCallingContext const*);
void doEndLuminosityBlock(LumiTransitionInfo const&, ModuleCallingContext const*);
void doRespondToOpenInputFile(FileBlock const&) {}
void doRespondToCloseInputFile(FileBlock const&) {}
void doRespondToCloseOutputFile() { clearInputProcessBlockCaches(); }
void doRegisterThinnedAssociations(ProductRegistry const&, ThinnedAssociationsHelper&) {}
void registerProductsAndCallbacks(EDAnalyzerBase const* module, ProductRegistry* reg);
std::string workerType() const { return "WorkerT<EDAnalyzer>"; }
SharedResourcesAcquirer& sharedResourcesAcquirer() { return resourcesAcquirer_; }
virtual void analyze(Event const&, EventSetup const&) = 0;
virtual void beginJob() {}
virtual void endJob() {}
virtual void doBeginProcessBlock_(ProcessBlock const&);
virtual void doAccessInputProcessBlock_(ProcessBlock const&);
virtual void doEndProcessBlock_(ProcessBlock const&);
virtual void doBeginRun_(Run const& rp, EventSetup const& c);
virtual void doEndRun_(Run const& rp, EventSetup const& c);
virtual void doBeginLuminosityBlock_(LuminosityBlock const& lbp, EventSetup const& c);
virtual void doEndLuminosityBlock_(LuminosityBlock const& lbp, EventSetup const& c);
virtual void clearInputProcessBlockCaches();
bool hasAcquire() const { return false; }
bool hasAccumulator() const { return false; }
virtual SharedResourcesAcquirer createAcquirer();
void setModuleDescription(ModuleDescription const& md) { moduleDescription_ = md; }
ModuleDescription moduleDescription_;
std::function<void(BranchDescription const&)> callWhenNewProductsRegistered_;
SharedResourcesAcquirer resourcesAcquirer_;
};
} // namespace one
} // namespace edm
#endif