MODULE: A module is a set of entrypoints gathered under a single name. For example, trigsel could be the name of a module that checks trigger bits.
PATH: This defines the order in which analysis modules are executed. The analysis modules can make histograms or ntuples. They may add reconstructed banks to the data structure. They may also set a flag indicating whether the event is ``good'' or ``bad''; an optional filter will allow or prevent the event from going on to the next module.
READ-MODULE: This is a special module executed before the first module in the analysis path. It is expected to read in each event and put the event data somewhere that the analysis modules can access. This happens mostly outside the intervention of DASH. However DASH does expect the read-module to report the run and event number.
WRITE MODULE: This is a special module executed after the last module in the analysis path. It is expected to write out each event that it acts on. Unlike reading, writing out events is optional and may be controlled with the OUTPUT command.
ENTRYPOINT: An entrypoint is one of several instances when your module gets called. The most important is the event entrypoint, which gets called once per event. The list of entrypoints and when they get called:
A module is not required to use all of the entrypoints, or any particular entrypoint.
FILTER: This is a capability that any module may have. Inside a module, the user may call DASH_PASS_EVT or DASH_FAIL_EVT. In the first case, the analysis will continue on to the next module in the path (which might be the write module). In the second case, no further modules will be executed for this event; instead, the program will go on to the next event and begin the analysis path at the beginning.
TALK: This entrypoint is called when you give the TALK command. It is intended to give you interactive access to a module, for example to set flags or parameters.
DECLARE: DASH works by storing the addresses of the entrypoints of a module; this is called declaration. This involves a special subroutine that you write and link with your program.