TABLE OF CONTENTS
- 1. /EventOutput
- 1.1. EventOutput/EventOutputFile
- 1.2. EventOutput/LHOutputFile
- 1.3. EventOutput/OscarOutputFile
- 1.4. EventOutput/OscarExtOutputFile
- 1.5. EventOutput/ShanghaiOutputFile
- 1.6. EventOutput/RootOutputFile
- 1.7. EventOutput/HepMC3OutputFile
- 1.8. EventOutput/NuHepMCOutputFile
- 1.9. EventOutput/write_additionalInfo
- 1.10. EventOutput/LH_open
- 1.11. EventOutput/LH_close
- 1.12. EventOutput/LH_write_event_header
- 1.13. EventOutput/LH_write_event_footer
- 1.14. EventOutput/LH_write_particle
- 1.15. EventOutput/LH_write_additionalInfo
- 1.16. EventOutput/Oscar_open
- 1.17. EventOutput/Oscar_close
- 1.18. EventOutput/Oscar_write_event_header
- 1.19. EventOutput/Oscar_write_event_footer
- 1.20. EventOutput/Oscar_write_particle
- 1.21. EventOutput/OscarExt_open
- 1.22. EventOutput/OscarExt_close
- 1.23. EventOutput/OscarExt_write_event_header
- 1.24. EventOutput/OscarExt_write_event_footer
- 1.25. EventOutput/OscarExt_write_particle
- 1.26. EventOutput/Shanghai_open
- 1.27. EventOutput/Shanghai_close
- 1.28. EventOutput/Shanghai_write_event_header
- 1.29. EventOutput/Shanghai_write_event_footer
- 1.30. EventOutput/Shanghai_write_particle
- 1.31. EventOutput/Root_open
- 1.32. EventOutput/Root_close
- 1.33. EventOutput/Root_write_event_header
- 1.34. EventOutput/Root_write_event_footer
- 1.35. EventOutput/Root_write_particle
- 1.36. EventOutput/Root_write_additionalInfo
- 1.37. EventOutput/HepMC3_open
- 1.38. EventOutput/HepMC3_close
- 1.39. EventOutput/HepMC3_write_event_header
- 1.40. EventOutput/HepMC3_write_event_footer
- 1.41. EventOutput/HepMC3_write_particle
- 1.42. EventOutput/HepMC3_write_additionalInfo
- 1.43. EventOutput/nuhepmc_proc_ID_from_buu
- 1.44. EventOutput/NuHepMC_open
- 1.45. EventOutput/NuHepMC_close
- 1.46. EventOutput/NuHepMC_write_event_header
- 1.47. EventOutput/NuHepMC_write_event_footer
- 1.48. EventOutput/NuHepMC_write_particle
- 1.49. EventOutput/NuHepMC_write_additionalInfo
- 1.50. EventOutput/write_real
- 1.51. EventOutput/ValueListAllocate
- 1.52. EventOutput/write_pert
/EventOutput [ Modules ]
NAME
module EventOutput
PURPOSE
This module provides classes for writing event output to disk in different formats.
Currently the following formats are supported:
- "Les Houches" event files
- "OSCAR 2013" event files
- "Shanghai 2014"
- "Root"
- "HepMC3"
- "NuHepMC"
For a description of the Les Houches format, please refer to:
For a description of the OSCAR 2013 format, see:
For a description of the HepMC3 format, see:
For a description of the NuHepMC format, see:
INPUTS
(none)
EventOutput/EventOutputFile [ Types ]
[ Top ] [ EventOutput ] [ Types ]
NAME
type EventOutputFile
PURPOSE
This is an abstract base type to represent a file for event output. It is used as a common interface for LHOutputFile and OscarOutputFile.
SOURCE
type, abstract, public :: EventOutputFile integer, private :: iFile = 0 ! private file handle contains ! deferred type-bound procedures that need to be implemented in the derived classes procedure(open_ifc), deferred :: open procedure(close_ifc), deferred :: close procedure(write_EH_ifc), deferred :: write_event_header procedure(write_EF_ifc), deferred :: write_event_footer procedure(write_part_ifc), deferred :: write_particle procedure :: write_additionalInfo ! type-bound procedures that are implemented in the base class procedure :: write_real procedure :: write_pert end type
EventOutput/LHOutputFile [ Types ]
[ Top ] [ EventOutput ] [ Types ]
NAME
type LHOutputFile
PURPOSE
This is an extended type for event output in LesHouches format. It is derived from the base type EventOutputFile and implements its interfaces.
For a description of the Les Houches format, please refer to:
SOURCE
type, extends(EventOutputFile), public :: LHOutputFile contains procedure :: open => LH_open procedure :: close => LH_close procedure :: write_event_header => LH_write_event_header procedure :: write_event_footer => LH_write_event_footer procedure :: write_particle => LH_write_particle procedure :: write_additionalInfo => LH_write_additionalInfo end type
EventOutput/OscarOutputFile [ Types ]
[ Top ] [ EventOutput ] [ Types ]
NAME
type OscarOutputFile
PURPOSE
This is an extended type for event output in OSCAR 2013 format. It is derived from the base type EventOutputFile and implements its interfaces.
For a description of the OSCAR 2013 format, see:
SOURCE
type, extends(EventOutputFile), public :: OscarOutputFile integer, private :: nEvent = 0 ! store the event number integer, private :: iFE = 0 ! store the iFE value contains procedure :: open => Oscar_open procedure :: close => Oscar_close procedure :: write_event_header => Oscar_write_event_header procedure :: write_event_footer => Oscar_write_event_footer procedure :: write_particle => Oscar_write_particle end type
EventOutput/OscarExtOutputFile [ Types ]
[ Top ] [ EventOutput ] [ Types ]
NAME
type OscarExtOutputFile
PURPOSE
This is an extended type for event output in OSCAR 2013 format. It is derived from the base type EventOutputFile and implements its interfaces.
For a description of the OSCAR 2013 format, see:
This is an extended version whith much more output columns
SOURCE
type, extends(EventOutputFile), public :: OscarExtOutputFile integer, private :: nEvent = 0 ! store the event number integer, private :: iFE = 0 ! store the iFE value contains procedure :: open => OscarExt_open procedure :: close => OscarExt_close procedure :: write_event_header => OscarExt_write_event_header procedure :: write_event_footer => OscarExt_write_event_footer procedure :: write_particle => OscarExt_write_particle end type
EventOutput/ShanghaiOutputFile [ Types ]
[ Top ] [ EventOutput ] [ Types ]
NAME
type ShanghaiOutputFile
PURPOSE
This is an extended type for event output in Shanghai2014 format.
SOURCE
type, extends(EventOutputFile), public :: ShanghaiOutputFile contains procedure :: open => Shanghai_open procedure :: close => Shanghai_close procedure :: write_event_header => Shanghai_write_event_header procedure :: write_event_footer => Shanghai_write_event_footer procedure :: write_particle => Shanghai_write_particle end type
EventOutput/RootOutputFile [ Types ]
[ Top ] [ EventOutput ] [ Types ]
NAME
type RootOutputFile
PURPOSE
This is an extended type for event output in Root format.
SOURCE
type, extends(EventOutputFile), public :: RootOutputFile real, private :: weight contains procedure :: open => Root_open procedure :: close => Root_close procedure :: write_event_header => Root_write_event_header procedure :: write_event_footer => Root_write_event_footer procedure :: write_particle => Root_write_particle procedure :: write_additionalInfo => Root_write_additionalInfo end type RootOutputFile
EventOutput/HepMC3OutputFile [ Types ]
[ Top ] [ EventOutput ] [ Types ]
NAME
type HepMC3OutputFile
PURPOSE
This is an extended type for event output in HepMC3 format.
SOURCE
type, extends(EventOutputFile), public :: HepMC3OutputFile real, private :: weight contains procedure :: open => HepMC3_open procedure :: close => HepMC3_close procedure :: write_event_header => HepMC3_write_event_header procedure :: write_event_footer => HepMC3_write_event_footer procedure :: write_particle => HepMC3_write_particle procedure :: write_additionalInfo => HepMC3_write_additionalInfo end type HepMC3OutputFile
EventOutput/NuHepMCOutputFile [ Types ]
[ Top ] [ EventOutput ] [ Types ]
NAME
type NuHepMCOutputFile
PURPOSE
This is an extended type for event output in the NuHepMC format defined in https://arxiv.org/abs/2310.13211
SOURCE
type, extends(EventOutputFile), public :: NuHepMCOutputFile real, private :: weight real, private :: avg_xsec = 0. real, private :: avg_xsec_variance = 0. integer, private :: particle_count contains procedure :: open => NuHepMC_open procedure :: close => NuHepMC_close procedure :: write_event_header => NuHepMC_write_event_header procedure :: write_event_footer => NuHepMC_write_event_footer procedure :: write_particle => NuHepMC_write_particle procedure :: write_additionalInfo => NuHepMC_write_additionalInfo ! Helper functions for preparing the output procedure :: get_proc_ID => nuhepmc_proc_ID_from_buu end type NuHepMCOutputFile
EventOutput/write_additionalInfo [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine write_additionalInfo(this, iFE, pNode)
PURPOSE
Write additional info about the event, depending on eventtype.
EventOutput/LH_open [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine LH_open(this, pert, nCall, nTimeStep)
PURPOSE
Open a file for event-information output according to the "Les Houches Event Files" standard.
EventOutput/LH_close [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine LH_close(this)
PURPOSE
Close a file after outputting Les-Houches event information.
EventOutput/LH_write_event_header [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine LH_write_event_header(this, nParts, nEvent, wgt, iFE)
PURPOSE
Write the header for a Les-Houches event, including the number of particles and the event weight.
EventOutput/LH_write_event_footer [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine LH_write_event_footer(this)
PURPOSE
Write the footer that closes a Les-Houches event.
EventOutput/LH_write_particle [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine LH_write_particle(this, part)
PURPOSE
Write a single particle in Les-Houches format.
EventOutput/LH_write_additionalInfo [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine LH_write_additionalInfo(this, iFE, pNode)
PURPOSE
Write additional info about the event, depending on eventtype.
This routine tries to find additional information about the event. It tries routines for different event types, which only return some information, if it was really stored.
The following cases are handled:
- For eventtype "HiLep", the following line is added: # 14 nu Q2 eps phiLepton Eventtype (14 is the magic number of "HiLepton")
- For eventtype "neutrino", the following line is added: # 5 Eventtype Weight momLepIn(0:3) momLepOut(0:3) momNuc(0:3) (5 is the magic number for neutrino events)
- For eventtype "heavyIon", the following line is added: # 1 b (1 is the magic number of "heavyIon", b is the impact parameter in fm)
- For eventtype "hadron", the following line is added: # 300 b (300 is the magic number of "hadron", b is the impact parameter in fm)
EventOutput/Oscar_open [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Oscar_open(this, pert, nCall, nTimeStep)
PURPOSE
Open a file for event-information output according to the "OSCAR 2013" standard.
EventOutput/Oscar_close [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Oscar_close(this)
PURPOSE
Close a file after outputting OSCAR 2013 event information.
EventOutput/Oscar_write_event_header [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Oscar_write_event_header(this, nParts, nEvent, wgt, iFE)
PURPOSE
Write the header for an OSCAR 2013 event, including the number of particles and the event weight.
EventOutput/Oscar_write_event_footer [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Oscar_write_event_footer(this)
PURPOSE
Write the footer that closes an OSCAR 2013 event.
EventOutput/Oscar_write_particle [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Oscar_write_particle(this, part)
PURPOSE
Write a single particle in OSCAR 2013 format.
EventOutput/OscarExt_open [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine OscarExt_open(this, pert, nCall, nTimeStep)
PURPOSE
Open a file for event-information output according to the "OSCAR 2013" standard.
EventOutput/OscarExt_close [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine OscarExt_close(this)
PURPOSE
Close a file after outputting OSCAR 2013 event information.
EventOutput/OscarExt_write_event_header [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine OscarExt_write_event_header(this, nParts, nEvent, wgt, iFE)
PURPOSE
Write the header for an OSCAR 2013 event, including the number of particles and the event weight.
EventOutput/OscarExt_write_event_footer [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine OscarExt_write_event_footer(this)
PURPOSE
Write the footer that closes an OSCAR 2013 event.
EventOutput/OscarExt_write_particle [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine OscarExt_write_particle(this, part)
PURPOSE
Write a single particle in OSCAR 2013 extended format.
EventOutput/Shanghai_open [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Shanghai_open(this, pert, nCall, nTimeStep)
PURPOSE
Open a file for event-information output in Shanghai2014 format.
EventOutput/Shanghai_close [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Shanghai_close(this)
PURPOSE
Close a file after outputting event information in Shanghai2014 format.
EventOutput/Shanghai_write_event_header [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Shanghai_write_event_header(this, nParts, nEvent, wgt, iFE)
PURPOSE
Write the header for an event in Shanghai2014 format, including the number of particles and the event weight.
EventOutput/Shanghai_write_event_footer [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Shanghai_write_event_footer(this)
PURPOSE
Write the footer that closes a event in Shanghai2014 format.
EventOutput/Shanghai_write_particle [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Shanghai_write_particle(iFile, part)
PURPOSE
Write a single particle in Shanghai2014 format.
EventOutput/Root_open [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Root_open(this, pert, nCall, nTimeStep)
PURPOSE
Open a file for event-information output in Root format.
EventOutput/Root_close [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Root_close(this)
PURPOSE
Close a file after outputting event information in Root format.
EventOutput/Root_write_event_header [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Root_write_event_header(this, nParts, nEvent, wgt, iFE)
PURPOSE
Write the header for an event in Root format, including the number of particles and the event weight.
EventOutput/Root_write_event_footer [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Root_write_event_footer(this)
PURPOSE
Write the footer that closes a event in Root format.
EventOutput/Root_write_particle [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Root_write_particle(this, part)
PURPOSE
Write a single particle in Root format.
EventOutput/Root_write_additionalInfo [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine Root_write_additionalInfo(this, iFE, pNode)
PURPOSE
add additional info about the event, depending on eventtype.
This routine tries to find additional information about the event. It tries routines for different event types, which only return some information, if it was really stored.
The following cases are handled:
- For eventtype "HiLep", the following info is added: nu Q2 eps phiLepton Eventtype
- For eventtype "neutrino", the following info is added: Eventtype Weight momLepIn(0:3) momLepOut(0:3) momNuc(0:3)
- For eventtype "heavyIon", the following info is added: b
- For eventtype "hadron", the following info is added: b
EventOutput/HepMC3_open [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine HepMC3_open(this, pert, nCall, nTimeStep)
PURPOSE
Open a file for event-information output in HepMC3 format.
EventOutput/HepMC3_close [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine HepMC3_close(this)
PURPOSE
Close a file after outputting event information in HepMC3 format.
EventOutput/HepMC3_write_event_header [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine HepMC3_write_event_header(this, nParts, nEvent, wgt, iFE)
PURPOSE
Write the header for an event in HepMC3 format, including the number of particles and the event weight.
EventOutput/HepMC3_write_event_footer [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine HepMC3_write_event_footer(this)
PURPOSE
Write the footer that closes a event in HepMC3 format.
EventOutput/HepMC3_write_particle [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine HepMC3_write_particle(this, part)
PURPOSE
Write a single particle in HepMC3 format.
EventOutput/HepMC3_write_additionalInfo [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine HepMC3_write_additionalInfo(this, iFE, pNode)
PURPOSE
add additional info about the event, depending on eventtype.
This routine tries to find additional information about the event. It tries routines for different event types, which only return some information, if it was really stored.
The following cases are handled:
- For eventtype "HiLep", the following info is added: Eventtype
- For eventtype "neutrino", the following info is added: Eventtype
- For eventtype "heavyIon", the following info is added: b
- For eventtype "hadron", the following info is added: b
For "neutrino" and "HiLep", also the initial vertex is added:
- initial lepton and nucleon; status: 4 = beam particles
- outgoing lepton; status: 3 = documentation
For "Hilep", the position of the vertex is given.
EventOutput/nuhepmc_proc_ID_from_buu [ Functions ]
[ Top ] [ EventOutput ] [ Functions ]
NAME
function nuhepmc_proc_ID_from_buu(this, buu_prod_id)
PURPOSE
Convert integer codes describing a GiBUU event into a NuHepMC proc_ID code
EventOutput/NuHepMC_open [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine NuHepMC_open(this, pert, nCall, nTimeStep)
PURPOSE
Open a file for event-information output in NuHepMC format.
EventOutput/NuHepMC_close [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine NuHepMC_close(this)
PURPOSE
Close a file after outputting event information in NuHepMC format.
EventOutput/NuHepMC_write_event_header [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine NuHepMC_write_event_header(this, nParts, nEvent, wgt, iFE)
PURPOSE
Write the header for an event in NuHepMC format, including the number of particles and the event weight.
EventOutput/NuHepMC_write_event_footer [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine NuHepMC_write_event_footer(this)
PURPOSE
Write the footer that closes a event in NuHepMC format.
EventOutput/NuHepMC_write_particle [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine NuHepMC_write_particle(iFile, part)
PURPOSE
Write a single particle in NuHepMC format.
EventOutput/NuHepMC_write_additionalInfo [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine NuHepMC_write_additionalInfo(this, iFE, pNode)
PURPOSE
add additional info about the event, depending on eventtype.
EventOutput/write_real [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine write_real(this, parts)
PURPOSE
Do the actual printout for real particles.
NOTES
For the case of real particles, one event simply corresponds to one ensemble.
EventOutput/ValueListAllocate [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine ValueListAllocate(ValueList, n1)
PURPOSE
Do the allocation stuff for the Particle Info List.
EventOutput/write_pert [ Subroutines ]
[ Top ] [ EventOutput ] [ Subroutines ]
NAME
subroutine write_pert(this, parts)
PURPOSE
Do the actual printout for perturbative particles.
NOTES
We have to sort the particles according their "firstevent" field. Therefore we allocate an array of "tParticleList". Unfortunately we can not use the "firstevent" entry directly as array index, since this is not starting with 1 and continously increasing for all kind of eventtypes. Therefore we (ab)use the module "PILIndex", which implements methods of "indexing". (We do not use the possibility of reallocating as provided by the module "PILIndex".)