00001 #ifndef GeneratorInterface_RivetInterface_RivetHarvesting 00002 #define GeneratorInterface_RivetInterface_RivetHarvesting 00003 00004 #include "FWCore/Framework/interface/EDAnalyzer.h" 00005 #include "FWCore/Utilities/interface/InputTag.h" 00006 00007 #include "Rivet/AnalysisHandler.hh" 00008 00009 #include <map> 00010 00011 namespace edm{ 00012 class ParameterSet; 00013 class Event; 00014 class EventSetup; 00015 class InputTag; 00016 } 00017 00018 class RivetHarvesting : public edm::EDAnalyzer 00019 { 00020 public: 00021 RivetHarvesting(const edm::ParameterSet&); 00022 00023 virtual ~RivetHarvesting(); 00024 00025 virtual void beginJob(); 00026 00027 virtual void endJob(); 00028 00029 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00030 00031 virtual void beginRun(const edm::Run&, const edm::EventSetup&); 00032 00033 virtual void endRun(const edm::Run&, const edm::EventSetup&); 00034 00035 private: 00036 00037 std::vector<Rivet::DPSXYPoint> getDPSXYValsErrs(std::string filename, std::string path, std::string name ); 00038 00039 Rivet::AnalysisHandler _analysisHandler; 00040 std::vector<std::string> _fileNames; 00041 std::vector<double> _sumOfWeights; 00042 std::vector<double> _crossSections; 00043 std::vector<double> _lumis; 00044 std::string _outFileName; 00045 bool _isFirstEvent; 00046 edm::InputTag _hepmcCollection; 00047 std::vector<std::string> _analysisNames; 00048 }; 00049 00050 #endif