| This module provides data structures for HEP events, as outlined by the Les
Houches Accord (hep-ph/0109068v1). It attempts to be as close as possible to
a direct haskell translation of the accord. Other relevant documents include:
* L. Garren, I. G. Knowles, T. Sjostrand and T. Trippe, Eur. Phys. J. C
15, 205 (2000).
* H. Plothow-Besch, Comput. Phys. Commun. 75, 396 (1993); CERN Program
Library Long Writeup W5051 (2000); refer to
.
> module Data.LHA where
| Describes a generated event.
> data Event = Event
> { nPart :: Int
^ The number of particles in this event.
> , evProcId :: Int
^ The ID of the subprocess used to generate this event.
> , evWeight :: Double
> , scale :: Double
^ The scale of the event, in GeV.
> , aQED :: Double
> , aQCD :: Double
> , parts :: [Particle]
> }
| Describes the properties of an event generation run. Note that this data
structure does not contain the generated event information.
> data Run = Run
> { runBeam :: (Beam, Beam)
^ The properties of the two beams being used in this run.
> , idwt :: Int
^ Switch dictating how the event weights are to be interpreted.
> , nProc :: Int
^ The number of different subprocesses being used.
> , procs :: [Subprocess]
^ List of all subprocesses being used.
> }
| Represents the properties of a single beam particle.
> data Beam = Beam
> { beamPDG :: Int
^ ID of the beam particle according to the Particle Data Group convention.
> , beamE :: Double
^ Energy in GeV of the beam particle.
> , pdfg :: Int
^ Author group for the beam, according to the Cernlib PDFlib specification.
> , pdfs :: Int
^ PDF set ID for the beam, according to the Cernlib PDFlib specification.
> }
| Describes the properties of a subprocess.
> data Subprocess = Subprocess
> { procXSec :: Double
^ The cross-section of this subprocess, in pb.
> , procXErr :: Double
^ The statistical error associated with the value of procXSec.
> , procXMax :: Double
> , procId :: Int
> }
| Describes a single particle component of a generated event.
> data Particle = Particle
> { partPDG :: Int
^ ID of the particle according to the Particle Data Group convention.
> , status :: ParticleStatus
^ Status code of the particle.
> , mothers :: MaybePair Int
^ The mother particles.
> , iColor :: (Int, Int)
> , partPx :: Double
> , partPy :: Double
> , partPz :: Double
> , partE :: Double
> , partM :: Double
> , lifetime :: Double
^ The lifetime of the particle, in mm.
> , spin :: Double
> }
| Status codes for particles.
> data ParticleStatus
> = Incoming
> | OutgoingFinal
> | IntermediateSpaceLike
> | IntermediateResonance
> | DocumentationOnly
> | IncomingBeam
> statusToInt Incoming = (1)
> statusToInt OutgoingFinal = (1)
> statusToInt IntermediateSpaceLike = (2)
> statusToInt IntermediateResonance = (2)
> statusToInt DocumentationOnly = (3)
> statusToInt IncomingBeam = (9)
> statusFromInt (1) = Incoming
> statusFromInt (1) = OutgoingFinal
> statusFromInt (2) = IntermediateSpaceLike
> statusFromInt (2) = IntermediateResonance
> statusFromInt (3) = DocumentationOnly
> statusFromInt (9) = IncomingBeam
> data MaybePair a = PZero | POne a | PBoth (a, a)