CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/FWCore/Sources/interface/ProducerSourceBase.h

Go to the documentation of this file.
00001 #ifndef Framework_Sources_ProducerSourceBase_h
00002 #define Framework_Sources_ProducerSourceBase_h
00003 
00004 /*----------------------------------------------------------------------
00005 ----------------------------------------------------------------------*/
00006 
00007 #include "FWCore/Framework/interface/InputSource.h"
00008 #include "FWCore/Framework/interface/Frameworkfwd.h"
00009 #include "DataFormats/Provenance/interface/EventAuxiliary.h"
00010 #include "DataFormats/Provenance/interface/EventID.h"
00011 #include "DataFormats/Provenance/interface/Timestamp.h"
00012 #include "DataFormats/Provenance/interface/RunID.h"
00013 
00014 #include "boost/shared_ptr.hpp"
00015 
00016 namespace edm {
00017   class ParameterSet;
00018   class ParameterSetDescription;
00019   class ProducerSourceBase : public InputSource {
00020   public:
00021     explicit ProducerSourceBase(ParameterSet const& pset, InputSourceDescription const& desc, bool realData);
00022     virtual ~ProducerSourceBase();
00023 
00024     unsigned int numberEventsInRun() const {return numberEventsInRun_;} 
00025     unsigned int numberEventsInLumi() const {return numberEventsInLumi_;} 
00026     TimeValue_t presentTime() const {return presentTime_;}
00027     unsigned int timeBetweenEvents() const {return timeBetweenEvents_;}
00028     unsigned int eventCreationDelay() const {return eventCreationDelay_;}
00029     unsigned int numberEventsInThisRun() const {return numberEventsInThisRun_;}
00030     unsigned int numberEventsInThisLumi() const {return numberEventsInThisLumi_;}
00031     EventID const& eventID() const {return eventID_;}
00032     RunNumber_t run() const {return eventID_.run();}
00033     EventNumber_t event() const {return eventID_.event();}
00034     LuminosityBlockNumber_t luminosityBlock() const {return eventID_.luminosityBlock();}
00035 
00036     static void fillDescription(ParameterSetDescription& desc);
00037 
00038   protected:
00039 
00040   private:
00041     virtual ItemType getNextItemType() override;
00042     virtual void initialize(EventID& id, TimeValue_t& time, TimeValue_t& interval);
00043     virtual bool setRunAndEventInfo(EventID& id, TimeValue_t& time) = 0;
00044     virtual void produce(Event& e) = 0;
00045     virtual bool noFiles() const;
00046     virtual size_t fileIndex() const;
00047     virtual void beginJob() override;
00048     virtual void beginRun(Run&) override;
00049     virtual void endRun(Run&) override;
00050     virtual void beginLuminosityBlock(LuminosityBlock&) override;
00051     virtual void endLuminosityBlock(LuminosityBlock&) override;
00052     virtual EventPrincipal* readEvent_(EventPrincipal& eventPrincipal) override;
00053     virtual boost::shared_ptr<LuminosityBlockAuxiliary> readLuminosityBlockAuxiliary_() override;
00054     virtual boost::shared_ptr<RunAuxiliary> readRunAuxiliary_() override;
00055     virtual void skip(int offset) override;
00056     virtual void rewind_() override;
00057 
00058     void advanceToNext(EventID& eventID, TimeValue_t& time);
00059     void retreatToPrevious(EventID& eventID, TimeValue_t& time);
00060 
00061     unsigned int numberEventsInRun_;
00062     unsigned int numberEventsInLumi_;
00063     TimeValue_t presentTime_;
00064     TimeValue_t origTime_;
00065     TimeValue_t timeBetweenEvents_;
00066     unsigned int eventCreationDelay_;  /* microseconds */
00067 
00068     unsigned int numberEventsInThisRun_;
00069     unsigned int numberEventsInThisLumi_;
00070     unsigned int const zerothEvent_;
00071     EventID eventID_;
00072     EventID origEventID_;
00073     bool isRealData_;
00074     EventAuxiliary::ExperimentType eType_;
00075   };
00076 }
00077 #endif