CMS 3D CMS Logo

EDLooper.h

Go to the documentation of this file.
00001 #ifndef FWCore_Framework_EDLooper_h
00002 #define FWCore_Framework_EDLooper_h
00003 // -*- C++ -*-
00004 //
00005 // Package:     Framework
00006 // Module:      EDLooper
00007 // 
00012 //
00013 // Author:      Valentin Kuznetsov
00014 // Created:     Wed Jul  5 11:42:17 EDT 2006
00015 // $Id: EDLooper.h,v 1.8 2008/03/19 22:02:36 wdd Exp $
00016 //
00017 
00018 #include "FWCore/Framework/interface/Frameworkfwd.h"
00019 
00020 #include <set>
00021 
00022 namespace edm {
00023   namespace eventsetup {
00024     class EventSetupRecordKey;
00025     class EventSetupProvider;
00026   }
00027   class ActionTable;
00028 
00029   class EDLooper
00030   {
00031     public:
00032 
00033       enum Status {kContinue, kStop};
00034 
00035       EDLooper();
00036       virtual ~EDLooper();
00037 
00038       void doStartingNewLoop();
00039       Status doDuringLoop(edm::EventPrincipal& eventPrincipal, const edm::EventSetup& es);
00040       Status doEndOfLoop(const edm::EventSetup& es);
00041       void prepareForNextLoop(eventsetup::EventSetupProvider* esp);
00042 
00043       virtual void beginOfJob(const edm::EventSetup&); 
00044       virtual void startingNewLoop(unsigned int ) = 0; 
00045       virtual Status duringLoop(const edm::Event&, const edm::EventSetup&) = 0; 
00046       virtual Status endOfLoop(const edm::EventSetup&, unsigned int iCounter) = 0; 
00047       virtual void endOfJob();
00048 
00049       void setActionTable(ActionTable* actionTable) { act_table_ = actionTable; }
00050 
00051       virtual std::set<eventsetup::EventSetupRecordKey> modifyingRecords() const;
00052 
00053     private:
00054 
00055       EDLooper( const EDLooper& ); // stop default
00056       const EDLooper& operator=( const EDLooper& ); // stop default
00057 
00058       unsigned int iCounter_;
00059       ActionTable* act_table_;
00060   };
00061 }
00062 
00063 #endif

Generated on Tue Jun 9 17:35:28 2009 for CMSSW by  doxygen 1.5.4