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.1 2006/07/23 01:24:33 valya Exp $ 00020 // 00021 00022 // system include files 00023 00024 // user include files 00025 #include "FWCore/Framework/interface/ESProducer.h" 00026 #include "FWCore/Framework/interface/EDLooper.h" 00027 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h" 00028 00029 // forward declarations 00030 namespace edm { 00031 class ESProducerLooper : public ESProducer, public EventSetupRecordIntervalFinder, public EDLooper 00032 { 00033 00034 public: 00035 ESProducerLooper(); 00036 //virtual ~ESProducerLooper(); 00037 00038 // ---------- const member functions --------------------- 00039 00040 // ---------- static member functions -------------------- 00041 00042 virtual std::set<eventsetup::EventSetupRecordKey> modifyingRecords() const; 00043 // ---------- member functions --------------------------- 00044 00045 protected: 00046 void setIntervalFor(const eventsetup::EventSetupRecordKey& iKey, 00047 const IOVSyncValue& iTime, 00048 ValidityInterval& oInterval); 00049 00050 //use this to 'snoop' on what records are being used by the Producer 00051 virtual void registerFactoryWithKey(const eventsetup::EventSetupRecordKey& iRecord , 00052 std::auto_ptr<eventsetup::ProxyFactoryBase>& iFactory, 00053 const std::string& iLabel= std::string() ); 00054 private: 00055 ESProducerLooper(const ESProducerLooper&); // stop default 00056 00057 const ESProducerLooper& operator=(const ESProducerLooper&); // stop default 00058 00059 // ---------- member data -------------------------------- 00060 00061 }; 00062 } 00063 00064 #endif