2019-02-13 LHCb v50r3

This version uses Gaudi v31r0 and LCG_95 with ROOT 6.16.00.

This version is released on `master` branch.

Built relative to LHCb v50r2, with the following changes:

New features

  • Add exec reports writer, !1716 (@nnolte)
    Writes the nodestates into the TES, generic prototype version of a DecReportsWriter

  • Allow make_span with two span iterators as argument, !1694 (@graven)

  • Add BrokenLineTrajectory, !1693 (@graven)
    A trajectory which is a collection of LineTraj. This is intended to replace the use of PiecewiseTrajectory in IT/TT.

  • Add LHCb::range::single, !1674 (@graven)

    • class which can be used as a range of T, but which is actually a single element -- i.e. this looks like a vector which always has size 1.
    • Useful if an interface is written in terms of a range, but one wants to call it with only a single element...
  • Bypassing measurement providers for fitting, !1637 (@pkardos)
    Adds data to the Track the parametrized fitter can readily use. Allows for the bypassing of measurement providers and costly indirect access via LHCbIDs.

  • Adapt to new Gaudi::Algorithm, !1608 (@clemenci)
    requires gaudi/Gaudi!703

Enhancements

  • changed FT raw data format, !1709 (@sesen)
    The new encoding and decoding version is v6. See detail in MR description

  • Return concrete trajectories by value from detectors, !1708 (@graven)
    Instead of returning std:unique_ptr<Trajectory> return, by value, concrete trajectories.

  • Fix dangerous DeVP::sensor interface, !1701 (@graven)

    • deprecate sensorOfChannel(const LHCb::VPChannelID channel)
    • add sensor(LHCb::VPChannelID channel) const
  • DeSTSector: use BrokenLineTrajectory instead of PiecewiseTrajectory, !1698 (@graven)
    ... and make DeSTSensor return LineTraj by value instead std::unique_ptr
    Note: this (implicitly) eliminates the (effect of the) bug in PiecewiseTrajectory! (see !1695)

  • No longer use states from fitResult in closestState, !1696 (@graven)

  • Add some standard debug sanitizer builds to PlatformInfo, !1680 (@jonrob)

  • Tweak v2::Track, !1672 (@graven)

    • have setters return a reference to *this so setters can be daisychained
    • make setLhcbIDs more generic so it can (also) accept lazy ranges
    • re-order data members so that the most used ones fit in a single cache line
    • remove headers which are no longer referenced
  • prefer std::vector over KeyedContainer as output of MuonRawToCoord, !1652 (@graven)
    closes #19

  • Reduce the amount of sorting, !1646 (@graven)

    • use std::nth_element to get the 'first' station/region
    • then use std::partition to partition 'the same' station/region
    • then call addCoordsCrossingMap
    • finally, move to the next station/region
      addresses a subset of #19
  • Removed unused data members from Track V2, !1642 (@pkardos)

    • ancestors: written only 2-3 times, but never read -> deleted
    • extraInfo: 2 actual uses -> replaced by 2 doubles
    • fitResult: never written (, never read) -> deleted
      Addresses #16
  • Small update to .gitignore, !1630 (@clemenci)

Bug fixes

  • Update DDDB default tags following lhcb-conddb/DDDB#2, !1736 (@cattanem)

    • dddb-20190206 for 2010
    • dddb-20190206-1 for 2011
    • dddb-20190206-2 for 2012 and 2013
    • dddb-20190206-3 for 2015, 2016, 2017 and 2018
      Fixes antideuteron name in ParticleTable.txt
  • Fixed code checking counters/Histogram for when no ref exists, !1705 (@sponce)
    The histogram checking introduced in !1661 had a bug that is only visible when no ref is present for a counter which appears in the output, and was causing affected nightly QMTests to fail with the cryptic error

    ERROR:root:Exception caught when trying to instantiate qmt test python object  
    ERROR:root:not all arguments converted during string formatting  
  • Add unit test for PiecewiseTrajectory, and fix PiecewiseTrajectory such that it passes, !1695 (@graven)

  • Remove unused variables uncovered by the compiler after !1668, !1671 (@graven)

  • Resolve LHCBPS-1815 "Fix incorrect system path in git conddb", !1665 (@clemenci)
    Fixes to add_files_to_gitconddb.py

    • fix change of XML SYSTEM URLs
    • add support for single file insertion
  • Adapt to ROOT 6.16 signature of R__zipMultipleAlgorithm, !1664 (@clemenci)
    The change is backward compatible.
    See https://github.com/root-project/root/pull/3005 (master) and https://github.com/root-project/root/pull/3093 (v6-16-00-patches)

