ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/ForwardAnalysis/Utilities/plugins/MCFileReader.cc
Revision: 1.1
Committed: Mon Jun 11 12:59:56 2012 UTC (12 years, 10 months ago) by antoniov
Content type: text/plain
Branch: MAIN
CVS Tags: V01-01-01, V01-01-00, antoniov-forwardAnalysis-09Jul2012-v1, antoniov-forwardAnalysis-29Jun2012-v1, V01-00-00, antoniov-utilities-11Jun2012-v1, HEAD
Log Message:
update

File Contents

# User Rev Content
1 antoniov 1.1 #include "FWCore/Framework/interface/EDProducer.h"
2     #include "FWCore/ParameterSet/interface/ParameterSet.h"
3    
4     #include <vector>
5     #include <string>
6    
7     class HepMCFileReader;
8    
9     namespace HepMC{
10     class GenEvent;
11     }
12    
13     class MCFileReader : public edm::EDProducer {
14     public:
15     MCFileReader(const edm::ParameterSet &);
16     virtual ~MCFileReader();
17    
18     private:
19     void produce(edm::Event&, const edm::EventSetup&);
20     void endRun(edm::Run&, edm::EventSetup const&);
21    
22     std::vector<std::string> fileNames_;
23     HepMCFileReader *reader_;
24     HepMC::GenEvent *evt_;
25     };
26    
27     #include "FWCore/Framework/interface/Event.h"
28     #include "FWCore/Framework/interface/Run.h"
29     #include "FWCore/MessageLogger/interface/MessageLogger.h"
30     #include "FWCore/Framework/interface/MakerMacros.h"
31    
32     #include "ForwardAnalysis/Utilities/interface/HepMCFileReader.h"
33     #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
34     #include "SimDataFormats/GeneratorProducts/interface/GenRunInfoProduct.h"
35     #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"
36    
37     using namespace edm;
38     using namespace std;
39    
40     MCFileReader::MCFileReader(const ParameterSet & pset):
41     fileNames_( pset.getUntrackedParameter<vector<string> >("fileNames") ),
42     reader_(HepMCFileReader::instance()), evt_(0)
43     {
44     LogInfo("MCFileReader") << "Reading HepMC file:" << fileNames_[0];
45     string fileName = fileNames_[0];
46     // strip the file:
47     if (fileName.find("file:") == 0){
48     fileName.erase(0,5);
49     }
50    
51     reader_->initialize(fileName);
52     produces<HepMCProduct>();
53     produces<GenEventInfoProduct>();
54     produces<GenRunInfoProduct, edm::InRun>();
55     }
56    
57     MCFileReader::~MCFileReader(){}
58    
59     void MCFileReader::produce(Event & event, const EventSetup& setup){
60     auto_ptr<HepMCProduct> bare_product(new HepMCProduct());
61    
62     LogInfo("MCFileSource") << "Start Reading";
63     evt_ = reader_->fillCurrentEventData();
64     if (evt_ == 0) return;
65    
66     bare_product->addHepMCData(evt_);
67     event.put(bare_product);
68    
69     auto_ptr<GenEventInfoProduct> genEventInfo( new GenEventInfoProduct(evt_) );
70     event.put(genEventInfo);
71     }
72    
73     void MCFileReader::endRun(Run& run, EventSetup const& setup) {
74    
75     auto_ptr<GenRunInfoProduct> genRunInfoProd( new GenRunInfoProduct() );
76     genRunInfoProd->setInternalXSec(-1.);
77     genRunInfoProd->setFilterEfficiency(-1.);
78     genRunInfoProd->setExternalXSecLO(-1.);
79     genRunInfoProd->setExternalXSecNLO(-1.);
80    
81     run.put(genRunInfoProd);
82     }
83     DEFINE_FWK_MODULE(MCFileReader);