gibuu is hosted by Hepforge, IPPP Durham
GiBUU

TABLE OF CONTENTS


/EventOutput [ Modules ]

[ Top ] [ 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 "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".)