File indexing completed on 2021-07-30 02:33:04
0001 #ifndef FWCore_Framework_global_EDFilter_h
0002 #define FWCore_Framework_global_EDFilter_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #include "FWCore/Framework/interface/global/filterAbilityToImplementor.h"
0025 #include "FWCore/Framework/interface/moduleAbilities.h"
0026
0027
0028
0029 namespace edm {
0030 namespace global {
0031 template <typename... T>
0032 class EDFilter : public virtual EDFilterBase,
0033 public filter::SpecializeAbilityToImplementor<
0034 CheckAbility<edm::module::Abilities::kRunSummaryCache, T...>::kHasIt &
0035 CheckAbility<edm::module::Abilities::kEndRunProducer, T...>::kHasIt,
0036 CheckAbility<edm::module::Abilities::kLuminosityBlockSummaryCache, T...>::kHasIt &
0037 CheckAbility<edm::module::Abilities::kEndLuminosityBlockProducer, T...>::kHasIt,
0038 T>::Type... {
0039 public:
0040 EDFilter() = default;
0041 EDFilter(const EDFilter&) = delete;
0042 const EDFilter& operator=(const EDFilter&) = delete;
0043
0044
0045
0046
0047 #ifdef __INTEL_COMPILER
0048 virtual ~EDFilter() = default;
0049 #endif
0050
0051 bool wantsProcessBlocks() const final { return WantsProcessBlockTransitions<T...>::value; }
0052 bool wantsInputProcessBlocks() const final { return WantsInputProcessBlockTransitions<T...>::value; }
0053 bool wantsGlobalRuns() const final { return WantsGlobalRunTransitions<T...>::value; }
0054 bool wantsGlobalLuminosityBlocks() const final { return WantsGlobalLuminosityBlockTransitions<T...>::value; }
0055
0056 bool wantsStreamRuns() const final { return WantsStreamRunTransitions<T...>::value; }
0057 bool wantsStreamLuminosityBlocks() const final { return WantsStreamLuminosityBlockTransitions<T...>::value; }
0058
0059 bool hasAbilityToProduceInBeginProcessBlocks() const final {
0060 return HasAbilityToProduceInBeginProcessBlocks<T...>::value;
0061 }
0062 bool hasAbilityToProduceInEndProcessBlocks() const final {
0063 return HasAbilityToProduceInEndProcessBlocks<T...>::value;
0064 }
0065
0066 bool hasAbilityToProduceInBeginRuns() const final { return HasAbilityToProduceInBeginRuns<T...>::value; }
0067 bool hasAbilityToProduceInEndRuns() const final { return HasAbilityToProduceInEndRuns<T...>::value; }
0068
0069 bool hasAbilityToProduceInBeginLumis() const final { return HasAbilityToProduceInBeginLumis<T...>::value; }
0070 bool hasAbilityToProduceInEndLumis() const final { return HasAbilityToProduceInEndLumis<T...>::value; }
0071
0072
0073
0074
0075
0076 private:
0077
0078 };
0079
0080 }
0081 }
0082
0083 #endif