Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-11 03:34:10

0001 #ifndef FWCore_Framework_limited_EDAnalyzer_h
0002 #define FWCore_Framework_limited_EDAnalyzer_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     FWCore/Framework
0006 // Class  :     edm::limited::EDAnalyzer
0007 //
0008 /**\class edm::limited::EDAnalyzer EDAnalyzer.h "FWCore/Framework/interface/limited/EDAnalyzer.h"
0009 
0010  Description: [one line class summary]
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Thu, 18 Jul 2013 11:51:07 GMT
0019 //
0020 
0021 // system include files
0022 
0023 // user include files
0024 #include "FWCore/Framework/interface/limited/analyzerAbilityToImplementor.h"
0025 #include "FWCore/Framework/interface/moduleAbilities.h"
0026 
0027 // forward declarations
0028 
0029 namespace edm {
0030   namespace limited {
0031     template <typename... T>
0032     class EDAnalyzer : public analyzer::AbilityToImplementor<T>::Type..., public virtual EDAnalyzerBase {
0033     public:
0034       EDAnalyzer(edm::ParameterSet const& iPSet)
0035           : EDAnalyzerBase(iPSet), analyzer::AbilityToImplementor<T>::Type(iPSet)... {}
0036 // We do this only in the case of the intel compiler as this might
0037 // end up creating a lot of code bloat due to inline symbols being generated
0038 // in each DSO which uses this header.
0039 #ifdef __INTEL_COMPILER
0040       virtual ~EDAnalyzer() {}
0041 #endif
0042       // ---------- const member functions ---------------------
0043       bool wantsProcessBlocks() const noexcept final { return WantsProcessBlockTransitions<T...>::value; }
0044       bool wantsInputProcessBlocks() const noexcept final { return WantsInputProcessBlockTransitions<T...>::value; }
0045       bool wantsGlobalRuns() const noexcept final { return WantsGlobalRunTransitions<T...>::value; }
0046       bool wantsGlobalLuminosityBlocks() const noexcept final {
0047         return WantsGlobalLuminosityBlockTransitions<T...>::value;
0048       }
0049       bool wantsStreamRuns() const noexcept final { return WantsStreamRunTransitions<T...>::value; }
0050       bool wantsStreamLuminosityBlocks() const noexcept final {
0051         return WantsStreamLuminosityBlockTransitions<T...>::value;
0052       }
0053 
0054       // ---------- static member functions --------------------
0055 
0056       // ---------- member functions ---------------------------
0057 
0058     private:
0059       EDAnalyzer(const EDAnalyzer&) = delete;
0060 
0061       const EDAnalyzer& operator=(const EDAnalyzer&) = delete;
0062 
0063       // ---------- member data --------------------------------
0064     };
0065 
0066   }  // namespace limited
0067 }  // namespace edm
0068 
0069 #endif