2016-09-06 RecSys v20r1

This version uses Gaudi v27r1, LHCb v41r1 and Lbcom v19r1 (and LCG_84 with ROOT 6.06.02)

This version is released on master branch.

Algorithm improvements

[MR !122] LHCBPS-1620: Calo HLT Speed update
A few small speed improvements, to how trig functions are used
[MR !193] Implement counter switch in calo reco packages
Speeds up reconstruction by switching off most counters by default
[MR !138] RICH Optimisations for a 'Ultimate speed' tuning
Some more technical optimisations, that have no impact on PID performance, but are slightly beneficial for HLT2.
Saves about 3% of the RICH timing, so roughly 20% * 3% = ~0.5% in HLT2.
[MR !114, !120] RICH Reconstruction Speedups
Faster RICH Global PID minimisation through use of additional data caches.
Optimisation of the pixel background tool.
Change IRichPhotonReconstruction reconstructPhoton() to return a boolean instead of StatusCode
[MR !109] ANNPID: Use std algorithm instead of simple loop to fill MVA inputs. Faster...

New functionality

[MR !110] Add new tool "RichFlippedDetailedTrSegMakerFromRecoTracks".
Creates the RICH segments in the same way as the standard tool, but then flips the track state information in X and Y.
Useful for background studies.

Bug fixes

[MR !192] Fix bug whereby CCEscan property was not initialised in PatVeloPhiHitManager.cpp
This bug was causing CCE scan to be called when not explicitly required. The flag has now been initialised to false.
[MR !147] Properly initialise cached variables for Deuteron Rich PID
Fixes a few bugs where deuteron was not being properly considered.
The only significant one is in RichSellmeirFunc as this is the only one actively used in production.
There are also a few minor performance tweaks as well.
[MR !119] Fix PrForwardTracking.cpp to always create an output tracks container even if there are no input tracks

Fixes to tests

[MR !200] Rich: don't print pointer values in debug statements
As it just leads to annoying diffs in platform comparisons...
[MR !196] Update LumiCheckCondDB to print times using UTC instead of 'local' time
Using local time means the QM test results differ depending on the time zone they are run in..
As a side product perform a little algorithm clean up at the same time.
[MR !131] Streamline DumpLumiEvents
Change specification of input file so it also works outside CERN
Improve const-correctness
Flag potential double delete...
[MR !171, !168] RecSys: Update configurables list in Configurables test reference

Code modernisation and cleanups

[MR !201] Rec/RecAlgs : C++11 cleanup
[MR !199] GlobalReco C++11 cleanup.
[MR !198] Update Rec/ChargedProtoANNPID
Adds some final specifiers, removes default destructor implementations and use STL algorithms more.
[MR !190] Modernize Track{To,From}DST
Invert lookup-tables to simply things
Partition in-situ instead of using map of vectors
Avoid extra clone of states
[MR !189] Streamline Run2 GhostID
Make TMVA ReadMLP constructor const correct
Prefer std::vector over int*
Prefer std::unique_ptr over raw pointer + delete
Streamline variablenames lookup
[MR !184] TrackFitEvent: make event model classes 'final' when possible
Qualify event model classes as 'final'
const fix in VPMeasurement
And a bit of C++11 modernization
[MR !167] Migrate ITrackVertexer to return std::unique_ptr
Update implementations and users of ITrackVertexer accordingly (which implicitly fixes a memory leak in the Velo monitor code)
[MR !162, !186] Consolidate MeasurementProviders
Remove initialize,nominalZ from IMeasurementProvider (not needed)
IMeasurementProvider::addToMeasurments: use range of LHCbIDs instead of vector of LHCbIDs
Increase interface version number of IMeasurementProvider
Replace VPMeasurementProvider with MeasurementProviderT<VP>
Streamline MeasurementProviderT, reduce duplication of code
[MR !166] Modernize TrackV0Finder
Prefer STL algorithms
Prefer std::unique_ptr over raw pointers
Prefer range based loops
Remove superfluous destructor
[MR !152] Hit creator cleanup
Eliminate redundant vector of sorted OT hits
Remove redundant destructors
Remove region-wise OT decoding
Use generic callback to get access to ST clusters
Add some LIKELY / UNLIKELY hints
[MR !112, !107] Further consolidation of HitManagers and OT/ST hit cleaners
[MR !155] Modernize PatVeloTT
Remove redundant destructors, initalize and finalize methods
Flag local data classes as 'final', remove virtual destructors
Replace lookup table which is in every single PatVTTTrack by use of 'popcount'
Prefer emplace_back over push_back
Prefer STL algortihms over raw loops
Reduce scope of local variables as much as possible
Reserve vectors with reasonable defaults if possible
Prefer removing 'in situ' over copying selected items followed by assignment to the original
Make PatVeloTT::matchingTracks linear instead of quadratic in the number of hits
[MR !153] C++11 modernization PatSeedFit
Remove unneccessary interfaceID
Qualify virtual function implementation declarations with override instead of virtual
Prefer direct member initialization
Prefer nullptr over 0
Prefer unnamed namespace for local sortadaptor
Prefer emplace_back over push_back
Prefer switch over if
[MR !135] Modernization of TrackUtils
Replace BOOST_FOREACH with range-based for
Remove redundant destructor
Replace some virtual with override
[MR !108] Use C++14 generic, variadic lambda to implement vectorization in PatFwdTool
[MR !159] HltMonitors: Adapt to use of either string or DataObjectHandleBase as property
[MR !183] Various RICH Improvements
[MR !178] RichPIDMerge : C++11 modernise.
[MR !177] RichENNRingFinder : C++11 modernisations
[MR !174] RichGlobalPID: Fix a clang virtual warning
[MR !158] Miscellaneous C++11 updates to the RICH reconstruction.
Convert a number of properties previously using STL vectors to fixed sized STL arrays. Better type (size) safety and a small performance improvement.
Add a common base class for all photon predictors in RichRecPhotonTools.
Add some more virtual specifiers
[MR !151] Rich: improvements along the lines or MR !147, with better member initialisation.
[MR !160] Adapt to modernization changes in CaloDataFunctor
See MR LHCb!174
[MR !170] TrackV0Finder: add <numeric> for gcc 6
[MR !125] Fix compilation with GCC 6.1
See LHCBPS-1622
[MR !175, !173] Fix Clang compilation warnings
VeloCCEScanMonitor: fix -Wabsolute-value and -Wsign-compare warnings
DefaultVeloPhiHitManager, DefaultVeloRHitManager, IOTHitCreator are class, not struct
Prefer nullptr over NULL in initialisation
Remove unnecessary includes
Cleanup indentation
[MR !127] Minor backward compatible change in CaloEMuPIDMon.cpp to work around an issue with gaudi/Gaudi!182
[MR !104] Added .gitignore and .gitattributes
See LHCBPS-1599