Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F19244542
EventReader.cc
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
EventReader.cc
View Options
/**
* \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
Details
Attached
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)
Attached To
Mode
rHEJ HEJ
Attached
Detach File
Event Timeline
Log In to Comment