Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:12:01

0001 #ifndef Framework_ESProducerLooper_h
0002 #define Framework_ESProducerLooper_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     Framework
0006 // Class  :     ESProducerLooper
0007 //
0008 /**\class ESProducerLooper ESProducerLooper.h FWCore/Framework/interface/ESProducerLooper.h
0009 
0010  Description: <one line class summary>
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Mon Jul 17 09:03:32 EDT 2006
0019 //
0020 
0021 // system include files
0022 #include <memory>
0023 #include <set>
0024 #include <string>
0025 
0026 // user include files
0027 #include "FWCore/Framework/interface/ESProducer.h"
0028 #include "FWCore/Framework/interface/EDLooper.h"
0029 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
0030 
0031 // forward declarations
0032 namespace edm {
0033   class ESProducerLooper : public ESProducer, public EventSetupRecordIntervalFinder, public EDLooper {
0034   public:
0035     ESProducerLooper();
0036     ESProducerLooper(const ESProducerLooper&) = delete;                   // stop default
0037     const ESProducerLooper& operator=(const ESProducerLooper&) = delete;  // stop default
0038 
0039     //virtual ~ESProducerLooper();
0040 
0041     // ---------- const member functions ---------------------
0042 
0043     // ---------- static member functions --------------------
0044 
0045     std::set<eventsetup::EventSetupRecordKey> modifyingRecords() const override;
0046     // ---------- member functions ---------------------------
0047 
0048   protected:
0049     void setIntervalFor(const eventsetup::EventSetupRecordKey& iKey,
0050                         const IOVSyncValue& iTime,
0051                         ValidityInterval& oInterval) override;
0052 
0053     //use this to 'snoop' on what records are being used by the Producer
0054     void registerFactoryWithKey(const eventsetup::EventSetupRecordKey& iRecord,
0055                                 std::unique_ptr<eventsetup::ESProductResolverFactoryBase> iFactory,
0056                                 const std::string& iLabel = std::string()) override;
0057 
0058   private:
0059     // ---------- member data --------------------------------
0060   };
0061 }  // namespace edm
0062 
0063 #endif