| 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              -- ^ Corresponds to status code -1.
>   | OutgoingFinal         -- ^ Corresponds to status code +1.
>   | IntermediateSpaceLike -- ^ Corresponds to status code -2.
>   | IntermediateResonance -- ^ Corresponds to status code +2.
>   | DocumentationOnly     -- ^ Corresponds to status code +3.
>   | IncomingBeam          -- ^ Corresponds to status code -9.
> 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)