00001 #ifndef Framework_ESProducerLooper_h 00002 #define Framework_ESProducerLooper_h 00003 // -*- C++ -*- 00004 // 00005 // Package: Framework 00006 // Class : ESProducerLooper 00007 // 00016 // 00017 // Original Author: Chris Jones 00018 // Created: Mon Jul 17 09:03:32 EDT 2006 00019 // $Id: ESProducerLooper.h,v 1.2 2010/07/24 14:15:26 wmtan Exp $ 00020 // 00021 00022 // system include files 00023 #include <memory> 00024 #include <set> 00025 #include <string> 00026 00027 // user include files 00028 #include "FWCore/Framework/interface/ESProducer.h" 00029 #include "FWCore/Framework/interface/EDLooper.h" 00030 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h" 00031 00032 // forward declarations 00033 namespace edm { 00034 class ESProducerLooper : public ESProducer, public EventSetupRecordIntervalFinder, public EDLooper 00035 { 00036 00037 public: 00038 ESProducerLooper(); 00039 //virtual ~ESProducerLooper(); 00040 00041 // ---------- const member functions --------------------- 00042 00043 // ---------- static member functions -------------------- 00044 00045 virtual std::set<eventsetup::EventSetupRecordKey> modifyingRecords() const; 00046 // ---------- member functions --------------------------- 00047 00048 protected: 00049 void setIntervalFor(const eventsetup::EventSetupRecordKey& iKey, 00050 const IOVSyncValue& iTime, 00051 ValidityInterval& oInterval); 00052 00053 //use this to 'snoop' on what records are being used by the Producer 00054 virtual void registerFactoryWithKey(const eventsetup::EventSetupRecordKey& iRecord , 00055 std::auto_ptr<eventsetup::ProxyFactoryBase>& iFactory, 00056 const std::string& iLabel= std::string() ); 00057 private: 00058 ESProducerLooper(const ESProducerLooper&); // stop default 00059 00060 const ESProducerLooper& operator=(const ESProducerLooper&); // stop default 00061 00062 // ---------- member data -------------------------------- 00063 00064 }; 00065 } 00066 00067 #endif