CMS 3D CMS Logo

EDFilter.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_EDFilter_h
2 #define FWCore_Framework_EDFilter_h
3 
4 /*----------------------------------------------------------------------
5 
6 EDFilter: The base class of all "modules" used to control the flow of
7 processing in a processing path.
8 Filters can also insert products into the event.
9 These products should be informational products about the filter decision.
10 
11 
12 ----------------------------------------------------------------------*/
13 
18 
21 
22 #include <string>
23 #include <vector>
24 #include <array>
25 
26 namespace edm {
27  namespace maker {
28  template <typename T>
29  class ModuleHolderT;
30  }
31 
32  class ModuleCallingContext;
33  class PreallocationConfiguration;
34  class ActivityRegistry;
35  class ProductRegistry;
36  class ThinnedAssociationsHelper;
37  class WaitingTask;
38 
39  class EDFilter : public ProducerBase, public EDConsumerBase {
40  public:
41  template <typename T>
42  friend class maker::ModuleHolderT;
43  template <typename T>
44  friend class WorkerT;
46 
47  EDFilter();
48  ~EDFilter() override;
49 
50  static void fillDescriptions(ConfigurationDescriptions& descriptions);
51  static void prevalidate(ConfigurationDescriptions&);
52 
53  static const std::string& baseType();
54 
55  // Warning: the returned moduleDescription will be invalid during construction
56  ModuleDescription const& moduleDescription() const { return moduleDescription_; }
57 
58  static bool wantsGlobalRuns() { return true; }
59  static bool wantsGlobalLuminosityBlocks() { return true; }
60  static bool wantsStreamRuns() { return false; }
61  static bool wantsStreamLuminosityBlocks() { return false; };
62 
63  SerialTaskQueue* globalRunsQueue() { return &runQueue_; }
64  SerialTaskQueue* globalLuminosityBlocksQueue() { return &luminosityBlockQueue_; }
65 
66  private:
67  bool doEvent(EventPrincipal const& ep,
68  EventSetupImpl const& c,
69  ActivityRegistry* act,
70  ModuleCallingContext const* mcc);
71  //Needed by WorkerT but not supported
73  ModuleCallingContext const& iModuleCallingContext,
74  Principal const& iPrincipal) const {}
75 
77  void doBeginJob();
78  void doEndJob();
79  void doBeginRun(RunPrincipal const& rp, EventSetupImpl const& c, ModuleCallingContext const* mcc);
80  void doEndRun(RunPrincipal const& rp, EventSetupImpl const& c, ModuleCallingContext const* mcc);
81  void doBeginLuminosityBlock(LuminosityBlockPrincipal const& lbp,
82  EventSetupImpl const& c,
83  ModuleCallingContext const* mcc);
84  void doEndLuminosityBlock(LuminosityBlockPrincipal const& lbp,
85  EventSetupImpl const& c,
86  ModuleCallingContext const* mcc);
87  void doRespondToOpenInputFile(FileBlock const& fb);
88  void doRespondToCloseInputFile(FileBlock const& fb);
90 
92  registerProducts(module, reg, moduleDescription_);
93  }
94 
95  std::string workerType() const { return "WorkerT<EDFilter>"; }
96 
97  SharedResourcesAcquirer& sharedResourcesAcquirer() { return resourceAcquirer_; }
98 
99  virtual bool filter(Event&, EventSetup const&) = 0;
100  virtual void beginJob() {}
101  virtual void endJob() {}
102 
103  virtual void beginRun(Run const&, EventSetup const&) {}
104  virtual void endRun(Run const&, EventSetup const&) {}
105  virtual void beginLuminosityBlock(LuminosityBlock const&, EventSetup const&) {}
106  virtual void endLuminosityBlock(LuminosityBlock const&, EventSetup const&) {}
107  virtual void respondToOpenInputFile(FileBlock const&) {}
108  virtual void respondToCloseInputFile(FileBlock const&) {}
109 
110  bool hasAcquire() const { return false; }
111  bool hasAccumulator() const { return false; }
112 
113  void setModuleDescription(ModuleDescription const& md) { moduleDescription_ = md; }
115  std::vector<BranchID> previousParentage_;
120  };
121 } // namespace edm
122 
123 #endif
std::vector< BranchID > previousParentage_
Definition: EDFilter.h:115
SerialTaskQueue luminosityBlockQueue_
Definition: EDFilter.h:118
void setModuleDescription(ModuleDescription const &md)
Definition: EDFilter.h:113
virtual void endJob()
Definition: EDFilter.h:101
bool hasAcquire() const
Definition: EDFilter.h:110
static bool wantsStreamLuminosityBlocks()
Definition: EDFilter.h:61
virtual void beginRun(Run const &, EventSetup const &)
Definition: EDFilter.h:103
EDFilter ModuleType
Definition: EDFilter.h:45
SharedResourcesAcquirer & sharedResourcesAcquirer()
Definition: EDFilter.h:97
virtual void respondToCloseInputFile(FileBlock const &)
Definition: EDFilter.h:108
ParentageID previousParentageId_
Definition: EDFilter.h:119
SharedResourcesAcquirer resourceAcquirer_
Definition: EDFilter.h:116
virtual void endLuminosityBlock(LuminosityBlock const &, EventSetup const &)
Definition: EDFilter.h:106
static bool wantsStreamRuns()
Definition: EDFilter.h:60
void doRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)
Definition: EDFilter.h:89
SerialTaskQueue runQueue_
Definition: EDFilter.h:117
static bool wantsGlobalLuminosityBlocks()
Definition: EDFilter.h:59
static bool wantsGlobalRuns()
Definition: EDFilter.h:58
void registerProductsAndCallbacks(EDFilter *module, ProductRegistry *reg)
Definition: EDFilter.h:91
virtual void beginLuminosityBlock(LuminosityBlock const &, EventSetup const &)
Definition: EDFilter.h:105
SerialTaskQueue * globalRunsQueue()
Definition: EDFilter.h:63
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
virtual void endRun(Run const &, EventSetup const &)
Definition: EDFilter.h:104
void preActionBeforeRunEventAsync(WaitingTask *iTask, ModuleCallingContext const &iModuleCallingContext, Principal const &iPrincipal) const
Definition: EDFilter.h:72
ModuleDescription moduleDescription_
Definition: EDFilter.h:114
HLT enums.
ModuleDescription const & moduleDescription() const
Definition: EDFilter.h:56
bool hasAccumulator() const
Definition: EDFilter.h:111
virtual void beginJob()
Definition: EDFilter.h:100
void doPreallocate(PreallocationConfiguration const &)
Definition: EDFilter.h:76
std::string workerType() const
Definition: EDFilter.h:95
Definition: vlib.h:208
virtual void respondToOpenInputFile(FileBlock const &)
Definition: EDFilter.h:107
SerialTaskQueue * globalLuminosityBlocksQueue()
Definition: EDFilter.h:64
Definition: Run.h:45