Skip to content

Implement common factory interface to algorithms #2068

@wdconinc

Description

@wdconinc

Is your feature request related to a problem? Please describe.
We define algorithms in src/algorithms in a pretty good declarative approach. This includes defining properties, etc. But we still have to replicate this structure in the factory definitions in src/factories. That seems inefficient.

Describe the solution you'd like
A factory that uses an algorithm that derives from an algorithms::-interfaced algorithm should be able to do the automatic ParameterRef definitions (and other forwarding to the JANA2 interfaces), to limit boilerplate that users have to provide.

Further comments related to this:
- Is it possible to automatically bridge JANA2/JOmniFactory and EICrecon algorithms without C++ reflection?
- There are some rough edges around non-PODIO types (e.g. we pass stuff from Acts::)
- interfaces for std::vector don't match (this is not a problem if we don't pass std::vector<Acts::...>)
- interfaces for variadic collections don't match #1401
- property interface from algorithms needs to be used by EICrecon (also simplifies factory definition by automating ParameterRef)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions