forked from cms-sw/cmssw
-
Notifications
You must be signed in to change notification settings - Fork 0
/
H2RootNtplSource.cc
71 lines (50 loc) · 1.83 KB
/
H2RootNtplSource.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* \author: Joanna Weng
* $Date: 1/2006
*/
#include "IOMC/NtupleConverter/interface/NtupleROOTFile.h"
#include "IOMC/NtupleConverter/interface/H2RootNtplSource.h"
#include "IOMC/NtupleConverter/interface/Ntuple2HepMCFiller.h"
#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include <iostream>
using namespace edm;
using namespace std;
//used for defaults
H2RootNtplSource::H2RootNtplSource( const ParameterSet & pset, InputSourceDescription const& desc ) :
ExternalInputSource(pset, desc),
evt(0), firstEvent_ (pset.getUntrackedParameter<unsigned int>("firstEvent",0)),
reader_( Ntuple2HepMCFiller::instance() ){
cout << "H2RootNtplSource: Reading HepMC file: " << fileNames()[0] << endl;
string fileName = fileNames()[0];
// strip the file:
if ( ! fileName.find("file:")){
fileName.erase(0,5);
}
//Max number of events processed
cout << "H2RootNtplSource: Number of events to be processed = " << maxEvents() << endl;
//First event
firstEvent_ = pset.getUntrackedParameter<unsigned int>("firstEvent",0);
cout << "H2RootNtplSource: Number of first event = " << firstEvent_ << endl;
reader_->initialize(fileName,101);
reader_->setEvent(firstEvent_);
produces<HepMCProduct>();
}
H2RootNtplSource::~H2RootNtplSource(){
clear();
}
void H2RootNtplSource::clear() {
}
bool H2RootNtplSource::produce(Event & e) {
// no need to clean up GenEvent memory - now done in HepMCProduct
//if ( evt != NULL ) delete evt ;
auto_ptr<HepMCProduct> bare_product(new HepMCProduct());
cout << "H2RootNtplSource: Start Reading " << endl;
evt = reader_->fillCurrentEventData();
if(evt) {
bare_product->addHepMCData(evt );
e.put(bare_product);
return true;
}
else return false;
}