Thread safety

  • wait for threads to end via tbbs observer, !1678 (@nnolte)

Code modernisations and cleanups

  • Moved UnpackMC algorithms to DataHandles, !1738 (@sponce)

  • Remove dummy dependency on CORAL, !1724 (@clemenci)

  • Reduce scope of GOD generated operator<<, !1720 (@graven)
    Should result in less verbose compiler error messages in case operator<< is used on a type (in namespace LHCb) for which no operator<< is defined, as the operators<< generated by GOD won't be considered as alternative

  • Streamline MuonRawToCoord, !1719 (@graven)

    • do not use Error(...) but instead throw exception
    • put all code in .cpp file
    • push some code into freestanding function instead of member function
  • LHCbMath - Clean up SIMD compilation flags, explicitly disabling unwanted extensions in specific tests, !1715 (@jonrob)
    Explicitly adds -mno-<xyz> build flags as required to the various SIMD test applications, to make sure unwanted features are disabled, even if they are implicitly enabled via the CMTCONFIG platform setting.

  • Fix incompatibility with gaudi/Gaudi!577, !1714 (@clemenci)

  • BrokenLineTrajectory: fix check for forward iterator, !1713 (@graven)
    Fix to strict check for forward iterator -- make sure that more constrained iterators (eg. random access iterators) are still recognized as forward iterator

  • added constexpr and removed a double promotion, !1706 (@nnolte)

  • Minor changes to help formatting, !1702 (@clemenci)

  • use C++17 std::clamp, !1700 (@graven)

  • Make DeMuonDetector::{Tile2XYZ,Tile2Station} const, !1699 (@graven)

  • UT does not require PiecewiseTrajectory, !1692 (@graven)

  • Migrate LHCb::TrackFitResult,Measurement,Node to Rec, !1691 (@graven)

    • define ITrackFitResult as base class of TrackFitResult implementations
    • resolve circular dependency between TrackEvent and LHCbTrackInterfaces by forward declaring classes in interfaces, and move UTHit to DigiEvent
  • Simplify muoncoord, !1670 (@graven)

    • remove setters and instead provide constructor which fully constructs
    • remove std::vector of tiles, as a MuonCoord contains either one or two tiles, and two tiles use less space than a single vector, and avoids extra heap allocation -- so use a boost::static_vector with a fixed capacity of two.
    • remove explicit 'crossed' data member -- instead, use the # of contained MuonCoords
    • adapt code which creates MuonCoords
  • make MuonTileID final, and remove explicit destructor, !1668 (@graven)

  • fix odr violations, !1667 (@graven)

  • change ICaloFutureClusterTool, ICaloFutureSubClusterTag, and ICaloFutureHypoTool IFs to accept ref intstead of ptr, !1662 (@dgolubko)
    Addresses Rec#42

  • Decommissioning of COOL, !1638 (@clemenci) [LHCBPS-1789,LHCBPS-1813]

  • Fix compilation with gaudi/Gaudi!678, !1350 (@cattanem)

Monitoring changes

Changes to tests

  • Update LHCbTest to support checking of 1D histograms and profile histograms, !1661 (@jonrob)
    Extends the logic used to compare counters to also compare the stats printed for 1D histograms and profile histograms.

  • Normalize HLTControlFlowMgr measurements, !1704, !1723 (@cattanem)