## Error Checks

There is a few settings related to error checking during program execution. Many other checks are performed as well, but do not have any specific setting related to themselves.

There are a few ways in which an event can be vetoed, the most common being a User Hooks test. Normally this will simply mean that the next parton-level configuration is selected inside the `Pythia::next()` routine, without any need for a user intervention. With this option switched on, however, `Pythia::next()` will return `false`. It is then up to the user to decide what to do next.
Check the particle data tables for potential problems during initialization. This includes inconsistent use of charge in particle names, inconsistent setup of mass, mass range, width and lifetime, sum of branching ratios not unity (allowed but discouraged) or charge not conserved in a decay channel. Warnings should be viewed as reasons to check further, but need not indicate a true problem, and also not all problems may be caught. The `pythia.particleData.checkTable(level)` method, used for these checks, may also be called directly.
The level of verbosity and checks of particle data, if switched on. `minimal amount of checks, e.g. that no channels open.` `further warning if individual channels closed, except for resonances.` `also print branching-ratio-averaged threshold mass except for resonances.` `as 1, but include resonances in detailed checks.` `as 2, but include resonances in detailed checks.`
When an event has been successfully generated, check that the final event record in `event` does not contain any unphysical particles, or nonconserved charge or energy-momentum. If this check fails, then `pythia.next()` obtains the value `false`, i.e. the event is counted as aborted.
When `Check:event = on` and the event is checked as above, further checks are made that all mother and daughter pointers are consistently set. Specifically that all daughters in the `daughterlist` (or `motherList`) have the particle in their respective `motherList` (or `daughterlist`). This operation takes a bit more time than the other error tests (of the order of 10% of what it takes to generate the event in the first place), and so could be switched off to save time.
Check that Pythia supports the beam setup, i.e. if the beams are the allowed combinations described in Beam Parameters. If turned off, all checks of allowed beam combinations will be skipped, as can e.g. be useful to allow processing of Les Houches event files with exotic beam structure.
The number of erroneous events, in the above check, for which event listing and other detailed information will be printed. After that, only the normal error messages will be issued. Error counters are always updated, and accumulated numbers can be shown with `pythia.stat()` at the end of the run.
Maximum allowed summed deviation of E, p_x, p_y and p_z between the incoming beams and the final state, as a fraction of the initial energy, above which the event is counted as aborted. (Unfortunately roundoff errors do not scale linearly with the energy, and also have a very long tail. So while most events at lower energies may be correct to better than 1e-10, at LHC it does not have to signal any fundamental bug if also the default tolerance above is violated occasionally.)
A check on the same summed deviation as above, but counted as a warning rather than an error, and not leading to the event being classified as aborted.
For each particle the maximum allowed deviation between the mass calculated from energy-momentum and the bookkept mass, as a fraction of the energy. This energy is taken to be at least 1 GeV, in order to avoid harmless problems at very low energies (gluons mainly).
A check on the deviation as above, but counted as a warning rather than an error.