Skip to content
Snippets Groups Projects

No MPL, no variantdata, stepper concepts

Closed Paul Gessinger requested to merge pagessin/acts-core:detector-pattern-concepts into master

This MR gets rid of boost::mpl:

  • Reimplement type generation for FittableMeasurement using boost::hana. This also effectively switches that type away from boost::variant to std::variant.
  • Reimplement action / abort list introspection using boost::hana
  • Drop type erasure for Grid and InterpolatedBFieldMap. The templating now bubbles through to the stepper. Setup becomes little more complicated, but we're not going through TE at all anymore, which should be a performance benefit. Effectively removes any signature requirements on field mappers and the grid, even though they were not enforced even before, since that only happened when using the concepts with TE.
  • Removes the VariantData code. It's unreasonable to pay the performance cost for boost::mpl there, when we're not actively using it.

This includes @fklimpel's changes from !518 (merged), but reimplements the static assertions on steppers using a custom setup not using boost (see TypeTraits.hpp and StepperConcept.hpp). These concepts are only enforced at compile and are not (and cannot be) used for type erasure.

All in all, this decreases build time by about 10% and memory usage by about 9%.

mem_time

I would propose we close !518 (merged) and merge this MR instead.

EDIT: !528 (merged) dominates compile time over this one, but I still think we'd benefit from this.

Edited by Paul Gessinger

Merge request reports

Pipeline #764624 passed with warnings

Pipeline passed with warnings for 388b2e8f on pagessin:detector-pattern-concepts

Test coverage 67.00% (0.00%) from 1 job

Closed by Paul GessingerPaul Gessinger 5 years ago (Mar 20, 2019 5:27pm UTC)

Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Paul Gessinger added 2 commits

    added 2 commits

    • 1efb1f5f - Add doc comments, a bit of cleanup
    • 48e0e70c - Remove state meta functions

    Compare with previous version

  • Paul Gessinger unmarked as a Work In Progress

    unmarked as a Work In Progress

  • For job clang_tidy on commit: 48e0e70c

    Static analysis results: Accepted

    ok pattern count limit
    :white_check_mark: readability-inconsistent-declaration-parameter-name 0 0
    :white_check_mark: readability-named-parameter 0 0
    :white_check_mark: readability-container-size-empty 0 0
    :white_check_mark: modernize-use-using 0 0
    :white_check_mark: readability-braces-around-statements 0 0
    :white_check_mark: modernize-use-override 0 0
    :white_check_mark: readability-implicit-bool-cast 0 0
    :white_check_mark: modernize-use-default-member-init 0 0
    :white_check_mark: performance-unnecessary-value-param 0 0
    :white_check_mark: modernize-use-equals-default 0 0
    :white_check_mark: modernize-use-nullptr 0 0

    Analysis results at: https://gitlab.cern.ch/api/v4/projects/26103/jobs/3571257/artifacts

  • Paul Gessinger added 1 commit

    added 1 commit

    • f9c60e0e - Add corrector type to concept

    Compare with previous version

  • For job clang_tidy on commit: f9c60e0e

    Static analysis results: Accepted

    ok pattern count limit
    :white_check_mark: readability-inconsistent-declaration-parameter-name 0 0
    :white_check_mark: readability-named-parameter 0 0
    :white_check_mark: readability-container-size-empty 0 0
    :white_check_mark: modernize-use-using 0 0
    :white_check_mark: readability-braces-around-statements 0 0
    :white_check_mark: modernize-use-override 0 0
    :white_check_mark: readability-implicit-bool-cast 0 0
    :white_check_mark: modernize-use-default-member-init 0 0
    :white_check_mark: performance-unnecessary-value-param 0 0
    :white_check_mark: modernize-use-equals-default 0 0
    :white_check_mark: modernize-use-nullptr 0 0

    Analysis results at: https://gitlab.cern.ch/api/v4/projects/26103/jobs/3606127/artifacts

  • I had a look over this, I like it very much.

    Particularly the removing of more and more boost dependency is great. This should get in to my mind.

  • Andreas Salzburger approved this merge request

    approved this merge request

  • Paul Gessinger added 48 commits

    added 48 commits

    • f9c60e0e...8488a510 - 6 commits from branch acts:master
    • 3a2e98a3 - surfaceReached added, last some statics removed
    • 92c1428d - Built CRTP interfacing for steppers
    • bd761a24 - Assertion and comments added
    • 18db0573 - Reordering of functions for consistency; added missing functions to straightLineStepper
    • 3be3bd4f - Asserting steppers except correctors
    • e6c29d93 - Fixed AtlasStepper interface
    • c9821f83 - Format fixed
    • 37c4ac5c - Removed StepperBase
    • 14b926e6 - Fixed ordering in AtlasStepper
    • db2df677 - Format fixed
    • e0b93065 - Removed deprecated asserts
    • c148875e - attempt to replace boost tti with detector idiom
    • f184772b - fix detector idiom usage for phi function
    • 2632bc2e - fix detector again
    • 1e4e4a79 - Change fittable measurement creation
    • 83cc5071 - Begin removal of AnyFieldLookup
    • d9bcb3d9 - format
    • e00a3d5f - Remove AnyGrid
    • 6c2b0515 - include variant
    • 5b6f1d0c - Removing variant data
    • bac07ff5 - Add one more test for fittable meas creation
    • 9b62a381 - Fix rebase artifact
    • 21d29d9e - Move definitions of EigenStepper to ipp file
    • a614892f - Split up declaration and definition in Propagator
    • f0909bde - Play around with extern template
    • 589568b1 - Format
    • 4c5fd061 - tests/doc for type traits
    • c8bf67a0 - Add some documentation on detection idom
    • e96bdc1f - refine doc
    • 5af58156 - Improve type trait doc
    • f2f2e49f - Add comment to track state sorters
    • fbfd74b7 - Move return value for prop into new style
    • bc3c7805 - Add separate Propagator.ipp
    • 23c32ede - move concept helpers into namespace
    • 2a669e93 - Remove external template tests
    • 4768ae80 - Move concepts into Acts namespace
    • 3a5ee9a6 - Fixes after rebase
    • c50e0c72 - Replace Boost TTI with custom detection in prop
    • bf5e6541 - Use type traits in helpers phi method detetcion
    • 6855d4d2 - Add doc comments, a bit of cleanup
    • 82648412 - Remove state meta functions
    • 2adc534a - Add corrector type to concept

    Compare with previous version

  • Paul Gessinger added 1 commit

    added 1 commit

    • 7cb52d76 - Fix CI: Add mising include, remove file

    Compare with previous version

  • Paul Gessinger changed the description

    changed the description

  • Re-approving, we still should profit from this.

  • Andreas Salzburger approved this merge request

    approved this merge request

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading