Go to the documentation of this file.00001 #ifndef FWCore_Sources_VectorInputSource_h
00002 #define FWCore_Sources_VectorInputSource_h
00003
00004
00005
00006
00007
00008 #include "FWCore/Sources/interface/EDInputSource.h"
00009
00010 #include "boost/shared_ptr.hpp"
00011
00012 #include <memory>
00013 #include <string>
00014 #include <vector>
00015
00016 namespace edm {
00017 class EventPrincipal;
00018 struct InputSourceDescription;
00019 class ParameterSet;
00020 class VectorInputSource : public EDInputSource {
00021 public:
00022 typedef boost::shared_ptr<EventPrincipal> EventPrincipalVectorElement;
00023 typedef std::vector<EventPrincipalVectorElement> EventPrincipalVector;
00024 explicit VectorInputSource(ParameterSet const& pset, InputSourceDescription const& desc);
00025 virtual ~VectorInputSource();
00026
00027 void readMany(int number, EventPrincipalVector& result);
00028 void readManyRandom(int number, EventPrincipalVector& result, unsigned int& fileSeqNumber);
00029 void readManySequential(int number, EventPrincipalVector& result, unsigned int& fileSeqNumber);
00030 void readManySpecified(std::vector<EventID> const& events, EventPrincipalVector& result);
00031 void dropUnwantedBranches(std::vector<std::string> const& wantedBranches);
00032
00033 private:
00034 virtual void readMany_(int number, EventPrincipalVector& result) = 0;
00035 virtual void readManyRandom_(int number, EventPrincipalVector& result, unsigned int& fileSeqNumber) = 0;
00036 virtual void readManySequential_(int number, EventPrincipalVector& result, unsigned int& fileSeqNumber) = 0;
00037 virtual void readManySpecified_(std::vector<EventID> const& events, EventPrincipalVector& result) = 0;
00038 virtual void dropUnwantedBranches_(std::vector<std::string> const& wantedBranches) = 0;
00039 };
00040 }
00041 #endif