Each CPM needs to be told which algorithm to run for each of the 16 configurable e/gamma or tau/hadron thresholds. This must be the same for all CPMs in the system. There should therefore be a single object (L1ClusterThreshold) per threshold for the whole system.
Each of the 16 thresholds actually consists of four separate values: the
e/gamma or tau/hadron cluster threshold, the EM layer isolation
threshold, the Hadronic layer isolation threshold and the Hadronic
layer core veto threshold. The latter is only used in the e/gamma
algorithm. Although in practice these values will be the same for
all channels of all CPMs, in principle they may vary across the eta
range, and possibly to compensate for dead calorimeter channels.
The corrections for dead channels and transition regions between the
different calorimeters could be applied at the point of loading the
thresholds, or by the program which creates the threshold objects
from the trigger menu. Even in the former case, there may be physics
reasons in the trigger menu leading to an eta dependent threshold.
So it is probably best to assume that the trigger menu may generate
more than just a single value per threshold.
The complete collection of threshold data will need to be stored in
the conditions database. To avoid storing excessive quantities of
identical data, the threshold definition should probably be implemented
as a list of threshold values and the {phi,eta} regions in which they
apply. However the API for the L1ClusterThreshold should hide
the implementation and the L1ClusterThreshValues should not be
visible to the rest of the software.