Page MenuHomeHEPForge

EventReader.cc
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

EventReader.cc

/**
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019-2020
* \copyright GPLv2 or later
*/
#include "HEJ/EventReader.hh"
#include <iostream>
#include <stdexcept>
#include "LHEF/LHEF.h"
#include "HEJ/ConfigFlags.hh"
#include "HEJ/HDF5Reader.hh"
#include "HEJ/LesHouchesReader.hh"
#include "HEJ/Version.hh"
namespace {
enum class generator{
HEJ,
HEJFOG,
Sherpa,
MG,
unknown
};
generator get_generator(
LHEF::HEPRUP const & heprup, std::string const & header
){
// try getting generator name from specific tag
if(!heprup.generators.empty()){
std::string const & gen_name = heprup.generators.back().name;
if(gen_name == "HEJ" || gen_name == HEJ::Version::String())
return generator::HEJ;
if(gen_name == "HEJ Fixed Order Generation")
return generator::HEJFOG;
if(gen_name == "MadGraph5_aMC@NLO") return generator::MG;
std::cerr << "Unknown LHE Generator " << gen_name
<< " using default LHE interface.\n";
return generator::unknown;
}
// The generator tag is not always used -> check by hand
if(header.find("generated with HEJ")!=std::string::npos)
return generator::HEJ;
if(header.find("# created by SHERPA")!=std::string::npos)
return generator::Sherpa;
if(header.find("<MGVersion>")!=std::string::npos)
return generator::MG;
std::cerr<<"Could not determine LHE Generator using default LHE interface.\n";
return generator::unknown;
}
} // namespace
namespace HEJ {
std::unique_ptr<EventReader> make_reader(std::string const & filename) {
try {
auto reader{ std::make_unique<LesHouchesReader>(filename) };
switch( get_generator(reader->heprup(), reader->header()) ){
case generator::Sherpa:
return std::make_unique<SherpaLHEReader>(filename);
case generator::HEJ:
case generator::HEJFOG:
case generator::MG:
//! @TODO we could directly fix the MG weights here similar to Sherpa
default:
return reader;
}
}
catch(std::runtime_error&) {
#ifdef HEJ_BUILD_WITH_HDF5
return std::make_unique<HDF5Reader>(filename);
#else
throw;
#endif
}
}
} // namespace HEJ

File Metadata

Mime Type
text/x-c
Expires
Tue, Sep 30, 4:43 AM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6479655
Default Alt Text
EventReader.cc (2 KB)

Event Timeline