An important goal of Degas 2 is to allow fairly general Monte Carlo problems to be specify by the user and to allow these to be solved with no or minor additional code needed. We discuss here how to achieve this goal as it applies to scoring.
We begin by cataloging where Degas 2 might need to accumulate scores:
Within Degas 2, all surfaces and volumes contain lists of what needs to be scored. This given information on (a) what need to be computed and (b) how it is to be stored. (a) usually points to a lookup table or interpolation function, but may also point to a specialized routine. (b) will point to a multi-dimensional array which is stored within a one-dimensional array. This allows arbitrary dependencies to be handled in a clean way.
An important example where this is need is in the scoring of information to simulate diagnostics. In the case of radiation detector arrays, for example, we need to score on the element of the detector arrays (which translates into a geometrical specification within Degas 2) and often on a frequency interval (which translates into a resolved velocity component). This can be handling in Degas 2 by computing lines of sight from the detector into the plasma and recording the lengths and directions of the each segment of the line of sight as it intersects the zones in Degas 2. (This technique could also be extended to deal with the reception of reflected radiation by the detector.)