-
Marco Cattaneo authoredMarco Cattaneo authored
2018-08-06 LHCb v50r1
This version uses Gaudi v30r3 and LCG_93 with ROOT 6.12.06.
This version is released on `master` branch.
Built relative to LHCb v50r0, with the following changes:
New features
-
LoKiGen: add several new symbols for specific status of HepMC-particles, !1403 (@ibelyaev)
Cherry-picked from !1399 inrun2-patches
-
From ReDecay flag for MCParticle, !1193 (@dmuller)
Cherry picked from !1186 in2018-patches
-
LoKiCore : add new class Polarization, !1190 (@ibelyaev)
Cherry-picked from !1188 in2018-patches
Enhancements
-
Make RawBanks returned from RawEvent 'const', !1411 (@graven)
- which implies changing the return type of LHCb::RawEvent::banks,
fromstd::vector<RawBank*>
toLHCb::span<const RawBank*>
and fixing the fall-out - add
const
in lots of places - prefer
auto
over explicitly specifying the type, to make the
code less dependent on concrete types, and more on behaviour
- which implies changing the return type of LHCb::RawEvent::banks,
-
Minor updates to Kernel/PartProp, !1406 (@ibelyaev)
Cherry-picked from !1400 inrun2-patches
- increase a bit precision for mass/lifetime printouts
- allow specify negative values for lifetime (being intepreted as width in GeV). This is very useful for redefinition of the particle properties, and prevents bugs
- print all redefined properties
- add new qmtest
- regenerate reference file
-
LoKiCore.functions: add (move from LoKiArrayFunctors) function PDGM, !1398 (@ibelyaev)
Cherry picked from !1397 onrun2-patches
-
Introduce VPFullCluster class, !1396 (@rquaglia)
Introduction of a second VPClass namedVPFullCluster
which includes the vector among the private members.
Needed to later fix the issue of tracking efficiencies for TDR->master merge. -
Propagate XGBoost-based IsPhoton separation variable, !1390 (@deschamp)
Cherry-picked from !1384 on2018-patches
-
LHCbMath: add summation operators for WStatEntity, !1391 (@ibelyaev)
Cherry picked from !1385 onrun2-patches
-
LoKi::Dicts::CutValOps : add few more overloads for
__switch__
method, !1392 (@ibelyaev)
Cherry-picked from !1386 onrun2-patches
-
Scifi fix assert, !1382 (@jvantilb)
- Changed any_of to none_of in assert (none_of is better than all_of in case the range in empty).
- Removed obsolete comment
-
LoKiGen: add more symbols : GMINTREE, GMAXTREE, GSUMTREE & GMULTTREE, !1376 (@ibelyaev)
Cherry picked from !1375 onrun2-patches
Phys/LoKiGen
: add new symbols-
GMINTREE
: e.g."GMINTREE( GPT , 'mu+' == GABSID) > xxx * GeV"
- it can mimic certains selection/tripping criteria and alsoL0Muon
trigger GMAXTREE
-
GSUMTREE
: e.g."GMINTREE( GPT , ( 'pi+' == GABSID ) | ( 'K+' == GABSID ) ) > xxx * GeV"
- it mimics some popular stripping/Hlt2 cuts used by Charm and BnoC groups -
GMULTTREE
:"GMULTTREE( GPT , ( 'mu+' == GABSID ) ) > xxx * GeV * GeV "
- it mimics L0DiMuon-TOS for eg. B-> ( J/psi -> mu mu ) X decays
-
-
Scifi add version property for decoding, !1364 (@jvantilb)
The Gaudi::PropertyDecodingVersion
is added toFTRawBankDecoder
. The user can now decide which decoding version is needed. In case the decoding version is not compatible with the version in the raw banks, an exception is thrown.Fixes a problem introduced in MR !1326, which causes a crash for multithreading.
-
Remove header words from number of cluster estimate, !1363 (@jvantilb)
The header word is now not counted anymore in the estimate for the number of FTClusters. -
New and faster decoding versions, !1326 (@jvantilb) [LHCBSCIFI-101]
Requires MR!10 from SIMCOND.Introduced new raw data format (v4 and v5). The new data format has no local headers for each SiPM anymore. This improves the decoding speed a lot. Also new is the partitioning (5 banks per quadrant instead of 1) and a global truncation header.
For backwards compatibility, the decoding can still decode the old data formats (v2 and v3). The difference between v4 and v5 is that in v5 the adjacent clusters (that are split by the FE) are merged back and that very wide clusters are recovered into many adjacent clusters. These extra operations are not done in v4, which makes it a little bit faster at the costs of a reduction in tracking performance (possible these extra operations can be done on the TELL40 in the future). The encoding works only for the v5 format. To run the v4 decoding on v5 data, a flag is introduced in
FTRawBankDecoder
(ForceVersion4
).At same time, the container format for the FTLiteClusters is changed from FastClusterContainer to MultiIndexedContainer.
-
New parameter in CaloDataType, !1358 (@vchekali)
AddisPhotonXGB
parameter, to be used by CaloHypoEstimator to store result of new photon/pi0 separation classifier.
Cherry picked from !1348 in2018-patches
-
Rich Pixel Cluster Optimisations, !1331 (@jonrob)
Various improvements to the RichPixelCluster class.- Specific optimisation for size 1 clusters, which are the most common use case. heap allocations are now completely avoided in this case.
- Various speed improvements to the builder classes, again mostly based around avoiding heap allocations as far as possible.
-
Add bulk method for computing global positions for PD clusters., !1330 (@jonrob)
-
update L0 processor data handling, !1343 (@deschamp)
Propagate the !1336 changes to master (except changes related to L0 monitoring - not needed for future)
L0DU :- better handling in case of different sources for the same L0ProcessorData in L0ProcessorDataDecoder
L0Calo : - fix minor bug (wrong format) in L0Candidate.h when building L0Processor data for SpdMult and SumEt from the L0Calo rawBank. The bug has no impact on default processing as L0ProcessorData are not build from the L0Calo rawbank but directly from the emulator.
- L0CaloCandidatesFromRaw : produce (empty) L0ProcessorData in case there is no corresponding L0 candidate + add the possibility to plug/unplug processor data 'fiber' (e.g. for L0pi0s/HC switching)
- better handling in case of different sources for the same L0ProcessorData in L0ProcessorDataDecoder
-
RichDAQ - Cleans up a number of HPD/PMT specific definitions, !1329 (@jonrob)
-
Prepare Tagger enum for latest Flavour Tagging Tunings, !1320 (@kheinick)
Add separated B2OC/B2CC tunings for OS taggers
Same as merge request !1310 on2018-patches
-
Use local instances of MagneticFieldGridReader in MagneticFieldSvc, !1314 (@jonrob)
Fixes a minor annoyance with theMagneticFieldSvc
which is messages sent from it were not respecting changes made to the message formatting. This was due to the timing of when the Reader instances where constructed. This MR fixes this by instead of having a single cache instance, use local instances instead. As the reader has no cached state, and is cheap to construct, this has no overhead. -
Minor refactoring of GitCondDB Python helpers, !1316 (@clemenci)
cherry-pick of the part of !1300 relevant for the master branch -
Minor changes to RichTrackSegment::StateErrors constructors, !1312 (@jonrob)
-
RichDet Updates, !1288 (@jonrob)
- Move
rich()
accessor fromMaPMT
specific to baseDePD
class. - Convert some
DePD
members fromdouble
tofloat
to reduce memory footprint and better match the types as used downstream. - Increase the max number of samples in
Rich1DTabFunc
.
- Move
-
Separate control-flow / work in FTRawBankDecoder, !1214 (@graven)
- factor out control flow in two functions,
reverse_each_module
andfor_each_quadrant
. -
reverse_each_module
takes two iterators, and finds the partitions corresponding to a module, and the reverses each of these partitions partitions -
for_each_quadrant
takes a container and a container of offsets which defines partitions of that container. It calls, for each parittion, the callable with the first,last iterator of these partitions - replace the vector of partitionpoints with a boost::container::static_vector to avoid allocating memory on the heap
- add some lamdas which bind common function arguments, so they don't have to be repeated...
- move the verbose printout out of the main decoding loop (avoiding repeated checks on msgLevel) and instead provide a single loop which dumps the created clusters
- factor out control flow in two functions,
-
Add Deuteron ProbNN definition, !1232 (@jonrob)
Cherry picked from !1230 on2018-patches
-
Introduced FT/UTDAQLib containing FT/UTDaqHelper code, !1219 (@sponce)
This is abstracting and publicizing small parts of the raw bank decoding for the FT and UT (namely the cluster counting) so that it can be used by the GECFilter -
Reproducible MDF content, !1217 (@rmatev)
Ensures strict reproducibility of MDFs. It has no observable effect except for helping the testing in Moore.- Initialize padding bytes in HltSelRep event model
- Reset packed data checksums on every event (much more useful for testing with streaming).
- Add a script to dump the bytes of the raw events, decompressing the
DstData
bank as needed.
Propagated from MR !1032 in
2018-patches
-
Add a constant function to access UT Sectors, !1163 (@mhadji)
PrStoreUTHit
was usingfindSector
for each ut clusters, this function is a usual logn lower bound on avector<pair<key, sector>>
a second
std::vector<sector*>
was already there
and created with an almost good order to be able to create some offsets duringDeUTDetector::initialize
and therefore doing an access with an almost constant complexity
Bug fixes
-
Kernel/LHCbMath: fix stupid typo, !1412 (@ibelyaev)
Fix a very stupid typo inPS2DPolSym::integrateY
(Thanks to @tovsiann )
Cherry picked from !1409 on2018-patches
-
Kernel/PartProp: modify LHCb::ParticleID to solve the problems introduced by !1187, !1362 (@ibelyaev) [LHCBPS-1796]
- all quantities are calculated on flight. It definitely causes CPU penalty, but actually all "expensive" functionality is used relatively rarely (e.g. decay-descriptors) and always in conjuction with really CPU expensive code - like filtering of decays according to decay descriptors. Therefore I think in reality this CPU penalty is not vizible and not so important.
- it is tested versus the reference code by @philten for all PIDs from Particle Property service + all "exceptional" PIDs, explicitly coded in
ParticleID
class. The results are identical.
-
VectorConfiguration: add missing and include, !1333 (@flemaitr) [LBCORE-1587]
-
PackParticlesAndVertices - Preserve versions, !1322 (@jonrob)
Same as merge request !1313 on2018-patches
-
Fix persist reco packing for DataType 2018, !1306 (@rmatev)
cherry-picked from !1304 on2018-patches
-
Reverted old default behaviour of CondDBUI.Admin.MakeDBFromFiles, !1270 (@clemenci)
Also in 2018-patches, see !1269
(cherry picked from commit 1a23fe29) -
Add work around to RichPID unpacking to correct incorrect data version., !1251 (@jonrob)
Cherry-picked from !1245 on2018-patches
-
Fix AWM functor., !1234 (@malexand) [LHCBPS-1778]
Cherry-picked from !1227 on2018-patches
-
LoKiCore: Fix for LHCBPS-1776, !1224 (@ibelyaev) [LHCBPS-1776]
Same as merge request !1222 in2018-patches
-
Fix 2017 default time, !1221 (@cattanem)
The previous value was beyond the end of the last fill of 2017, when the magnet had already been switched off.Propagated from !1220 on 2018-
patches
(cherry picked from commit 28665b55) -
Fixed handling of ThreadPoolSize when running MiniBrunel with default Gaudi scheduler, !1203 (@sponce)
(cherry picked from commit d4b52aa4) -
Fix uninitialize members on CircleTraj, !1192 (@mhadji)
https://coverity.cern.ch/reports.htm#v13572/p10041/fileInstanceId=763988738&defectInstanceId=396412786&mergedDefectId=98206
Code modernisations and cleanups
-
Prefer C++17 std::{optional,string_view} over boost::{optional,string_ref}, !1416 (@graven)
-
Remove unused private typedefs, !1415 (@clemenci)
exposed by change of warnings hiding default in gaudi/Gaudi!408 -
XmlTools: prefer c++17 variant,string_view over boost variant,string_ref, !1408, !1414 (@graven)
-
remove unused ConfigDBAccessSvc, the backend using Coral, !1401 (@graven)
-
Prepare for gaudi/Gaudi!709 and gaudi/Gaudi!577, !1387 (@clemenci)
- use old PluginService version for Functor Cache if Gaudi uses the new version
- modified custom property parsers to understand (optionally) quoted strings
-
Changed MDF compression to use ROOT ZLIB instead of the default, !1380 (@clemenci)
In ROOT 6.14 the default changed from ZLIB to LZ4, and this change
ensure reproducibility across versions of ROOT. -
LoKiCore::Size: take advantage of the optional interface, !1368 (@graven)
Instead of explicitly duplicating logic already implemented insideboost::optional
, use the interface ofoptional
as it is supposed to be used. -
remove use of deprecated std::{binary,unary}_function, !1359 (@graven)
std::binary_function
andstd::unary_function
are deprecated in C++14, and have been removed in C++17. -
Make CaloClusterizationTool const, !1295 (@cmarinbe)
Propagate changes in Rec!1036 toICaloClusterization
. -
Modernize DetDesc, !1264 (@graven)
- remove inheritance from CommonMessaging in DetectorElement. It is not used (due to the fact that the automatic 'name' prefix in the output is not very usefull for DetectorElements.
- prefer boost::string_ref over std::string in interface to avoid creating temporary strings
- prefer compiler generated copy constructor
-
Adapted transport service to move to new counters, !1233 (@sponce)
-
Modernize MuonDet, !1263 (@graven)
- avoid copying
std::vector
unnecessarily - prefer boost::lexical_cast over sprintf/sscanf
- prefer std::accumulate over explicit loop
- avoid copying
-
Modernize FSRNavigator, !1262 (@graven)
- avoid making spurious string copies
- prefer inheriting constructors
-
RawEvent::Bank: Add move c'tor and assignment and deprecated copy c'tor and assignment, !1261 (@graven)
Deprecate old copy c'tor and assignment, as they are ill-defined (they result in both the current and 'old' object to have identicalm_owns
, which in case it is set totrue
will result in a double delete).
Instead, add move c'tor and move assignment -
Fix CondDBBrowser runtime and drop Qt4, !1244 (@clemenci)
Propagated from !1241 on2018-patches