Skip to content
/ algorithms Public

Collection of Reconstruction Algorithms using DD4hep and EDM4hep

License

Notifications You must be signed in to change notification settings

eic/algorithms

Repository files navigation

algorithms: a Summary

This code defines a framework for creating and managing algorithms in a C++ application. Here's a breakdown of its key components:

1. Input/Output Type Handling:

  • Input<T...> and Output<T...>: These template structs define how algorithm inputs and outputs are handled. They use input_type_t and output_type_t to map different types (T, std::optional<T>, std::vector<T>) to appropriate pointer types, ensuring non-null inputs and allowing for optional or vector-based arguments.

2. Algorithm Base Classes:

  • AlgorithmBase: A base class for all algorithms, providing common features like properties, logging, and naming.
  • Algorithm<InputType, OutputType>: A template class defining the interface for concrete algorithms. It includes methods for initialization (init), processing (process), and accessing input/output names.

3. Algorithm Service (AlgorithmSvc):

  • Stores factories for creating algorithm instances.
  • Allows adding new algorithm factories (add).
  • Provides methods for retrieving algorithm instances (get) and listing available algorithms (ls).

4. Utility Classes and Traits:

  • Error: A base class for exceptions within the framework.
  • GeoSvc: A service for accessing geometry information (likely related to DD4hep).
  • LogSvc: A logging service with configurable log levels and actions.
  • NameMixin: Provides a consistent API for managing algorithm names and descriptions.
  • Configurable and PropertyMixin: Enable algorithms to have configurable properties.
  • RandomSvc: A service for generating random numbers using various distributions.
  • Service<SvcType> and ServiceSvc: Infrastructure for managing services as lazy-evaluated singletons.
  • Type traits (is_vector, is_optional, data_type_t, input_type_t, output_type_t): Help with argument type deduction and mapping.

In essence, this code provides a structured way to:

  • Define algorithms with well-defined inputs and outputs.
  • Manage algorithm creation and access through a service.
  • Configure algorithms using properties.
  • Incorporate logging and error handling.
  • Utilize common services like geometry and random number generation.

This framework is designed to promote modularity, reusability, and maintainability of algorithms within a larger C++ application.

About

Collection of Reconstruction Algorithms using DD4hep and EDM4hep

Resources

License

Stars

Watchers

Forks

Packages

No packages published