Improvements to BeamSpotMonitor
Related MRs and Issues
Part of a set with Moore!3251 (merged) and MooreOnline!358 (merged).
Related to issue #288.
Description
Improvements to the BeamSpotMonitor algorith, including
- Lighter representation of cached values
- Initialization of cached conditions from most recent conditions file
- Fixed histogram definitions so that their limits can be set via properties.
- Changed configuration of thresholds so that subsets of the thresholds can be applied
- Implemented publishing with
LHCb::PublishSvc
for online integration - New histograms to record unpubnlished conditions statistics
- Switch to suppress cache and pulbishing updates when VELO is open
Changes to the configuration of thresholds
This MR changes the syntax and functionality of the threshold configuration.
Before this MR (old and busted)
The original implementation of BeamSpotMonitor always applied thresholds to each of the 9 values of the conditions. Each threshold was configured with a corresponding property. For example, see this clip from the test script Moore/Hlt/RecoConf/options/hlt1_pvs_with_beamspotmoni_2023.py
at aa919797:
beam_spot_moni = BeamSpotMonitor(
name="BeamSpotMonitor",
...
DeltaXMax=0.0 * mm,
DeltaYMax=0.0 * mm,
DeltaZMax=0.0 * mm,
DeltaXXMax=0.0 * mm2,
DeltaXYMax=0.0 * mm2,
DeltaYYMax=0.0 * mm2,
DeltaZXMax=0.0 * mm2,
DeltaYZMax=0.0 * mm2,
DeltaZZMax=0.0 * mm2)
After this MR
This MR allows an arbitrary subset of the thresholds to be set. Only the configured thresholds will be tested in the decision to update conditions. The thresholds are now set through a single property MaxAbsDeltaMap
that is a std::map<std::string, double>
. The allowed keys correspond to the description of the example conditions in https://gitlab.cern.ch/lhcb-conddb/lhcb-conditions-database/-/blob/b85b0cb6b433fef675540fdb7562efbff2f70fff/Conditions/LHCb/Online/InteractionRegion.yml/.pool/v0:
-
"x"
,"y"
, and"z"
for thresholds of the elements ofInteractionRegion.position
-
"xx"
,"xy"
,"yy"
,"xz"
,"yz"
, and"zz"
for the thresholds of the elements ofInteractionRegion.spread
-
"rho"
for threshold on transverse displacement ofInteractionRegion.position
For example, configuring only the x and y thresholds would be done like this:
beam_spot_moni = BeamSpotMonitor(
name="BeamSpotMonitor",
...
MaxAbsDeltaMap={
'x': 0.02 * mm,
'y': 0.02 * mm,
})
Implementation of PublishSvc publication
The usage of LHCb::PublishSvc
is patterned after that in Alignment/TAlignment/src/AlignOnlineIterator.cpp. When active (configurable according to the property OnlineMode
), immediately following the write of a new conditions file BeamSpotMonitor will publish a message containing the run number during which the counters for the newly written conditions were accumulated and the name of new conditions file.
The publishing is configured by the following new properties of BeamSpotMonitor:
-
OnlineMode
: bool: defaults tofalse
: Toggle for activating use of the PublishSvc -
PublishSvc
: string: defaults to"LHCb::PublishSvc"
: Name of the service implementing IPublishSvc -
KnownAsToPublishSvc
: string: defaults to"LHCb/Online/InteractionRegion"
: Name of the published information
Because the Gaudi IPublishSvc interface is used for all invocations of the publishing service, there is no direct build dependence on the Online project. However, BeamSpotMonitor will throw an exception if OnlineMode=True
and the service named by the PublishSvc
property is not available.