LHCb merge requestshttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests2020-12-12T19:13:30+01:00https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2511Spline grid interpolation2020-12-12T19:13:30+01:00Gerhard RavenSpline grid interpolationAdd `LHCb::Math::Spline::interpolate` which, given a _regular_ 1D,2D or 3D grid, will perform a spline interpolation. The 'value type' of the grid can be anything, as long as it supports scaling (multiplication) and addition.Add `LHCb::Math::Spline::interpolate` which, given a _regular_ 1D,2D or 3D grid, will perform a spline interpolation. The 'value type' of the grid can be anything, as long as it supports scaling (multiplication) and addition.Sebastien PonceSebastien Poncehttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2520Modernize SimComponents2020-10-19T10:59:45+02:00Gerhard RavenModernize SimComponents* use actual base class name, i.e. `extends` instead of `base_class` typedef
* prefer ToolHandle
* prefer MsgCounter
* prefer void return type for function whose StatusCode returnvalues are always ignored
* prefer MsgCounter<MSG::WARNING...* use actual base class name, i.e. `extends` instead of `base_class` typedef
* prefer ToolHandle
* prefer MsgCounter
* prefer void return type for function whose StatusCode returnvalues are always ignored
* prefer MsgCounter<MSG::WARNING> over Warning
* prefer monadic StatusCode functionalityhttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2536fix test_public_headers_build test target2020-12-12T22:38:04+01:00Paul Seyfertfix test_public_headers_build test target- add missing include in public header
- delete (seemingly) unused header ← this is why I wip'ed as I believe this is potentially harmful
- explicitly state include dependency in cmake lists file (w/o default build target)
The idea is t...- add missing include in public header
- delete (seemingly) unused header ← this is why I wip'ed as I believe this is potentially harmful
- explicitly state include dependency in cmake lists file (w/o default build target)
The idea is that if one has a cpp file with only one line `#include "public_header.h"`, where `public_header.h` is a file that we install in `InstallArea/…/include`, then that file should compile without errors and warnings. Ideally that helps when sorting header files alphabetically.
@jonrob: as you can see in the changes, I deleted a Rich header which I didn't see used anywhere (in my checkout of projects until Moore and with lb-glimpse until DaVinci). istm like LookupTableInterpolator.h wasn't included anywhere, but I believe it's still good if somebody who knows about RichUtiles can confirm it's obsolete.
@clemenci: the edition of the cmake lists file shouldn't do anything visible in a standard build but maybe it's good to have the include dependency known when migrating to the new configuration?
@ibelyaev: I edited `TreeHelpers.h` because it uses `Decays::Node m_head = Decays::Nodes::Invalid`, which means having `Decays::Nodes::Invalid` defined is a good idea. This isn't an issue when building LHCb as all files which included `TreeHelpers.h` seem to have included `Kernel/Nodes.h` (through NodesPIDs.h in the case I looked at) as well.Sebastien PoncePeilian LiSebastien Poncehttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2608Added simple algorithm to iterate though a Detector's volumes2020-12-19T12:40:10+01:00Ben CouturierAdded simple algorithm to iterate though a Detector's volumesAdded simple algorithm to iterate though a Detector's volumesAdded simple algorithm to iterate though a Detector's volumesLorenzo PicaLorenzo Picahttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2660Implement math for 2D measurements2021-09-10T21:41:42+02:00Jacco De VriesImplement math for 2D measurementsTo deal with the projection and filtering of 2D measurements in Rec, the corresponding math (Filter, Similarity transforms) for 2x5 projection matrices is implemented in the LHCb math kernel.
To match interface calls in Rec, this MR sho...To deal with the projection and filtering of 2D measurements in Rec, the corresponding math (Filter, Similarity transforms) for 2x5 projection matrices is implemented in the LHCb math kernel.
To match interface calls in Rec, this MR should be considered in line with https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2485 and https://gitlab.cern.ch/lhcb/Alignment/-/merge_requests/205Christoph HasseChristoph Hassehttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2720Modernized DQFilter and reduced drastically use of EventCountAlg2022-02-21T16:57:29+01:00Sebastien PonceModernized DQFilter and reduced drastically use of EventCountAlg- Moved DQFilter to upgrade framework.
- Dropped usage of EventCountAlg in dqfilter tests.
- Simplified drastically EventCountAlg that is now only a test algo for the XMLSummarySvc test. Should be dropped when XMLSummarySvc is replaced...- Moved DQFilter to upgrade framework.
- Dropped usage of EventCountAlg in dqfilter tests.
- Simplified drastically EventCountAlg that is now only a test algo for the XMLSummarySvc test. Should be dropped when XMLSummarySvc is replaced.
- finally added a new counter to DQFilterSvc to check its efficiency.https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2749remove deprecated code2020-10-19T10:57:44+02:00Gerhard Ravenremove deprecated coderemove code already flagged as `[[deprecated]]` for quite some time...
must be applied after (or at the same time as) Phys!776remove code already flagged as `[[deprecated]]` for quite some time...
must be applied after (or at the same time as) Phys!776https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2756ARM support2020-10-19T11:03:41+02:00Arthur Marius HennequinARM supportThis set of MRs make the necessary changes to build and run on arm platforms. Tested on arm64-thunderx2.
Goes with https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2205 https://gitlab.cern.ch/lhcb/Phys/-/merge_requests/783 https://gitla...This set of MRs make the necessary changes to build and run on arm platforms. Tested on arm64-thunderx2.
Goes with https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2205 https://gitlab.cern.ch/lhcb/Phys/-/merge_requests/783 https://gitlab.cern.ch/lhcb/Allen/-/merge_requests/434
@bcouturi @sponce @clemenciRoel AaijRoel Aaijhttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2759WIP: Make PackTrack functional2021-06-01T09:41:35+02:00Nicole SkidmoreWIP: Make PackTrack functionalMaking PackTrack functional so that tracks can be packed and persisted in Moore.
Note that
* Removed checking functionality `EnableCheck`
* Removed delete input functionality `DeleteInput`
* Removed `AlwaysCreateOutput` optionMaking PackTrack functional so that tracks can be packed and persisted in Moore.
Note that
* Removed checking functionality `EnableCheck`
* Removed delete input functionality `DeleteInput`
* Removed `AlwaysCreateOutput` optionhttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2783Write via zip proxies2020-12-12T21:11:42+01:00Olli LuptonWrite via zip proxiesBased on [this comment](https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2208#note_3796884) in Rec!2208, I put together an example of how using the zip/proxy machinery to efficiently fill SOA-style containers. This is `Event/EventBase/te...Based on [this comment](https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2208#note_3796884) in Rec!2208, I put together an example of how using the zip/proxy machinery to efficiently fill SOA-style containers. This is `Event/EventBase/tests/src/test_ZipWriting.cpp` in the diff.
Because I also moved the main zip header to sit alongside the `SOACollection` header the overall MR diff looks awful, but the real changes are not so large. It might be better to look at individual commits.
cc: @peilian @ahennequ -- any thoughts?
The essence is that something like
```c++
auto const added = c.emplace_back<simd>();
added.setI( some_int_v );
```
generates a plain [contiguous] store to the end of the container, and
```c++
auto const added = c.emplace_back<simd>( mask );
added.setI( some_int_v );
```
generates a compress-store using the given mask.
You end up with various different kinds of proxy objects. I think this is a "zero overhead" way of filling containers in algorithms.
| Type | Read semantics | Write semantics |
| ---- | ------ | ------ |
| Compress | Disabled | Compress-store to offset using mask |
| Contiguous | Contiguous read from offset | Contiguous write to given offset |
| ScalarFill | Load a single value from offset and broadcast to `int_v` | Disabled |
| ScatterGather | Gather from an `int_v` of offsets | Scatter to given offsets **not implemented** |
Needs some small changes in Rec!2245 and Phys!806.https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2787Added functionality for CaloHypos for Rec!22162020-10-19T11:04:58+02:00Maarten Van VeghelAdded functionality for CaloHypos for Rec!2216fix needed for [Rec!2216](https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2216)fix needed for [Rec!2216](https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2216)https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2794Modernize deterministic mixer code2020-10-19T10:55:33+02:00Gerhard RavenModernize deterministic mixer code* replace uint32_t state and free functions with a small struct
* define a single overload set for mixing
* be paranoid about implicit conversions of the 'extra' state
* use the above mentioned struct everywhere, and remove copies of the...* replace uint32_t state and free functions with a small struct
* define a single overload set for mixing
* be paranoid about implicit conversions of the 'extra' state
* use the above mentioned struct everywhere, and remove copies of the code
* add a unit test (which contains a copy of the original code to verify the results are the same)
* replace use of `boost::integer_traits` with `std::numeric_limits`https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2795Add RICH Derived condition objects to wrap detector objects2020-12-12T21:02:47+01:00Christopher Rob Jonesjonesc@hep.phy.cam.ac.ukAdd RICH Derived condition objects to wrap detector objectsPart of the eventual migration to support DD4HEP.
Currently the RICH has a lot of (complex) functionality in the RichDet classes, which are then used by the reconstruction (and to some degree the simulation). Much of this functionality ...Part of the eventual migration to support DD4HEP.
Currently the RICH has a lot of (complex) functionality in the RichDet classes, which are then used by the reconstruction (and to some degree the simulation). Much of this functionality cannot be migrated to the new DD4HEP classes in the Detector (and nor do we really want). The idea is to instead use derived condition objects, which wrap and extend the detector objects, that can then live in LHCb or Rec, to implement these features.
This is a step in that direction, adding derived condition objects for the DeRich1 and DeRich2 classes (for now).
For now, the wrapper class implementations just forward the calls on to the RichDet classes. Migrating the functionality, as required, from RichDet into these classes will be the next step.
It should also make support both DD4HEP and DetDesc at once easier, as this can be handled in one place, in the new wrapper classes.
There will be a Rec MR that goes with this (lhcb/Rec!2226).
@sponce @bcouturi @seaso @bmalecki FYISebastien PonceSebastien Poncehttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2797Re-organize ProtoParticle unpacking/making/ExtraInfo filling2020-12-12T19:37:31+01:00Gerhard RavenRe-organize ProtoParticle unpacking/making/ExtraInfo fillingIn order to avoid updating the ProtoParticle container in the TES, this MR changes the algorithms which update the container 'in-situ' into tools which can be invoked by the 'original' producer of ProtoParticles prior to the container be...In order to avoid updating the ProtoParticle container in the TES, this MR changes the algorithms which update the container 'in-situ' into tools which can be invoked by the 'original' producer of ProtoParticles prior to the container being written.
* add a tool interface which updates a ProtoParticle container
* change the various `AddXYZInfo` algorithms to be tools implementing the above interface
* add an algorithm (for backwards compatibility) which fetches the container from the TES, and calls an array of the above tools
* move the Ecal 'AddInfo' algorithms into `RecreatePIDTools` together with the Muon and Rich versions, and turn them into tools
must be applied in conjunction with Rec!2227 and Moore!638, Refs updated in Brunel!1088 + Moore!649, should go with Rec!2237 as well (update refs together)https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2798Size inconsistency fix of calo objects2020-10-15T18:06:18+02:00Maarten Van VeghelSize inconsistency fix of calo objectsRemoves inconsistency of signedness in size function calls in CaloHypos and CaloClusterRemoves inconsistency of signedness in size function calls in CaloHypos and CaloClusterRoel AaijRoel Aaijhttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2804Removal of Velo, ST, OT, IT, PRS, SPD from master2021-02-04T17:08:02+01:00Patrick KoppenburgRemoval of Velo, ST, OT, IT, PRS, SPD from masterInitial commit of LHCb cleanup for obsolete detectors and related event classes.
See overall picture at https://gitlab.cern.ch/lhcb-dpa/project/-/issues/18 https://gitlab.cern.ch/lhcb-dpa/project/-/issues/37
**Complete removal of the f...Initial commit of LHCb cleanup for obsolete detectors and related event classes.
See overall picture at https://gitlab.cern.ch/lhcb-dpa/project/-/issues/18 https://gitlab.cern.ch/lhcb-dpa/project/-/issues/37
**Complete removal of the following packages**
- Det/OTDet, Det/STDet, Det/VeloDet : these packages will be needed by Gauss and thus moved to Run2Support: Run2Support!6
- Event/VeloEvent, OT/OTDAQ, ST/STDAQ, ST/STKernel, ST/STTELL1Event, Velo/VeloDAQ
- DAQ/Tell1Kernel
**Changes:**
- Det/CaloDet/options/PrsDetTest.opts, Det/CaloDet/options/SpdDetTest.opts
- Event/DigiEvent: Event/OTTime.h, ST*, Velo* are removed. dictionaries adapted. VeloCluster and VeloLiteCluster are kept temporarily to make LbCom happy (used in UT https://gitlab.cern.ch/lhcb/Lbcom/-/issues/6).
- Event/EventPacker: removal of packers dedicated to these subdetectors, adapt other code
- DAQ/DAQSys : CMakeLists and tests adapted. read-split-raw.qmt cannot run with 2012 data. To be adapted.
- Event/MCEvent/ : removal of Digit classes and fix of dictionary. Removal of MCVeloFE.h.
- Event/RecEvent : fix dictionary. Unsolved issue with PV https://gitlab.cern.ch/lhcb/LHCb/-/issues/102
- GaudiConf/python/GaudiConf/PersistRecoConf.py fixed and tests fixed
- Kernel/KernelSys/CMakeLists.txt cleaned
- Kernel/LHCbKernel/ : classes deleted and LHCbID adapted. This may need a revision.
- Tr/LHCbTrackInterfaces/TrackInterfaces/ISTClusterPosition.h removed
- Event/LinkerInstances : dictionary adapted.
- GaudiConf/python/GaudiConf/SimConf.py: Change default detectors to upgrade ones. This fixes most of the tests.
- Ex/IOExample/tests/refs/*: some references slightly adapted.
- Alignment-related files from Det/VeloDet moved to Det/VPDet.
**Only formatting:**
- Kernel/LHCbMath : lb-format changes
- Rich/RichUtils/src/RichTrackSegment.cpp : lb-format changes
- Tools/GitEntityResolver : lb-format changes
Related cleanup MRs: Run2Support!6, Gauss!702, Lbcom!504, Rec!2236, Phys!810, Alignment!148, Analysis!747, DaVinci!498, Castelao!86, Panoramix!80,
Tangentially related move of LoKiGen: LHCb!2871 and Gauss!704https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2811Simplify Pr::Tracks2020-12-12T21:01:34+01:00Arthur Marius HennequinSimplify Pr::TracksImplements ideas to simplify Pr::Tracks.
Goes with https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2239 https://gitlab.cern.ch/lhcb/Phys/-/merge_requests/812
@olupton @peilian @chasse @sstahl @sponce
* Remove the need for the end-use...Implements ideas to simplify Pr::Tracks.
Goes with https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/2239 https://gitlab.cern.ch/lhcb/Phys/-/merge_requests/812
@olupton @peilian @chasse @sstahl @sponce
* Remove the need for the end-user to write variadic template code
* Provide default (base_class) proxies to reduce boilerplate
* Give more meaning to the Tags allowing to generate index computation and sanity checks automatically, avoiding user mistakes
* Remove the need of preprocessor macros for defining proxies
* Simplify zipping and proxy implementation
Before/after track definition example:
Before:
* https://gitlab.cern.ch/lhcb/LHCb/-/blob/master/Event/TrackEvent/Event/PrDownstreamTracks.h
* https://gitlab.cern.ch/lhcb/LHCb/-/blob/master/Event/TrackEvent/Event/PrTracksTag.h#L123
After:
* https://gitlab.cern.ch/lhcb/LHCb/-/blob/87a56ca04cba1cb956e137dfdd5a471765defeb1/Event/TrackEvent/Event/PrDownstreamTracks.h
New Proxy/Zipping implementation:
* https://gitlab.cern.ch/lhcb/LHCb/-/blob/87a56ca04cba1cb956e137dfdd5a471765defeb1/Event/EventBase/Event/Proxy.h
* https://gitlab.cern.ch/lhcb/LHCb/-/blob/87a56ca04cba1cb956e137dfdd5a471765defeb1/Event/EventBase/Event/SOAZip.h
This zipping/proxy is used by default when requesting an iterator on an SOACollection derived container:
```cpp
for (auto proxy : tracks.scalar()) {}
for (auto proxy : tracks.simd()) {}
```
It can also be used as an alternative to the current zipping:
```cpp
auto zipped = LHCb::v2::Event::make_zip( tracks, muonPIDs );
// instead of
auto zipped = LHCb::Pr::make_zip( tracks, muonPIDs );
```
* to continue using the current zipping, the macro-style proxy must also be defined
* the new proxy support reading and writingSebastien PonceSebastien Poncehttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2816remove no longer required support for range v3 version < 0.92020-11-09T09:43:27+01:00Gerhard Ravenremove no longer required support for range v3 version < 0.9Remove no longer required backwards compatibility with range v3 version < 0.9Remove no longer required backwards compatibility with range v3 version < 0.9Roel AaijRoel Aaijhttps://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2822Cleanup of Calorimeter interfaces2021-01-06T12:36:45+01:00Gerhard RavenCleanup of Calorimeter interfaces* move IFutureGammaPi0SeparationTool and IFutureNeutralIDTool interfaces to Rec, into the sole package that requires them
* remove unused interfaces
must be applied in conjunction with Rec!2253, refs updated in Moore!654 and Brunel!1089* move IFutureGammaPi0SeparationTool and IFutureNeutralIDTool interfaces to Rec, into the sole package that requires them
* remove unused interfaces
must be applied in conjunction with Rec!2253, refs updated in Moore!654 and Brunel!1089https://gitlab.cern.ch/lhcb/LHCb/-/merge_requests/2834Add workaround to suppress clang unused-lambda-capture warning2020-12-12T21:07:02+01:00Christopher Rob Jonesjonesc@hep.phy.cam.ac.ukAdd workaround to suppress clang unused-lambda-capture warningFixes a clang-8 build warning unfortunately introduced into master in a recent commit ...
Borrows the same workaround as used in Gaudi Functional.Fixes a clang-8 build warning unfortunately introduced into master in a recent commit ...
Borrows the same workaround as used in Gaudi Functional.Sebastien PonceSebastien Ponce