File indexing completed on 2024-05-11 03:34:10
0001 #ifndef FWCore_Framework_limited_EDProducer_h
0002 #define FWCore_Framework_limited_EDProducer_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/limited/producerAbilityToImplementor.h"
0025 #include "FWCore/Framework/interface/moduleAbilities.h"
0026
0027
0028
0029 namespace edm {
0030 namespace limited {
0031 template <typename... T>
0032 class EDProducer : public producer::SpecializeAbilityToImplementor<
0033 CheckAbility<edm::module::Abilities::kRunSummaryCache, T...>::kHasIt &
0034 CheckAbility<edm::module::Abilities::kEndRunProducer, T...>::kHasIt,
0035 CheckAbility<edm::module::Abilities::kLuminosityBlockSummaryCache, T...>::kHasIt &
0036 CheckAbility<edm::module::Abilities::kEndLuminosityBlockProducer, T...>::kHasIt,
0037 T>::Type...,
0038 public virtual EDProducerBase {
0039 public:
0040 EDProducer(edm::ParameterSet const& iPSet)
0041 : EDProducerBase(iPSet),
0042 producer::SpecializeAbilityToImplementor<
0043 CheckAbility<edm::module::Abilities::kRunSummaryCache, T...>::kHasIt &
0044 CheckAbility<edm::module::Abilities::kEndRunProducer, T...>::kHasIt,
0045 CheckAbility<edm::module::Abilities::kLuminosityBlockSummaryCache, T...>::kHasIt &
0046 CheckAbility<edm::module::Abilities::kEndLuminosityBlockProducer, T...>::kHasIt,
0047 T>::Type(iPSet)... {}
0048
0049
0050 bool wantsProcessBlocks() const noexcept final { return WantsProcessBlockTransitions<T...>::value; }
0051 bool wantsInputProcessBlocks() const noexcept final { return WantsInputProcessBlockTransitions<T...>::value; }
0052 bool wantsGlobalRuns() const noexcept final { return WantsGlobalRunTransitions<T...>::value; }
0053 bool wantsGlobalLuminosityBlocks() const noexcept final {
0054 return WantsGlobalLuminosityBlockTransitions<T...>::value;
0055 }
0056 bool wantsStreamRuns() const noexcept final { return WantsStreamRunTransitions<T...>::value; }
0057 bool wantsStreamLuminosityBlocks() const noexcept final {
0058 return WantsStreamLuminosityBlockTransitions<T...>::value;
0059 }
0060
0061 bool hasAbilityToProduceInBeginProcessBlocks() const final {
0062 return HasAbilityToProduceInBeginProcessBlocks<T...>::value;
0063 }
0064 bool hasAbilityToProduceInEndProcessBlocks() const final {
0065 return HasAbilityToProduceInEndProcessBlocks<T...>::value;
0066 }
0067
0068 bool hasAbilityToProduceInBeginRuns() const final { return HasAbilityToProduceInBeginRuns<T...>::value; }
0069 bool hasAbilityToProduceInEndRuns() const final { return HasAbilityToProduceInEndRuns<T...>::value; }
0070
0071 bool hasAbilityToProduceInBeginLumis() const final { return HasAbilityToProduceInBeginLumis<T...>::value; }
0072 bool hasAbilityToProduceInEndLumis() const final { return HasAbilityToProduceInEndLumis<T...>::value; }
0073
0074
0075
0076
0077
0078 private:
0079 EDProducer(const EDProducer&) = delete;
0080
0081 const EDProducer& operator=(const EDProducer&) = delete;
0082
0083
0084 };
0085
0086 }
0087 }
0088
0089 #endif