Skip to content

Commit

Permalink
hepmc3: transition complete
Browse files Browse the repository at this point in the history
  • Loading branch information
vvolkl committed Nov 20, 2021
1 parent 6cc2e70 commit 91f8563
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 5 deletions.
39 changes: 39 additions & 0 deletions k4Gen/src/components/HepMC2FileReader.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@

#include "HepMC2FileReader.h"

#include "GaudiKernel/IEventProcessor.h"
#include "GaudiKernel/IIncidentSvc.h"
#include "GaudiKernel/Incident.h"

DECLARE_COMPONENT(HepMC2FileReader)

HepMC2FileReader::HepMC2FileReader(const std::string& type, const std::string& name, const IInterface* parent)
: GaudiTool(type, name, parent), m_file(nullptr) {
declareInterface<IHepMCProviderTool>(this);
}

HepMC2FileReader::~HepMC2FileReader() { ; }

StatusCode HepMC2FileReader::initialize() {
if (m_filename.empty()) {
error() << "Input file name is not specified!" << endmsg;
return StatusCode::FAILURE;
}
// open file using HepMC routines
m_file = std::make_unique<HepMC3::ReaderAsciiHepMC2>(m_filename.value());
StatusCode sc = GaudiTool::initialize();
return sc;
}

StatusCode HepMC2FileReader::getNextEvent(HepMC3::GenEvent& event) {
if (!m_file->read_event(event)) {
error() << "Premature end of file: Please set the number of events according to hepMC file." << endmsg;
return Error("Reached end of file before finished processing");
}
return StatusCode::SUCCESS;
}

StatusCode HepMC2FileReader::finalize() {
m_file.reset();
return GaudiTool::finalize();
}
30 changes: 30 additions & 0 deletions k4Gen/src/components/HepMC2FileReader.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

#ifndef GENERATION_HEPMC2FILEREADER_H
#define GENERATION_HEPMC2FILEREADER_H

#include "GaudiAlg/GaudiTool.h"
#include "Generation/IHepMCProviderTool.h"

#include "HepMC3/GenEvent.h"
#include "HepMC3/ReaderAsciiHepMC2.h"

class HepMC2FileReader : public GaudiTool, virtual public IHepMCProviderTool {
public:
HepMC2FileReader(const std::string& type, const std::string& name, const IInterface* parent);
virtual ~HepMC2FileReader(); ///< Destructor
virtual StatusCode initialize();
virtual StatusCode finalize();

/// Wrapper for HepMC's fill_next_event() --
/// as in the hepmc original, the user is responsible
/// for the deletion of the event returned from this function
virtual StatusCode getNextEvent(HepMC3::GenEvent& event);
/// Wrapper for HepMC file io.

private:
void close();
Gaudi::Property<std::string> m_filename{this, "Filename", "", "Name of the HepMC file to read"};
std::unique_ptr<HepMC3::ReaderAsciiHepMC2> m_file;
};

#endif // GENERATION_HEPMC2FILEREADER_H
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

#include "HepMCFileReaderTool.h"
#include "HepMCFileReader.h"

#include "GaudiKernel/IEventProcessor.h"
#include "GaudiKernel/IIncidentSvc.h"
Expand Down Expand Up @@ -27,10 +27,6 @@ StatusCode HepMCFileReader::initialize() {

StatusCode HepMCFileReader::getNextEvent(HepMC3::GenEvent& event) {
if (!m_file->read_event(event)) {
// if (m_file->rdstate() == std::ios::eofbit) {
// error() << "Error reading HepMC file" << endmsg;
// return StatusCode::FAILURE;
// }
error() << "Premature end of file: Please set the number of events according to hepMC file." << endmsg;
return Error("Reached end of file before finished processing");
}
Expand Down
File renamed without changes.

0 comments on commit 91f8563

Please sign in to comment.