diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 33344c2dc60..ca046a7e345 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -13,7 +13,7 @@ concurrency: cancel-in-progress: true jobs: - docs: + docs-old: runs-on: ubuntu-latest env: DOXYGEN_WARN_AS_ERROR: FAIL_ON_WARNINGS @@ -52,5 +52,44 @@ jobs: - uses: actions/upload-artifact@v6 with: - name: acts-docs + name: acts-docs-old path: docs/old/_build/html/ + + docs: + runs-on: ubuntu-latest + # container: ghcr.io/acts-project/ubuntu2404:83 + env: + DOXYGEN_WARN_AS_ERROR: FAIL_ON_WARNINGS + DOXYGEN_VERSION: "1.15.0" + DOXYGEN_HASH: "0ec2e5b2c3cd82b7106d19cb42d8466450730b8cb7a9e85af712be38bf4523a1" + steps: + - uses: actions/checkout@v6 + + - name: Install doxygen + run: | + curl -SL https://acts.web.cern.ch/ci/doxygen/doxygen-${{ env.DOXYGEN_VERSION }}.linux.bin.tar.gz -o doxygen-${{ env.DOXYGEN_VERSION }}.linux.bin.tar.gz + echo "${{ env.DOXYGEN_HASH }} doxygen-${{ env.DOXYGEN_VERSION }}.linux.bin.tar.gz" | sha256sum -c - + tar xf doxygen-${{ env.DOXYGEN_VERSION }}.linux.bin.tar.gz + mv doxygen-${{ env.DOXYGEN_VERSION }}/bin/doxygen /usr/local/bin/doxygen + + - name: Install APT packages + run: | + sudo apt-get update + sudo apt-get install -y graphviz texlive-bibtex-extra libeigen3-dev libboost-dev cmake + + - name: Configure + run: > + cmake -B build -S . -DACTS_BUILD_DOCS=ON + + - name: Build documentation + run: > + cmake --build build --target docs + + - uses: actions/upload-artifact@v6 + id: artifact-upload-step + with: + name: acts-docs + path: build/docs/html + + - name: Documentation display + run: echo 'https://acts-herald.app.cern.ch/view/${{ github.repository }}/${{ steps.artifact-upload-step.outputs.artifact-id }}/index.html' diff --git a/Alignment/include/ActsAlignment/Kernel/Alignment.hpp b/Alignment/include/ActsAlignment/Kernel/Alignment.hpp index fd2afc6d8d9..4e2ff00a6fd 100644 --- a/Alignment/include/ActsAlignment/Kernel/Alignment.hpp +++ b/Alignment/include/ActsAlignment/Kernel/Alignment.hpp @@ -21,6 +21,7 @@ #include namespace ActsAlignment { + using AlignedTransformUpdater = std::function; @@ -28,7 +29,6 @@ using AlignedTransformUpdater = /// @brief Options for align() call /// /// @tparam fit_options_t The fit options type -/// template struct AlignmentOptions { /// Deleted default constructor diff --git a/CI/check_unused_files.py b/CI/check_unused_files.py index 5d7f2e5d0b3..90c1ff6379a 100755 --- a/CI/check_unused_files.py +++ b/CI/check_unused_files.py @@ -62,6 +62,11 @@ def main(): "CompressedIO.h", # Files for python binding generation "tgeo_aux.py.in", + "serve.py", + "SNIPPETS.md", + "todo.md", + "bugs.md", + "deprecated.md", ) suffix_header = ( @@ -83,6 +88,9 @@ def main(): suffix_doc = ( ".md", ".rst", + ".dox", + ".html", + ".bib", ) suffix_other = ( "", @@ -99,6 +107,7 @@ def main(): ".toml", ".txt", ".yml", + ".xml", ) suffix_allowed = ( suffix_header diff --git a/CI/codespell_ignore.txt b/CI/codespell_ignore.txt index f870d5ecb37..2366e2847d4 100644 --- a/CI/codespell_ignore.txt +++ b/CI/codespell_ignore.txt @@ -20,3 +20,5 @@ strack te vart writet +OptionA +thirdparty diff --git a/CI/physmon/workflows/physmon_trackfinding_1muon.py b/CI/physmon/workflows/physmon_trackfinding_1muon.py index 9cf68c0cc61..f29f946f2a4 100755 --- a/CI/physmon/workflows/physmon_trackfinding_1muon.py +++ b/CI/physmon/workflows/physmon_trackfinding_1muon.py @@ -97,7 +97,7 @@ def run_ckf_tracking(label, seeding): setup.trackingGeometry, setup.field, TrackSmearingSigmas( # only used by SeedingAlgorithm.TruthSmeared - # zero eveything so the CKF has a chance to find the measurements + # zero everything so the CKF has a chance to find the measurements loc0=0, loc0PtA=0, loc0PtB=0, diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ecc2df2250..be3df7c7569 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -591,7 +591,6 @@ endif() # other dependencies if(ACTS_BUILD_DOCS) find_package(Doxygen ${_acts_doxygen_version} REQUIRED) - find_package(Sphinx REQUIRED) endif() # core library, core plugins, and other components diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000000..3d452bd8efb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,284 @@ +# Contribution guidelines + +Contributions to the Acts project are very welcome and feedback on the +documentation is greatly appreciated. + +## 🗣️ Communication channels + +- [✉️ acts-developers@cern.ch](https://e-groups.cern.ch/e-groups/Egroup.do?egroupName=acts-developers): + For discussions about + + - Announcement of about developer meetings and workshops + - Occasionally news about the project + +- [💬 Mattermost channel](https://mattermost.web.cern.ch/acts/) + - Informal discussion on ACTS + - The *General* general is the best place to ask questions! + +## 🐛 Bug reports and feature requests + +To report an issue and before starting work, please create an issue in the +[GitHub issue tracker](https://github.com/acts-project/acts/issues). A +comprehensive explanation will help the development team to respond in a timely +manner. Verbalising the issue before starting work allows the other contributors +to chime in and avoids disagreements how to progress. + +- The title should summarise the issue +- Describe the issue in as much detail as possible in the comment + +GitHub does not allow editing labels, assignees or setting milestone to +non-members of a project with at least "Triage" permission. These will have to +be set by members with Triage permission after an issue/PR is created. +Guidelines regarding labels, assignees and milestone therefore only concern +members of acts-project with the necessary rights and can be ignored by others. + +- Assign to yourself or leave empty +- Choose labels as appropriate + + - Type of issue + - Which component is affected + - Urgency + - Fix versions + +- Bug reports + + - Mention affected version(s) + - Issue type: `Bug` + - A detailed description of the bug including a recipe on how to + reproduce it and any hints which may help diagnosing the problem + +- Feature requests + + - Issue type: `Improvement` or `Feature` + - A detailed description of the feature request including possible + use cases and benefits for other users + +## 🛠️ Make a contribution + +Anyone is welcome to contribute to Acts. Below is a short description how to +contribute. If you have any questions, feel free to ask [acts-developers@cern.ch](mailto:acts-developers@cern.ch) for help or guidance. + +Please always fork the Acts repository you want to work on and create branches +only in your own fork. Once you want to share your work, create a Pull Request +(PR) (for gitlab users: equivalent to merge request) to the main branch of the +upstream acts-project repository. If it is not yet ready to be merged in, please +create a draft pull request (by clicking on the small arrow on the green "create +pull request" button) to mark it work in progress. Once you want your branch to +be merged in, request a review from the [reviewers team](https://github.com/orgs/acts-project/teams/reviewers). Once a draft merge +request is reviewed, it can be merged in. + +To get started with git, please refer to the [short introduction](https://git-scm.com/docs/gittutorial) as well as the [full git documentation](https://git-scm.com/doc). Tutorials as well as explanations of concepts and +workflows with git can also be found on [Atlassian](https://www.atlassian.com/git/). + +### ✔️ Checklist for pull requests + +- Your branch has been rebased on the target branch and can be + integrated through a fast-forward merge. +- A detailed description of the pull request is provided. +- The issue the PR closes is linked. +- All CI jobs pass. +- All newly introduced functions and classes have been documented + properly with doxygen. +- Unit tests are provided for new functionalities. +- For bugfixes: a test case has been added to avoid the re-appearance + of this bug in the future. + +### 🔁 Workflow recommendations + +In the following a few recommendations are outlined which should help you to get +familiar with development process in the Acts project. + +1. **Each development in its own branch of your private fork!** + + Write access for developers has been disabled for developers on + acts-project. Therefore, always start by creating your own fork and + creating branches there. You should start a new branch for every + development and all work which is logically/conceptually linked + should happen in one branch. Try to keep your branches short. This + helps immensely to understand the git history if you need to look at + it in the future and helps reviewers of your code. If projects are + complex (e.g. large code refactoring or complex new features), you + may want to use *sub*-branches from the main development branch. + +2. **Never, ever directly work on any "official" branch!** + + Though not strictly necessary and in the end it is up to you, it is strongly + recommended that you never commit directly on a branch which tracks + an "official" branch. As all branches are equal in git, the + definition of "official" branch is quite subjective. In the Acts + project you should not work directly on branches which are + **protected** in the repository. Usually, these are the *main* and + *release/X.Y.Z* branches. The benefit of this strategy is that you + will never have problems to update your fork. Any git merge in your + local repository on such an "official" branch will always be a + fast-forward merge. + +3. **Use atomic commits!** + + Similarly to the concept of branches, each + commit should reflect a self-contained change. Try to avoid overly + large commits (bad examples are for instance mixing logical change + with code cleanup and typo fixes). + +4. **Write good commit messages!** + + Well-written commit messages are key + to understand your changes. There are many guidelines available on + how to write proper commit logs (e.g. + [here](https://alistapart.com/article/the-art-of-the-commit), + [here](https://cbea.ms/git-commit/), or + [here](https://wiki.openstack.org/wiki/GitCommitMessages#Information_in_commit_messages)). + As a short summary: + + - Structure your commit messages into short title (max 50 + characters) and longer description (max width 72 characters)! This + is best achieved by avoiding the `commit -m` option. Instead + write the commit message in an editor/git tool/IDE... + - Describe why you did the change (git diff already tells you what + has changed)! + - Mention any side effects/implications/consequences! + +5. **Prefer git pull --rebase!** + + If you work with a colleague on a new + development, you may want to include their latest changes. This is + usually done by calling `git pull` which will synchronise your + local working copy with the remote repository (which may have been + updated by your colleague). By default, this action creates a merge + commit if you have local commits which were not yet published to the + remote repository. These merge commits are considered to contribute + little information to the development process of the feature and they + clutter the history (read more e.g. + [here](https://www.atlassian.com/blog/it-teams/stop-foxtrots-now) + or + [here](https://fangpenlin.com/posts/2013/09/30/keep-a-readable-git-history/)). + This problem can be avoided by using `git pull --rebase` which + replays your local (un-pushed) commits on the tip of the remote + branch. You can make this the default behaviour by running + `git config pull.rebase true`. More about merging vs rebasing can + be found + [here](https://www.atlassian.com/git/tutorials/merging-vs-rebasing/). + +6. **Update the documentation!** + + Make sure that the documentation is + still valid after your changes. Perform updates where needed and + ensure integrity between the code and its documentation. + +#### ℹ️ Example: Make a bugfix while working on a feature + +During the development of a new feature you discover a bug which needs +to be fixed. In order to not mix bugfix and feature development, the +bugfix should happen in a different branch. The recommended procedure +for handling this situation is the following: + +1. Get into a clean state of your working directory on your feature + branch (either by committing open changes or by stashing them). +2. Checkout the branch the bugfix should be merged into (either *main* + or *release/X.Y.Z*) and get the most recent version. +3. Create a new branch for the bugfix. +4. Fix the bug, write a test, update documentation etc. +5. Open a pull request for the bug fix. +6. Switch back to your feature branch. +7. Merge your local bugfix branch into the feature branch. Continue your + feature development. +8. Eventually, the bugfix will be merged into *main*. Then, you can + rebase your feature branch on main which will remove all duplicate + commits related to the bugfix. + +#### ℹ️ Example: Backporting a feature or bugfix + +Suppose you have a bugfix or feature branch that is eventually going to +be merged in `main`. You might want to have the feature/bugfix +available in a patch (say `0.25.1`) tag. To to that, find the +corresponding release branch, for this example that would be +`release/v0.25.X`. You must create a dedicated branch that **only** +contains the commits that relate to your feature/bugfix, otherwise the +PR will contain all other commits that were merged into main since the +release was branched off. With that branch, open a PR to that branch, +and make it clear that it is a backport, also linking to a potential +equivalent PR that targets `main`. + +### 💄 Coding style and guidelines + +The Acts project uses +[clang-format](https://clang.llvm.org/docs/ClangFormat.html) for +formatting its source code. A `.clang-format` configuration file comes +with the project and should be used to automatically format the code. +Developers can use the provided Docker image to format their project or +install clang-format locally. Developers should be aware that +clang-format will behave differently for different versions, so +installing the same clang version as used in the +CI is recommended. There are several instructions available on how to +integrate clang-format with your favourite IDE (e.g. [Xcode](https://github.com/travisjeffery/ClangFormat-Xcode), +[emacs](https://clang.llvm.org/docs/ClangFormat.html#emacs-integration)). +The Acts CI system will automatically check code formatting using the +provided clang-format configuration and will notify incompatible formatting. + +In addition, some conventions are used in Acts code, details can be +found [here](https://acts.readthedocs.io/en/latest/codeguide.html). +For Doxygen documentation, please follow these recommendations: + +- Put all documentation in the header files. +- Use `///` as block comment (instead of `/* ... */`). +- Doxygen documentation goes in front of the documented entity (class, + function, (member) variable). +- Use the `@` notation. +- Document all (template) parameters using @(t)param and explain the + return value for non-void functions. Mention important conditions + which may affect the return value. +- Use `@remark` to specify pre-conditions. +- Use `@note` to provide additional information. +- Link other related entities (e.g. functions) using `@sa`. + +### 💡 Tips for users migrating from GitLab + +- The most obvious difference first: What is called Merge Request + in GitLab is called Pull Request (PR) in GitHub. +- Once your PR is ready to be merged, request a review by the users in + the [reviewers team](https://github.com/orgs/acts-project/teams/reviewers) +- As Acts started enforcing using your own fork with the switch to + GitHub, developers no longer have write access to the upstream + repository. +- The CI will fail if a PR does not yet have the required approvals. + +## 🛋️ Review other contributions + +Acts requires that every pull request receives at least one review by a member +of the reviewers team before being merged but anyone is welcome to contribute +by commenting on code changes. You can help reviewing proposed contributions by +going to the +["pull requests" section](https://github.com/acts-project/acts/pulls) +of the Acts (core) GitHub repository. + +As some of the guidelines recommended here require rights granted to the +reviewers team, this guide specifically addresses the people in this +team. The present contribution guide should serve as a good indication +of what we expect from code submissions. + +### Approving a pull request + +- Does its title and description reflect its contents? +- Do the automated continuous integration tests pass without problems? +- Have all the comments raised by previous reviewers been addressed? + +If you are confident that a pull request is ready for integration, +please make it known by clicking the "Approve pull request" button of +the GitHub interface. This notifies other members of the Acts team of +your decision, and marks the pull request as ready to be merged. + +### Merging a pull request + +If you have been granted write access on the Acts repository, you can +merge a pull request into the Acts main branch after it has been +approved. + +GitHub may warn you that a "Fast-forward merge is not possible". This +warning means that the pull request has fallen behind the current Acts +main branch, and should be updated through a rebase. Please notify the +pull request author in order to make sure that the latest main changes +do not affect the pull request, and to have it updated as appropriate. + +For a PR that is behind main, a button "Update branch" may appear. +This should NOT be used as it merges instead of rebasing, which is not +our workflow. diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst deleted file mode 100644 index 93fe1f04dec..00000000000 --- a/CONTRIBUTING.rst +++ /dev/null @@ -1,305 +0,0 @@ -Contribution guidelines -======================= - -Contributions to the Acts project are very welcome and feedback on the -documentation is greatly appreciated. - -Mailing lists -------------- - -- `acts-users@cern.ch `_: - Users of the Acts project should subscribe to this list as it provides - - - regular updates on the software, - - a common place for asking any kind of questions. - -- `acts-developers@cern.ch `_: - For discussions about - - - information about developer meetings, - - a common place for technical discussions. - -Bug reports and feature requests --------------------------------- - -To report an issue and before starting work, please create an issue in the -`GitHub issue tracker `_. A -comprehensive explanation will help the development team to respond in a timely -manner. Verbalising the issue before starting work allows the other contributors -to chime in and avoids disagreements how to progress. - -- The title should summarise the issue -- Describe the issue in as much detail as possible in the comment - -GitHub does not allow editing labels, assignees or setting milestone to -non-members of a project with at least "Triage" permission. These will have to -be set by members with Triage permission after an issue/PR is created. -Guidelines regarding labels, assignees and milestone therefore only concern -members of acts-project with the necessary rights and can be ignored by others. - -- Assign to yourself or leave empty -- Choose labels as appropriate - - - Type of issue - - Which component is affected - - Urgency - - Fix versions - -- Bug reports - - - Mention affected version(s) - - Issue type: ``Bug`` - - A detailed description of the bug including a recipe on how to - reproduce it and any hints which may help diagnosing the problem - -- Feature requests - - - Issue type: ``Improvement`` or ``Feature`` - - A detailed description of the feature request including possible - use cases and benefits for other users - -Make a contribution -------------------- - -Anyone is welcome to contribute to Acts. Below is a short description how to -contribute. If you have any questions, feel free to ask `acts-developers@cern -`_ for help or guidance. - -Please always fork the Acts repository you want to work on and create branches -only in your own fork. Once you want to share your work, create a Pull Request -(PR) (for gitlab users: equivalent to merge request) to the main branch of the -upstream acts-project repository. If it is not yet ready to be merged in, please -create a draft pull request (by clicking on the small arrow on the green "create -pull request" button) to mark it work in progress. Once you want your branch to -be merged in, request a review from the `reviewers team -`_. Once a draft merge -request is reviewed, it can be merged in. - -To get started with git, please refer to the `short introduction -`_ as well as the `full git documentation -`_. Tutorials as well as explanations of concepts and -workflows with git can also be found on `Atlassian -`_. - -Checklist for pull requests -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -- Your branch has been rebased on the target branch and can be - integrated through a fast-forward merge. -- A detailed description of the pull request is provided. -- The issue the PR closes is linked. -- All CI jobs pass. -- All newly introduced functions and classes have been documented - properly with doxygen. -- Unit tests are provided for new functionalities. -- For bugfixes: a test case has been added to avoid the re-appearance - of this bug in the future. - -Workflow recommendations -~~~~~~~~~~~~~~~~~~~~~~~~ - -In the following a few recommendations are outlined which should help you to get -familiar with development process in the Acts project. - -#. **Each development in its own branch of your private fork!** - - Write access for developers has been disabled for developers on - acts-project. Therefore, always start by creating your own fork and - creating branches there. You should start a new branch for every - development and all work which is logically/conceptually linked - should happen in one branch. Try to keep your branches short. This - helps immensely to understand the git history if you need to look at - it in the future and helps reviewers of your code. If projects are - complex (e.g. large code refactoring or complex new features), you - may want to use *sub*-branches from the main development branch. - -#. **Never, ever directly work on any "official" branch!** - - Though not strictly necessary and in the end it is up to you, it is strongly - recommended that you never commit directly on a branch which tracks - an "official" branch. As all branches are equal in git, the - definition of "official" branch is quite subjective. In the Acts - project you should not work directly on branches which are - **protected** in the repository. Usually, these are the *main* and - *release/X.Y.Z* branches. The benefit of this strategy is that you - will never have problems to update your fork. Any git merge in your - local repository on such an "official" branch will always be a - fast-forward merge. - -#. **Use atomic commits!** - - Similarly to the concept of branches, each - commit should reflect a self-contained change. Try to avoid overly - large commits (bad examples are for instance mixing logical change - with code cleanup and typo fixes). - -#. **Write good commit messages!** - - Well-written commit messages are key - to understand your changes. There are many guidelines available on - how to write proper commit logs (e.g. - `here `__, - `here `__, or - `here `__). - As a short summary: - - - Structure your commit messages into short title (max 50 - characters) and longer description (max width 72 characters)! This - is best achieved by avoiding the ``commit -m`` option. Instead - write the commit message in an editor/git tool/IDE... - - Describe why you did the change (git diff already tells you what - has changed)! - - Mention any side effects/implications/consequences! - -#. **Prefer git pull --rebase!** - - If you work with a colleague on a new - development, you may want to include their latest changes. This is - usually done by calling ``git pull`` which will synchronise your - local working copy with the remote repository (which may have been - updated by your colleague). By default, this action creates a merge - commit if you have local commits which were not yet published to the - remote repository. These merge commits are considered to contribute - little information to the development process of the feature and they - clutter the history (read more e.g. - `here `__ - or - `here `__). - This problem can be avoided by using ``git pull --rebase`` which - replays your local (un-pushed) commits on the tip of the remote - branch. You can make this the default behaviour by running - ``git config pull.rebase true``. More about merging vs rebasing can - be found - `here `__. - -#. **Update the documentation!** - - Make sure that the documentation is - still valid after your changes. Perform updates where needed and - ensure integrity between the code and its documentation. - -Coding style and guidelines -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The Acts project uses -`clang-format `_ for -formatting its source code. A ``.clang-format`` configuration file comes -with the project and should be used to automatically format the code. -Developers can use the provided Docker image to format their project or -install clang-format locally. Developers should be aware that -clang-format will behave differently for different versions, so -installing `the same clang version as used in the -CI is recommended. There are several instructions available on how to -integrate clang-format with your favourite IDE (e.g. `Xcode `_, -`emacs `_). -The Acts CI system will automatically check code formatting using the -provided clang-format configuration and will notify incompatible formatting. - -In addition, some conventions are used in Acts code, details can be -found `here `_. -For Doxygen documentation, please follow these recommendations: - -- Put all documentation in the header files. -- Use ``///`` as block comment (instead of ``/* ... */``). -- Doxygen documentation goes in front of the documented entity (class, - function, (member) variable). -- Use the ``@`` notation. -- Document all (template) parameters using @(t)param and explain the - return value for non-void functions. Mention important conditions - which may affect the return value. -- Use ``@remark`` to specify pre-conditions. -- Use ``@note`` to provide additional information. -- Link other related entities (e.g. functions) using ``@sa``. - -Example: Make a bugfix while working on a feature -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -During the development of a new feature you discover a bug which needs -to be fixed. In order to not mix bugfix and feature development, the -bugfix should happen in a different branch. The recommended procedure -for handling this situation is the following: - -#. Get into a clean state of your working directory on your feature - branch (either by committing open changes or by stashing them). -#. Checkout the branch the bugfix should be merged into (either *main* - or *release/X.Y.Z*) and get the most recent version. -#. Create a new branch for the bugfix. -#. Fix the bug, write a test, update documentation etc. -#. Open a pull request for the bug fix. -#. Switch back to your feature branch. -#. Merge your local bugfix branch into the feature branch. Continue your - feature development. -#. Eventually, the bugfix will be merged into *main*. Then, you can - rebase your feature branch on main which will remove all duplicate - commits related to the bugfix. - -Example: Backporting a feature or bugfix -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Suppose you have a bugfix or feature branch that is eventually going to -be merged in ``main``. You might want to have the feature/bugfix -available in a patch (say ``0.25.1``) tag. To to that, find the -corresponding release branch, for this example that would be -``release/v0.25.X``. You must create a dedicated branch that **only** -contains the commits that relate to your feature/bugfix, otherwise the -PR will contain all other commits that were merged into main since the -release was branched off. With that branch, open a PR to that branch, -and make it clear that it is a backport, also linking to a potential -equivalent PR that targets ``main``. - -Tips for users migrating from GitLab -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -- The most obvious difference first: What is called Merge Request - in GitLab is called Pull Request (PR) in GitHub. -- Once your PR is ready to be merged, request a review by the users in - the `reviewers - team `__ -- As Acts started enforcing using your own fork with the switch to - GitHub, developers no longer have write access to the upstream - repository. -- The CI will fail if a PR does not yet have the required approvals. - -Review other contributions --------------------------- - -Acts requires that every pull request receives at least one review by a -member of the reviewers team before being merged but anyone is welcome -to contribute by commenting on code changes. You can help reviewing -proposed contributions by going to `the "pull requests" section of the -Acts (core) GitHub -repository `_. - -As some of the guidelines recommended here require rights granted to the -reviewers team, this guide specifically addresses the people in this -team. The present contribution guide should serve as a good indication -of what we expect from code submissions. - -Approving a pull request -~~~~~~~~~~~~~~~~~~~~~~~~ - -- Does its title and description reflect its contents? -- Do the automated continuous integration tests pass without problems? -- Have all the comments raised by previous reviewers been addressed? - -If you are confident that a pull request is ready for integration, -please make it known by clicking the "Approve pull request" button of -the GitHub interface. This notifies other members of the Acts team of -your decision, and marks the pull request as ready to be merged. - -Merging a pull request -~~~~~~~~~~~~~~~~~~~~~~ - -If you have been granted write access on the Acts repository, you can -merge a pull request into the Acts main branch after it has been -approved. - -GitHub may warn you that a "Fast-forward merge is not possible". This -warning means that the pull request has fallen behind the current Acts -main branch, and should be updated through a rebase. Please notify the -pull request author in order to make sure that the latest main changes -do not affect the pull request, and to have it updated as appropriate. - -For a PR that is behind main, a button "Update branch" may appear. -This should NOT be used as it merges instead of rebasing, which is not -our workflow. diff --git a/Core/include/Acts/Definitions/Algebra.hpp b/Core/include/Acts/Definitions/Algebra.hpp index 2e7547a4cb5..17d19c7543b 100644 --- a/Core/include/Acts/Definitions/Algebra.hpp +++ b/Core/include/Acts/Definitions/Algebra.hpp @@ -25,10 +25,10 @@ namespace Acts { -/// @defgroup acts-algebra-types Vector/matrix types with a common scalar type +/// @defgroup algebra_types Algebra types /// /// These are the default vector/matrix types that should be used throughout the -/// codebase. They all use the common Acts scalar type but support variable size +/// codebase. They all use the common ACTS scalar type but support variable size /// either at compile- or runtime. /// /// Eigen does not have a distinct type for symmetric matrices. A typedef for @@ -40,7 +40,9 @@ namespace Acts { /// Without a distinct type for symmetric matrices, there is no way to provide /// any conditions e.g. square size, for the dynamic-sized case. Consequently, /// no dynamic-sized symmetric matrix type is defined. Use the -/// `ActsDynamicMatrix` instead. +/// @ref Acts::ActsDynamicMatrix instead. +/// +/// @{ /// @brief Fixed-size vector type for N-dimensional vectors /// @tparam kSize The dimension of the vector @@ -64,14 +66,6 @@ using ActsDynamicVector = Eigen::Matrix; /// @brief Dynamic-sized matrix type using ActsDynamicMatrix = Eigen::Matrix; -/// @defgroup coordinates-types Fixed-size vector/matrix types for coordinates -/// -/// These predefined types should always be used when handling coordinate -/// vectors in different coordinate systems, i.e. on surfaces (2d), spatial -/// position (3d), or space-time (4d). -/// - -// coordinate vectors /// @brief 2-dimensional vector type for 2D coordinates using Vector2 = ActsVector<2>; /// @brief 3-dimensional vector type for e.g. spatial coordinates and momenta @@ -79,7 +73,6 @@ using Vector3 = ActsVector<3>; /// @brief 4-dimensional vector type for space-time coordinates using Vector4 = ActsVector<4>; -// square matrices e.g. for coordinate covariance matrices /// @brief 2x2 square matrix type, typically used for 2D coordinate covariance using SquareMatrix2 = ActsSquareMatrix<2>; /// @brief 3x3 square matrix type, typically used for 3D coordinate covariance @@ -87,7 +80,6 @@ using SquareMatrix3 = ActsSquareMatrix<3>; /// @brief 4x4 square matrix type, typically used for 4D coordinate covariance using SquareMatrix4 = ActsSquareMatrix<4>; -// pure translation transformations /// @brief 2D translation transformation using Translation2 = Eigen::Translation; /// @brief 3D translation transformation @@ -98,7 +90,6 @@ using RotationMatrix2 = SquareMatrix2; /// @brief 3D rotation matrix using RotationMatrix3 = SquareMatrix3; -// pure rotation defined by a rotation angle around a rotation axis /// @brief Rotation defined by an angle around a rotation axis in 3D using AngleAxis3 = Eigen::AngleAxis; @@ -110,4 +101,6 @@ using Transform3 = Eigen::Transform; /// Tolerance for transform equivalence checks constexpr double s_transformEquivalentTolerance = 1e-9; +/// @} + } // namespace Acts diff --git a/Core/include/Acts/Definitions/Units.hpp b/Core/include/Acts/Definitions/Units.hpp index 3b8841aaced..ee980e5a850 100644 --- a/Core/include/Acts/Definitions/Units.hpp +++ b/Core/include/Acts/Definitions/Units.hpp @@ -12,7 +12,8 @@ namespace Acts { -/// @verbatim embed:rst:leading-slashes +/// @namespace Acts::UnitConstants +/// @brief Constants and helper literals for physical units. /// All physical quantities have both a numerical value and a unit. For the /// computations we always choose a particular unit for a given physical /// quantity so we only need to consider the numerical values as such. The @@ -36,103 +37,47 @@ namespace Acts { /// connects momentum to length, e.g. in SI units the radius of a charged /// particle trajectory in a constant magnetic field is given by /// -/// .. math:: +/// @f$ +/// \text{radius} = - \frac{\text{momentum} }{ \text{charge} } / \text{field} +/// @f$ /// -/// radius = - (momentum / charge) / field -/// -/// With the chosen magnetic field unit the expression above stays the -/// same and no additional conversion factors are necessary. -/// - Amount of substance is expressed in mol. +/// With the chosen magnetic field unit the expression above stays the +/// same and no additional conversion factors are necessary. /// /// Depending on the context a physical quantity might not be given in the /// native units. In this case we need to convert to the native unit first /// before the value can be used. The necessary conversion factors are defined -/// in ``Acts::UnitConstants``. Multiplying a value with the unit constant +/// in @ref Acts::UnitConstants. Multiplying a value with the unit constant /// produces the equivalent value in the native unit, e.g. /// -/// .. code-block:: cpp -/// -/// double length = 1 * Acts::UnitConstants::m; // length == 1000.0 -/// double momentum = 100 * Acts::UnitConstants::MeV; // momentum == 0.1 -/// -/// The conversion of a value in native units into the equivalent value in a -/// specific other unit is computed by dividing with the relevant unit, e.g. -/// -/// .. code-block:: cpp -/// -/// double length = 10.0; // native units mm -/// double lengthInM = length / Acts::UnitConstants::m; // == 0.01; -/// -/// To further simplify the usage, physical quantities can also be expressed via -/// `C++ user literals -/// `_ defined in -/// ``Acts::UnitLiterals``. This allows us to express quantities in a concise -/// way: +/// @snippet{trimleft} examples/units.cpp Using Unit Constants /// -/// .. code-block:: cpp +/// To further simplify the usage, physical quantities can also be expressed +/// via [C++ user +/// literals](https://en.cppreference.com/w/cpp/language/user_literal) defined +/// in @ref Acts::UnitLiterals. This allows us to express quantities in a +/// concise way: /// -/// using namespace Acts::UnitLiterals; +/// @snippet{trimleft} examples/units.cpp Using Unit Literals /// -/// double length = 1_m; // == 1000.0 -/// double momentum = 1.25_TeV; // == 1250.0 -/// double lengthInUm = length / 1_um; // == 1000000.0 -/// double momentumInMeV = momentum / 1_MeV; // == 1250000.0 -/// -/// .. warning:: -/// Since using user-defined literals requires a namespace import of -/// ``Acts::UnitLiterals`` it should not be used in headers since it would -/// (accidentally) modify the namespace wherever the header is included. +/// @warning Since using user-defined literals requires a namespace import of +/// @ref Acts::UnitLiterals it should not be used in headers since it +/// would (accidentally) modify the namespace wherever the header is +/// included. /// /// To ensure consistent computations and results the following guidelines /// **must** be followed when handling physical quantities with units: /// -/// - All unqualified numerical values, i.e. without a unit, are assumed to -/// be expressed in the relevant native unit, e.g. mm for lengths or GeV -/// for energy/momentum. -/// - If a variable stores a physical quantity in a specific unit that is -/// not the native unit, clearly mark this in the variable, i.e. -/// -/// .. code-block:: cpp -/// -/// double momentum = 100.0; // momentum is stored as native unit GeV -/// double momentumInMeV = 10.0; // would be 0.01 in native units +/// @snippet{trimleft} examples/units.cpp Unit Best Practices /// -/// - All input values must be given as ``numerical_value * unit_constant`` or -/// equivalently using the unit literals as ``value_unit``. The resulting -/// unqualified numerical value will be automatically converted to the -/// native unit. -/// - To output an unqualified numerical value in the native units as a -/// numerical value in a specific unit divide by the unit constants as -/// ``numerical_value / unit_constant`` or using the unit literals as -/// ``value / 1_unit``. +/// Here's a comprehensive example showing various ways to work with units: /// -/// Examples: +/// @snippet{trimleft} examples/units.cpp Comprehensive Units Example /// -/// .. code-block:: cpp +/// Converting output values from native units: /// -/// #include -/// using namespace Acts::UnitLiterals; +/// @snippet{trimleft} examples/units.cpp Converting Output Values /// -/// // define input values w/ units (via unit constants) -/// double width = 12 * Acts::UnitConstants::mm; -/// double mmuon = 105.7 * Acts::UnitConstants::MeV; -/// // define input values w/ units (via unit user literals) -/// double length = 23_cm; -/// double time = 1214.2_ns; -/// double angle = 123_degree; -/// double momentum = 2.5_TeV; -/// double mass = 511_keV; -/// double velocity = 345_m / 1_s; -/// double bfield = 3.9_T; -/// -/// // convert output values (via unit constants) -/// double t_in_ns = trackPars.time() / Acts::UnitConstants::ns; -/// // convert output values (via unit user literals) -/// double x_in_mm = trackPars.position()[ePos0] / 1_mm; -/// double p_in_TeV = trackPars.absoluteMomentum() / 1_TeV; -/// -/// @endverbatim - /// @note A helper script is available in /// `Core/scripts/print_units_physical_constants.py` to validate some of the /// numerical values. @@ -233,6 +178,8 @@ constexpr double kGauss = 1e-1 * T; constexpr double mol = 1.0; } // namespace UnitConstants +/// @brief Namespace for user-defined literals for physical units. See @ref +/// UnitConstants for details. namespace UnitLiterals { // define user literal functions for the given unit constant #define ACTS_DEFINE_UNIT_LITERAL(name) \ diff --git a/Core/include/Acts/EventData/Charge.hpp b/Core/include/Acts/EventData/Charge.hpp index c62dcb310b8..5cffaf461ae 100644 --- a/Core/include/Acts/EventData/Charge.hpp +++ b/Core/include/Acts/EventData/Charge.hpp @@ -17,6 +17,7 @@ namespace Acts { +/// @ingroup eventdata /// @defgroup eventdata-charge Charge interpretation for track parameters /// /// Track parameters store a single coefficient that describes charge and diff --git a/Core/include/Acts/EventData/SourceLink.hpp b/Core/include/Acts/EventData/SourceLink.hpp index ba1515738e6..8fadd378b7f 100644 --- a/Core/include/Acts/EventData/SourceLink.hpp +++ b/Core/include/Acts/EventData/SourceLink.hpp @@ -24,6 +24,7 @@ namespace Acts { +/// @ingroup eventdata_measurement class SourceLink final { using any_type = AnyBase; diff --git a/Core/include/Acts/EventData/TrackContainer.hpp b/Core/include/Acts/EventData/TrackContainer.hpp index 58a7e453214..d42cd9ff84c 100644 --- a/Core/include/Acts/EventData/TrackContainer.hpp +++ b/Core/include/Acts/EventData/TrackContainer.hpp @@ -247,7 +247,7 @@ class TrackContainer { /// manage the dynamic columns. /// @{ - /// Add a dymanic column to the track container + /// Add a dynamic column to the track container /// @note Only available if the track container is not read-only /// @param key the name of the column to be added template diff --git a/Core/include/Acts/EventData/VectorMultiTrajectory.hpp b/Core/include/Acts/EventData/VectorMultiTrajectory.hpp index b0554b403a5..c200013cf7b 100644 --- a/Core/include/Acts/EventData/VectorMultiTrajectory.hpp +++ b/Core/include/Acts/EventData/VectorMultiTrajectory.hpp @@ -379,12 +379,13 @@ class VectorMultiTrajectory; template <> struct IsReadOnlyMultiTrajectory : std::false_type {}; +/// In-memory transient multi-trajectory implementation using @c std::vector as +/// backend +/// @ingroup eventdata_tracks class VectorMultiTrajectory final : public detail_vmt::VectorMultiTrajectoryBase, public MultiTrajectory { -#ifndef DOXYGEN - friend MultiTrajectory; -#endif + friend class MultiTrajectory; public: VectorMultiTrajectory() = default; @@ -559,6 +560,8 @@ template <> struct IsReadOnlyMultiTrajectory : std::true_type { }; +/// Const version of @ref VectorMultiTrajectory +/// @ingroup eventdata_tracks class ConstVectorMultiTrajectory final : public detail_vmt::VectorMultiTrajectoryBase, public MultiTrajectory { diff --git a/Core/include/Acts/Geometry/ConeLayer.hpp b/Core/include/Acts/Geometry/ConeLayer.hpp index f31336c051c..5d33135e557 100644 --- a/Core/include/Acts/Geometry/ConeLayer.hpp +++ b/Core/include/Acts/Geometry/ConeLayer.hpp @@ -23,7 +23,7 @@ class SurfaceArray; /// @class ConeLayer /// -/// Class to describe a conical detector layer for tracking, it inhertis from +/// Class to describe a conical detector layer for tracking, it inherits from /// both, Layer base class and ConeSurface class class ConeLayer : virtual public ConeSurface, public Layer { public: diff --git a/Core/include/Acts/Geometry/CylinderLayer.hpp b/Core/include/Acts/Geometry/CylinderLayer.hpp index a4182a21088..28ef154463d 100644 --- a/Core/include/Acts/Geometry/CylinderLayer.hpp +++ b/Core/include/Acts/Geometry/CylinderLayer.hpp @@ -23,7 +23,7 @@ class SurfaceArray; /// @class CylinderLayer /// -/// Class to describe a cylindrical detector layer for tracking, it inhertis +/// Class to describe a cylindrical detector layer for tracking, it inherits /// from both, Layer base class and CylinderSurface class /// class CylinderLayer : public CylinderSurface, public Layer { diff --git a/Core/include/Acts/Geometry/DetectorElementBase.hpp b/Core/include/Acts/Geometry/DetectorElementBase.hpp index 5e5af633d97..9610637671b 100644 --- a/Core/include/Acts/Geometry/DetectorElementBase.hpp +++ b/Core/include/Acts/Geometry/DetectorElementBase.hpp @@ -11,16 +11,6 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/GeometryContext.hpp" -#include -#include - -/// This is the plugin mechanism to exchange the entire DetectorElementBase -/// -/// By defining ACTS_DETECTOR_ELEMENT_BASE_REPLACEMENT pre-compile time the -/// detector element entire detector element can be exchanged with a file -/// provided by the client. -/// -/// The API has to be present though #ifdef ACTS_DETECTOR_ELEMENT_BASE_REPLACEMENT #include ACTS_DETECTOR_ELEMENT_BASE_REPLACEMENT #else @@ -29,6 +19,13 @@ namespace Acts { class Surface; +/// This class is the base of all detector elements that are usable by ACTS. +/// All experiment-specific detector element classes are expected to inherit +/// from it. +/// +/// @remark It is possible toe replace this base class by defining a +/// `ACTS_DETECTOR_ELEMENT_BASE_REPLACEMENT` pre-processor replacement. +/// If found, @ref DetectorElementBase.hpp will instead include that file. class DetectorElementBase { public: DetectorElementBase() = default; @@ -37,12 +34,19 @@ class DetectorElementBase { /// Return the transform for the Element proxy mechanism /// /// @param gctx The current geometry context object, e.g. alignment + /// @return reference to the transform of this detector element virtual const Transform3& transform(const GeometryContext& gctx) const = 0; - /// Return surface representation - const return pattern + /// Get a reference to the surface that is associated with this detector + /// element. + /// @note It is expected that the surface returned will have it's @ref + /// Acts::Surface::associatedDetectorElement method return a pointer to + /// this object. + /// @return Reference to a surface that represents this detector element virtual const Surface& surface() const = 0; - /// Non-const return pattern + /// @copydoc surface + /// @return Reference to a surface that represents this detector element virtual Surface& surface() = 0; /// Returns the thickness of the module diff --git a/Core/include/Acts/Geometry/DiamondPortalShell.hpp b/Core/include/Acts/Geometry/DiamondPortalShell.hpp index f4c3372cee9..4fa4dbe35f5 100644 --- a/Core/include/Acts/Geometry/DiamondPortalShell.hpp +++ b/Core/include/Acts/Geometry/DiamondPortalShell.hpp @@ -17,10 +17,8 @@ namespace Acts { -/// @class DiamondPortalShell -/// Base class for convrrex polygon shaped portal shells, e.g +/// Base class for diamond shaped portal shells, e.g /// single volumes with polygon shape or stacked (multiple) volumes (TODO) - class DiamondPortalShell : public PortalShellBase { public: using Face = DiamondVolumeBounds::Face; @@ -51,7 +49,6 @@ class DiamondPortalShell : public PortalShellBase { /// @return The output stream std::ostream& operator<<(std::ostream& os, DiamondPortalShell::Face face); -/// @class SingleDiamondPortalShell /// Implementation of a portal shell class for a single convex polygon volume class SingleDiamondPortalShell : public DiamondPortalShell { public: diff --git a/Core/include/Acts/Geometry/DiscLayer.hpp b/Core/include/Acts/Geometry/DiscLayer.hpp index 9937466f690..001561dfcd2 100644 --- a/Core/include/Acts/Geometry/DiscLayer.hpp +++ b/Core/include/Acts/Geometry/DiscLayer.hpp @@ -23,7 +23,7 @@ class SurfaceArray; /// @class DiscLayer /// /// Class to describe a disc-like detector layer for tracking, -/// it inhertis from both, Layer base class +/// it inherits from both, Layer base class /// and DiscSurface class class DiscLayer : virtual public DiscSurface, public Layer { diff --git a/Core/include/Acts/Geometry/GeometryContext.hpp b/Core/include/Acts/Geometry/GeometryContext.hpp index 943c2ade791..774d68d48c1 100644 --- a/Core/include/Acts/Geometry/GeometryContext.hpp +++ b/Core/include/Acts/Geometry/GeometryContext.hpp @@ -22,9 +22,10 @@ namespace Acts { /// @brief This is the central definition of the Acts /// payload object regarding detector geometry status (e.g. alignment) /// +/// @ingroup context +/// /// It is propagated through the code to allow for event/thread /// dependent geometry changes - class GeometryContext : public ContextType { public: /// Inherit all constructors diff --git a/Core/include/Acts/Geometry/GeometryObject.hpp b/Core/include/Acts/Geometry/GeometryObject.hpp index a90e036abc7..34ed0f64e23 100644 --- a/Core/include/Acts/Geometry/GeometryObject.hpp +++ b/Core/include/Acts/Geometry/GeometryObject.hpp @@ -55,7 +55,7 @@ class GeometryObject { /// Force a binning position method /// /// @param gctx The current geometry context object, e.g. alignment - /// @param aDir is the value for which the reference position is requesed + /// @param aDir is the value for which the reference position is requested /// /// @return vector 3D used for the binning schema virtual Vector3 referencePosition(const GeometryContext& gctx, diff --git a/Core/include/Acts/Geometry/ILayerArrayCreator.hpp b/Core/include/Acts/Geometry/ILayerArrayCreator.hpp index b36291438cc..ccdd98fd6e8 100644 --- a/Core/include/Acts/Geometry/ILayerArrayCreator.hpp +++ b/Core/include/Acts/Geometry/ILayerArrayCreator.hpp @@ -29,7 +29,7 @@ using LayerVector = std::vector; /// /// Interface class ILayerArrayCreators, it inherits from IAlgTool. /// -/// It receives the LayerVector and creaets an array with NaivgationLayer +/// It receives the LayerVector and creates an array with NaivgationLayer /// objects /// filled in between. class ILayerArrayCreator { diff --git a/Core/include/Acts/Geometry/PlaneLayer.hpp b/Core/include/Acts/Geometry/PlaneLayer.hpp index 0f48bd4c329..89720aad71c 100644 --- a/Core/include/Acts/Geometry/PlaneLayer.hpp +++ b/Core/include/Acts/Geometry/PlaneLayer.hpp @@ -23,7 +23,7 @@ class SurfaceArray; /// @class PlaneLayer /// /// Class to describe a planar detector layer for tracking, -/// it inhertis from both, Layer base class and PlaneSurface class +/// it inherits from both, Layer base class and PlaneSurface class /// class PlaneLayer : virtual public PlaneSurface, public Layer { public: diff --git a/Core/include/Acts/Geometry/PortalError.hpp b/Core/include/Acts/Geometry/PortalError.hpp index 113ca2a6f10..de9d3d95b21 100644 --- a/Core/include/Acts/Geometry/PortalError.hpp +++ b/Core/include/Acts/Geometry/PortalError.hpp @@ -14,8 +14,10 @@ namespace Acts { /// Error codes for portal operations +/// @ingroup errors enum class PortalError { // ensure all values are non-zero + /// Position not on any of the composite child portal links PositionNotOnAnyChildPortalLink = 1, }; diff --git a/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp b/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp index b1320cdb701..1bfce3ca1da 100644 --- a/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp +++ b/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp @@ -137,7 +137,7 @@ class SurfaceArrayCreator { /// to be ordered on the cylinder /// @pre the pointers to the sensitive surfaces in the surfaces vectors all /// need to be valid, since no check is performed - /// @param [in] gctx The gometry context for this building call + /// @param [in] gctx The geometry context for this building call /// @param protoLayerOpt The proto layer containing the layer size /// @param binsPhi is the number of bins in phi for the surfaces /// @param binsZ is the number of bin in Z for the surfaces @@ -160,7 +160,7 @@ class SurfaceArrayCreator { /// to be ordered on the cylinder /// @pre the pointers to the sensitive surfaces in the surfaces vectors all /// need to be valid, since no check is performed - /// @param [in] gctx The gometry context for this building call + /// @param [in] gctx The geometry context for this building call /// @param protoLayerOpt The proto layer containing the layer size /// @param bTypePhi the binning type in phi direction (equidistant/arbitrary) /// @param bTypeZ the binning type in z direction (equidistant/arbitrary) @@ -183,7 +183,7 @@ class SurfaceArrayCreator { /// @pre the pointers to the sensitive surfaces in the surfaces vectors all /// need to be valid, since no check is performed /// @warning This function requires the disc aligned with the z-axis - /// @param [in] gctx The gometry context for this building call + /// @param [in] gctx The geometry context for this building call /// @param protoLayerOpt The proto layer containing the layer size /// @param binsPhi is the number of bins in phi for the surfaces /// @param binsR is the number of bin in R for the surfaces @@ -207,7 +207,7 @@ class SurfaceArrayCreator { /// @pre the pointers to the sensitive surfaces in the surfaces vectors all /// need to be valid, since no check is performed /// @warning This function requires the disc aligned with the z-axis - /// @param [in] gctx The gometry context for this building call + /// @param [in] gctx The geometry context for this building call /// @param protoLayerOpt The proto layer containing the layer size /// @param bTypeR the binning type in r direction (equidistant/arbitrary) /// @param bTypePhi the binning type in phi direction (equidistant/arbitrary) @@ -227,7 +227,7 @@ class SurfaceArrayCreator { /// SurfaceArrayCreator interface method /// - create an array on a plane /// - /// @param [in] gctx The gometry context for this building call + /// @param [in] gctx The geometry context for this building call /// @param [in] surfaces is the vector of pointers to sensitive surfaces /// to be ordered on the plane /// @pre the pointers to the sensitive surfaces in the surfaces vectors all @@ -349,7 +349,7 @@ class SurfaceArrayCreator { /// It loops through the surfaces and finds out the needed information /// First the surfaces are sorted in the binning direction and the so called /// "key" surfaces (surfaces with different positions in the binning - /// direction) are extracted. The number of key surfaces euqals the number + /// direction) are extracted. The number of key surfaces equals the number /// of bins. Afterwards the minimum and maximum are calculated by /// subtracting/adding half of a bin size to the center position (in the /// binning direction) to the first/last surface. diff --git a/Core/include/Acts/MagneticField/BFieldMapUtils.hpp b/Core/include/Acts/MagneticField/BFieldMapUtils.hpp index ec3d7f0e701..777309200ec 100644 --- a/Core/include/Acts/MagneticField/BFieldMapUtils.hpp +++ b/Core/include/Acts/MagneticField/BFieldMapUtils.hpp @@ -26,6 +26,9 @@ namespace Acts { +/// @addtogroup magnetic_field +/// @{ + class SolenoidBField; /// Method to setup the FieldMap @@ -160,4 +163,6 @@ solenoidFieldMap(const std::pair& rLim, const std::pair& nBins, const SolenoidBField& field); +/// @} + } // namespace Acts diff --git a/Core/include/Acts/MagneticField/ConstantBField.hpp b/Core/include/Acts/MagneticField/ConstantBField.hpp index 502385209cc..02b948f2927 100644 --- a/Core/include/Acts/MagneticField/ConstantBField.hpp +++ b/Core/include/Acts/MagneticField/ConstantBField.hpp @@ -14,15 +14,16 @@ namespace Acts { -/// @ingroup MagneticField +/// @ingroup magnetic_field /// -/// This class implements a simple constant magnetic field. The -/// magnetic field value has to be set at creation time, but can -/// be updated later on. +/// The simplest magnetic field implementation is a constant field, which +/// returns the same field values at every queried location. class ConstantBField final : public MagneticFieldProvider { public: + /// Cache object for constant magnetic field struct Cache { - /// @brief constructor with context + /// Constructor with context + /// @note For the constant field, the cache is empty. explicit Cache(const MagneticFieldContext& /*mcfg*/) {} }; diff --git a/Core/include/Acts/MagneticField/InterpolatedBFieldMap.hpp b/Core/include/Acts/MagneticField/InterpolatedBFieldMap.hpp index 0980ad66352..a73f52411ba 100644 --- a/Core/include/Acts/MagneticField/InterpolatedBFieldMap.hpp +++ b/Core/include/Acts/MagneticField/InterpolatedBFieldMap.hpp @@ -21,6 +21,22 @@ namespace Acts { +/// @addtogroup magnetic_field +/// @{ + +/// @brief Base class for interpolated magnetic field providers +/// +/// This class can be used for non-trivial magnetic field implementations. +/// +/// The key idea here is to calculate an interpolated value of the magnetic +/// field from a grid of known field values. In 3D, this means the +/// interpolation is done from the 8 corner points of a *field cell*. The field +/// cell can be retrieved for any given position. Since during typical access +/// patterns, e.g. the propagation, subsequent steps are relatively likely to +/// not cross the field cell boundary, the field cell can be cached. +/// +/// @image html bfield/field_cell.svg "Illustration of the field cell concept. Subsequent steps are clustered in the same field cell. The field cell only needs to be refetched when the propagation crosses into the next grid region." width=60% +/// class InterpolatedMagneticField : public MagneticFieldProvider { public: /// @brief get the number of bins for all axes of the field map @@ -53,13 +69,12 @@ class InterpolatedMagneticField : public MagneticFieldProvider { virtual Vector3 getFieldUnchecked(const Vector3& position) const = 0; }; -/// @ingroup MagneticField -/// @brief interpolate magnetic field value from field values on a given grid +/// Interpolates magnetic field value from field values on a given grid /// /// This class implements a magnetic field service which is initialized by a /// field map defined by: -/// - a list of field values on a regular grid in some n-Dimensional space, -/// - a transformation of global 3D coordinates onto this n-Dimensional +/// - a list of field values on a regular grid in some n-dimensional space, +/// - a transformation of global 3D coordinates onto this n-dimensional /// space. /// - a transformation of local n-Dimensional magnetic field coordinates into /// global (cartesian) 3D coordinates @@ -69,6 +84,20 @@ class InterpolatedMagneticField : public MagneticFieldProvider { /// - looking up the magnetic field values on the closest grid points, /// - doing a linear interpolation of these magnetic field values. /// +/// Internally, this class uses a *field interpolation cell* to speed up +/// lookups. This cell contains the interpolation points so the grid does not +/// have to be consulted for each lookup. Explicit methods to create such a +/// field cell are provided, but field cell creation is automatically handled +/// by @ref Acts::InterpolatedBFieldMap::makeCache, opaque to the client. +/// +/// This class can leverage spatial symmetries in the magnetic field +/// distribution. For cylindrically symmetric fields (e.g., solenoids, toroids), +/// a 2D rz map can be used instead of a full 3D xyz map, significantly reducing +/// memory +/// requirements and improving performance. Helper functions @ref Acts::fieldMapRZ +/// and @ref Acts::fieldMapXYZ are provided to construct field maps with the +/// appropriate symmetries. +/// /// @tparam grid_t The Grid type which provides the field storage and /// interpolation template @@ -83,8 +112,12 @@ class InterpolatedBFieldMap : public InterpolatedMagneticField { /// @brief struct representing smallest grid unit in magnetic field grid /// - /// This type encapsulate all required information to perform linear - /// interpolation of magnetic field values within a confined 3D volume. + /// This type encapsulates all required information to perform linear + /// interpolation of magnetic field values within a confined spatial region + /// (hyper-box). The cell stores field values at all corner points and + /// performs interpolation for any position within the cell boundaries. + /// This allows for efficient repeated lookups within the same grid cell + /// without consulting the full grid structure. struct FieldCell { /// number of corner points defining the confining hyper-box static constexpr unsigned int N = 1 << DIM_POS; @@ -146,11 +179,20 @@ class InterpolatedBFieldMap : public InterpolatedMagneticField { std::array m_fieldValues; }; + /// @brief Cache for field cell to improve performance of field lookups + /// + /// This cache stores the current field cell which contains the interpolation + /// data for a confined region of space. By caching the cell, subsequent + /// lookups at nearby positions (e.g., during track propagation) can avoid + /// expensive grid queries. The cache automatically updates when a position + /// outside the current cell is queried. struct Cache { /// @brief Constructor with magnetic field context explicit Cache(const MagneticFieldContext& /*mctx*/) {} + /// Stored field cell containing interpolation data std::optional fieldCell; + /// Flag indicating if the cache has been initialized bool initialized = false; }; @@ -326,4 +368,6 @@ class InterpolatedBFieldMap : public InterpolatedMagneticField { typename Grid::point_t m_upperRight; }; +/// @} + } // namespace Acts diff --git a/Core/include/Acts/MagneticField/MagneticFieldContext.hpp b/Core/include/Acts/MagneticField/MagneticFieldContext.hpp index 3d44f00a3ec..bbaea5ffd5e 100644 --- a/Core/include/Acts/MagneticField/MagneticFieldContext.hpp +++ b/Core/include/Acts/MagneticField/MagneticFieldContext.hpp @@ -17,12 +17,20 @@ namespace Acts { -/// @brief This is the central definition of the Acts -/// payload object regarding magnetic field status +/// @ingroup context magnetic_field +/// @brief Context object for lookup of magnetic field values /// -/// It is propagated through the code to allow for event/thread -/// dependent magnetic field changes - +/// The magnetic field context is an opaque type which contains experiment +/// specific event context information. This can be used to supply event +/// dependent data to the magnetic field instance, in case it is needed to +/// provide correct field values. The library itself does not make any +/// assumptions on the content of this context type (it is implemented using +/// `std::any`), but passes a reference through the call-chain to the field +/// implementation. An experiment specific field implementation is then expected +/// to performa cast to the concrete type, and use the contents. +/// +/// An example use case of the context could be to look up conditions data / +/// records for the value of the magnetic field at the time of the event. class MagneticFieldContext : public ContextType { public: /// Inherit all constructors diff --git a/Core/include/Acts/MagneticField/MagneticFieldError.hpp b/Core/include/Acts/MagneticField/MagneticFieldError.hpp index 48ffbbed177..a2882dff6ca 100644 --- a/Core/include/Acts/MagneticField/MagneticFieldError.hpp +++ b/Core/include/Acts/MagneticField/MagneticFieldError.hpp @@ -14,15 +14,21 @@ namespace Acts { /// Error codes for magnetic field operations +/// @ingroup errors enum class MagneticFieldError { + /// The lookup position was outside of the validitiy domain of the underlying + /// magnetic field instance. OutOfBounds = 1, + /// An operation for this magnetic field type is not implemented. NotImplemented = 2, }; +/// @cond /// Create error code from MagneticFieldError /// @param e The error code enum value /// @return Standard error code std::error_code make_error_code(Acts::MagneticFieldError e); +/// @endcond } // namespace Acts diff --git a/Core/include/Acts/MagneticField/MagneticFieldProvider.hpp b/Core/include/Acts/MagneticField/MagneticFieldProvider.hpp index 73bb343ccde..252c44be960 100644 --- a/Core/include/Acts/MagneticField/MagneticFieldProvider.hpp +++ b/Core/include/Acts/MagneticField/MagneticFieldProvider.hpp @@ -15,25 +15,71 @@ namespace Acts { -/// @defgroup MagneticField Magnetic field - /// Base class for all magnetic field providers +/// @ingroup magnetic_field +/// +/// All magnetic field implementations inherit and implement from this +/// interface. +/// +/// It provides a generic interface over different implementations. To speed up +/// magnetic field lookup, each implementation can have a *cache* object. The +/// cache object can for example be used to store a local interpolation domain, +/// to speed up nearby field lookups. The client is expected to pass into +/// lookup calls an instance of @ref Acts::MagneticFieldProvider::Cache. +/// +/// The implementation is then free to use and update this cache instance as +/// needed. Before a client can issue field lookup calls, it needs to obtain an +/// initialized instance of this cache object. This can be achieved generically +/// for all implementations by using +/// @ref Acts::MagneticFieldProvider::makeCache. This function accepts an +/// instance of @ref Acts::MagneticFieldContext. +/// +/// The main lookup method of @ref Acts::MagneticFieldProvider is @ref +/// Acts::MagneticFieldProvider::getField +/// +/// Aside from the lookup position as a global position vector, it accepts an +/// instance of the opaque cache object mentioned before. The return value is a +/// @ref Acts::Result object. It either contains the field value at the +/// requested location, or an @ref Acts::MagneticFieldError in case of a lookup +/// failure, like an out-of-bounds lookup position. +/// +/// Below is an example of how a client can interact with an instance of +/// @ref Acts::MagneticFieldProvider. +/// +/// ```cpp +/// // In event context +/// auto fieldContext = getExperimentFieldContext(); +/// const Acts::MagneticFieldProvider& fieldProvider = getFieldProvider(); +/// // Make an opaque cache for field lookups +/// auto cache = fieldProvider.makeCache(fieldContext); +/// +/// auto lookupResult = fieldProvider.getField(Acts::Vector3{10, 10, 10}, +/// cache); +/// if(!lookupResult.ok()) { +/// throw std::runtime_error{"Field lookup failure"}; +/// } +/// +/// Acts::Vector3 fieldValue = *lookupResult; +/// ``` class MagneticFieldProvider { public: /// Opaque cache type that can store arbitrary implementation specific cache /// data. Examples are an interpolation cell, or an experiment specific /// conditions data handle. + /// + /// The cache is always creaded through @ref makeCache. using Cache = Acts::AnyBase; /// Make an opaque cache for the magnetic field. Instructs the specific - /// implementation to generate a @c Cache instance for magnetic field lookup. + /// implementation to generate a @ref Acts::MagneticFieldProvider::Cache instance + /// for magnetic field lookup. /// /// @param mctx The magnetic field context to generate cache for /// @return Cache The opaque cache object virtual Cache makeCache(const MagneticFieldContext& mctx) const = 0; - /// Retrieve magnetic field value at a given location. Requires a cache object - /// created through makeCache(). + /// Retrieve magnetic field value at a given location. Requires an instance + /// of @ref Acts::MagneticFieldProvider::Cache created through @ref makeCache. /// /// @param [in] position global 3D position for the lookup /// @param [in,out] cache Field provider specific cache object diff --git a/Core/include/Acts/MagneticField/MultiRangeBField.hpp b/Core/include/Acts/MagneticField/MultiRangeBField.hpp index c45c6df26a5..c998441ee96 100644 --- a/Core/include/Acts/MagneticField/MultiRangeBField.hpp +++ b/Core/include/Acts/MagneticField/MultiRangeBField.hpp @@ -15,10 +15,28 @@ namespace Acts { -/// @ingroup MagneticField -/// -/// @brief Magnetic field provider modelling a magnetic field consisting of +/// Magnetic field provider modelling a magnetic field consisting of /// several (potentially overlapping) regions of constant values. +/// +/// @ingroup magnetic_field +/// +/// The multi-range constant field allows modelling cases where a magnetic field +/// can be described as multiple (potentially overlapping) regions, each of +/// which has its own constant magnetic field. This provides more flexibility +/// than the +/// @ref Acts::ConstantBField while providing higher performance than +/// @ref Acts::InterpolatedBFieldMap. +/// +/// This magnetic field provider is configured using a list of pairs, where each +/// pair defines a region in three-dimensional space as well as a field vector. +/// Magnetic field lookup then proceeds by finding the *last* region in the +/// user-provided list that contains the requested coordinate and returning the +/// corresponding field vector. +/// +/// The implementation uses a simple caching mechanism to store the last matched +/// region, providing improved performance for consecutive lookups within the +/// same region. This is thread-safe when each thread uses its own cache +/// instance. The field configuration itself is immutable after construction. class MultiRangeBField final : public MagneticFieldProvider { private: struct Cache { diff --git a/Core/include/Acts/MagneticField/NullBField.hpp b/Core/include/Acts/MagneticField/NullBField.hpp index 286140e3675..4054673c3c4 100644 --- a/Core/include/Acts/MagneticField/NullBField.hpp +++ b/Core/include/Acts/MagneticField/NullBField.hpp @@ -14,8 +14,9 @@ namespace Acts { -/// @ingroup MagneticField -/// @brief Null bfield which returns 0 always +/// Null bfield which returns 0 always +/// +/// @ingroup magnetic_field class NullBField final : public MagneticFieldProvider { public: struct Cache { diff --git a/Core/include/Acts/MagneticField/SolenoidBField.hpp b/Core/include/Acts/MagneticField/SolenoidBField.hpp index fce1766398b..bdce0af5c2f 100644 --- a/Core/include/Acts/MagneticField/SolenoidBField.hpp +++ b/Core/include/Acts/MagneticField/SolenoidBField.hpp @@ -17,56 +17,79 @@ namespace Acts { -/// @ingroup MagneticField -// /// @class SolenoidBField -/// Implements a multi-coil solenoid magnetic field. On every call, the field -/// is evaluated at that exact position. The field has radially symmetry, the -/// field vectors point in +z direction. -/// The config exposes a target field value in the center. This value is used -/// to empirically determine a scale factor which reproduces this field value -/// in the center. +/// @brief Analytical solenoid magnetic field implementation +/// +/// @ingroup magnetic_field +/// +/// @section Concept +/// +/// This class implements a multi-coil solenoid magnetic field. On every call, +/// the field is evaluated at that exact position. The field has radially +/// symmetry, the field vectors point in +z direction. The config exposes a +/// target field value in the center. This value is used to empirically +/// determine a scale factor which reproduces this field value in the center. +/// +/// @image html bfield/quiver.png "Picture of a solenoid field in rz, with arrows indicating the direction of the field, and their size denoting the strength. The field is almost homogeneous in the center." width=100% /// -/// $E_1(k^2)$ = complete elliptic integral of the 1st kind -/// $E_2(k^2)$ = complete elliptic integral of the 2nd kind +/// @note +/// A configuration of +/// ```cpp +/// SolenoidBField::Config cfg; +/// cfg.length = 5.8_m; +/// cfg.radius = (2.56 + 2.46) * 0.5 * 0.5_m; +/// cfg.nCoils = 1154; +/// cfg.bMagCenter = 2_T; +/// SolenoidBField bField(cfg); +/// ``` +/// roughly corresponds to the solenoid wrapping the Inner Detector in ATLAS! +/// +/// @warning +/// As the evaluation of @f$E_1(k^2)@f$ and @f$E_2(k^2)@f$ is **slow**. The +/// @ref Acts::InterpolatedBFieldMap easily outperforms +/// @ref Acts::SolenoidBField. A helper is provided that builds a map from the +/// analytical implementation and is much faster to lookup: +/// @ref Acts::solenoidFieldMap. +/// +/// @section Implementation /// -/// $E_1(k^2)$ and $E_2(k^2)$ are usually indicated as $K(k^2)$ and $E(k^2)$ in +/// - @f$E_1(k^2)@f$ = complete elliptic integral of the 1st kind +/// - @f$E_2(k^2)@f$ = complete elliptic integral of the 2nd kind +/// +/// @f$E_1(k^2)@f$ and @f$E_2(k^2)@f$ are usually indicated as @f$K(k^2)@f$ and @f$E(k^2)@f$ in /// literature, /// respectively -/// ``` -/// _ -/// 2 / pi / 2 2 2 - 1 / 2 -/// E (k ) = | ( 1 - k sin {theta} ) dtheta -/// 1 _/ 0 -/// -/// _ ____________________ -/// 2 / pi / 2| / 2 2 -/// E (k ) = | |/ 1 - k sin {theta} dtheta -/// 2 _/ 0 -/// -/// k^2 = is a function of the point (r, z) and of the radius of the coil R -/// -/// 2 4Rr -/// k = --------------- -/// 2 2 -/// (R + r) + z -/// Using these, you can evaluate the two components B_r and B_z of the +/// +/// @f[ +/// E_1(k^2) = \int_0^{\pi/2} \left( 1 - k^2 \sin^2{\theta} \right )^{-1/2} \mathrm{d}\theta +/// @f] +/// +/// @f[ +/// E_2(k^2) = \int_0^{\pi/2}\sqrt{1 - k^2 \sin^2{\theta}} \mathrm{d}\theta +/// @f] +/// +/// @f$k^2@f$ is a function of the point @f$(r, z)@f$ and of the radius of the coil @f$R@f$ +/// +/// @f[ +/// k^2 = \frac{4Rr}{(R+r)^2 + z^2} +/// @f] +/// +/// Using these, you can evaluate the two components @f$B_r@f$ and @f$B_z@f$ of the /// magnetic field: -/// _ _ -/// mu I | / 2 \ | -/// 0 kz | |2 - k | 2 2 | -/// B (r, z) = ----- ------ | |-------|E (k ) - E (k ) | -/// r 4pi ___ | | 2| 2 1 | -/// | / 3 |_ \2 - 2k / _| -/// |/ Rr -/// -/// _ _ -/// mu I | / 2 \ | -/// 0 k | | (R + r)k - 2r | 2 2 | -/// B (r,z) = ----- ---- | | -------------- | E (k ) + E (k ) | -/// z 4pi __ | | 2 | 2 1 | -/// |/Rr |_ \ 2r(1 - k ) / _| -/// ``` +/// +/// @f[ +/// B_r(r, z) = \frac{\mu_0 I}{4\pi} \frac{kz}{\sqrt{Rr^3}} \left[ \left(\frac{2-k^2}{2-2k^2}\right)E_2(k^2) - E_1(k^2) \right ] +/// @f] +/// +/// @f[ +/// B_z(r,z) = \frac{\mu_0 I}{4\pi} \frac{k}{\sqrt{Rr}} \left[ \left( \frac{(R+r)k^2-2r}{2r(1-k^2)} \right ) E_2(k^2) + E_1(k^2) \right ] +/// @f] +/// +/// +/// In the implementation the factor of @f$(\mu_0\cdot I)@f$ is defined to be a scaling +/// factor. It is evaluated and defined as the magnetic field in the center of +/// the +/// coil, i.e. the scale set in @ref Acts::SolenoidBField::Config::bMagCenter. /// class SolenoidBField final : public MagneticFieldProvider { public: diff --git a/Core/include/Acts/MagneticField/TextMagneticFieldIo.hpp b/Core/include/Acts/MagneticField/TextMagneticFieldIo.hpp index 4ed477261ae..fa3623e1247 100644 --- a/Core/include/Acts/MagneticField/TextMagneticFieldIo.hpp +++ b/Core/include/Acts/MagneticField/TextMagneticFieldIo.hpp @@ -20,6 +20,9 @@ namespace Acts { +/// @addtogroup magnetic_field +/// @{ + /// Method to setup the FieldMapper /// @param localToGlobalBin Function mapping the local bins of r,z to the /// global @@ -113,4 +116,6 @@ makeMagneticFieldMapXyzFromText( const std::string& fieldMapFile, double lengthUnit, double BFieldUnit, bool firstOctant = false, const std::string& delimiter = ""); +/// @} + } // namespace Acts diff --git a/Core/include/Acts/Material/AccumulatedMaterialSlab.hpp b/Core/include/Acts/Material/AccumulatedMaterialSlab.hpp index c54b2be6d4d..af72622f828 100644 --- a/Core/include/Acts/Material/AccumulatedMaterialSlab.hpp +++ b/Core/include/Acts/Material/AccumulatedMaterialSlab.hpp @@ -16,6 +16,8 @@ namespace Acts { /// Accumulate material properties from multiple hits/track and multiple tracks. /// +/// @ingroup material_mapping +/// /// This is a helper class for the `SurfaceMaterialMapper` to handle material /// accumulation and averaging for one surface bin. The accumulation procedure /// is done in two steps: diff --git a/Core/include/Acts/Material/AccumulatedSurfaceMaterial.hpp b/Core/include/Acts/Material/AccumulatedSurfaceMaterial.hpp index 85c522e8414..29fbfbcd1b7 100644 --- a/Core/include/Acts/Material/AccumulatedSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/AccumulatedSurfaceMaterial.hpp @@ -24,6 +24,8 @@ class ISurfaceMaterial; /// @class AccumulatedSurfaceMaterial /// +/// @ingroup material_mapping +/// /// This class is used by the SurfaceMaterialMapper in order to /// accumulate/collect material information during the mapping process. /// diff --git a/Core/include/Acts/Material/AccumulatedVolumeMaterial.hpp b/Core/include/Acts/Material/AccumulatedVolumeMaterial.hpp index 5f75b622957..c6136824e79 100644 --- a/Core/include/Acts/Material/AccumulatedVolumeMaterial.hpp +++ b/Core/include/Acts/Material/AccumulatedVolumeMaterial.hpp @@ -16,6 +16,8 @@ class Material; /// Accumulate and average volume-based material properties. /// +/// @ingroup material_mapping +/// /// This class is intended to be used during the mapping process. class AccumulatedVolumeMaterial { public: diff --git a/Core/include/Acts/Material/BinnedSurfaceMaterial.hpp b/Core/include/Acts/Material/BinnedSurfaceMaterial.hpp index 3b288eacf73..47e58a9fc3e 100644 --- a/Core/include/Acts/Material/BinnedSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/BinnedSurfaceMaterial.hpp @@ -17,12 +17,11 @@ namespace Acts { -/// @class BinnedSurfaceMaterial +/// @ingroup material /// -/// It extends the @c ISurfaceMaterial base class and is an array pf +/// It extends the @ref ISurfaceMaterial base class and is an array pf /// MaterialSlab. This is not memory optimised as every bin /// holds one material property object. - class BinnedSurfaceMaterial : public ISurfaceMaterial { public: /// Default Constructor - deleted diff --git a/Core/include/Acts/Material/BinnedSurfaceMaterialAccumulater.hpp b/Core/include/Acts/Material/BinnedSurfaceMaterialAccumulater.hpp index 3243cee5fa3..854f70b3046 100644 --- a/Core/include/Acts/Material/BinnedSurfaceMaterialAccumulater.hpp +++ b/Core/include/Acts/Material/BinnedSurfaceMaterialAccumulater.hpp @@ -31,7 +31,7 @@ class BinnedSurfaceMaterialAccumulater final /// Correct for empty bins (recommended) bool emptyBinCorrection = true; - /// The surfaces to be used for the accummulation + /// The surfaces to be used for the accumulation std::vector materialSurfaces = {}; }; diff --git a/Core/include/Acts/Material/GridSurfaceMaterial.hpp b/Core/include/Acts/Material/GridSurfaceMaterial.hpp index 68f1d2e8c93..f4e0320fefa 100644 --- a/Core/include/Acts/Material/GridSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/GridSurfaceMaterial.hpp @@ -23,6 +23,9 @@ namespace Acts { +/// @addtogroup material +/// @{ + /// @brief Base class for material accessors, this is needed /// for the I/O of the different grid material types, in the actual /// implementation the material accessor is a template parameter. @@ -361,4 +364,6 @@ template using GridSurfaceMaterial = GridSurfaceMaterialT; +/// @} + } // namespace Acts diff --git a/Core/include/Acts/Material/HomogeneousSurfaceMaterial.hpp b/Core/include/Acts/Material/HomogeneousSurfaceMaterial.hpp index 358a1925282..b4ec3f46e60 100644 --- a/Core/include/Acts/Material/HomogeneousSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/HomogeneousSurfaceMaterial.hpp @@ -16,7 +16,7 @@ namespace Acts { -/// @class HomogeneousSurfaceMaterial +/// @ingroup material /// /// It extends the ISurfaceMaterial virtual base class to describe /// a simple homogeneous material on a surface diff --git a/Core/include/Acts/Material/HomogeneousVolumeMaterial.hpp b/Core/include/Acts/Material/HomogeneousVolumeMaterial.hpp index bc4ba4cfb14..cb5f37dc798 100644 --- a/Core/include/Acts/Material/HomogeneousVolumeMaterial.hpp +++ b/Core/include/Acts/Material/HomogeneousVolumeMaterial.hpp @@ -18,6 +18,8 @@ namespace Acts { /// @class HomogeneousVolumeMaterial /// +/// @ingroup material +/// /// It extends the IVolumeMaterial base class to describe a simple /// homogeneous material in a volume class HomogeneousVolumeMaterial : public IVolumeMaterial { diff --git a/Core/include/Acts/Material/IMaterialDecorator.hpp b/Core/include/Acts/Material/IMaterialDecorator.hpp index 6783dcea751..2e1f5aee30c 100644 --- a/Core/include/Acts/Material/IMaterialDecorator.hpp +++ b/Core/include/Acts/Material/IMaterialDecorator.hpp @@ -15,6 +15,8 @@ class TrackingVolume; /// @class IMaterialDecorator /// +/// @ingroup material +/// /// Virtual base class for decorators that allow to load /// material onto a TrackingGeometry. The geometry allows material /// to be assigned either to surfaces or to volumes, hence there are diff --git a/Core/include/Acts/Material/ISurfaceMaterial.hpp b/Core/include/Acts/Material/ISurfaceMaterial.hpp index e59f9e39472..f7c9c1a2b5f 100644 --- a/Core/include/Acts/Material/ISurfaceMaterial.hpp +++ b/Core/include/Acts/Material/ISurfaceMaterial.hpp @@ -20,12 +20,14 @@ namespace Acts { /// This enum describes the type of surface material mapping enum MappingType { PreMapping = -1, Default = 0, PostMapping = 1, Sensor = 2 }; -/// @class ISurfaceMaterial +/// @ingroup material /// -/// Virtual base class of surface based material description +/// Base class of all surface-based material description /// -/// MaterialSlab that are associated to a surface, -/// extended by certain special representations (binned, homogeneous) +/// The class supplies references to @ref MaterialSlab that are associated to a +/// surface, extended by certain special representations (binned, homogeneous). +/// The concrete @ref MaterialSlab can depend on the local position on the +/// surface. /// class ISurfaceMaterial { public: diff --git a/Core/include/Acts/Material/IVolumeMaterial.hpp b/Core/include/Acts/Material/IVolumeMaterial.hpp index 03b61f5d253..2168566f83e 100644 --- a/Core/include/Acts/Material/IVolumeMaterial.hpp +++ b/Core/include/Acts/Material/IVolumeMaterial.hpp @@ -17,6 +17,8 @@ class Material; /// @class IVolumeMaterial /// +/// @ingroup material +/// /// Virtual base class of volume material description // /// Material associated with a Volume (homogeneous, binned, interpolated) diff --git a/Core/include/Acts/Material/Interactions.hpp b/Core/include/Acts/Material/Interactions.hpp index f03fb6fec08..802a5d4fdf2 100644 --- a/Core/include/Acts/Material/Interactions.hpp +++ b/Core/include/Acts/Material/Interactions.hpp @@ -36,7 +36,7 @@ float computeEnergyLossBethe(const MaterialSlab& slab, float m, float qOverP, float deriveEnergyLossBetheQOverP(const MaterialSlab& slab, float m, float qOverP, float absQ); -/// Compute the most propable energy loss due to ionisation and excitation. +/// Compute the most probable energy loss due to ionisation and excitation. /// /// @copydoc computeEnergyLossBethe /// diff --git a/Core/include/Acts/Material/InterpolatedMaterialMap.hpp b/Core/include/Acts/Material/InterpolatedMaterialMap.hpp index dfe276bd7f8..5cd154a7995 100644 --- a/Core/include/Acts/Material/InterpolatedMaterialMap.hpp +++ b/Core/include/Acts/Material/InterpolatedMaterialMap.hpp @@ -19,13 +19,16 @@ namespace Acts { +/// @addtogroup material +/// @{ + /// @brief Struct for mapping global 3D positions to material values /// /// Global 3D positions are transformed into a @c DIM_POS Dimensional vector /// which is used to look up the material classification value in the /// underlying material map. template -struct MaterialMapper { +struct MaterialMapLookup { public: /// Type alias for material grid using Grid_t = G; @@ -112,7 +115,7 @@ struct MaterialMapper { /// @param [in] transformPos Mapping of global 3D coordinates (cartesian) /// onto grid space /// @param [in] grid Grid storing material classification values - MaterialMapper( + MaterialMapLookup( std::function(const Vector3&)> transformPos, Grid_t grid) : m_transformPos(std::move(transformPos)), m_grid(std::move(grid)) {} @@ -213,7 +216,6 @@ struct MaterialMapper { Grid_t m_grid; }; -/// @ingroup Material /// @brief Interpolate material classification values from material values on a /// given grid /// @@ -369,4 +371,6 @@ class InterpolatedMaterialMap : public IVolumeMaterial { BinUtility m_binUtility{}; }; + +/// @} } // namespace Acts diff --git a/Core/include/Acts/Material/Material.hpp b/Core/include/Acts/Material/Material.hpp index 855736c7842..5ec15d771b6 100644 --- a/Core/include/Acts/Material/Material.hpp +++ b/Core/include/Acts/Material/Material.hpp @@ -17,7 +17,8 @@ namespace Acts { /// Material description for interactions with matter. -/// @defgroup Material Material +/// +/// @ingroup material /// /// The following parameters are used to specify the material and its /// interactions with traversing particles: diff --git a/Core/include/Acts/Material/MaterialComposition.hpp b/Core/include/Acts/Material/MaterialComposition.hpp index 12f69450c70..d37f397e2be 100644 --- a/Core/include/Acts/Material/MaterialComposition.hpp +++ b/Core/include/Acts/Material/MaterialComposition.hpp @@ -19,6 +19,8 @@ namespace Acts { /// Memory-efficient storage of the relative fraction of an element. /// +/// @ingroup material +/// /// This can be used to define materials that are compounds of multiple elements /// with varying fractions. The element is identified by its atomic number /// stored as a single byte (allows up to 256 elements; more than we need). diff --git a/Core/include/Acts/Material/MaterialInteraction.hpp b/Core/include/Acts/Material/MaterialInteraction.hpp index ac7e278d744..12efcd5e783 100644 --- a/Core/include/Acts/Material/MaterialInteraction.hpp +++ b/Core/include/Acts/Material/MaterialInteraction.hpp @@ -18,7 +18,10 @@ namespace Acts { class Surface; /// @brief The Material interaction volume struct -/// It acts as a switch between detctor and tracking volume +/// +/// @ingroup material +/// +/// It acts as a switch between detector and tracking volume /// as long as those co-exist alongside struct InteractionVolume { /// The tracking volume diff --git a/Core/include/Acts/Material/MaterialMapUtils.hpp b/Core/include/Acts/Material/MaterialMapUtils.hpp index 48d90582381..433ea62a10b 100644 --- a/Core/include/Acts/Material/MaterialMapUtils.hpp +++ b/Core/include/Acts/Material/MaterialMapUtils.hpp @@ -26,6 +26,9 @@ namespace Acts { +/// @addtogroup material +/// @{ + class Material; /// Method to setup the MaterialMapper @@ -60,7 +63,7 @@ class Material; /// stored in the vector in respect to the grid values /// @param [in] lengthUnit The unit of the grid points /// @return A material mapper for RZ coordinate system with equidistant grid -MaterialMapper< +MaterialMapLookup< Grid, Axis>> materialMapperRZ( @@ -71,7 +74,7 @@ materialMapperRZ( const std::vector& material, double lengthUnit = UnitConstants::mm); -/// Method to setup the MaterialMapper +/// Method to setup the MaterialLookup /// @param [in] materialVectorToGridMapper Function mapping the vector of /// material to the map of material values /// @@ -114,7 +117,7 @@ materialMapperRZ( /// stored in the vector in respect to the grid values /// @param [in] lengthUnit The unit of the grid points /// @return A material mapper for XYZ coordinate system with equidistant grid -MaterialMapper< +MaterialMapLookup< Grid, Axis, Axis>> materialMapperXYZ( @@ -125,4 +128,6 @@ materialMapperXYZ( std::vector zPos, const std::vector& material, double lengthUnit = UnitConstants::mm); +/// @} + } // namespace Acts diff --git a/Core/include/Acts/Material/MaterialMapper.hpp b/Core/include/Acts/Material/MaterialMapper.hpp index 3603f4edbbe..7fe8e20d2f7 100644 --- a/Core/include/Acts/Material/MaterialMapper.hpp +++ b/Core/include/Acts/Material/MaterialMapper.hpp @@ -22,7 +22,8 @@ #include namespace Acts { -/// @brief material mapping procedure +/// Class that implements the material mapping procedure +/// @ingroup material_mapping class MaterialMapper { public: /// @brief nested configuration struct diff --git a/Core/include/Acts/Material/MaterialSlab.hpp b/Core/include/Acts/Material/MaterialSlab.hpp index 19c98c42b6b..3c36d22d758 100644 --- a/Core/include/Acts/Material/MaterialSlab.hpp +++ b/Core/include/Acts/Material/MaterialSlab.hpp @@ -29,6 +29,8 @@ namespace Acts { /// Material description for an object with defined thickness. /// +/// @ingroup material +/// /// This is intended to describe concrete surface materials. /// /// @see Material for a description of the available parameters. diff --git a/Core/include/Acts/Material/ProtoSurfaceMaterial.hpp b/Core/include/Acts/Material/ProtoSurfaceMaterial.hpp index 002d79a37fe..75f5a3b4eb4 100644 --- a/Core/include/Acts/Material/ProtoSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/ProtoSurfaceMaterial.hpp @@ -19,7 +19,9 @@ namespace Acts { -/// @class ProtoSurfaceMaterial +/// @addtogroup material +/// @{ + /// /// @brief proxy to SurfaceMaterial hand over BinUtility or other suitable /// binning description @@ -111,12 +113,15 @@ class ProtoSurfaceMaterialT : public ISurfaceMaterial { }; /// @brief Type alias for a prototype surface material using BinUtility -/// @details A surface material implementation that uses BinUtility for binning +/// A surface material implementation that uses BinUtility for binning using ProtoSurfaceMaterial = ProtoSurfaceMaterialT; /// @brief Type alias for a prototype surface material using a grid of ProtoAxis -/// @details A surface material implementation that uses a vector of ProtoAxis for grid-based binning +/// A surface material implementation that uses a vector of ProtoAxis for +/// grid-based binning using ProtoGridSurfaceMaterial = ProtoSurfaceMaterialT>; +/// @} + } // namespace Acts diff --git a/Core/include/Acts/Material/ProtoVolumeMaterial.hpp b/Core/include/Acts/Material/ProtoVolumeMaterial.hpp index 5cbf6e78364..902f26e36e8 100644 --- a/Core/include/Acts/Material/ProtoVolumeMaterial.hpp +++ b/Core/include/Acts/Material/ProtoVolumeMaterial.hpp @@ -19,6 +19,8 @@ namespace Acts { /// @class ProtoVolumeMaterial /// +/// @ingroup material +/// /// @brief proxy to VolumeMaterial hand over BinUtility /// /// The ProtoVolumeMaterial class acts as a proxy to the VolumeMaterial diff --git a/Core/include/Acts/Propagator/AtlasStepper.hpp b/Core/include/Acts/Propagator/AtlasStepper.hpp index 75cb2d30078..8b4b970b7d6 100644 --- a/Core/include/Acts/Propagator/AtlasStepper.hpp +++ b/Core/include/Acts/Propagator/AtlasStepper.hpp @@ -119,7 +119,7 @@ class AtlasStepper { /// Jacobian matrix storage for parameter derivatives double jacobian[eBoundSize * eBoundSize] = {}; - // accummulated path length cache + // accumulated path length cache /// Accumulated path length during propagation double pathAccumulated = 0.; diff --git a/Core/include/Acts/Propagator/EigenStepper.hpp b/Core/include/Acts/Propagator/EigenStepper.hpp index c371f65ab54..8a6a69d55b1 100644 --- a/Core/include/Acts/Propagator/EigenStepper.hpp +++ b/Core/include/Acts/Propagator/EigenStepper.hpp @@ -106,7 +106,7 @@ class EigenStepper { /// The propagation derivative FreeVector derivative = FreeVector::Zero(); - /// Accummulated path length state + /// Accumulated path length state double pathAccumulated = 0.; /// Total number of performed steps @@ -131,7 +131,7 @@ class EigenStepper { /// @brief Storage of magnetic field and the sub steps during a RKN4 step struct { - /// Magnetic field evaulations + /// Magnetic field evaluations Vector3 B_first{}, B_middle{}, B_last{}; /// k_i of the RKN4 algorithm Vector3 k1{}, k2{}, k3{}, k4{}; diff --git a/Core/include/Acts/Propagator/EigenStepperDefaultExtension.hpp b/Core/include/Acts/Propagator/EigenStepperDefaultExtension.hpp index 8d14627f950..213b40da22a 100644 --- a/Core/include/Acts/Propagator/EigenStepperDefaultExtension.hpp +++ b/Core/include/Acts/Propagator/EigenStepperDefaultExtension.hpp @@ -168,7 +168,7 @@ struct EigenStepperDefaultExtension { double half_h = h * 0.5; // This sets the reference to the sub matrices - // dFdx is already initialised as (3x3) idendity + // dFdx is already initialised as (3x3) identity auto dFdT = D.block<3, 3>(0, 4); auto dFdL = D.block<3, 1>(0, 7); // dGdx is already initialised as (3x3) zero diff --git a/Core/include/Acts/Propagator/EigenStepperError.hpp b/Core/include/Acts/Propagator/EigenStepperError.hpp index ec78b477d53..4ce96844af9 100644 --- a/Core/include/Acts/Propagator/EigenStepperError.hpp +++ b/Core/include/Acts/Propagator/EigenStepperError.hpp @@ -14,10 +14,14 @@ namespace Acts { /// Error codes for Eigen stepper operations +/// @ingroup errors enum class EigenStepperError { // ensure all values are non-zero + /// Step size fell below minimum threshold StepSizeStalled = 1, + /// Step calculation was invalid StepInvalid, + /// Step size adjustment exceeds maximum trials StepSizeAdjustmentFailed, }; diff --git a/Core/include/Acts/Propagator/MultiStepperError.hpp b/Core/include/Acts/Propagator/MultiStepperError.hpp index c1fdc787fdf..731dbc78c5f 100644 --- a/Core/include/Acts/Propagator/MultiStepperError.hpp +++ b/Core/include/Acts/Propagator/MultiStepperError.hpp @@ -14,13 +14,21 @@ namespace Acts { /// Error codes for multi-stepper operations +/// @ingroup errors enum class MultiStepperError { // ensure all values are non-zero + /// Component is not on a surface ComponentNotOnSurface = 1, + /// The global BoundState/CurvilinearState can only be computed if only one + /// component exists StateOfMultipleComponentsRequested = 2, + /// The average track has left the current volume AverageTrackLeftCurrentVolume = 3, + /// Stepping error occurred in all components AllComponentsSteppingError = 4, + /// The conversion to the bound state failed for all components AllComponentsConversionToBoundFailed = 5, + /// The conversion to the bound state failed for some components SomeComponentsConversionToBoundFailed = 6 }; diff --git a/Core/include/Acts/Propagator/NavigatorError.hpp b/Core/include/Acts/Propagator/NavigatorError.hpp index 4c9a5062610..1088264c801 100644 --- a/Core/include/Acts/Propagator/NavigatorError.hpp +++ b/Core/include/Acts/Propagator/NavigatorError.hpp @@ -14,9 +14,12 @@ namespace Acts { /// Error codes for navigator operations +/// @ingroup errors enum class NavigatorError { // ensure all values are non-zero + /// We did not end up inside the volume. NotInsideExpectedVolume = 1, + /// Stepper not on surface NotOnExpectedSurface = 2, }; diff --git a/Core/include/Acts/Propagator/PropagatorError.hpp b/Core/include/Acts/Propagator/PropagatorError.hpp index 155bf338778..a326fac86e9 100644 --- a/Core/include/Acts/Propagator/PropagatorError.hpp +++ b/Core/include/Acts/Propagator/PropagatorError.hpp @@ -14,10 +14,14 @@ namespace Acts { /// Error codes for propagator operations +/// @ingroup errors enum class PropagatorError { // ensure all values are non-zero + /// Propagation failed Failure = 1, + /// Propagation reached the configured maximum number of steps StepCountLimitReached, + /// Propagation reached the configured maximum number of next target calls NextTargetLimitReached, }; diff --git a/Core/include/Acts/Propagator/RiddersPropagator.hpp b/Core/include/Acts/Propagator/RiddersPropagator.hpp index 08b757b2c4f..1c214c5d3cb 100644 --- a/Core/include/Acts/Propagator/RiddersPropagator.hpp +++ b/Core/include/Acts/Propagator/RiddersPropagator.hpp @@ -71,7 +71,7 @@ struct RiddersPropagatorOptions /// of the covariance to a certain point in space. /// /// The algorithm is based on the small deviations of the start parameters based -/// on their uncertainty at the beginning of the propgation. This deviation is +/// on their uncertainty at the beginning of the propagation. This deviation is /// represented here by a vector of relative deviations of these parameters and /// fix for all parameters. So, a common choice has to be found that is able to /// actually fit into the order of magnitude of the uncertainty of each diff --git a/Core/include/Acts/Propagator/StraightLineStepper.hpp b/Core/include/Acts/Propagator/StraightLineStepper.hpp index 9672c850e2c..bacaf5f1b8d 100644 --- a/Core/include/Acts/Propagator/StraightLineStepper.hpp +++ b/Core/include/Acts/Propagator/StraightLineStepper.hpp @@ -101,7 +101,7 @@ class StraightLineStepper { /// Additional free parameter covariance matrix std::optional additionalFreeCovariance = std::nullopt; - /// accummulated path length state + /// accumulated path length state double pathAccumulated = 0.; /// Total number of performed steps diff --git a/Core/include/Acts/Propagator/SympyStepper.hpp b/Core/include/Acts/Propagator/SympyStepper.hpp index 8d53ead87b4..826fda69503 100644 --- a/Core/include/Acts/Propagator/SympyStepper.hpp +++ b/Core/include/Acts/Propagator/SympyStepper.hpp @@ -89,7 +89,7 @@ class SympyStepper { /// The propagation derivative FreeVector derivative = FreeVector::Zero(); - /// Accummulated path length state + /// Accumulated path length state double pathAccumulated = 0.; /// Total number of performed steps diff --git a/Core/include/Acts/Seeding/HoughTransformUtils.hpp b/Core/include/Acts/Seeding/HoughTransformUtils.hpp index e42dc6b277b..4433cc3c800 100644 --- a/Core/include/Acts/Seeding/HoughTransformUtils.hpp +++ b/Core/include/Acts/Seeding/HoughTransformUtils.hpp @@ -6,8 +6,6 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -/// This file implements the tools for a hough transform. - #pragma once #include "Acts/Utilities/Grid.hpp" @@ -38,7 +36,7 @@ using LineParametrisation = /// @brief struct to define the ranges of the hough histogram. /// Used to move between parameter and bin index coordinates. -/// Disconnected from the hough plane binning to be able to re-use +/// Disconnected from the hough plane binning to be able to reuse /// a plane with a given binning for several parameter ranges struct HoughAxisRanges { /// Minimum value of the first hough coordinate @@ -145,7 +143,7 @@ class HoughCell { /// @brief Configuration - number of bins in each axis. /// The Hough plane is agnostic of how the bins map to -/// coordinates, allowing to re-use a plane for several +/// coordinates, allowing to reuse a plane for several /// (sub) detectors of different dimensions if the bin number /// remains applicable struct HoughPlaneConfig { @@ -446,7 +444,7 @@ class IslandsAroundMax { /// @param inMaximum: List of cells found in the island. Incrementally populated by calls to the method /// @param toExplore: List of the global Bin indices of neighbour cell candidates left to explore. Method will not do anything once this is empty /// @param threshold: the threshold to apply to check if a cell should be added to an island - /// @param yieldMap: A map of the hit content of above-threshold cells. Used cells will be set to empty content to avoid re-use by subsequent calls + /// @param yieldMap: A map of the hit content of above-threshold cells. Used cells will be set to empty content to avoid reuse by subsequent calls void extendMaximum(const HoughPlane& houghPlane, std::vector>& inMaximum, std::vector& toExplore, YieldType threshold, diff --git a/Core/include/Acts/Seeding/detail/CompSpacePointAuxiliaries.hpp b/Core/include/Acts/Seeding/detail/CompSpacePointAuxiliaries.hpp index 331860b008c..6d7b1537de8 100644 --- a/Core/include/Acts/Seeding/detail/CompSpacePointAuxiliaries.hpp +++ b/Core/include/Acts/Seeding/detail/CompSpacePointAuxiliaries.hpp @@ -320,7 +320,7 @@ class CompSpacePointAuxiliaries { const Vector& sensorN, const Vector& sensorD, const Vector& stripPos, const bool isBending, const bool isNonBending); - /// @brief Calculates the reidual of a strip measurement w.r.t. the time offset parameter + /// @brief Calculates the residual of a strip measurement w.r.t. the time offset parameter /// @param sensorN: Reference to the first basis vector inside the strip measruement plane, /// which is given by the sensor normal /// @param sensorD: Reference to the second basis vector inside the strip measruement plane, @@ -389,7 +389,7 @@ class CompSpacePointAuxiliaries { /// @brief Partial derivative of the actual distance of the closest approach std::array m_partialApproachDist{ filledArray(0.)}; - /// @brief Tansform matrix to treat stereo angles amongst the strips + /// @brief Transform matrix to treat stereo angles amongst the strips ActsSquareMatrix<2> m_stereoTrf{ActsSquareMatrix<2>::Identity()}; }; diff --git a/Core/include/Acts/Seeding/detail/FastStrawLineFitter.hpp b/Core/include/Acts/Seeding/detail/FastStrawLineFitter.hpp index 4e5a58160df..5a874367cf9 100644 --- a/Core/include/Acts/Seeding/detail/FastStrawLineFitter.hpp +++ b/Core/include/Acts/Seeding/detail/FastStrawLineFitter.hpp @@ -193,7 +193,7 @@ class FastStrawLineFitter { double T_rz{0.}; ///@brief Expectation value of T_{y} * r double T_ry{0.}; - ///@brief Prediced y0 given as the expectation value of the radii + ///@brief Predicted y0 given as the expectation value of the radii /// divided by the inverse covariance sum. double fitY0{0.}; /// @brief Number of degrees of freedom diff --git a/Core/include/Acts/SpacePointFormation2/SpacePointFormationError.hpp b/Core/include/Acts/SpacePointFormation2/SpacePointFormationError.hpp index f8bd817574f..29968f1486b 100644 --- a/Core/include/Acts/SpacePointFormation2/SpacePointFormationError.hpp +++ b/Core/include/Acts/SpacePointFormation2/SpacePointFormationError.hpp @@ -14,14 +14,22 @@ namespace Acts { /// Error codes for space point formation operations +/// @ingroup errors enum class SpacePointFormationError { // ensure all values are non-zero + /// Cluster pair distance exceeded ClusterPairDistanceExceeded = 1, + /// Cluster pair theta distance exceeded ClusterPairThetaDistanceExceeded = 2, + /// Cluster pair phi distance exceeded ClusterPairPhiDistanceExceeded = 3, + /// Cosmic tolerance not met CosmicToleranceNotMet = 4, + /// Outside limits OutsideLimits = 5, + /// Outside relaxed limits OutsideRelaxedLimits = 6, + /// No solution found NoSolutionFound = 7 }; diff --git a/Core/include/Acts/Surfaces/LineSurface.hpp b/Core/include/Acts/Surfaces/LineSurface.hpp index 1feb80cad97..900dcb3cf8f 100644 --- a/Core/include/Acts/Surfaces/LineSurface.hpp +++ b/Core/include/Acts/Surfaces/LineSurface.hpp @@ -190,7 +190,7 @@ class LineSurface : public Surface { /// /// Mathematical motivation: /// - /// Given two lines in parameteric form:
+ /// Given two lines in parametric form:
/// /// @f$ \vec l_{a}(u) = \vec m_a + u \cdot \vec e_{a} @f$ /// diff --git a/Core/include/Acts/Surfaces/Surface.hpp b/Core/include/Acts/Surfaces/Surface.hpp index 4e8f656e0c4..9fd3c7fe29d 100644 --- a/Core/include/Acts/Surfaces/Surface.hpp +++ b/Core/include/Acts/Surfaces/Surface.hpp @@ -384,7 +384,7 @@ class Surface : public virtual GeometryObject, const Vector3& position, const Vector3& direction) const; - /// Calucation of the path correction for incident + /// Calculation of the path correction for incident /// /// @param gctx The current geometry context object, e.g. alignment /// @param position global 3D position diff --git a/Core/include/Acts/Surfaces/SurfaceError.hpp b/Core/include/Acts/Surfaces/SurfaceError.hpp index 6706664a945..ed90ca449c8 100644 --- a/Core/include/Acts/Surfaces/SurfaceError.hpp +++ b/Core/include/Acts/Surfaces/SurfaceError.hpp @@ -14,8 +14,10 @@ namespace Acts { /// Error codes for surface operations +/// @ingroup errors enum class SurfaceError { // ensure all values are non-zero + /// Global to local transformation failed: position not on surface. GlobalPositionNotOnSurface = 1, }; diff --git a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp index 56e4a5a40b9..66de6b77034 100644 --- a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp +++ b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp @@ -35,6 +35,9 @@ namespace Acts { +/// @addtogroup track_finding +/// @{ + /// Combined options for the combinatorial Kalman filter. /// /// @tparam source_link_iterator_t Type of the source link iterator @@ -970,4 +973,6 @@ class CombinatorialKalmanFilter { } }; +/// @} + } // namespace Acts diff --git a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilterError.hpp b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilterError.hpp index 9e4ed037242..121c5c69c31 100644 --- a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilterError.hpp +++ b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilterError.hpp @@ -14,13 +14,20 @@ namespace Acts { /// Error codes for combinatorial Kalman filter operations +/// @ingroup errors enum class CombinatorialKalmanFilterError { // ensure all values are non-zero + /// Kalman update failed UpdateFailed = 1, + /// Kalman smooth failed SmoothFailed, + /// Kalman output conversion failed OutputConversionFailed, + /// Measurement selection failed MeasurementSelectionFailed, + /// Propagation reaches max steps before track finding is finished PropagationReachesMaxSteps, + /// No measurement expected on the current surface NoMeasurementExpected }; diff --git a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilterExtensions.hpp b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilterExtensions.hpp index c6e7c2fece8..81616350ffd 100644 --- a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilterExtensions.hpp +++ b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilterExtensions.hpp @@ -15,6 +15,8 @@ namespace Acts { +/// @addtogroup track_finding +/// @{ namespace CkfTypes { /// expected max number of track states that are expected to be added by @@ -102,4 +104,7 @@ struct CombinatorialKalmanFilterExtensions { return BranchStopperResult::Continue; } }; + +/// @} + } // namespace Acts diff --git a/Core/include/Acts/TrackFitting/BetheHeitlerApprox.hpp b/Core/include/Acts/TrackFitting/BetheHeitlerApprox.hpp index 18c3793fb86..203e01b147f 100644 --- a/Core/include/Acts/TrackFitting/BetheHeitlerApprox.hpp +++ b/Core/include/Acts/TrackFitting/BetheHeitlerApprox.hpp @@ -48,6 +48,10 @@ inline GaussianComponent inverseTransformComponent( } // namespace detail +/// @addtogroup track_fitting +/// @{ + +/// @ingroup material class BetheHeitlerApprox { public: using Component = detail::GaussianComponent; @@ -65,6 +69,7 @@ class BetheHeitlerApprox { /// This class approximates the Bethe-Heitler with only one component. This is /// mainly inside @ref AtlasBetheHeitlerApprox, but can also be used as the /// only component approximation (then probably for debugging) +/// @ingroup material class BetheHeitlerApproxSingleCmp final : public BetheHeitlerApprox { public: /// Returns the number of components the returned mixture will have @@ -104,6 +109,7 @@ class BetheHeitlerApproxSingleCmp final : public BetheHeitlerApprox { /// @todo This class is rather inflexible: It forces two data representations, /// making it a bit awkward to add a single parameterization. It would be good /// to generalize this at some point. +/// @ingroup material class AtlasBetheHeitlerApprox : public BetheHeitlerApprox { public: struct PolyData { @@ -207,7 +213,10 @@ class AtlasBetheHeitlerApprox : public BetheHeitlerApprox { /// the GSF without the need to load files /// @param clampToRange Whether to clamp values to the valid range /// @return AtlasBetheHeitlerApprox with default ATLAS configuration parameters +/// @ingroup material AtlasBetheHeitlerApprox makeDefaultBetheHeitlerApprox( bool clampToRange = false); +/// @} + } // namespace Acts diff --git a/Core/include/Acts/TrackFitting/GainMatrixSmoother.hpp b/Core/include/Acts/TrackFitting/GainMatrixSmoother.hpp index 91c93f0ba69..0389da157dd 100644 --- a/Core/include/Acts/TrackFitting/GainMatrixSmoother.hpp +++ b/Core/include/Acts/TrackFitting/GainMatrixSmoother.hpp @@ -25,6 +25,7 @@ namespace Acts { /// This implements not a single smoothing step, but the full backwards /// smoothing procedure for a filtered, forward trajectory using the stored /// linearization. +/// @ingroup track_fitting class GainMatrixSmoother { public: /// Whether to check the covariance matrices if they are semi-positive and if diff --git a/Core/include/Acts/TrackFitting/GainMatrixUpdater.hpp b/Core/include/Acts/TrackFitting/GainMatrixUpdater.hpp index 2daa6a0036d..b2a3ab798aa 100644 --- a/Core/include/Acts/TrackFitting/GainMatrixUpdater.hpp +++ b/Core/include/Acts/TrackFitting/GainMatrixUpdater.hpp @@ -21,6 +21,7 @@ namespace Acts { /// Kalman update step using the gain matrix formalism. +/// @ingroup track_fitting class GainMatrixUpdater { struct InternalTrackState { unsigned int calibratedSize; diff --git a/Core/include/Acts/TrackFitting/GaussianSumFitter.hpp b/Core/include/Acts/TrackFitting/GaussianSumFitter.hpp index 10ccb8dc1b3..e87c34a6dae 100644 --- a/Core/include/Acts/TrackFitting/GaussianSumFitter.hpp +++ b/Core/include/Acts/TrackFitting/GaussianSumFitter.hpp @@ -41,7 +41,9 @@ struct IsMultiComponentBoundParameters } // namespace detail /// Gaussian Sum Fitter implementation. -/// @tparam propagator_t The propagator type on which the algorithm is built on +/// @ingroup track_fitting +/// @tparam propagator_t The propagator type on which the algorithm is built +/// on, usually an instance of @ref Acts::Propagator /// @tparam traj_t The MultiTrajectory type (backend) /// /// @note This GSF implementation tries to be as compatible to the KalmanFitter diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp index bfb0ca54653..eb3c9209698 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp @@ -43,6 +43,9 @@ namespace Acts::Experimental { +/// @addtogroup track_fitting +/// @{ + namespace Gx2fConstants { constexpr std::string_view gx2fnUpdateColumn = "Gx2fnUpdateColumn"; @@ -1658,4 +1661,6 @@ class Gx2Fitter { } }; +/// @} + } // namespace Acts::Experimental diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitterError.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitterError.hpp index 7c95750a3f6..0d098cca493 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitterError.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitterError.hpp @@ -13,12 +13,19 @@ namespace Acts::Experimental { +/// @enum GlobalChiSquareFitterError +/// @ingroup errors enum class GlobalChiSquareFitterError { // ensure all values are non-zero + /// aMatrix is not invertible. AIsNotInvertible = 1, + /// Did not converge in 'nUpdateMax' updates. DidNotConverge = 2, + /// Not enough measurements. NotEnoughMeasurements = 3, + /// Update pushed the parameters to a new volume. UpdatePushedToNewVolume = 4, + }; std::error_code make_error_code( diff --git a/Core/include/Acts/TrackFitting/GsfError.hpp b/Core/include/Acts/TrackFitting/GsfError.hpp index dbe7bf20647..b0e474f5dd1 100644 --- a/Core/include/Acts/TrackFitting/GsfError.hpp +++ b/Core/include/Acts/TrackFitting/GsfError.hpp @@ -14,10 +14,15 @@ namespace Acts { /// Error codes for Gaussian Sum Filter operations +/// @ingroup errors enum class GsfError { + /// Start parameters have no Covariance StartParametersHaveNoCovariance, + /// No measurement states found in the forward pass NoMeasurementStatesCreatedForward, + /// No measurement states found in the backward pass NoMeasurementStatesCreatedBackward, + /// No measurement states in the final trajectory NoMeasurementStatesCreatedFinal, }; diff --git a/Core/include/Acts/TrackFitting/GsfMixtureReduction.hpp b/Core/include/Acts/TrackFitting/GsfMixtureReduction.hpp index 46e46c63883..a5109bfd89b 100644 --- a/Core/include/Acts/TrackFitting/GsfMixtureReduction.hpp +++ b/Core/include/Acts/TrackFitting/GsfMixtureReduction.hpp @@ -18,6 +18,7 @@ namespace Acts { /// @param cmpCache the component collection /// @param maxCmpsAfterMerge the number of components we want to reach /// @param surface the surface type on which the components are (unused here) +/// @ingroup track_fitting void reduceMixtureLargestWeights(std::vector &cmpCache, std::size_t maxCmpsAfterMerge, const Surface &surface); @@ -28,6 +29,7 @@ void reduceMixtureLargestWeights(std::vector &cmpCache, /// @param cmpCache the component collection /// @param maxCmpsAfterMerge the number of components we want to reach /// @param surface the surface type on which the components are +/// @ingroup track_fitting void reduceMixtureWithKLDistance(std::vector &cmpCache, std::size_t maxCmpsAfterMerge, const Surface &surface); diff --git a/Core/include/Acts/TrackFitting/GsfOptions.hpp b/Core/include/Acts/TrackFitting/GsfOptions.hpp index 7b7de049ae6..e8d9036a665 100644 --- a/Core/include/Acts/TrackFitting/GsfOptions.hpp +++ b/Core/include/Acts/TrackFitting/GsfOptions.hpp @@ -20,6 +20,9 @@ namespace Acts { +/// @addtogroup track_fitting +/// @{ + /// @enum ComponentMergeMethod /// /// Available reduction methods for the reduction of a Gaussian mixture @@ -143,4 +146,6 @@ struct GsfOptions { propagatorPlainOptions(geoCtxt, magFieldCtxt) {} }; +/// @} + } // namespace Acts diff --git a/Core/include/Acts/TrackFitting/KalmanFitter.hpp b/Core/include/Acts/TrackFitting/KalmanFitter.hpp index 0d09dbfc28e..1b76a77ee40 100644 --- a/Core/include/Acts/TrackFitting/KalmanFitter.hpp +++ b/Core/include/Acts/TrackFitting/KalmanFitter.hpp @@ -39,6 +39,9 @@ namespace Acts { +/// @addtogroup track_fitting +/// @{ + /// Extension struct which holds delegates to customise the KF behavior template struct KalmanFitterExtensions { @@ -229,7 +232,8 @@ struct KalmanFitterResult { /// Kalman fitter implementation. /// -/// @tparam propagator_t Type of the propagation class +/// @tparam propagator_t Type of the propagation class, usually an instance of +/// @ref Acts::Propagator /// /// The Kalman filter contains an Actor and a Sequencer sub-class. /// The Sequencer has to be part of the Navigator of the Propagator @@ -906,4 +910,6 @@ class KalmanFitter { } }; +/// @} + } // namespace Acts diff --git a/Core/include/Acts/TrackFitting/KalmanFitterError.hpp b/Core/include/Acts/TrackFitting/KalmanFitterError.hpp index 131d1eab894..d38bbc1f9bc 100644 --- a/Core/include/Acts/TrackFitting/KalmanFitterError.hpp +++ b/Core/include/Acts/TrackFitting/KalmanFitterError.hpp @@ -14,12 +14,18 @@ namespace Acts { /// Error codes for Kalman filter operations +/// @ingroup errors enum class KalmanFitterError { // ensure all values are non-zero + /// Kalman update failed UpdateFailed = 1, + /// Kalman smooth failed SmoothFailed, + /// Kalman output conversion failed OutputConversionFailed, + /// No measurement detected during the propagation NoMeasurementFound, + /// Reverse propagation failed ReversePropagationFailed, InconsistentTrackStates, }; diff --git a/Core/include/Acts/TrackFitting/MbfSmoother.hpp b/Core/include/Acts/TrackFitting/MbfSmoother.hpp index 1a190435e88..ee2710f86b3 100644 --- a/Core/include/Acts/TrackFitting/MbfSmoother.hpp +++ b/Core/include/Acts/TrackFitting/MbfSmoother.hpp @@ -22,6 +22,8 @@ namespace Acts { /// Kalman trajectory smoother based on the Modified Bryson–Frazier (mBF) /// smoother. /// +/// @ingroup track_fitting +/// /// The benefit of the mBF smoother is that it does not require the inverse of /// the full covariance matrix, but only the inverse of the residual covariance /// matrix which can be cached by the filter step. The same holds for the diff --git a/Core/include/Acts/Utilities/Any.hpp b/Core/include/Acts/Utilities/Any.hpp index f33aa175c59..9decbab8ff8 100644 --- a/Core/include/Acts/Utilities/Any.hpp +++ b/Core/include/Acts/Utilities/Any.hpp @@ -108,9 +108,13 @@ static _AnyAllocationReporter s_reporter; #define _ACTS_ANY_NOEXCEPT noexcept #endif +/// @addtogroup utilities +/// @{ + +/// Base class for all instances of @ref AnyBase regarfless of SBO size class AnyBaseAll {}; -/// Small opaque cache type which uses small buffer optimization +/// Small opaque cache type with configurable small buffer optimization template class AnyBase : public AnyBaseAll { static_assert(sizeof(void*) <= SIZE, "Size is too small for a pointer"); @@ -553,11 +557,13 @@ class AnyBase : public AnyBaseAll { }; /// @brief A type-safe container for single values of any type -/// @details This is a custom implementation similar to std::any but optimized for small types +/// @details This is a custom implementation similar to `std::any` but optimized for small types /// that can fit into a pointer-sized buffer. Values larger than a /// pointer are stored on the heap. using Any = AnyBase; +/// @} + #undef _ACTS_ANY_VERBOSE #undef _ACTS_ANY_VERBOSE_BUFFER #undef _ACTS_ANY_ENABLE_VERBOSE diff --git a/Core/include/Acts/Utilities/BinUtility.hpp b/Core/include/Acts/Utilities/BinUtility.hpp index 57c36d932ff..18d7b6be32d 100644 --- a/Core/include/Acts/Utilities/BinUtility.hpp +++ b/Core/include/Acts/Utilities/BinUtility.hpp @@ -231,7 +231,7 @@ class BinUtility { return m_binningData[ba].nextDirection(position, direction); } - /// Bin from a 2D vector (following local parameters defintitions) + /// Bin from a 2D vector (following local parameters definitions) /// - no optional transform applied /// - USE WITH CARE !! /// diff --git a/Core/include/Acts/Utilities/BinningData.hpp b/Core/include/Acts/Utilities/BinningData.hpp index 86c2d80ca90..2b44daf3a14 100644 --- a/Core/include/Acts/Utilities/BinningData.hpp +++ b/Core/include/Acts/Utilities/BinningData.hpp @@ -53,7 +53,7 @@ class BinningData { /// sub structure: describe some sub binning std::unique_ptr subBinningData; - /// sub structure: additive or multipicative + /// sub structure: additive or multiplicative bool subBinningAdditive{}; /// Constructor for 0D binning diff --git a/Core/include/Acts/Utilities/CalibrationContext.hpp b/Core/include/Acts/Utilities/CalibrationContext.hpp index a33142555ed..59afa7f7ca9 100644 --- a/Core/include/Acts/Utilities/CalibrationContext.hpp +++ b/Core/include/Acts/Utilities/CalibrationContext.hpp @@ -20,9 +20,10 @@ namespace Acts { /// @brief This is the central definition of the Acts /// payload object regarding detector calibration /// +/// @ingroup context +/// /// It is propagated through the code to allow for event/thread /// dependent calibration - class CalibrationContext : public ContextType { public: /// Inherit all constructors diff --git a/Core/include/Acts/Utilities/GridBinFinder.hpp b/Core/include/Acts/Utilities/GridBinFinder.hpp index bacf376424d..27f7e461f1a 100644 --- a/Core/include/Acts/Utilities/GridBinFinder.hpp +++ b/Core/include/Acts/Utilities/GridBinFinder.hpp @@ -40,7 +40,7 @@ class GridBinFinder { /// /// @param [in] vals The input parameters that define how many neighbours we need to find /// - /// @pre The provided paramers must be of type 'int', 'std::pair' or 'std::vector>' + /// @pre The provided parameters must be of type 'int', 'std::pair' or 'std::vector>' /// no other type is allowed. The order of these parameters must correspond to /// the same ordering of the axes in the grid template diff --git a/Core/include/Acts/Utilities/Holders.hpp b/Core/include/Acts/Utilities/Holders.hpp index 94552b897c6..04331316cad 100644 --- a/Core/include/Acts/Utilities/Holders.hpp +++ b/Core/include/Acts/Utilities/Holders.hpp @@ -12,6 +12,8 @@ namespace Acts::detail { +/// @todo: Holder should become public documented API + /// Internal holder type for referencing a backend without ownership template struct RefHolder { diff --git a/Core/include/Acts/Utilities/Logger.hpp b/Core/include/Acts/Utilities/Logger.hpp index 2aaafc61519..26b7ebb310c 100644 --- a/Core/include/Acts/Utilities/Logger.hpp +++ b/Core/include/Acts/Utilities/Logger.hpp @@ -22,14 +22,25 @@ #include #include -/// @defgroup Logging Logging +/// @addtogroup logging +/// @{ -// clang-format off -/// @brief macro to use a local Acts::Logger object -/// @ingroup Logging +/// @defgroup logging_macros Logging Macros +/// @ingroup logging +/// @brief Helper macros for logging with @ref Acts::Logger +/// +/// When a logger accessible via the `logger()` method, see @ref logging_patterns, +/// use these macros to perform the actual logging: +/// +/// @snippet{trimleft} examples/logging.cpp Logging Macros +/// +/// The macros support stream-style formatting with `<<` operators. +/// @{ + +/// @brief Macro to use a local Acts::Logger object /// /// @param log_object logger instance of type -// std::unique_ptr +// `std::unique_ptr` /// /// @pre In the current scope, the symbol @c logger is not yet defined. /// @post The ownership of the given @c log_object is transferred and @@ -38,24 +49,13 @@ /// This macro allows to use a locally defined logging object with the ACTS_* /// logging macros. The envisaged usage is the following: /// -/// @code{.cpp} -/// void myFunction() { -/// std::unique_ptr myLogger -/// = /* .. your initialization .. */; -/// ACTS_LOCAL_LOGGER(std::move(myLogger)); -/// -/// ACTS_VERBOSE("hello world!"); -/// } -/// @endcode +/// @snippet{trimleft} examples/logging.cpp Local logger macro #define ACTS_LOCAL_LOGGER(log_object) \ - struct __local_acts_logger \ - { \ - explicit __local_acts_logger(std::unique_ptr logger): \ - m_logger(std::move(logger)) \ - {} \ + struct __local_acts_logger { \ + explicit __local_acts_logger(std::unique_ptr logger) \ + : m_logger(std::move(logger)) {} \ \ - const ::Acts::Logger& operator()() const \ - { \ + const ::Acts::Logger& operator()() const { \ return *m_logger; \ } \ \ @@ -64,18 +64,16 @@ __local_acts_logger logger(log_object); // Debug level agnostic implementation of the ACTS_XYZ logging macros -#define ACTS_LOG(level, x) \ - do { \ - if (logger().doPrint(level)) { \ - std::ostringstream os; \ - os << x; \ - logger().log(level, os.str()); \ - } \ - } \ - while(0) +#define ACTS_LOG(level, x) \ + do { \ + if (logger().doPrint(level)) { \ + std::ostringstream os; \ + os << x; \ + logger().log(level, os.str()); \ + } \ + } while (0) /// @brief macro for verbose debug output -/// @ingroup Logging /// /// @param x debug message /// @@ -84,10 +82,9 @@ /// /// The debug message is printed if the current Acts::Logging::Level <= /// Acts::Logging::VERBOSE. -#define ACTS_VERBOSE(x) ACTS_LOG(Acts::Logging::VERBOSE, x) +#define ACTS_VERBOSE(x) ACTS_LOG(Acts::Logging::VERBOSE, x) /// @brief macro for debug debug output -/// @ingroup Logging /// /// @param x debug message /// @@ -96,10 +93,9 @@ /// /// The debug message is printed if the current Acts::Logging::Level <= /// Acts::Logging::DEBUG. -#define ACTS_DEBUG(x) ACTS_LOG(Acts::Logging::DEBUG, x) +#define ACTS_DEBUG(x) ACTS_LOG(Acts::Logging::DEBUG, x) /// @brief macro for info debug output -/// @ingroup Logging /// /// @param x debug message /// @@ -108,10 +104,9 @@ /// /// The debug message is printed if the current Acts::Logging::Level <= /// Acts::Logging::INFO. -#define ACTS_INFO(x) ACTS_LOG(Acts::Logging::INFO, x) +#define ACTS_INFO(x) ACTS_LOG(Acts::Logging::INFO, x) /// @brief macro for warning debug output -/// @ingroup Logging /// /// @param x debug message /// @@ -120,10 +115,9 @@ /// /// The debug message is printed if the current Acts::Logging::Level <= /// Acts::Logging::WARNING. -#define ACTS_WARNING(x) ACTS_LOG(Acts::Logging::WARNING, x) +#define ACTS_WARNING(x) ACTS_LOG(Acts::Logging::WARNING, x) /// @brief macro for error debug output -/// @ingroup Logging /// /// @param x debug message /// @@ -132,10 +126,9 @@ /// /// The debug message is printed if the current Acts::Logging::Level <= /// Acts::Logging::ERROR. -#define ACTS_ERROR(x) ACTS_LOG(Acts::Logging::ERROR, x) +#define ACTS_ERROR(x) ACTS_LOG(Acts::Logging::ERROR, x) /// @brief macro for fatal debug output -/// @ingroup Logging /// /// @param x debug message /// @@ -144,29 +137,33 @@ /// /// The debug message is printed if the current Acts::Logging::Level <= /// Acts::Logging::FATAL. -#define ACTS_FATAL(x) ACTS_LOG(Acts::Logging::FATAL, x) -// clang-format on +#define ACTS_FATAL(x) ACTS_LOG(Acts::Logging::FATAL, x) + +/// @} +/// @} namespace Acts { -/// @brief debug output related helper classes and functions -/// @ingroup Logging namespace Logging { + +/// @addtogroup logging +/// @{ + /// @brief constants steering the debug output /// /// All messages with a debug level equal or higher than the currently set /// debug output level will be printed. enum Level { - VERBOSE = 0, ///< VERBOSE level - DEBUG, ///< DEBUG level - INFO, ///< INFO level - WARNING, ///< WARNING level - ERROR, ///< ERROR level - FATAL, ///< FATAL level - MAX ///< Must be kept above the maximum supported debug level + VERBOSE = 0, ///< Detailed diagnostic trace information + DEBUG, ///< Debug information during development + INFO, ///< General information messages + WARNING, ///< Non-critical error conditions + ERROR, ///< Error conditions which require follow-up + FATAL, ///< Unrecoverable error conditions + MAX ///< Filler level }; -/// Get the string name for a logging level +/// @brief Get the string name for a logging level /// @param level The logging level /// @return String representation of the logging level inline std::string_view levelName(Level level) { @@ -190,6 +187,46 @@ inline std::string_view levelName(Level level) { } } +/// @defgroup logging_thresholds Logging Thresholds +/// @ingroup logging +/// @brief Functions and classes to manage logging failure thresholds +/// +/// Generally, log levels in ACTS are only of informative value: even +/// @ref Acts::Logging::Level::ERROR and @ref Acts::Logging::Level::FATAL will only print +/// messages, **and not terminate execution**. +/// +/// This is desirable in an experiment context, where jobs should not +/// immediately terminate when ACTS encounters something that is logged as an +/// error. In a test context, however, this behavior is not optimal: the tests +/// should ensure in known configurations errors do not occur, or only in +/// specific circumstances. To solve this, ACTS implements an optional log +/// *threshold* mechanism. +/// +/// The threshold mechanism is steered via two CMake options: +/// `ACTS_ENABLE_LOG_FAILURE_THRESHOLD` and `ACTS_LOG_FAILURE_THRESHOLD`. +/// Depending on their configuration, the logging can operate in three modes: +/// +/// 1. **No log failure threshold** exists, log levels are informative only. +/// This is +/// the default behavior. +/// 2. A **compile-time log failure threshold** is set. If +/// `ACTS_ENABLE_LOG_FAILURE_THRESHOLD=ON` and +/// `ACTS_LOG_FAILURE_THRESHOLD=` are set, the logger code will +/// compile in a fixed check if the log level of a particular message exceeds +/// ``. +/// If that is the case, an exception of type @ref Acts::Logging::ThresholdFailure is +/// thrown. +/// 3. A **runtime log failure threshold** is set. If only +/// `ACTS_ENABLE_LOG_FAILURE_THRESHOLD=ON` and no fixed threshold level is +/// set, the logger code will compile in a check of a global runtime +/// threshold variable. +/// +/// @note If only `ACTS_LOG_FAILURE_THRESHOLD` is set, +/// `ACTS_ENABLE_LOG_FAILURE_THRESHOLD` will be set automatically, i.e. a +/// compile-time threshold will be set. +/// +/// @{ + #ifdef DOXYGEN /// @brief Get debug level above which an exception will be thrown after logging /// @@ -260,6 +297,8 @@ class ScopedFailureThreshold { Level m_previousLevel{getFailureThreshold()}; }; +/// @} + /// @brief abstract base class for printing debug output /// /// Implementations of this interface need to define how and where to @a print @@ -638,14 +677,17 @@ class DefaultPrintPolicy final : public OutputPrintPolicy { /// pointer to destination output stream std::ostream* m_out; }; + +/// @} + } // namespace Logging /// @brief class for printing debug output +/// @ingroup logging /// /// This class provides the user interface for printing debug messages with /// different levels of severity. /// -/// @ingroup Logging class Logger { public: /// @brief construct from output print and filter policy diff --git a/Core/include/Acts/Utilities/TrackHelpers.hpp b/Core/include/Acts/Utilities/TrackHelpers.hpp index b3a4a267db3..fe36863595a 100644 --- a/Core/include/Acts/Utilities/TrackHelpers.hpp +++ b/Core/include/Acts/Utilities/TrackHelpers.hpp @@ -41,8 +41,11 @@ enum class TrackExtrapolationStrategy { }; /// Error codes for track extrapolation operations +/// @ingroup errors enum class TrackExtrapolationError { + /// Did not find a compatible track state CompatibleTrackStateNotFound = 1, + /// Provided reference surface is unreachable ReferenceSurfaceUnreachable = 2, }; diff --git a/Core/include/Acts/Utilities/TypeList.hpp b/Core/include/Acts/Utilities/TypeList.hpp index b4eabe7e930..d7488540961 100644 --- a/Core/include/Acts/Utilities/TypeList.hpp +++ b/Core/include/Acts/Utilities/TypeList.hpp @@ -106,7 +106,10 @@ struct filter { template typename Pred> struct filter { + private: using _next_type = typename filter::type; + + public: using type = std::conditional_t::value, push_front<_next_type, T>, _next_type>; }; diff --git a/Core/include/Acts/Utilities/detail/Extendable.hpp b/Core/include/Acts/Utilities/detail/Extendable.hpp index 03b69c6b2ca..c8eec6dc120 100644 --- a/Core/include/Acts/Utilities/detail/Extendable.hpp +++ b/Core/include/Acts/Utilities/detail/Extendable.hpp @@ -99,7 +99,7 @@ struct Extendable { /// @tparam extension_t Type of the Extension to be retrieved const std::tuple& tuple() const { return m_extensions; } - /// Non-Const retrieval of the extendsion tuype + /// Non-Const retrieval of the extension tuype /// /// @tparam extension_t Type of the Extension to be retrieved std::tuple& tuple() { return m_extensions; } diff --git a/Core/include/Acts/Vertexing/HoughVertexFinder.hpp b/Core/include/Acts/Vertexing/HoughVertexFinder.hpp index a6649a15007..b75e0119171 100644 --- a/Core/include/Acts/Vertexing/HoughVertexFinder.hpp +++ b/Core/include/Acts/Vertexing/HoughVertexFinder.hpp @@ -125,7 +125,7 @@ class HoughVertexFinder { /// Configuration instance const Config m_cfg; - /// @brief Returns the positions of the peak along Z axis in the pojection of the Hough plane + /// @brief Returns the positions of the peak along Z axis in the projection of the Hough plane /// @param spacepoints Set of all spacepoints within the event /// @param vtxOld Previous position of the vertex /// @param rangeZ Range in along Z around vtxOld_z to consider when looking for the new vertex diff --git a/Core/include/Acts/Vertexing/VertexingError.hpp b/Core/include/Acts/Vertexing/VertexingError.hpp index 9f27844c5cf..8ca323d1c4c 100644 --- a/Core/include/Acts/Vertexing/VertexingError.hpp +++ b/Core/include/Acts/Vertexing/VertexingError.hpp @@ -14,18 +14,30 @@ namespace Acts { /// Error codes for vertexing operations +/// @ingroup errors enum class VertexingError { // ensure all values are non-zero + /// Numeric failure in calculation. NumericFailure = 1, + /// Empty input provided. EmptyInput, + /// Error while finding vertex seed. SeedingError, + /// Unable to converge. NotConverged, + /// Unable to find element. ElementNotFound, + /// No covariance provided. NoCovariance, + /// Encountered non-invertible matrix. SingularMatrix, + /// Encountered negative or zero variance. NonPositiveVariance, + /// Encountered a matrix that is not positive definite. MatrixNotPositiveDefinite, + /// Invalid input provided. InvalidInput, + /// Could not remove track from collection. CouldNotRemoveTrack, }; diff --git a/Core/src/Geometry/CylinderVolumeBuilder.cpp b/Core/src/Geometry/CylinderVolumeBuilder.cpp index 3a8f1694b41..051c39db46c 100644 --- a/Core/src/Geometry/CylinderVolumeBuilder.cpp +++ b/Core/src/Geometry/CylinderVolumeBuilder.cpp @@ -65,7 +65,7 @@ std::shared_ptr CylinderVolumeBuilder::trackingVolume( // ----------------------------------------------------------------------------- MutableTrackingVolumePtr volume = nullptr; - // now analyize the layers that are provided + // now analyze the layers that are provided // ----------------------------------------------------- ACTS_DEBUG("-> Building layers"); LayerVector negativeLayers; diff --git a/Core/src/Material/MaterialMapUtils.cpp b/Core/src/Material/MaterialMapUtils.cpp index 8f4d23cd71e..6742fa35978 100644 --- a/Core/src/Material/MaterialMapUtils.cpp +++ b/Core/src/Material/MaterialMapUtils.cpp @@ -32,7 +32,7 @@ auto Acts::materialMapperRZ( materialVectorToGridMapper, std::vector rPos, std::vector zPos, const std::vector& material, double lengthUnit) - -> MaterialMapper< + -> MaterialMapLookup< Grid, Axis>> { // [1] Decompose material @@ -79,7 +79,7 @@ auto Acts::materialMapperRZ( }; // [5] Create the mapper & BField Service create material mapping - return MaterialMapper(transformPos, std::move(grid)); + return MaterialMapLookup(transformPos, std::move(grid)); } auto Acts::materialMapperXYZ( @@ -89,7 +89,7 @@ auto Acts::materialMapperXYZ( std::vector xPos, std::vector yPos, std::vector zPos, const std::vector& material, double lengthUnit) - -> MaterialMapper MaterialMapLookup, Axis, Axis>> { // [1] Decompose material @@ -137,5 +137,5 @@ auto Acts::materialMapperXYZ( auto transformPos = [](const Vector3& pos) { return pos; }; // [5] Create the mapper & BField Service create material mapping - return MaterialMapper(transformPos, std::move(grid)); + return MaterialMapLookup(transformPos, std::move(grid)); } diff --git a/Core/src/Material/SurfaceMaterialMapper.cpp b/Core/src/Material/SurfaceMaterialMapper.cpp index 80f3625be4f..626e2b4bc0e 100644 --- a/Core/src/Material/SurfaceMaterialMapper.cpp +++ b/Core/src/Material/SurfaceMaterialMapper.cpp @@ -145,7 +145,7 @@ void SurfaceMaterialMapper::checkAndInsert(State& mState, // Second attempt: binned material auto bmp = dynamic_cast(surfaceMaterial); bu = (bmp != nullptr) ? (&bmp->binUtility()) : nullptr; - // Creaete a binned type of material + // Create a binned type of material if (bu != nullptr) { // Screen output for Binned Surface material ACTS_DEBUG(" - binning is " << *bu); diff --git a/Core/src/Material/VolumeMaterialMapper.cpp b/Core/src/Material/VolumeMaterialMapper.cpp index 2d66ec33562..6030742260e 100644 --- a/Core/src/Material/VolumeMaterialMapper.cpp +++ b/Core/src/Material/VolumeMaterialMapper.cpp @@ -130,7 +130,7 @@ void VolumeMaterialMapper::checkAndInsert(State& mState, } // Second attempt: 2D binned material auto bmp2 = dynamic_cast< - const InterpolatedMaterialMap>*>( + const InterpolatedMaterialMap>*>( volumeMaterial); bu = (bmp2 != nullptr) ? (&bmp2->binUtility()) : nullptr; if (bu != nullptr) { @@ -145,7 +145,7 @@ void VolumeMaterialMapper::checkAndInsert(State& mState, } // Third attempt: 3D binned material auto bmp3 = dynamic_cast< - const InterpolatedMaterialMap>*>( + const InterpolatedMaterialMap>*>( volumeMaterial); bu = (bmp3 != nullptr) ? (&bmp3->binUtility()) : nullptr; if (bu != nullptr) { @@ -321,10 +321,10 @@ void VolumeMaterialMapper::finalizeMaps(State& mState) const { auto grid = mState.grid2D.find(matBin.first); if (grid != mState.grid2D.end()) { MaterialGrid2D matGrid = mapMaterialPoints(grid->second); - MaterialMapper matMap(mState.transform2D[matBin.first], - matGrid); + MaterialMapLookup matMap( + mState.transform2D[matBin.first], matGrid); mState.volumeMaterial[matBin.first] = std::make_unique< - InterpolatedMaterialMap>>( + InterpolatedMaterialMap>>( std::move(matMap), matBin.second); } else { throw std::domain_error("No grid 2D was found"); @@ -336,10 +336,10 @@ void VolumeMaterialMapper::finalizeMaps(State& mState) const { auto grid = mState.grid3D.find(matBin.first); if (grid != mState.grid3D.end()) { MaterialGrid3D matGrid = mapMaterialPoints(grid->second); - MaterialMapper matMap(mState.transform3D[matBin.first], - matGrid); + MaterialMapLookup matMap( + mState.transform3D[matBin.first], matGrid); mState.volumeMaterial[matBin.first] = std::make_unique< - InterpolatedMaterialMap>>( + InterpolatedMaterialMap>>( std::move(matMap), matBin.second); } else { throw std::domain_error("No grid 3D was found"); diff --git a/Core/src/TrackFinding/CombinatorialKalmanFilterError.cpp b/Core/src/TrackFinding/CombinatorialKalmanFilterError.cpp index e7d23b90eaf..4cbcdca1a47 100644 --- a/Core/src/TrackFinding/CombinatorialKalmanFilterError.cpp +++ b/Core/src/TrackFinding/CombinatorialKalmanFilterError.cpp @@ -35,6 +35,8 @@ class CombinatorialKalmanFilterErrorCategory : public std::error_category { case CombinatorialKalmanFilterError::PropagationReachesMaxSteps: return "Propagation reaches max steps before track finding is " "finished"; + case CombinatorialKalmanFilterError::NoMeasurementExpected: + return "No measurement expected on the current surface"; default: return "unknown"; } diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationAlgorithm.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationAlgorithm.hpp index 9dbf1b4f296..d11676807a0 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationAlgorithm.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationAlgorithm.hpp @@ -72,7 +72,7 @@ class DigitizationAlgorithm final : public IAlgorithm { bool mergeCommonCorner = true; /// Energy deposit threshold for accepting a hit /// For a generic readout frontend we assume 1000 e/h pairs, in Si each - /// e/h-pair requiers on average an energy of 3.65 eV (PDG review 2023, + /// e/h-pair requires on average an energy of 3.65 eV (PDG review 2023, /// Table 35.10) /// @NOTE The default is set to 0 because this works only well with Geant4 double minEnergyDeposit = 0.0; // 1000 * 3.65 * Acts::UnitConstants::eV; diff --git a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/DefaultHoughFunctions.hpp b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/DefaultHoughFunctions.hpp index a60c1dfb470..82dad0ce89d 100644 --- a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/DefaultHoughFunctions.hpp +++ b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/DefaultHoughFunctions.hpp @@ -10,11 +10,13 @@ #pragma once +/// @ingroup errors enum class HoughError { - Failure = 1, - SomethingElse, + /// A layer ID could not be determined for the given radius + LayerIdNotFoundForRadius = 1, }; -std::error_code make_error_code(HoughError e) { + +inline std::error_code make_error_code(HoughError e) { return {static_cast(e), std::generic_category()}; } @@ -59,8 +61,7 @@ ResultUnsigned findLayerIDDefault(double r) { } else if (r < 1100) { return ResultUnsigned::success(9); } - return ResultUnsigned::failure( - HoughError::Failure); /// shouldn't be here, this won't be used + return ResultUnsigned::failure(HoughError::LayerIdNotFoundForRadius); } // default with two slices, one for negative and one for positive z, counting diff --git a/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/AlignedDD4hepDetectorElement.hpp b/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/AlignedDD4hepDetectorElement.hpp index 54196e93ee2..3d2a1edf522 100644 --- a/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/AlignedDD4hepDetectorElement.hpp +++ b/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/AlignedDD4hepDetectorElement.hpp @@ -16,9 +16,11 @@ #include #include +/// @cond namespace dd4hep { class DetElement; } // namespace dd4hep +/// @endcond namespace ActsExamples { /// Define the aligned DD4hep detector element and factory type diff --git a/Examples/Detectors/GenericDetector/src/GenericDetector.cpp b/Examples/Detectors/GenericDetector/src/GenericDetector.cpp index 23fa888e1a7..c8bf59e49de 100644 --- a/Examples/Detectors/GenericDetector/src/GenericDetector.cpp +++ b/Examples/Detectors/GenericDetector/src/GenericDetector.cpp @@ -134,7 +134,7 @@ Gen1GenericDetectorBuilder::buildTrackingGeometry( LayerBuilder::Config plbConfig; plbConfig.layerCreator = layerCreator; plbConfig.layerIdentification = "Pixel"; - // material concentration alsways outside the modules + // material concentration always outside the modules plbConfig.centralProtoLayers = pplCreator.centralProtoLayers(gctx); plbConfig.centralLayerMaterialConcentration = {1, 1, 1, 1}; plbConfig.centralLayerMaterial = { diff --git a/Examples/Framework/include/ActsExamples/EventData/MuonSpacePointCalibrator.hpp b/Examples/Framework/include/ActsExamples/EventData/MuonSpacePointCalibrator.hpp index e50755d3886..8009ac28071 100644 --- a/Examples/Framework/include/ActsExamples/EventData/MuonSpacePointCalibrator.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/MuonSpacePointCalibrator.hpp @@ -23,14 +23,14 @@ class MuonSpacePointCalibrator { enum class CalibPolyType { Chebychev, Legendre }; /// @brief Calibration configuration struct */ struct Config { - /// @brief Coefficients of the r-t relation parametrised as othogonal polynomial + /// @brief Coefficients of the r-t relation parametrised as orthogonal polynomial std::vector rtCoefficients{9.0077, 6.7416, -1.5805, 0.56482, -0.1911, 0.018885, 0.03027, -0.034393, 0.023613}; - /// @brief Coefficients of the t-r relation as othogonal polynomial + /// @brief Coefficients of the t-r relation as orthogonal polynomial std::vector trCoefficients{256.328, 348.773, 118.157, 18.667, -6.4899}; - /// @brief Coefficients of the drift radius uncertainty parameterized as an othogonal polynomial + /// @brief Coefficients of the drift radius uncertainty parameterized as an orthogonal polynomial /// as a function of the drift time std::vector rtUncertCoefficients{0.10833, -0.071956, 0.037702, -0.011763}; diff --git a/Examples/Framework/include/ActsExamples/EventData/SpacePointContainer.hpp b/Examples/Framework/include/ActsExamples/EventData/SpacePointContainer.hpp index dbf94345f0a..2a32853a3f6 100644 --- a/Examples/Framework/include/ActsExamples/EventData/SpacePointContainer.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/SpacePointContainer.hpp @@ -28,7 +28,7 @@ class SpacePointContainer { // default constructor is of no use. It cannot be used, so why bother? SpacePointContainer() = delete; // we never get the ownership. In both read-only and read-and-write mode - // the memory backend is independetly handled. This is only interfacing it to + // the memory backend is independently handled. This is only interfacing it to // ACTS SpacePointContainer(CollectionType&& container) = delete; explicit SpacePointContainer(CollectionType& container) diff --git a/Examples/Io/EDM4hep/src/EDM4hepSimInputConverter.cpp b/Examples/Io/EDM4hep/src/EDM4hepSimInputConverter.cpp index b19f722b990..482bc200c4b 100644 --- a/Examples/Io/EDM4hep/src/EDM4hepSimInputConverter.cpp +++ b/Examples/Io/EDM4hep/src/EDM4hepSimInputConverter.cpp @@ -583,7 +583,7 @@ ProcessCode EDM4hepSimInputConverter::convert(const AlgorithmContext& ctx, // We will (ab)use the sim hit index to store the association with the // incoming edm4hep simhit. The reason is that we will not have the final // sim hit index in the collection that's sorted by geometry id, so we can't - // otherwise build an assotiation map. The index will later be overwritten + // otherwise build an association map. The index will later be overwritten // based // // This index will be across the input collections, diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialTrackWriter.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialTrackWriter.hpp index 6717ac4d4ed..46d2c119b12 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialTrackWriter.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialTrackWriter.hpp @@ -63,9 +63,9 @@ class RootMaterialTrackWriter bool recalculateTotals = false; /// Write aut pre and post step (for G4), otherwise central step position bool prePostStep = false; - /// Write the surface to which the material step correpond + /// Write the surface to which the material step correspond bool storeSurface = false; - /// Write the volume to which the material step correpond + /// Write the volume to which the material step correspond bool storeVolume = false; /// Collapse consecutive interactions of a single surface into a single /// interaction diff --git a/Examples/Io/Root/src/RootMaterialWriter.cpp b/Examples/Io/Root/src/RootMaterialWriter.cpp index 0204ce55025..4bdf3ea7b78 100644 --- a/Examples/Io/Root/src/RootMaterialWriter.cpp +++ b/Examples/Io/Root/src/RootMaterialWriter.cpp @@ -104,9 +104,9 @@ void ActsExamples::RootMaterialWriter::writeMaterial( // understand what sort of material you have in mind auto bvMaterial3D = dynamic_cast>*>(vMaterial); + Acts::MaterialMapLookup>*>(vMaterial); auto bvMaterial2D = dynamic_cast>*>(vMaterial); + Acts::MaterialMapLookup>*>(vMaterial); int points = 1; if (bvMaterial3D != nullptr || bvMaterial2D != nullptr) { diff --git a/Examples/Scripts/MaterialMapping/Mat_map_detector_plot_ratio.C b/Examples/Scripts/MaterialMapping/Mat_map_detector_plot_ratio.C index 8578dd3f188..24ba7dcdf6b 100644 --- a/Examples/Scripts/MaterialMapping/Mat_map_detector_plot_ratio.C +++ b/Examples/Scripts/MaterialMapping/Mat_map_detector_plot_ratio.C @@ -84,9 +84,9 @@ void plot_ratio(std::vector Map_prop, std::vector Map_geant, std:: /// detectors : list of the ID of the volume constitutive of the Geometry/sub-detector /// nbprocess : number of parameter to be processed /// name : name of the output directory. -/// name_prop : name of the output directory for the map valdation. +/// name_prop : name of the output directory for the map validation. /// name_geant : name of the output directory for the geantino scan. -/// The map valdation and geantino scan plots are only saved if name_prop and name_geant are defined. +/// The map validation and geantino scan plots are only saved if name_prop and name_geant are defined. void Mat_map_detector_plot_ratio(std::string input_file_prop = "", std::string input_file_geant = "", std::vector detectors = vector(), int nbprocess = -1, std::string name = "", std::string name_prop = "", std::string name_geant = ""){ diff --git a/Examples/Scripts/MaterialMapping/Mat_map_surface_plot_ratio.C b/Examples/Scripts/MaterialMapping/Mat_map_surface_plot_ratio.C index 9fd02c9b747..5a2b71ceb6e 100644 --- a/Examples/Scripts/MaterialMapping/Mat_map_surface_plot_ratio.C +++ b/Examples/Scripts/MaterialMapping/Mat_map_surface_plot_ratio.C @@ -86,9 +86,9 @@ void plot_ratio(std::vector Map_prop, std::vector Map_geant, const /// Plot the material ratio between the geantino scan and the map validation for each surface. /// nbprocess : number of parameter to be processed /// name : name of the output directory. -/// name_prop : name of the output directory for the map valdation. +/// name_prop : name of the output directory for the map validation. /// name_geant : name of the output directory for the geantino scan. -/// The map valdation and geantino scan plots are only saved if name_prop and name_geant are defined. +/// The map validation and geantino scan plots are only saved if name_prop and name_geant are defined. void Mat_map_surface_plot_ratio(std::string input_file_prop = "", std::string input_file_geant = "", int nbprocess = -1, std::string name = "", std::string name_prop = "", std::string name_geant = ""){ diff --git a/Examples/Scripts/Optimization/ckf.py b/Examples/Scripts/Optimization/ckf.py index a76f63d2afe..6a52b5b78c2 100755 --- a/Examples/Scripts/Optimization/ckf.py +++ b/Examples/Scripts/Optimization/ckf.py @@ -7,7 +7,7 @@ import acts from acts import UnitConstants as u from acts.examples import GenericDetector -from acts.exsamples.root import RootParticleReader +from acts.examples.root import RootParticleReader def getArgumentParser(): @@ -195,7 +195,7 @@ def runCKFTracks( trackingGeometry, field, TrackSmearingSigmas( # only used by SeedingAlgorithm.TruthSmeared - # zero eveything so the CKF has a chance to find the measurements + # zero everything so the CKF has a chance to find the measurements loc0=0, loc0PtA=0, loc0PtB=0, diff --git a/Examples/Scripts/Python/ckf_tracks.py b/Examples/Scripts/Python/ckf_tracks.py index 89e996f72c9..18ccad073ca 100755 --- a/Examples/Scripts/Python/ckf_tracks.py +++ b/Examples/Scripts/Python/ckf_tracks.py @@ -106,7 +106,7 @@ def runCKFTracks( trackingGeometry, field, TrackSmearingSigmas( # only used by SeedingAlgorithm.TruthSmeared - # zero eveything so the CKF has a chance to find the measurements + # zero everything so the CKF has a chance to find the measurements loc0=0, loc0PtA=0, loc0PtB=0, diff --git a/Examples/Scripts/Python/truth_tracking_gsf.py b/Examples/Scripts/Python/truth_tracking_gsf.py index 68875e0578d..a457144a908 100755 --- a/Examples/Scripts/Python/truth_tracking_gsf.py +++ b/Examples/Scripts/Python/truth_tracking_gsf.py @@ -129,7 +129,7 @@ def runTruthTrackingGsf( inputParticles="particles_generated", seedingAlgorithm=SeedingAlgorithm.TruthSmeared, trackSmearingSigmas=TrackSmearingSigmas( - # zero eveything so the GSF has a chance to find the measurements + # zero everything so the GSF has a chance to find the measurements loc0=0, loc0PtA=0, loc0PtB=0, diff --git a/Examples/Scripts/Python/truth_tracking_gx2f.py b/Examples/Scripts/Python/truth_tracking_gx2f.py index 78ff56bd8e0..06ffa5e7e9c 100644 --- a/Examples/Scripts/Python/truth_tracking_gx2f.py +++ b/Examples/Scripts/Python/truth_tracking_gx2f.py @@ -112,7 +112,7 @@ def runTruthTrackingGx2f( inputParticles="particles_generated", seedingAlgorithm=SeedingAlgorithm.TruthSmeared, trackSmearingSigmas=TrackSmearingSigmas( - # zero eveything so the GX2F has a chance to find the measurements + # zero everything so the GX2F has a chance to find the measurements loc0=0, loc0PtA=0, loc0PtB=0, diff --git a/Examples/Scripts/Python/truth_tracking_kalman.py b/Examples/Scripts/Python/truth_tracking_kalman.py index e5d13873c23..e4f3803282c 100755 --- a/Examples/Scripts/Python/truth_tracking_kalman.py +++ b/Examples/Scripts/Python/truth_tracking_kalman.py @@ -133,7 +133,7 @@ def runTruthTrackingKalman( inputParticles="particles_generated", seedingAlgorithm=SeedingAlgorithm.TruthSmeared, trackSmearingSigmas=TrackSmearingSigmas( - # zero eveything so the KF has a chance to find the measurements + # zero everything so the KF has a chance to find the measurements loc0=0, loc0PtA=0, loc0PtB=0, diff --git a/Fatras/include/ActsFatras/Digitization/ChannelMerger.hpp b/Fatras/include/ActsFatras/Digitization/ChannelMerger.hpp index 67e0b79ef9f..252f9783303 100644 --- a/Fatras/include/ActsFatras/Digitization/ChannelMerger.hpp +++ b/Fatras/include/ActsFatras/Digitization/ChannelMerger.hpp @@ -21,7 +21,7 @@ namespace ActsFatras { /// channel merging. /// /// @tparam signal_t The type of signal, needs operator+= to be defined -/// @tparam kSize the dimensonality of the object (cluster) +/// @tparam kSize the dimensionality of the object (cluster) /// /// @param channels The channels from one cluster /// diff --git a/Fatras/include/ActsFatras/Digitization/DigitizationError.hpp b/Fatras/include/ActsFatras/Digitization/DigitizationError.hpp index 64b68620101..e1f05eddee1 100644 --- a/Fatras/include/ActsFatras/Digitization/DigitizationError.hpp +++ b/Fatras/include/ActsFatras/Digitization/DigitizationError.hpp @@ -13,12 +13,18 @@ namespace ActsFatras { +/// @ingroup errors enum class DigitizationError { // ensure all values are non-zero + /// Smeared out of surface bounds. SmearingOutOfRange = 1, + /// Smearing error occurred. SmearingError, + /// Surface undefined for this operation. UndefinedSurface, + /// Surface mask could not be applied. MaskingError, + /// Maximum number of retries exceeded. MaximumRetriesExceeded, }; diff --git a/Fatras/include/ActsFatras/Kernel/InteractionList.hpp b/Fatras/include/ActsFatras/Kernel/InteractionList.hpp index 9ecd4c92094..3f9a62ff05e 100644 --- a/Fatras/include/ActsFatras/Kernel/InteractionList.hpp +++ b/Fatras/include/ActsFatras/Kernel/InteractionList.hpp @@ -111,7 +111,7 @@ using PointLikeIndices = TupleFilter; /// Two different type of interaction processes are supported: continuous and /// point-like interactions. /// -/// Continuous processes scale with the passed material. They tpyically +/// Continuous processes scale with the passed material. They typically /// describe effective results of a large number of small interactions such as /// multiple scattering or ionisation. Continuous process types **must** provide /// a call operator with the following signature: diff --git a/Fatras/include/ActsFatras/Kernel/Simulation.hpp b/Fatras/include/ActsFatras/Kernel/Simulation.hpp index b1c14b0c92a..78ad56c4338 100644 --- a/Fatras/include/ActsFatras/Kernel/Simulation.hpp +++ b/Fatras/include/ActsFatras/Kernel/Simulation.hpp @@ -211,7 +211,7 @@ struct Simulation { // required to allow correct particle id numbering for secondaries later if ((inputParticle.particleId().generation() != 0u) || (inputParticle.particleId().subParticle() != 0u)) { - return detail::SimulationError::eInvalidInputParticleId; + return detail::SimulationError::InvalidInputParticleId; } // Do a *depth-first* simulation of the particle and its secondaries, diff --git a/Fatras/include/ActsFatras/Kernel/detail/SimulationError.hpp b/Fatras/include/ActsFatras/Kernel/detail/SimulationError.hpp index 9769441c65f..13615d37384 100644 --- a/Fatras/include/ActsFatras/Kernel/detail/SimulationError.hpp +++ b/Fatras/include/ActsFatras/Kernel/detail/SimulationError.hpp @@ -13,9 +13,11 @@ namespace ActsFatras::detail { +/// @ingroup errors enum class SimulationError { // ensure all values are non-zero - eInvalidInputParticleId = 1, + /// Input particle id with non-zero generation or sub-particle + InvalidInputParticleId = 1, }; /// Construct and error_code from the enum. diff --git a/Fatras/src/Kernel/SimulationError.cpp b/Fatras/src/Kernel/SimulationError.cpp index 9f08cd8946c..13e5ce4274b 100644 --- a/Fatras/src/Kernel/SimulationError.cpp +++ b/Fatras/src/Kernel/SimulationError.cpp @@ -19,7 +19,7 @@ class SimulationErrorCategory final : public std::error_category { const char* name() const noexcept final { return "SimulationError"; } std::string message(int c) const final { switch (static_cast(c)) { - case SimulationError::eInvalidInputParticleId: + case SimulationError::InvalidInputParticleId: return "Input particle id with non-zero generation or sub-particle"; default: return "unknown"; diff --git a/Plugins/ActSVG/include/ActsPlugins/ActSVG/EventDataSvgConverter.hpp b/Plugins/ActSVG/include/ActsPlugins/ActSVG/EventDataSvgConverter.hpp index a6eb910a791..aec8e675101 100644 --- a/Plugins/ActSVG/include/ActsPlugins/ActSVG/EventDataSvgConverter.hpp +++ b/Plugins/ActSVG/include/ActsPlugins/ActSVG/EventDataSvgConverter.hpp @@ -13,8 +13,15 @@ #include "ActsPlugins/ActSVG/SvgUtils.hpp" #include +/// @namespace ActsPlugins::Svg::EventDataConverter +/// @ingroup actsvg_plugin +/// Utilities to convert event data to SVG objects + namespace ActsPlugins::Svg::EventDataConverter { +/// @addtogroup actsvg_plugin +/// @{ + /// Write/create a 3D point in XY view /// /// @param pos the position @@ -31,7 +38,7 @@ actsvg::svg::object pointXY(const Acts::Vector3& pos, double size, /// @param pos the position /// @param size the size of the object /// @param style the style of the object -/// @param indx the running index +/// @param idx the running index /// /// @return a vector of svg objects actsvg::svg::object pointZR(const Acts::Vector3& pos, double size, @@ -42,7 +49,7 @@ actsvg::svg::object pointZR(const Acts::Vector3& pos, double size, /// @param pos the position /// @param size the size of the object /// @param style the style of the object -/// @param indx the running index +/// @param idx the running index /// /// @return a vector of svg objects template @@ -58,4 +65,6 @@ actsvg::svg::object point(const Acts::Vector3& pos, double size, return circle; } +/// @} + } // namespace ActsPlugins::Svg::EventDataConverter diff --git a/Plugins/ActSVG/include/ActsPlugins/ActSVG/GridSvgConverter.hpp b/Plugins/ActSVG/include/ActsPlugins/ActSVG/GridSvgConverter.hpp index 96b6b019c11..3ea9794f0f5 100644 --- a/Plugins/ActSVG/include/ActsPlugins/ActSVG/GridSvgConverter.hpp +++ b/Plugins/ActSVG/include/ActsPlugins/ActSVG/GridSvgConverter.hpp @@ -29,11 +29,13 @@ namespace ActsPlugins::Svg { using ProtoGrid = actsvg::proto::grid; +/// @ingroup actsvg_plugin namespace GridConverter { // An optional range and binning value using AxisBound = std::tuple, Acts::AxisDirection>; +/// @ingroup actsvg_plugin /// Nested Options struct struct Options { /// A The style for the surfaces diff --git a/Plugins/ActSVG/include/ActsPlugins/ActSVG/IndexedSurfacesSvgConverter.hpp b/Plugins/ActSVG/include/ActsPlugins/ActSVG/IndexedSurfacesSvgConverter.hpp index c7f920f37d1..31917847c33 100644 --- a/Plugins/ActSVG/include/ActsPlugins/ActSVG/IndexedSurfacesSvgConverter.hpp +++ b/Plugins/ActSVG/include/ActsPlugins/ActSVG/IndexedSurfacesSvgConverter.hpp @@ -35,7 +35,9 @@ using ProtoAssociations = std::vector>; using ProtoIndexedSurfaceGrid = std::tuple; +/// @ingroup actsvg_plugin namespace IndexedSurfacesConverter { +/// @ingroup actsvg_plugin /// Nested options struct struct Options { /// Hierarchy map of styles @@ -48,7 +50,7 @@ struct Options { /// /// @note actual conversion implementation, bottom of unrolling loop /// -/// @param gtcx is the geometry context of the conversion call +/// @param gctx is the geometry context of the conversion call /// @param surfaces the container of surfaces /// @param indexGrid the indexGrid delegate /// @param cOptions the conversion options @@ -175,6 +177,7 @@ ProtoIndexedSurfaceGrid convertImpl(const Acts::GeometryContext& gctx, } // namespace IndexedSurfacesConverter +/// @ingroup actsvg_plugin namespace View { /// Convert into an ActsPlugins::Svg::object with an XY view diff --git a/Plugins/ActSVG/include/ActsPlugins/ActSVG/LayerSvgConverter.hpp b/Plugins/ActSVG/include/ActsPlugins/ActSVG/LayerSvgConverter.hpp index 195383cacf0..b78a1774de9 100644 --- a/Plugins/ActSVG/include/ActsPlugins/ActSVG/LayerSvgConverter.hpp +++ b/Plugins/ActSVG/include/ActsPlugins/ActSVG/LayerSvgConverter.hpp @@ -32,8 +32,10 @@ static const std::array noLimitZ = { static const std::array noLimitPhi = {-std::numbers::pi, std::numbers::pi}; +/// @ingroup actsvg_plugin namespace LayerConverter { +/// @ingroup actsvg_plugin /// The enumeration for sheets enum Sheets { eModuleInfo = 0, @@ -42,6 +44,7 @@ enum Sheets { eCrossSectionZR = 3 }; +/// @ingroup actsvg_plugin /// A nested options class for the layer conversion struct Options { /// The name for the conversion object diff --git a/Plugins/ActSVG/include/ActsPlugins/ActSVG/SurfaceArraySvgConverter.hpp b/Plugins/ActSVG/include/ActsPlugins/ActSVG/SurfaceArraySvgConverter.hpp index a340cc0c81d..1ee5493b1bf 100644 --- a/Plugins/ActSVG/include/ActsPlugins/ActSVG/SurfaceArraySvgConverter.hpp +++ b/Plugins/ActSVG/include/ActsPlugins/ActSVG/SurfaceArraySvgConverter.hpp @@ -24,8 +24,13 @@ class SurfaceArray; } // namespace Acts +/// @namespace ActsPlugins::Svg::SurfaceArrayConverter +/// @ingroup actsvg_plugin +/// Utilities to convert a surface array into proto objects for SVG output + namespace ActsPlugins::Svg::SurfaceArrayConverter { +/// @ingroup actsvg_plugin /// Nested options struct struct Options { /// Hierarchy map of styles @@ -35,8 +40,9 @@ struct Options { }; /// Convert a surface array into needed constituents +/// @ingroup actsvg_plugin /// -/// @param gtcx is the geometry context of the conversion call +/// @param gctx is the geometry context of the conversion call /// @param surfaceArray is the surface to convert /// @param cOptions the conversion options /// diff --git a/Plugins/ActSVG/include/ActsPlugins/ActSVG/SurfaceSvgConverter.hpp b/Plugins/ActSVG/include/ActsPlugins/ActSVG/SurfaceSvgConverter.hpp index 8b9dc135b9f..68a6c000b1e 100644 --- a/Plugins/ActSVG/include/ActsPlugins/ActSVG/SurfaceSvgConverter.hpp +++ b/Plugins/ActSVG/include/ActsPlugins/ActSVG/SurfaceSvgConverter.hpp @@ -21,10 +21,14 @@ class Surface; namespace ActsPlugins::Svg { +/// @cond using ProtoSurface = actsvg::proto::surface>; +/// @endcond +/// @ingroup actsvg_plugin namespace SurfaceConverter { +/// @ingroup actsvg_plugin /// Nested Options struct struct Options { /// A The style for the surfaces @@ -35,9 +39,9 @@ struct Options { /// Convert into a svg::proto surface /// -/// @param gtcx is the geometry context of the conversion call +/// @param gctx is the geometry context of the conversion call /// @param surface is the surface to convert -/// @param cOption is the conversion options struct +/// @param cOptions is the conversion options struct /// /// @return a proto surface object ProtoSurface convert(const Acts::GeometryContext& gctx, @@ -46,6 +50,7 @@ ProtoSurface convert(const Acts::GeometryContext& gctx, } // namespace SurfaceConverter +/// @ingroup actsvg_plugin namespace View { /// Convert into an ActsPlugins::Svg::object with an x-y view @@ -101,6 +106,7 @@ static inline actsvg::svg::object zrphi(const ProtoSurface& pSurface, } // namespace View +/// @ingroup actsvg_plugin namespace Sheet { /// Convert into an ActsPlugins::Svg::object with an XY sheet diff --git a/Plugins/ActSVG/include/ActsPlugins/ActSVG/SvgUtils.hpp b/Plugins/ActSVG/include/ActsPlugins/ActSVG/SvgUtils.hpp index 5bc38cdabfc..f262a5fb75c 100644 --- a/Plugins/ActSVG/include/ActsPlugins/ActSVG/SvgUtils.hpp +++ b/Plugins/ActSVG/include/ActsPlugins/ActSVG/SvgUtils.hpp @@ -19,6 +19,7 @@ namespace ActsPlugins::Svg { +/// @ingroup actsvg_plugin /// @brief Style struct struct Style { // Fill parameters @@ -127,6 +128,9 @@ inline static actsvg::svg::object group( /// @param yStart the start position y /// @param xEnd the end position x /// @param yEnd the end position y +/// @param variable the variable name +/// @param value the value +/// @param unit the unit /// /// @return a single svg object as a measure inline static actsvg::svg::object measure(double xStart, double yStart, @@ -179,6 +183,7 @@ inline static actsvg::svg::object axesXY(double xMin, double xMax, double yMin, /// @param info the text of the info box /// @param infoStyle the style of the info box (body) /// @param object the connected object +/// @param highlights the highlight events /// /// @return an svg object inline static actsvg::svg::object infoBox( diff --git a/Plugins/ActSVG/include/ActsPlugins/ActSVG/TrackingGeometrySvgConverter.hpp b/Plugins/ActSVG/include/ActsPlugins/ActSVG/TrackingGeometrySvgConverter.hpp index 6d260c4b2a6..14f11275c8c 100644 --- a/Plugins/ActSVG/include/ActsPlugins/ActSVG/TrackingGeometrySvgConverter.hpp +++ b/Plugins/ActSVG/include/ActsPlugins/ActSVG/TrackingGeometrySvgConverter.hpp @@ -26,8 +26,10 @@ namespace ActsPlugins::Svg { using ProtoPortal = actsvg::proto::portal>; using ProtoLink = ProtoPortal::link; +/// @ingroup actsvg_plugin namespace TrackingGeometryConverter { +/// @ingroup actsvg_plugin /// Nested Options struct for the writing configuration struct Options { /// Prefix the output names @@ -36,6 +38,7 @@ struct Options { Acts::GeometryHierarchyMap layerOptions; }; +/// @ingroup actsvg_plugin /// State object to collect geometry-wise information struct State { std::vector xyCrossSection; @@ -68,8 +71,10 @@ void convert(const Acts::GeometryContext& gctx, } // namespace TrackingGeometryConverter +/// @ingroup actsvg_plugin namespace TrackingGeometryProjections { +/// @ingroup actsvg_plugin struct Options { std::string prefix = ""; @@ -82,7 +87,7 @@ struct Options { /// Convert into xy and zr projections only /// /// @param gctx the geometry context -/// @param tVolume the tracking volume +/// @param tGeometry the tracking volume /// @param cOptions the conversion options /// /// @note best performant if configured with options diff --git a/Plugins/Covfie/include/ActsPlugins/Covfie/FieldConversion.hpp b/Plugins/Covfie/include/ActsPlugins/Covfie/FieldConversion.hpp index e888025d910..f562d057099 100644 --- a/Plugins/Covfie/include/ActsPlugins/Covfie/FieldConversion.hpp +++ b/Plugins/Covfie/include/ActsPlugins/Covfie/FieldConversion.hpp @@ -26,6 +26,9 @@ namespace ActsPlugins::Covfie { +/// @addtogroup covfie_plugin +/// @{ + using BuilderBackend = covfie::backend::strided>; @@ -61,4 +64,6 @@ InterpolatedField covfieField(const Acts::MagneticFieldProvider& magneticField, const Acts::Vector3& min, const Acts::Vector3& max); +/// @} + } // namespace ActsPlugins::Covfie diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/ConvertDD4hepDetector.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/ConvertDD4hepDetector.hpp index 5a0d7752615..f813952704f 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/ConvertDD4hepDetector.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/ConvertDD4hepDetector.hpp @@ -35,6 +35,8 @@ class TrackingGeometry; } // namespace Acts namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ /// Sort function which sorts dd4hep::DetElement by their ID /// @param [in,out] det the dd4hep::DetElements to be sorted @@ -213,4 +215,5 @@ void collectLayers_dd4hep(dd4hep::DetElement& detElement, std::vector& layers, const Acts::Logger& logger); +/// @} } // namespace ActsPlugins diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepBinningHelpers.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepBinningHelpers.hpp index 163b1fbd51c..2653b71006d 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepBinningHelpers.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepBinningHelpers.hpp @@ -24,6 +24,8 @@ #include namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ static const std::vector> allowedBinnings = {{"x", Acts::AxisDirection::AxisX}, @@ -78,6 +80,7 @@ inline std::vector stringToAxisDirections( } namespace DD4hepBinningHelpers { +/// @ingroup dd4hep_plugin /// @brief This method converts the DD4hep binning into the Acts ProtoAxis /// @@ -89,4 +92,5 @@ std::vector> convertBinning( const dd4hep::DetElement &dd4hepElement, const std::string &bname); } // namespace DD4hepBinningHelpers +/// @} } // namespace ActsPlugins diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepConversionHelpers.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepConversionHelpers.hpp index fe8e9066d27..72bdd1961da 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepConversionHelpers.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepConversionHelpers.hpp @@ -17,6 +17,8 @@ #include namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ /// Helper function to extract a parameter value from a dd4hep detector element /// from VariantParameters @@ -164,4 +166,5 @@ inline Acts::Transform3 extractTransform( return transform; } +/// @} } // namespace ActsPlugins diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepDetectorElement.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepDetectorElement.hpp index d04ff626b0c..512e8656335 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepDetectorElement.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepDetectorElement.hpp @@ -27,6 +27,9 @@ class ISurfaceMaterial; } // namespace Acts namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ + /// @class DD4hepDetectorElement /// /// @brief DetectorElement class implementation for DD4hep geometry @@ -112,4 +115,5 @@ struct DD4hepDetectorElementExtension { std::shared_ptr detectorElement; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepDetectorSurfaceFactory.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepDetectorSurfaceFactory.hpp index 736d47ce74f..e5a821e8f9e 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepDetectorSurfaceFactory.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepDetectorSurfaceFactory.hpp @@ -32,6 +32,9 @@ class ISurfaceMaterial; } // namespace Acts namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ + class DD4hepDetectorElement; /// A factory to convert DD4hep DetectorElements into sensitive @@ -195,4 +198,5 @@ class DD4hepDetectorSurfaceFactory { const Options& options) const; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepFieldAdapter.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepFieldAdapter.hpp index e3b2a7a8f52..8eafea95d4d 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepFieldAdapter.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepFieldAdapter.hpp @@ -18,8 +18,14 @@ class OverlayedField; } namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ +/// @ingroup magnetic_field dd4hep_plugin class DD4hepFieldAdapter : public Acts::MagneticFieldProvider { + /// Cache object for DD4hep field adapter + /// @note As DD4hep does not implement a caching mechanism, this struct is + /// empty. struct Cache {}; public: @@ -38,4 +44,5 @@ class DD4hepFieldAdapter : public Acts::MagneticFieldProvider { std::unique_ptr m_field; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepLayerBuilder.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepLayerBuilder.hpp index 50c8c618d24..8d810f28f53 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepLayerBuilder.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepLayerBuilder.hpp @@ -35,6 +35,9 @@ class ISurfaceMaterial; } // namespace Acts namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ + /// @brief build layers of one cylinder-endcap setup from DD4hep input /// /// This class is an implementation of the Acts::ILayerBuilder, @@ -207,4 +210,5 @@ inline DD4hepLayerBuilder::Config DD4hepLayerBuilder::getConfiguration() const { return m_cfg; } +/// @} } // namespace ActsPlugins diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepMaterialHelpers.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepMaterialHelpers.hpp index d0ffef1abb0..5be56259d2a 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepMaterialHelpers.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepMaterialHelpers.hpp @@ -27,6 +27,8 @@ class Layer; } namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ /// Helper method to translate DD4hep material to Acts::ISurfaceMaterial /// @@ -81,4 +83,5 @@ std::shared_ptr createProtoMaterial( binning, const Acts::Logger& logger = Acts::getDummyLogger()); +/// @} } // namespace ActsPlugins diff --git a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepVolumeBuilder.hpp b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepVolumeBuilder.hpp index c991be874f7..7c253906072 100644 --- a/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepVolumeBuilder.hpp +++ b/Plugins/DD4hep/include/ActsPlugins/DD4hep/DD4hepVolumeBuilder.hpp @@ -31,6 +31,8 @@ using MutableTrackingVolumeVector = std::vector; class TGeoMatrix; namespace ActsPlugins { +/// @addtogroup dd4hep_plugin +/// @{ /// @brief build confined TrackingVolumes of one cylinder setup from DD4hep /// input. @@ -109,4 +111,5 @@ inline DD4hepVolumeBuilder::Config DD4hepVolumeBuilder::getConfiguration() return m_cfg; } +/// @} } // namespace ActsPlugins diff --git a/Plugins/Detray/include/ActsPlugins/Detray/DetrayConversionUtils.hpp b/Plugins/Detray/include/ActsPlugins/Detray/DetrayConversionUtils.hpp index 2ea45af65a7..f430d176a84 100644 --- a/Plugins/Detray/include/ActsPlugins/Detray/DetrayConversionUtils.hpp +++ b/Plugins/Detray/include/ActsPlugins/Detray/DetrayConversionUtils.hpp @@ -30,8 +30,12 @@ using DetrayMetaData = detray::default_metadata>; using DetrayHostDetector = detray::detector; +/// @ingroup detray_plugin namespace DetrayConversionUtils { +/// @addtogroup detray_plugin +/// @{ + /// Detray conversion cache object /// /// This object is used to synchronize link information between the @@ -112,5 +116,7 @@ detray::io::transform_payload convertTransform( std::tuple convertBinUtilityTo2D( const Acts::BinUtility& bUtility); +/// @} + } // namespace DetrayConversionUtils } // namespace ActsPlugins diff --git a/Plugins/Detray/include/ActsPlugins/Detray/DetrayPayloadConverter.hpp b/Plugins/Detray/include/ActsPlugins/Detray/DetrayPayloadConverter.hpp index ddb2d105929..a2f4759546f 100644 --- a/Plugins/Detray/include/ActsPlugins/Detray/DetrayPayloadConverter.hpp +++ b/Plugins/Detray/include/ActsPlugins/Detray/DetrayPayloadConverter.hpp @@ -25,6 +25,7 @@ #include #include +/// @cond namespace detray { using dindex = unsigned int; @@ -51,6 +52,7 @@ enum class accel_id : unsigned int; } // namespace io } // namespace detray +/// @endcond namespace Acts { class GeometryContext; @@ -66,6 +68,7 @@ class ISurfaceMaterial; namespace ActsPlugins { +/// @ingroup detray_plugin class DetrayPayloadConverter { public: using DetraySurfaceMaterial = @@ -163,6 +166,7 @@ class DetrayPayloadConverter { convertProtoSurfaceMaterialBinUtility}; }; + /// @param bounds the surface bounds to convert /// @param forPortal detray special cases the local parametrization for portals for performance reasons static detray::io::mask_payload convertMask(const Acts::SurfaceBounds& bounds, bool forPortal); @@ -238,6 +242,7 @@ class DetrayPayloadConverter { std::unique_ptr m_logger; }; +/// @ingroup detray_plugin class DetrayUnsupportedMaterialException : public std::runtime_error { public: explicit DetrayUnsupportedMaterialException(std::string_view name); diff --git a/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/EDM4hepUtil.hpp b/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/EDM4hepUtil.hpp index 24b1ccb98f1..bbc29546913 100644 --- a/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/EDM4hepUtil.hpp +++ b/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/EDM4hepUtil.hpp @@ -49,6 +49,9 @@ struct std::hash { #endif +/// @namespace ActsPlugins::EDM4hepUtil +/// @ingroup edm4hep_plugin + namespace ActsPlugins::EDM4hepUtil { static constexpr std::int32_t EDM4HEP_ACTS_POSITION_TYPE = 42; @@ -81,6 +84,9 @@ Acts::BoundTrackParameters convertTrackParametersFromEdm4hep( } // namespace detail +/// @addtogroup edm4hep_plugin +/// @{ + // Compatibility with EDM4hep < 0.99 and >= 0.99 edm4hep::MCParticle getParticle(const edm4hep::SimTrackerHit& hit); @@ -285,4 +291,6 @@ class SimHitAssociation { std::unordered_map m_edm4hepToInternal; }; +/// @} + } // namespace ActsPlugins::EDM4hepUtil diff --git a/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioTrackContainer.hpp b/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioTrackContainer.hpp index fba9b10e0af..ad5aa560f9e 100644 --- a/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioTrackContainer.hpp +++ b/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioTrackContainer.hpp @@ -34,6 +34,8 @@ #include namespace ActsPlugins { +/// @addtogroup edm4hep_plugin +/// @{ class MutablePodioTrackContainer; class ConstPodioTrackContainer; @@ -423,4 +425,5 @@ static_assert( Acts::ConstTrackContainerBackend, "ConstPodioTrackContainer does not fulfill ConstTrackContainerBackend"); +/// @} } // namespace ActsPlugins diff --git a/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioTrackStateContainer.hpp b/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioTrackStateContainer.hpp index 839ba6608d8..bafc0496b7f 100644 --- a/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioTrackStateContainer.hpp +++ b/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioTrackStateContainer.hpp @@ -38,6 +38,8 @@ #include namespace ActsPlugins { +/// @addtogroup edm4hep_plugin +/// @{ class MutablePodioTrackStateContainer; class ConstPodioTrackStateContainer; @@ -759,4 +761,5 @@ inline ConstPodioTrackStateContainer::ConstPodioTrackStateContainer( } } +/// @} } // namespace ActsPlugins diff --git a/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioUtil.hpp b/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioUtil.hpp index 53c34f345a5..da79ebb75b9 100644 --- a/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioUtil.hpp +++ b/Plugins/EDM4hep/include/ActsPlugins/EDM4hep/PodioUtil.hpp @@ -37,6 +37,9 @@ class Frame; } namespace ActsPlugins { +/// @addtogroup edm4hep_plugin +/// @{ + namespace PodioUtil { // We want to support podio 0.16 and 1.x for now @@ -75,6 +78,7 @@ constexpr Identifier kNoIdentifier = std::numeric_limits::max(); constexpr int kNoSurface = -1; // @TODO: We might want to consider making this a type erased type that's not an interface +/// @ingroup edm4hep_plugin class ConversionHelper { public: virtual std::optional surfaceToIdentifier( @@ -94,6 +98,8 @@ ActsPodioEdm::Surface convertSurfaceToPodio(const ConversionHelper& helper, const Acts::Surface& surface); } // namespace PodioUtil +/// @} + namespace podio_detail { /// This is used by both the track and track state container, so the /// implementation is shared here @@ -103,4 +109,5 @@ void recoverDynamicColumns( std::unique_ptr>& dynamic); } // namespace podio_detail + } // namespace ActsPlugins diff --git a/Plugins/FastJet/include/ActsPlugins/FastJet/Jets.hpp b/Plugins/FastJet/include/ActsPlugins/FastJet/Jets.hpp index d4ce87a5244..68914a86190 100644 --- a/Plugins/FastJet/include/ActsPlugins/FastJet/Jets.hpp +++ b/Plugins/FastJet/include/ActsPlugins/FastJet/Jets.hpp @@ -20,6 +20,8 @@ #include namespace ActsPlugins::FastJet { +/// @addtogroup fastjet_plugin +/// @{ /// Jet labeling enum @@ -146,4 +148,5 @@ class TrackJet : public Jet { std::vector m_constituents; }; +/// @} } // namespace ActsPlugins::FastJet diff --git a/Plugins/FpeMonitoring/include/ActsPlugins/FpeMonitoring/FpeMonitor.hpp b/Plugins/FpeMonitoring/include/ActsPlugins/FpeMonitoring/FpeMonitor.hpp index 742c07fd802..f306e40130c 100644 --- a/Plugins/FpeMonitoring/include/ActsPlugins/FpeMonitoring/FpeMonitor.hpp +++ b/Plugins/FpeMonitoring/include/ActsPlugins/FpeMonitoring/FpeMonitor.hpp @@ -23,6 +23,8 @@ #include namespace ActsPlugins { +/// @addtogroup fpemonitoring_plugin +/// @{ enum class FpeType : std::uint32_t { INTDIV = FPE_INTDIV, @@ -158,4 +160,5 @@ class FpeMonitor { m_recorded; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4Converters.hpp b/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4Converters.hpp index 8887297283d..68b0481e01f 100644 --- a/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4Converters.hpp +++ b/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4Converters.hpp @@ -52,6 +52,8 @@ using G4RotationMatrix = CLHEP::HepRotation; using G4Transform3D = HepGeom::Transform3D; namespace ActsPlugins { +/// @addtogroup geant4_plugin +/// @{ struct Geant4AlgebraConverter { // A potential scalar between Geant4 and ACTS @@ -166,7 +168,7 @@ struct Geant4PhysicalVolumeConverter { /// Optionally allow to foce a type, throws exception if not possible Acts::Surface::SurfaceType forcedType = Acts::Surface::SurfaceType::Other; - /// @brief Convert a Geant4 phsyical volume to a surface + /// @brief Convert a Geant4 physical volume to a surface /// /// @param g4PhysVol the physical volume to be constructed /// @param toGlobal the global transformation before the volume @@ -203,4 +205,5 @@ struct Geant4VolumeConverter { const G4Tubs& g4Tubs); }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4DetectorElement.hpp b/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4DetectorElement.hpp index e52997116bf..e0e3b7bc1bf 100644 --- a/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4DetectorElement.hpp +++ b/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4DetectorElement.hpp @@ -25,6 +25,9 @@ class Surface; } // namespace Acts namespace ActsPlugins { +/// @addtogroup geant4_plugin +/// @{ + /// @class Geant4DetectorElement /// /// Detector element representative for Geant4 sensitive @@ -76,4 +79,5 @@ class Geant4DetectorElement : public Acts::DetectorElementBase { double m_thickness{0.}; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4DetectorSurfaceFactory.hpp b/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4DetectorSurfaceFactory.hpp index 5df09a5d64a..fb824fab51e 100644 --- a/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4DetectorSurfaceFactory.hpp +++ b/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4DetectorSurfaceFactory.hpp @@ -26,6 +26,8 @@ class G4VPhysicalVolume; using G4Transform3D = HepGeom::Transform3D; namespace ActsPlugins { +/// @addtogroup geant4_plugin +/// @{ class Geant4DetectorElement; class IGeant4PhysicalVolumeSelector; @@ -127,4 +129,5 @@ class Geant4DetectorSurfaceFactory { const Acts::Logger& logger() const { return *m_logger; } }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4PhysicalVolumeSelectors.hpp b/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4PhysicalVolumeSelectors.hpp index ac25978a175..7c896f1491e 100644 --- a/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4PhysicalVolumeSelectors.hpp +++ b/Plugins/Geant4/include/ActsPlugins/Geant4/Geant4PhysicalVolumeSelectors.hpp @@ -19,6 +19,8 @@ class G4VPhysicalVolume; namespace ActsPlugins { +/// @addtogroup geant4_plugin +/// @{ /// Interface class for selectors from physical volumes class IGeant4PhysicalVolumeSelector { @@ -30,6 +32,7 @@ class IGeant4PhysicalVolumeSelector { virtual bool select(const G4VPhysicalVolume& g4Phys) const = 0; }; +/// @ingroup geant4_plugin namespace Geant4PhysicalVolumeSelectors { /// @brief Struct that selects all G4VPhysicalVolume objects @@ -84,4 +87,6 @@ struct PositionSelector : public IGeant4PhysicalVolumeSelector { }; } // namespace Geant4PhysicalVolumeSelectors + +/// @} } // namespace ActsPlugins diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelConversionError.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelConversionError.hpp index cf725ca7ffb..2a06c31652b 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelConversionError.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelConversionError.hpp @@ -15,11 +15,16 @@ class GeoFullPhysVol; namespace ActsPlugins { +/// @ingroup errors enum class GeoModelConversionError { // ensure all values are non-zero + /// Wrong shape provided for this converter WrongShapeForConverter = 1, + /// Shape parameters can not be converted to Surface representation InvalidShapeParameters, + /// Unknown Shape provided, no converter available UnkownShape, + /// No logical volume found for the shape MissingLogicalVolume }; diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelConverters.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelConverters.hpp index 4d51bbdd2fa..43069eedd2d 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelConverters.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelConverters.hpp @@ -34,6 +34,9 @@ namespace ActsPlugins { +/// @addtogroup geomodel_plugin +/// @{ + /// @brief The GeoBox converter /// /// This is a dedicated converter for GeoBox shapes @@ -104,4 +107,6 @@ inline std::shared_ptr geoShapesConverters( return itr != converters.end() ? itr->second : nullptr; }; +/// @} + } // namespace ActsPlugins diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorElement.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorElement.hpp index 18b55b10cd3..f98244a1e2d 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorElement.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorElement.hpp @@ -27,6 +27,10 @@ class PlanarBounds; } // namespace Acts namespace ActsPlugins { + +/// @addtogroup geomodel_plugin +/// @{ + /// @class GeoModelDetectorElement /// /// Detector element representative for GeoModel based @@ -130,4 +134,6 @@ using GeoModelSensitiveSurface = std::tuple, std::shared_ptr>; +/// @} + } // namespace ActsPlugins diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorElementITk.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorElementITk.hpp index 93d78337666..49d4a2a929e 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorElementITk.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorElementITk.hpp @@ -13,6 +13,9 @@ namespace ActsPlugins { +/// @addtogroup geomodel_plugin +/// @{ + class ITkIdentifier { Acts::MultiIndex m_identifier{}; @@ -77,4 +80,6 @@ class GeoModelDetectorElementITk : public GeoModelDetectorElement { ITkIdentifier m_identifier; }; +/// @} + } // namespace ActsPlugins diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorObjectFactory.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorObjectFactory.hpp index 4c121b1cb53..7fae5e44cca 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorObjectFactory.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelDetectorObjectFactory.hpp @@ -28,6 +28,9 @@ class Surface; namespace ActsPlugins { +/// @addtogroup geomodel_plugin +/// @{ + /// @brief Factory class to convert GeoModel objects into Acts volumes and surfaces. The surface conversion /// process constructs surfaces from GeoTrd, GeoBox, GeoTube, /// GeoSimplePolygonBrep volume shapes with transforms being in the @@ -149,4 +152,7 @@ class GeoModelDetectorObjectFactory { const Acts::Logger& logger() const { return *m_logger; } }; + +/// @} + } // namespace ActsPlugins diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelMaterialConverter.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelMaterialConverter.hpp index 3882be6bcef..ee2982ddb1e 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelMaterialConverter.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelMaterialConverter.hpp @@ -13,11 +13,17 @@ class GeoMaterial; namespace ActsPlugins::GeoModel { +/// @addtogroup geomodel_plugin +/// @{ + /// @brief Convert GeoMaterial to Acts::Material /// /// @param gm The GeoMaterial to be converted +/// @param useMolarDensity Flag to indicate whether to use molar density /// @return the Acts::Material Acts::Material geoMaterialConverter(const GeoMaterial& gm, bool useMolarDensity = true); +/// @} + } // namespace ActsPlugins::GeoModel diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelReader.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelReader.hpp index 0cb96dd8b45..03db1dde09b 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelReader.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelReader.hpp @@ -15,6 +15,9 @@ namespace ActsPlugins::GeoModelReader { +/// @addtogroup geomodel_plugin +/// @{ + /// @brief Read the GeoModel from the database /// /// @param dbPath path to the database @@ -22,4 +25,6 @@ namespace ActsPlugins::GeoModelReader { /// @return world/top volume of the GeoModel tree in memory GeoModelTree readFromDb(const std::string& dbPath); +/// @} + } // namespace ActsPlugins::GeoModelReader diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelToDetectorVolume.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelToDetectorVolume.hpp index c49e45516b8..c187ef57269 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelToDetectorVolume.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelToDetectorVolume.hpp @@ -15,6 +15,9 @@ class GeoShape; namespace ActsPlugins::GeoModel { +/// @addtogroup geomodel_plugin +/// @{ + /// @brief Calculates the absolute volume position w.r.t. the world node /// This is only possible, if the volume is not shared in multiple /// branches of the GeoModelTree. @@ -33,4 +36,6 @@ std::shared_ptr convertVolume( const Acts::Transform3& trf, const GeoShape* shape, Acts::VolumeBoundFactory& boundFactory); +/// @} + } // namespace ActsPlugins::GeoModel diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelTree.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelTree.hpp index 476fba0a434..4d6fcaf44a3 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelTree.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/GeoModelTree.hpp @@ -16,6 +16,9 @@ namespace ActsPlugins { +/// @addtogroup geomodel_plugin +/// @{ + /// @brief Holder struct to manage a GeoModel world. It holds the pointer to the /// root volume of the world and provides additional links to dedicated /// volumes inside the tree representing the sensors and chambers in a @@ -84,4 +87,6 @@ struct GeoModelTree { std::string worldVolumeName{"World"}; }; +/// @} + } // namespace ActsPlugins diff --git a/Plugins/GeoModel/include/ActsPlugins/GeoModel/IGeoShapeConverter.hpp b/Plugins/GeoModel/include/ActsPlugins/GeoModel/IGeoShapeConverter.hpp index 61d1d3f4839..48aa311b721 100644 --- a/Plugins/GeoModel/include/ActsPlugins/GeoModel/IGeoShapeConverter.hpp +++ b/Plugins/GeoModel/include/ActsPlugins/GeoModel/IGeoShapeConverter.hpp @@ -23,6 +23,10 @@ class Surface; } namespace ActsPlugins { + +/// @addtogroup geomodel_plugin +/// @{ + /// @class IGeoShapeConverter /// /// Interface for the conversion of GeoShapes to Acts surfaces @@ -33,7 +37,7 @@ class IGeoShapeConverter { /// @brief Convert a GeoShape into a sensitive surface with associated /// GeoModelDetectorElement - /// @param geoFPV The physical volume to convert + /// @param geoPV The physical volume to convert /// @param transform: Placement of the constructed detector element /// @param boundFactory: Reference to the bound factory to share equivalent bounds /// across multiple surfaces @@ -43,7 +47,7 @@ class IGeoShapeConverter { Acts::SurfaceBoundFactory& boundFactory) const = 0; /// @brief Convert a GeoShape into a passive surface - /// @param geoFPV The physical volume to convert + /// @param geoPV The physical volume to convert /// @param transform: Placement of the constructed detector element /// @param boundFactory: Reference to the bound factory to share equivalent bounds /// across multiple surfaces @@ -53,4 +57,6 @@ class IGeoShapeConverter { Acts::SurfaceBoundFactory& boundFactory) const = 0; }; +/// @} + } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/BoostTrackBuilding.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/BoostTrackBuilding.hpp index 0521358ede3..7c1feadc4dc 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/BoostTrackBuilding.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/BoostTrackBuilding.hpp @@ -14,6 +14,8 @@ #include namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ class BoostTrackBuilding final : public TrackBuildingBase { public: @@ -34,4 +36,5 @@ class BoostTrackBuilding final : public TrackBuildingBase { const auto &logger() const { return *m_logger; } }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/CudaTrackBuilding.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/CudaTrackBuilding.hpp index 496a922366e..3058151d20e 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/CudaTrackBuilding.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/CudaTrackBuilding.hpp @@ -14,6 +14,8 @@ #include namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ class CudaTrackBuilding final : public TrackBuildingBase { public: @@ -38,4 +40,5 @@ class CudaTrackBuilding final : public TrackBuildingBase { const auto &logger() const { return *m_logger; } }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/GnnPipeline.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/GnnPipeline.hpp index 1f054f1eb67..fe74953e356 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/GnnPipeline.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/GnnPipeline.hpp @@ -18,6 +18,8 @@ #include namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ struct GnnTiming { using Duration = std::chrono::duration; @@ -58,4 +60,5 @@ class GnnPipeline { const Acts::Logger &logger() const { return *m_logger; } }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/GraphStoreHook.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/GraphStoreHook.hpp index f12ccec26d9..5fac345711f 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/GraphStoreHook.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/GraphStoreHook.hpp @@ -11,6 +11,8 @@ #include "ActsPlugins/Gnn/GnnPipeline.hpp" namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ class GraphStoreHook : public GnnHook { public: @@ -28,4 +30,5 @@ class GraphStoreHook : public GnnHook { const Graph &storedGraph() const { return *m_storedGraph; } }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/ModuleMapCuda.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/ModuleMapCuda.hpp index 7d39c24c027..b172ffffdbb 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/ModuleMapCuda.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/ModuleMapCuda.hpp @@ -14,18 +14,21 @@ #include #include +/// @cond template class CUDA_module_map_doublet; struct CUstream_st; -typedef CUstream_st *cudaStream_t; +using cudaStream_t = CUstream_st *; template class CUDA_module_map_triplet; +/// @endcond namespace ActsPlugins { namespace detail { + class GraphCreatorWrapperBase; template @@ -57,6 +60,9 @@ struct CUDA_edge_data { } // namespace detail +/// @addtogroup gnn_plugin +/// @{ + class ModuleMapCuda : public GraphConstructionBase { public: struct Config { @@ -103,4 +109,5 @@ class ModuleMapCuda : public GraphConstructionBase { const ExecutionContext &execContext = {}) override; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/OnnxEdgeClassifier.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/OnnxEdgeClassifier.hpp index e04f3b30606..6ea5ea600f3 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/OnnxEdgeClassifier.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/OnnxEdgeClassifier.hpp @@ -20,6 +20,8 @@ class Value; } // namespace Ort namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ class OnnxEdgeClassifier final : public EdgeClassificationBase { public: @@ -49,4 +51,5 @@ class OnnxEdgeClassifier final : public EdgeClassificationBase { std::string m_outputName; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/Stages.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/Stages.hpp index 47e86d1d074..c72f43170b5 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/Stages.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/Stages.hpp @@ -16,6 +16,8 @@ #include namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ /// Error that is thrown if no edges are found struct NoEdgesError : std::exception {}; @@ -81,4 +83,5 @@ class TrackBuildingBase { virtual ~TrackBuildingBase() = default; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/Tensor.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/Tensor.hpp index dbd8fd32a06..6de0743e6a5 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/Tensor.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/Tensor.hpp @@ -27,6 +27,9 @@ using cudaStream_t = CUstream_st *; namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ + /// A simple device description struct struct Device { /// Device type enumeration @@ -78,6 +81,7 @@ struct ExecutionContext { std::optional stream; }; +/// @cond namespace detail { using TensorDeleter = std::function; @@ -88,6 +92,7 @@ TensorPtr cloneTensorMemory(const TensorPtr &ptrFrom, std::size_t nbytes, Device devFrom, const ExecutionContext &ctxTo); } // namespace detail +/// @endcond /// This is a very small, limited class that models a 2D tensor of arbitrary /// type. It is move-only, and only possible to create via static factory @@ -180,4 +185,5 @@ std::pair, std::optional>> applyEdgeLimit( const std::optional> &edgeFeatures, std::size_t maxEdges, std::optional stream); +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/TensorRTEdgeClassifier.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/TensorRTEdgeClassifier.hpp index 2783ac76a9d..8e9163eb7fa 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/TensorRTEdgeClassifier.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/TensorRTEdgeClassifier.hpp @@ -24,6 +24,8 @@ class IExecutionContext; } // namespace nvinfer1 namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ class TensorRTEdgeClassifier final : public EdgeClassificationBase { public: @@ -62,4 +64,5 @@ class TensorRTEdgeClassifier final : public EdgeClassificationBase { mutable std::vector> m_contexts; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/TorchEdgeClassifier.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/TorchEdgeClassifier.hpp index 2f3271cf84f..366c4caa416 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/TorchEdgeClassifier.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/TorchEdgeClassifier.hpp @@ -13,6 +13,7 @@ #include +/// @cond namespace torch::jit { class Module; } @@ -20,8 +21,11 @@ class Module; namespace c10 { enum class DeviceType : std::int8_t; } +/// @endcond namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ class TorchEdgeClassifier final : public EdgeClassificationBase { public: @@ -52,4 +56,5 @@ class TorchEdgeClassifier final : public EdgeClassificationBase { std::unique_ptr m_model; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/TorchMetricLearning.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/TorchMetricLearning.hpp index f2eef2e4c4d..ec050875758 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/TorchMetricLearning.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/TorchMetricLearning.hpp @@ -13,6 +13,7 @@ #include +/// @cond namespace torch::jit { class Module; } @@ -20,8 +21,11 @@ class Module; namespace c10 { enum class DeviceType : std::int8_t; } +/// @endcond namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ class TorchMetricLearning final : public GraphConstructionBase { public: @@ -57,4 +61,5 @@ class TorchMetricLearning final : public GraphConstructionBase { std::unique_ptr m_model; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Gnn/include/ActsPlugins/Gnn/TruthGraphMetricsHook.hpp b/Plugins/Gnn/include/ActsPlugins/Gnn/TruthGraphMetricsHook.hpp index 83c0543d0e2..07db97f2ab9 100644 --- a/Plugins/Gnn/include/ActsPlugins/Gnn/TruthGraphMetricsHook.hpp +++ b/Plugins/Gnn/include/ActsPlugins/Gnn/TruthGraphMetricsHook.hpp @@ -13,6 +13,8 @@ #include "ActsPlugins/Gnn/detail/CantorEdge.hpp" namespace ActsPlugins { +/// @addtogroup gnn_plugin +/// @{ class TruthGraphMetricsHook : public GnnHook { std::unique_ptr m_logger; @@ -28,4 +30,5 @@ class TruthGraphMetricsHook : public GnnHook { const ExecutionContext &execCtx) const override; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Hashing/include/ActsPlugins/Hashing/AnnoyForwardDeclarations.hpp b/Plugins/Hashing/include/ActsPlugins/Hashing/AnnoyForwardDeclarations.hpp index 7f5555197ca..80613bb0455 100644 --- a/Plugins/Hashing/include/ActsPlugins/Hashing/AnnoyForwardDeclarations.hpp +++ b/Plugins/Hashing/include/ActsPlugins/Hashing/AnnoyForwardDeclarations.hpp @@ -8,6 +8,7 @@ #pragma once +/// @cond namespace Annoy { // Forward declarations for the Annoy classes we use. struct AngularEuclidean; // Metric used @@ -18,11 +19,17 @@ class AnnoyIndex; // AnnoyIndex template class class AnnoyIndexSingleThreadedBuildPolicy; // Build policy } // namespace Annoy +/// @endcond // Define commonly used Annoy types namespace ActsPlugins { +/// @addtogroup hashing_plugin +/// @{ + using AnnoyMetric = Annoy::AngularEuclidean; using AnnoyModel = Annoy::AnnoyIndex; + +/// @} } // namespace ActsPlugins diff --git a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAlgorithm.hpp b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAlgorithm.hpp index 7b1c2ea8ec1..6376ebb5ba6 100755 --- a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAlgorithm.hpp +++ b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAlgorithm.hpp @@ -12,6 +12,8 @@ #include "ActsPlugins/Hashing/HashingAlgorithmConfig.hpp" namespace ActsPlugins { +/// @addtogroup hashing_plugin +/// @{ template class HashingAlgorithm { @@ -33,6 +35,7 @@ class HashingAlgorithm { Config m_cfg; }; +/// @} } // namespace ActsPlugins #include "ActsPlugins/Hashing/HashingAlgorithm.ipp" diff --git a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAlgorithmConfig.hpp b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAlgorithmConfig.hpp index 23092798357..f1a2656a8b9 100644 --- a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAlgorithmConfig.hpp +++ b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAlgorithmConfig.hpp @@ -11,6 +11,9 @@ #include namespace ActsPlugins { +/// @addtogroup hashing_plugin +/// @{ + struct HashingAlgorithmConfig { /// Size of the buckets = number of spacepoints in the bucket std::uint32_t bucketSize = 10; @@ -26,4 +29,5 @@ struct HashingAlgorithmConfig { double layerZMax = 550; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAnnoy.hpp b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAnnoy.hpp index 2bbeeee227d..4405edb868a 100644 --- a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAnnoy.hpp +++ b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingAnnoy.hpp @@ -14,6 +14,8 @@ #include namespace ActsPlugins { +/// @addtogroup hashing_plugin +/// @{ template class HashingAnnoy { @@ -25,6 +27,8 @@ class HashingAnnoy { const double layerRMax, const double layerZMin, const double layerZMax); std::map> m_bucketsSPMap; }; + +/// @} } // namespace ActsPlugins #include "ActsPlugins/Hashing/HashingAnnoy.ipp" diff --git a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingTraining.hpp b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingTraining.hpp index 218bde3b6cd..615fd8a8ab4 100755 --- a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingTraining.hpp +++ b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingTraining.hpp @@ -12,6 +12,8 @@ #include "ActsPlugins/Hashing/HashingTrainingConfig.hpp" namespace ActsPlugins { +/// @addtogroup hashing_plugin +/// @{ template class HashingTrainingAlgorithm { @@ -35,6 +37,7 @@ class HashingTrainingAlgorithm { Config m_cfg; }; +/// @} } // namespace ActsPlugins #include "ActsPlugins/Hashing/HashingTraining.ipp" diff --git a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingTrainingConfig.hpp b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingTrainingConfig.hpp index 6b7f648815e..19411c034f8 100644 --- a/Plugins/Hashing/include/ActsPlugins/Hashing/HashingTrainingConfig.hpp +++ b/Plugins/Hashing/include/ActsPlugins/Hashing/HashingTrainingConfig.hpp @@ -11,6 +11,8 @@ #include namespace ActsPlugins { +/// @addtogroup hashing_plugin +/// @{ struct HashingTrainingConfig { /// Random seed for Annoy @@ -20,4 +22,5 @@ struct HashingTrainingConfig { std::int32_t f = 1; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Json/CMakeLists.txt b/Plugins/Json/CMakeLists.txt index 0cb0ebcf712..c0c546e3429 100644 --- a/Plugins/Json/CMakeLists.txt +++ b/Plugins/Json/CMakeLists.txt @@ -24,9 +24,6 @@ acts_add_library( ACTS_INCLUDE_FOLDER include/ActsPlugins ) -# temporarily until clients updated -install(DIRECTORY include/Acts DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - target_include_directories( ActsPluginJson PUBLIC diff --git a/Plugins/Json/include/Acts/Plugins/Json/ActsJson.hpp b/Plugins/Json/include/Acts/Plugins/Json/ActsJson.hpp deleted file mode 100644 index e8a7c82656d..00000000000 --- a/Plugins/Json/include/Acts/Plugins/Json/ActsJson.hpp +++ /dev/null @@ -1,12 +0,0 @@ -// This file is part of the ACTS project. -// -// Copyright (C) 2016 CERN for the benefit of the ACTS project -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. - -#pragma once - -/// Deprecated header, pointing to new location of Json plugin -#include "ActsPlugins/Json/ActsJson.hpp" diff --git a/Plugins/Json/include/Acts/Plugins/Json/GeometryHierarchyMapJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/GeometryHierarchyMapJsonConverter.hpp deleted file mode 100644 index 41e308f7d42..00000000000 --- a/Plugins/Json/include/Acts/Plugins/Json/GeometryHierarchyMapJsonConverter.hpp +++ /dev/null @@ -1,11 +0,0 @@ -// This file is part of the ACTS project. -// -// Copyright (C) 2016 CERN for the benefit of the ACTS project -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. - -#pragma once - -#include "ActsPlugins/Json/GeometryHierarchyMapJsonConverter.hpp" diff --git a/Plugins/Json/include/Acts/Plugins/Json/UtilitiesJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/UtilitiesJsonConverter.hpp deleted file mode 100644 index 53cd9b13398..00000000000 --- a/Plugins/Json/include/Acts/Plugins/Json/UtilitiesJsonConverter.hpp +++ /dev/null @@ -1,11 +0,0 @@ -// This file is part of the ACTS project. -// -// Copyright (C) 2016 CERN for the benefit of the ACTS project -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. - -#pragma once - -#include "ActsPlugins/Json/UtilitiesJsonConverter.hpp" diff --git a/Plugins/Json/include/ActsPlugins/Json/AlgebraJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/AlgebraJsonConverter.hpp index 34a9ba562b6..f1b2bb41119 100644 --- a/Plugins/Json/include/ActsPlugins/Json/AlgebraJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/AlgebraJsonConverter.hpp @@ -13,10 +13,11 @@ #include -// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -// can not match our naming guidelines. namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// Convert Transform3 to JSON /// @param j Destination JSON object /// @param t Source Transform3 to convert @@ -53,4 +54,6 @@ nlohmann::json toJson(const Transform3& t, const Options& options = {}); Transform3 fromJson(const nlohmann::json& jTransform); } // namespace Transform3JsonConverter + +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/AmbiguityConfigJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/AmbiguityConfigJsonConverter.hpp index 5209c00cd37..2d2dcbe69aa 100644 --- a/Plugins/Json/include/ActsPlugins/Json/AmbiguityConfigJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/AmbiguityConfigJsonConverter.hpp @@ -18,6 +18,9 @@ namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// @brief Type alias for detector-specific ambiguity resolution configuration /// @details Configuration parameters for ambiguity resolution in a specific detector component using DetectorConfig = ScoreBasedAmbiguityResolution::DetectorConfig; @@ -30,4 +33,5 @@ using ConfigPair = /// @param p Destination ConfigPair to populate void from_json(const nlohmann::json& j, ConfigPair& p); +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/DefinitionsJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/DefinitionsJsonConverter.hpp index 9536504358f..e5e1264217b 100644 --- a/Plugins/Json/include/ActsPlugins/Json/DefinitionsJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/DefinitionsJsonConverter.hpp @@ -15,6 +15,9 @@ namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// Convert Direction to JSON /// @param j Destination JSON object /// @param direction Source Direction to convert @@ -25,4 +28,5 @@ void to_json(nlohmann::json& j, const Direction& direction); /// @param direction Destination Direction to populate void from_json(const nlohmann::json& j, Direction& direction); +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/DetrayJsonHelper.hpp b/Plugins/Json/include/ActsPlugins/Json/DetrayJsonHelper.hpp index 92db94bdb32..ecd93235065 100644 --- a/Plugins/Json/include/ActsPlugins/Json/DetrayJsonHelper.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/DetrayJsonHelper.hpp @@ -16,8 +16,15 @@ #include +/// @namespace Acts::DetrayJsonHelper +/// @ingroup json_plugin +/// @todo Move this to the @ref ActsPlugins namespace + namespace Acts::DetrayJsonHelper { +/// @addtogroup json_plugin +/// @{ + /// @brief Helper function to switch keys from ACTS to detray /// /// DETRAY types @todo change to detray imports when available @@ -64,4 +71,5 @@ void addVolumeLink(nlohmann::json& jSurface, int vLink); /// @return the acceleration link idnetifier std::size_t accelerationLink(std::span casts); +/// @} } // namespace Acts::DetrayJsonHelper diff --git a/Plugins/Json/include/ActsPlugins/Json/ExtentJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/ExtentJsonConverter.hpp index f31055b694d..b49ca88be07 100644 --- a/Plugins/Json/include/ActsPlugins/Json/ExtentJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/ExtentJsonConverter.hpp @@ -13,10 +13,11 @@ #include -// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -// can not match our naming guidelines. namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// Convert Extent to JSON /// @param j Destination JSON object /// @param e Source Extent to convert @@ -27,4 +28,5 @@ void to_json(nlohmann::json& j, const Extent& e); /// @param e Destination Extent to populate void from_json(const nlohmann::json& j, Extent& e); +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/GeometryHierarchyMapJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/GeometryHierarchyMapJsonConverter.hpp index d7ffd4613d3..79070f7a454 100644 --- a/Plugins/Json/include/ActsPlugins/Json/GeometryHierarchyMapJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/GeometryHierarchyMapJsonConverter.hpp @@ -18,6 +18,9 @@ namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// Convert a geometry hierarchy map to/from Json. /// /// @tparam value_t value type stored in the geometry hierarchy map @@ -159,4 +162,5 @@ auto GeometryHierarchyMapJsonConverter::fromJson( return Container(std::move(elements)); } +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/GeometryIdentifierJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/GeometryIdentifierJsonConverter.hpp index 7f0c1a90375..06bd17719f8 100644 --- a/Plugins/Json/include/ActsPlugins/Json/GeometryIdentifierJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/GeometryIdentifierJsonConverter.hpp @@ -13,10 +13,11 @@ #include -// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -// can not match our naming guidelines. namespace Acts { +/// @addtogroup json_plugin +/// @{ + namespace GeometryIdentifierJsonConverter { /// Encode the geometry identifier /// @param geoId is the geometry identifier that will be encoded @@ -77,4 +78,5 @@ void to_json(nlohmann::json& j, const GeometryIdentifier& geoId); /// @param geoId GeometryIdentifier to fill void from_json(const nlohmann::json& j, GeometryIdentifier& geoId); +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/GeometryJsonKeys.hpp b/Plugins/Json/include/ActsPlugins/Json/GeometryJsonKeys.hpp index 24e877b5026..cffa1ec3555 100644 --- a/Plugins/Json/include/ActsPlugins/Json/GeometryJsonKeys.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/GeometryJsonKeys.hpp @@ -12,6 +12,9 @@ namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// @struct jsonKey /// /// @brief store in a single place the different key used for the material @@ -36,4 +39,5 @@ struct jsonKey { std::string maptype = "mappingType"; }; +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/GridJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/GridJsonConverter.hpp index d6ccfcbba24..3aecac2fc2d 100644 --- a/Plugins/Json/include/ActsPlugins/Json/GridJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/GridJsonConverter.hpp @@ -16,9 +16,11 @@ #include -// Custom Json encoder/decoders. namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// @cond NLOHMANN_JSON_SERIALIZE_ENUM(Acts::AxisBoundaryType, {{Acts::AxisBoundaryType::Bound, "Bound"}, @@ -28,7 +30,6 @@ NLOHMANN_JSON_SERIALIZE_ENUM(Acts::AxisBoundaryType, NLOHMANN_JSON_SERIALIZE_ENUM(Acts::AxisType, {{Acts::AxisType::Equidistant, "Equidistant"}, {Acts::AxisType::Variable, "Variable"}}) - /// @endcond namespace AxisJsonConverter { @@ -284,4 +285,6 @@ auto fromJson(const nlohmann::json& jGrid, } } // namespace GridJsonConverter + +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/ITrackingGeometryJsonDecorator.hpp b/Plugins/Json/include/ActsPlugins/Json/ITrackingGeometryJsonDecorator.hpp index d3f69c43a64..958d62e0079 100644 --- a/Plugins/Json/include/ActsPlugins/Json/ITrackingGeometryJsonDecorator.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/ITrackingGeometryJsonDecorator.hpp @@ -11,6 +11,9 @@ #include "ActsPlugins/Json/ActsJson.hpp" namespace Acts { + +/// @addtogroup json_plugin +/// @{ class TrackingVolume; class Surface; @@ -35,4 +38,6 @@ class ITrackingGeometryJsonDecorator { virtual void decorate(const Acts::TrackingVolume &volume, nlohmann::json &json) const = 0; }; + +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/IVolumeMaterialJsonDecorator.hpp b/Plugins/Json/include/ActsPlugins/Json/IVolumeMaterialJsonDecorator.hpp index 0a6d3c9f0fd..5fdf1485e0c 100644 --- a/Plugins/Json/include/ActsPlugins/Json/IVolumeMaterialJsonDecorator.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/IVolumeMaterialJsonDecorator.hpp @@ -11,6 +11,9 @@ #include "ActsPlugins/Json/ActsJson.hpp" namespace Acts { + +/// @addtogroup json_plugin +/// @{ class ISurfaceMaterial; class IVolumeMaterial; @@ -37,4 +40,6 @@ class IVolumeMaterialJsonDecorator { virtual void decorate(const Acts::IVolumeMaterial &material, nlohmann::json &json) const = 0; }; + +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/IndexedGridJsonHelper.hpp b/Plugins/Json/include/ActsPlugins/Json/IndexedGridJsonHelper.hpp index b8b251fd11c..0856e0c6dca 100644 --- a/Plugins/Json/include/ActsPlugins/Json/IndexedGridJsonHelper.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/IndexedGridJsonHelper.hpp @@ -18,6 +18,9 @@ #include namespace Acts { + +/// @addtogroup json_plugin +/// @{ using namespace GridAxisGenerators; namespace IndexedGridJsonHelper { @@ -233,4 +236,6 @@ updator_type generateFromJson(const nlohmann::json& jUpdater, } } // namespace IndexedGridJsonHelper + +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/JsonDetectorElement.hpp b/Plugins/Json/include/ActsPlugins/Json/JsonDetectorElement.hpp index bd16f7035fd..9441cab408d 100644 --- a/Plugins/Json/include/ActsPlugins/Json/JsonDetectorElement.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/JsonDetectorElement.hpp @@ -13,6 +13,9 @@ namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// A implementation of a detector element, that is constructed from a /// JSON description of a surface. The idea behind this is that it helps /// importing whole tracking geometries from JSON files. In some parts of @@ -47,4 +50,5 @@ class JsonDetectorElement : public DetectorElementBase { double m_thickness{}; }; +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/JsonMaterialDecorator.hpp b/Plugins/Json/include/ActsPlugins/Json/JsonMaterialDecorator.hpp index 4d68c48675c..187526a652a 100644 --- a/Plugins/Json/include/ActsPlugins/Json/JsonMaterialDecorator.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/JsonMaterialDecorator.hpp @@ -23,6 +23,9 @@ namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// @brief Material decorator from Json format /// /// This reads in material maps for surfaces and volumes @@ -67,4 +70,6 @@ class JsonMaterialDecorator : public IMaterialDecorator { const Logger& logger() const { return *m_logger; } }; + +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/JsonSurfacesReader.hpp b/Plugins/Json/include/ActsPlugins/Json/JsonSurfacesReader.hpp index 97e5c699e71..f7fc988abb6 100644 --- a/Plugins/Json/include/ActsPlugins/Json/JsonSurfacesReader.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/JsonSurfacesReader.hpp @@ -16,10 +16,13 @@ #include namespace Acts { + class Surface; -} -namespace Acts::JsonSurfacesReader { +/// @addtogroup json_plugin +/// @{ + +namespace JsonSurfacesReader { /// @brief Options specification for surface reading /// The file should contain an array of json surfaces @@ -59,4 +62,8 @@ std::vector> readVector(const Options& options); std::vector> readDetectorElements( const Options& options, double thickness); -} // namespace Acts::JsonSurfacesReader +} // namespace JsonSurfacesReader + +/// @} + +} // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/MaterialJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/MaterialJsonConverter.hpp index 08cfb75576c..59ba137d658 100644 --- a/Plugins/Json/include/ActsPlugins/Json/MaterialJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/MaterialJsonConverter.hpp @@ -16,10 +16,11 @@ #include -// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -// can not match our naming guidelines. namespace Acts { +/// @addtogroup json_plugin +/// @{ + class Surface; class ISurfaceMaterial; class IVolumeMaterial; @@ -116,4 +117,5 @@ nlohmann::json toJsonDetray(const Acts::BinUtility& binUtility, } // namespace MaterialJsonConverter +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/MaterialMapJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/MaterialMapJsonConverter.hpp index f3064535a3a..95ae4ed0e31 100644 --- a/Plugins/Json/include/ActsPlugins/Json/MaterialMapJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/MaterialMapJsonConverter.hpp @@ -32,6 +32,9 @@ #include namespace Acts { + +/// @addtogroup json_plugin +/// @{ class ISurfaceMaterial; class ITrackingGeometryJsonDecorator; class IVolumeMaterial; @@ -163,4 +166,5 @@ class MaterialMapJsonConverter { const Logger& logger() const { return *m_logger; } }; +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/PortalJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/PortalJsonConverter.hpp index c2d1a0a042a..9e5c5f2fcab 100644 --- a/Plugins/Json/include/ActsPlugins/Json/PortalJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/PortalJsonConverter.hpp @@ -19,8 +19,6 @@ #include #include -// Custom Json encoder/decoders - namespace Acts { class Surface; @@ -30,6 +28,8 @@ class DetectorVolume; class Portal; } // namespace Experimental +/// @addtogroup json_plugin +/// @{ namespace PortalJsonConverter { struct Options { @@ -97,4 +97,6 @@ std::shared_ptr fromJson( detectorVolumes); } // namespace PortalJsonConverter + +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/ProtoAxisJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/ProtoAxisJsonConverter.hpp index ca9998d1510..0700aae809c 100644 --- a/Plugins/Json/include/ActsPlugins/Json/ProtoAxisJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/ProtoAxisJsonConverter.hpp @@ -13,14 +13,14 @@ #include -/// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -/// can not match our naming guidelines. -/// -/// This uses a custom API and nomenclature as it would -/// otherwise require the ProtoAxis to have a default -/// constructor which is deleted +/// @namespace Acts::ProtoAxisJsonConverter +/// @ingroup json_plugin + namespace Acts::ProtoAxisJsonConverter { +/// @addtogroup json_plugin +/// @{ + /// Write the ProtoAxis to a json object /// /// @param pa the proto axis to be written out @@ -33,4 +33,6 @@ nlohmann::json toJson(const ProtoAxis& pa); /// @return ProtoAxis created from the JSON object Acts::ProtoAxis fromJson(const nlohmann::json& j); +/// @} + } // namespace Acts::ProtoAxisJsonConverter diff --git a/Plugins/Json/include/ActsPlugins/Json/Seeding2ConfigJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/Seeding2ConfigJsonConverter.hpp index 538f6d641c4..67ef30a653c 100644 --- a/Plugins/Json/include/ActsPlugins/Json/Seeding2ConfigJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/Seeding2ConfigJsonConverter.hpp @@ -18,6 +18,9 @@ namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// Convert SeedConfirmationRangeConfig to JSON /// @param j Destination JSON object /// @param config Source SeedConfirmationRangeConfig to convert @@ -28,10 +31,14 @@ void to_json(nlohmann::json& j, const SeedConfirmationRangeConfig& config); /// @param config Destination SeedConfirmationRangeConfig to populate void from_json(const nlohmann::json& j, SeedConfirmationRangeConfig& config); +/// @} } // namespace Acts namespace Acts::Experimental { +/// @ingroup json_plugin +/// @{ + /// Convert DoubletSeedFinder::Config to JSON /// @param j Destination JSON object /// @param config Source DoubletSeedFinder::Config to convert @@ -86,4 +93,6 @@ void from_json(const nlohmann::json& j, BroadTripletSeedFilter::Config& config); void from_json(const nlohmann::json& j, CylindricalSpacePointGrid2::Config& config); +/// @} + } // namespace Acts::Experimental diff --git a/Plugins/Json/include/ActsPlugins/Json/SurfaceBoundsJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/SurfaceBoundsJsonConverter.hpp index f2e1d269662..3d9b21dd4c1 100644 --- a/Plugins/Json/include/ActsPlugins/Json/SurfaceBoundsJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/SurfaceBoundsJsonConverter.hpp @@ -20,8 +20,10 @@ #include -// Custom Json encoder/decoders. namespace Acts { + +/// @addtogroup json_plugin +/// @{ class SurfaceBounds; /// Convert SurfaceBounds to JSON @@ -82,4 +84,5 @@ NLOHMANN_JSON_SERIALIZE_ENUM( {SurfaceBounds::BoundsType::eBoundless, "Boundless"}, {SurfaceBounds::BoundsType::eOther, "OtherBounds"}}) +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/SurfaceJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/SurfaceJsonConverter.hpp index 4b566e4da48..b78bab73d25 100644 --- a/Plugins/Json/include/ActsPlugins/Json/SurfaceJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/SurfaceJsonConverter.hpp @@ -23,9 +23,10 @@ #include -// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -// can not match our naming guidelines. namespace Acts { + +/// @addtogroup json_plugin +/// @{ class ISurfaceMaterial; using SurfaceAndMaterialWithContext = @@ -141,4 +142,5 @@ NLOHMANN_JSON_SERIALIZE_ENUM( {Surface::SurfaceType::Curvilinear, "CurvilinearSurface"}, {Surface::SurfaceType::Other, "Other"}}) +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/TrackParametersJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/TrackParametersJsonConverter.hpp index 44a42425929..8907733fc8b 100644 --- a/Plugins/Json/include/ActsPlugins/Json/TrackParametersJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/TrackParametersJsonConverter.hpp @@ -16,6 +16,9 @@ #include namespace Acts { + +/// @addtogroup json_plugin +/// @{ NLOHMANN_JSON_SERIALIZE_ENUM(Acts::PdgParticle, {{Acts::PdgParticle::eInvalid, "Invalid"}, @@ -40,7 +43,9 @@ NLOHMANN_JSON_SERIALIZE_ENUM(Acts::PdgParticle, {Acts::PdgParticle::eLead, "Lead"}} ) -} + +/// @} +} // namespace Acts #ifdef NLOHMANN_JSON_NAMESPACE_BEGIN NLOHMANN_JSON_NAMESPACE_BEGIN diff --git a/Plugins/Json/include/ActsPlugins/Json/UtilitiesJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/UtilitiesJsonConverter.hpp index 97b94430364..da0b42e21f6 100644 --- a/Plugins/Json/include/ActsPlugins/Json/UtilitiesJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/UtilitiesJsonConverter.hpp @@ -16,10 +16,10 @@ #include -// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -// can not match our naming guidelines. - namespace Acts { + +/// @addtogroup json_plugin +/// @{ class BinningData; void to_json(nlohmann::json& j, const BinningData& bd); @@ -53,4 +53,5 @@ NLOHMANN_JSON_SERIALIZE_ENUM(AxisDirection, {AxisDirection::AxisEta, "AxisEta"}, {AxisDirection::AxisMag, "AxisMag"}}) +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/VolumeBoundsJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/VolumeBoundsJsonConverter.hpp index dba85f8050d..bd1b0d9c7b4 100644 --- a/Plugins/Json/include/ActsPlugins/Json/VolumeBoundsJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/VolumeBoundsJsonConverter.hpp @@ -21,10 +21,11 @@ #include -// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -// can not match our naming guidelines. namespace Acts { +/// @addtogroup json_plugin +/// @{ + /// Convert VolumeBounds to JSON /// @param j Destination JSON object /// @param bounds Source VolumeBounds to convert @@ -74,4 +75,5 @@ NLOHMANN_JSON_SERIALIZE_ENUM( {VolumeBounds::BoundsType::eGenericCuboid, "GenericCuboid"}, {VolumeBounds::BoundsType::eTrapezoid, "Trapezoid"}}) +/// @} } // namespace Acts diff --git a/Plugins/Json/include/ActsPlugins/Json/VolumeJsonConverter.hpp b/Plugins/Json/include/ActsPlugins/Json/VolumeJsonConverter.hpp index 7e9b1fc66d5..0f7c38c449c 100644 --- a/Plugins/Json/include/ActsPlugins/Json/VolumeJsonConverter.hpp +++ b/Plugins/Json/include/ActsPlugins/Json/VolumeJsonConverter.hpp @@ -19,9 +19,10 @@ #include -// Custom Json encoder/decoders. Naming is mandated by nlohmann::json and thus -// can not match our naming guidelines. namespace Acts { + +/// @addtogroup json_plugin +/// @{ class IVolumeMaterial; class TrackingVolume; @@ -38,4 +39,5 @@ void to_json( /// @param volume Source TrackingVolume to convert void to_json(nlohmann::json& j, const Acts::TrackingVolume& volume); +/// @} } // namespace Acts diff --git a/Plugins/Json/src/MaterialJsonConverter.cpp b/Plugins/Json/src/MaterialJsonConverter.cpp index 68d4f99ddf9..8d80ae2f069 100644 --- a/Plugins/Json/src/MaterialJsonConverter.cpp +++ b/Plugins/Json/src/MaterialJsonConverter.cpp @@ -541,7 +541,7 @@ void Acts::to_json(nlohmann::json& j, const volumeMaterialPointer& material) { } // Only option remaining: material map auto bvMaterial2D = dynamic_cast>*>(material); + Acts::MaterialMapLookup>*>(material); // Now check if we have a 2D map if (bvMaterial2D != nullptr) { // type is binned @@ -564,7 +564,7 @@ void Acts::to_json(nlohmann::json& j, const volumeMaterialPointer& material) { } // Only option remaining: material map auto bvMaterial3D = dynamic_cast>*>(material); + Acts::MaterialMapLookup>*>(material); // Now check if we have a 3D map if (bvMaterial3D != nullptr) { // type is binned @@ -638,11 +638,11 @@ void Acts::from_json(const nlohmann::json& j, volumeMaterialPointer& material) { for (std::size_t bin = 0; bin < mmat.size(); bin++) { mGrid.at(bin) = mmat[bin].parameters(); } - Acts::MaterialMapper matMap(transfoGlobalToLocal, - mGrid); + Acts::MaterialMapLookup matMap(transfoGlobalToLocal, + mGrid); material = new Acts::InterpolatedMaterialMap< - Acts::MaterialMapper>(std::move(matMap), - bUtility); + Acts::MaterialMapLookup>(std::move(matMap), + bUtility); return; } if (bUtility.dimensions() == 3) { @@ -663,11 +663,11 @@ void Acts::from_json(const nlohmann::json& j, volumeMaterialPointer& material) { for (std::size_t bin = 0; bin < mmat.size(); bin++) { mGrid.at(bin) = mmat[bin].parameters(); } - Acts::MaterialMapper matMap(transfoGlobalToLocal, - mGrid); + Acts::MaterialMapLookup matMap(transfoGlobalToLocal, + mGrid); material = new Acts::InterpolatedMaterialMap< - Acts::MaterialMapper>(std::move(matMap), - bUtility); + Acts::MaterialMapLookup>(std::move(matMap), + bUtility); return; } } diff --git a/Plugins/Onnx/include/ActsPlugins/Onnx/AmbiguityTrackClassifier.hpp b/Plugins/Onnx/include/ActsPlugins/Onnx/AmbiguityTrackClassifier.hpp index 64a874d8eee..9c3aef367a8 100644 --- a/Plugins/Onnx/include/ActsPlugins/Onnx/AmbiguityTrackClassifier.hpp +++ b/Plugins/Onnx/include/ActsPlugins/Onnx/AmbiguityTrackClassifier.hpp @@ -23,6 +23,8 @@ #include namespace ActsPlugins { +/// @addtogroup onnx_plugin +/// @{ /// Onnx model implementation for track scoring and selection class AmbiguityTrackClassifier { @@ -110,4 +112,5 @@ class AmbiguityTrackClassifier { OnnxRuntimeBase m_duplicateClassifier; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Onnx/include/ActsPlugins/Onnx/MLTrackClassifier.hpp b/Plugins/Onnx/include/ActsPlugins/Onnx/MLTrackClassifier.hpp index 9d44fe877d9..426146e252d 100644 --- a/Plugins/Onnx/include/ActsPlugins/Onnx/MLTrackClassifier.hpp +++ b/Plugins/Onnx/include/ActsPlugins/Onnx/MLTrackClassifier.hpp @@ -13,6 +13,8 @@ #include namespace ActsPlugins { +/// @addtogroup onnx_plugin +/// @{ // Specialized class that labels tracks as good/duplicate/fake using a // deep neural network. @@ -46,4 +48,5 @@ class MLTrackClassifier : public OnnxRuntimeBase { double decisionThreshProb) const; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Onnx/include/ActsPlugins/Onnx/OnnxRuntimeBase.hpp b/Plugins/Onnx/include/ActsPlugins/Onnx/OnnxRuntimeBase.hpp index 69318e5379e..08a42ce1cd0 100644 --- a/Plugins/Onnx/include/ActsPlugins/Onnx/OnnxRuntimeBase.hpp +++ b/Plugins/Onnx/include/ActsPlugins/Onnx/OnnxRuntimeBase.hpp @@ -14,6 +14,8 @@ #include namespace ActsPlugins { +/// @addtogroup onnx_plugin +/// @{ /// Type alias for network batch input data structure using NetworkBatchInput = @@ -70,4 +72,5 @@ class OnnxRuntimeBase { std::vector> m_outputNodeDims; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Onnx/include/ActsPlugins/Onnx/SeedClassifier.hpp b/Plugins/Onnx/include/ActsPlugins/Onnx/SeedClassifier.hpp index b31f94df30c..e3381a6956e 100644 --- a/Plugins/Onnx/include/ActsPlugins/Onnx/SeedClassifier.hpp +++ b/Plugins/Onnx/include/ActsPlugins/Onnx/SeedClassifier.hpp @@ -15,6 +15,8 @@ #include namespace ActsPlugins { +/// @addtogroup onnx_plugin +/// @{ /// Onnx model implementation for seed scoring and selection class SeedClassifier { @@ -89,4 +91,5 @@ class SeedClassifier { OnnxRuntimeBase m_duplicateClassifier; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/ITGeoDetectorElementSplitter.hpp b/Plugins/Root/include/ActsPlugins/Root/ITGeoDetectorElementSplitter.hpp index 2ca9f9e9c1a..839e3277892 100644 --- a/Plugins/Root/include/ActsPlugins/Root/ITGeoDetectorElementSplitter.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/ITGeoDetectorElementSplitter.hpp @@ -16,6 +16,8 @@ class TGeoNode; namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ class TGeoDetectorElement; @@ -40,4 +42,5 @@ class ITGeoDetectorElementSplitter { std::shared_ptr tgde) const = 0; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/ITGeoIdentifierProvider.hpp b/Plugins/Root/include/ActsPlugins/Root/ITGeoIdentifierProvider.hpp index af83e81227d..57c09551761 100644 --- a/Plugins/Root/include/ActsPlugins/Root/ITGeoIdentifierProvider.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/ITGeoIdentifierProvider.hpp @@ -14,6 +14,8 @@ class TGeoNode; namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// @brief ITGeoIdentierProvider /// @@ -32,4 +34,5 @@ class ITGeoIdentifierProvider { const Acts::GeometryContext& gctx, const TGeoNode& tgnode) const = 0; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/RootMagneticFieldIo.hpp b/Plugins/Root/include/ActsPlugins/Root/RootMagneticFieldIo.hpp index 410559b7c3d..1f5ff185047 100644 --- a/Plugins/Root/include/ActsPlugins/Root/RootMagneticFieldIo.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/RootMagneticFieldIo.hpp @@ -19,6 +19,8 @@ #include namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// Method to setup the FieldMap /// @param localToGlobalBin Function mapping the local bins of r,z to the @@ -115,4 +117,5 @@ makeMagneticFieldMapXyzFromRoot( const std::string& fieldMapFile, const std::string& treeName, double lengthUnit, double BFieldUnit, bool firstOctant = false); +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/RootMaterialDecorator.hpp b/Plugins/Root/include/ActsPlugins/Root/RootMaterialDecorator.hpp index ec05dec08e8..e1e0c75c663 100644 --- a/Plugins/Root/include/ActsPlugins/Root/RootMaterialDecorator.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/RootMaterialDecorator.hpp @@ -28,6 +28,8 @@ class TFile; namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// @class RootMaterialDecorator /// @@ -114,4 +116,5 @@ class RootMaterialDecorator : public Acts::IMaterialDecorator { const Acts::Logger& logger() const { return *m_logger; } }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/RootMaterialMapIo.hpp b/Plugins/Root/include/ActsPlugins/Root/RootMaterialMapIo.hpp index 7a4d7bcd4f8..9eefaa6631a 100644 --- a/Plugins/Root/include/ActsPlugins/Root/RootMaterialMapIo.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/RootMaterialMapIo.hpp @@ -30,6 +30,8 @@ class BinnedSurfaceMaterial; } // namespace Acts namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// Simple payload class that can be wrapped for reading /// and writing. @@ -198,4 +200,5 @@ class RootMaterialMapIo { MaterialTreePayload m_indexedMaterialTreePayload; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/RootMaterialTrackIo.hpp b/Plugins/Root/include/ActsPlugins/Root/RootMaterialTrackIo.hpp index a087f2ff072..b100f02c120 100644 --- a/Plugins/Root/include/ActsPlugins/Root/RootMaterialTrackIo.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/RootMaterialTrackIo.hpp @@ -25,6 +25,8 @@ class TrackingVolume; } // namespace Acts namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// Simple payload class that can be wrapped for reading /// and writing. @@ -204,4 +206,5 @@ class RootMaterialTrackIo { MaterialVolumePayload m_volumePayload = {}; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/RootMeasurementIo.hpp b/Plugins/Root/include/ActsPlugins/Root/RootMeasurementIo.hpp index 79d5efe3360..0604abe48b6 100644 --- a/Plugins/Root/include/ActsPlugins/Root/RootMeasurementIo.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/RootMeasurementIo.hpp @@ -22,6 +22,8 @@ class GeometryIdentifier; } namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// @brief Helper class to manage the I/O of measurements and associated clusters /// to and from ROOT files. @@ -134,4 +136,5 @@ class RootMeasurementIo { MeasurementPayload m_measurementPayload; ClusterPayload m_clusterPayload; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/RootSpacePointIo.hpp b/Plugins/Root/include/ActsPlugins/Root/RootSpacePointIo.hpp index c21096153b1..9e620f638d1 100644 --- a/Plugins/Root/include/ActsPlugins/Root/RootSpacePointIo.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/RootSpacePointIo.hpp @@ -16,6 +16,8 @@ class TChain; class TTree; namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// Root space point reading and writing utility class RootSpacePointIo { @@ -73,4 +75,5 @@ class RootSpacePointIo { float m_varR = 0; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/TGeoCylinderDiscSplitter.hpp b/Plugins/Root/include/ActsPlugins/Root/TGeoCylinderDiscSplitter.hpp index 2aa97683dcb..e9e2fc718a7 100644 --- a/Plugins/Root/include/ActsPlugins/Root/TGeoCylinderDiscSplitter.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/TGeoCylinderDiscSplitter.hpp @@ -18,6 +18,8 @@ class TGeoNode; namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ class TGeoDetectorElement; @@ -72,4 +74,5 @@ class TGeoCylinderDiscSplitter : public ITGeoDetectorElementSplitter { std::unique_ptr m_logger; }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/TGeoDetectorElement.hpp b/Plugins/Root/include/ActsPlugins/Root/TGeoDetectorElement.hpp index 66bdc7cdf2f..543440500f5 100644 --- a/Plugins/Root/include/ActsPlugins/Root/TGeoDetectorElement.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/TGeoDetectorElement.hpp @@ -28,6 +28,8 @@ class Surface; } // namespace Acts namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// @class TGeoDetectorElement /// @@ -183,4 +185,5 @@ inline double TGeoDetectorElement::thickness() const { return m_thickness; } +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/TGeoLayerBuilder.hpp b/Plugins/Root/include/ActsPlugins/Root/TGeoLayerBuilder.hpp index 5426768c769..280d11ceec4 100644 --- a/Plugins/Root/include/ActsPlugins/Root/TGeoLayerBuilder.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/TGeoLayerBuilder.hpp @@ -42,6 +42,8 @@ class ProtoLayerHelper; } // namespace Acts namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ class TGeoDetectorElement; class ITGeoDetectorElementSplitter; @@ -258,4 +260,5 @@ inline const std::string& TGeoLayerBuilder::identification() const { return m_cfg.configurationName; } +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/TGeoMaterialConverter.hpp b/Plugins/Root/include/ActsPlugins/Root/TGeoMaterialConverter.hpp index 5c1aa8f1df6..cb69ae33855 100644 --- a/Plugins/Root/include/ActsPlugins/Root/TGeoMaterialConverter.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/TGeoMaterialConverter.hpp @@ -20,6 +20,9 @@ class TGeoMaterial; namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ + struct TGeoMaterialConverter { /// @brief Nested options struct /// to steer the conversion process @@ -43,4 +46,5 @@ struct TGeoMaterialConverter { double thicknessOut, const Options& options); }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/TGeoParser.hpp b/Plugins/Root/include/ActsPlugins/Root/TGeoParser.hpp index 77a5311a256..bb4ef1f1193 100644 --- a/Plugins/Root/include/ActsPlugins/Root/TGeoParser.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/TGeoParser.hpp @@ -23,6 +23,8 @@ class TGeoNode; class TGeoVolume; namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ /// @brief TGeoParser is a helper struct that /// walks recursively through a TGeometry and selects by @@ -88,4 +90,5 @@ struct TGeoParser { static TGeoNode* findNodeRecursive(TGeoNode* currentNode, const char* volumeName); }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/TGeoPrimitivesHelper.hpp b/Plugins/Root/include/ActsPlugins/Root/TGeoPrimitivesHelper.hpp index c9e3712c0bc..07a20a0e0ee 100644 --- a/Plugins/Root/include/ActsPlugins/Root/TGeoPrimitivesHelper.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/TGeoPrimitivesHelper.hpp @@ -14,6 +14,8 @@ #include namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ struct TGeoPrimitivesHelper { /// Helper method to create a transform from @@ -48,4 +50,5 @@ struct TGeoPrimitivesHelper { /// @param second is the test string static bool match(const std::vector& first, const char* second); }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/include/ActsPlugins/Root/TGeoSurfaceConverter.hpp b/Plugins/Root/include/ActsPlugins/Root/TGeoSurfaceConverter.hpp index da9a8bb44ce..95eff080efe 100644 --- a/Plugins/Root/include/ActsPlugins/Root/TGeoSurfaceConverter.hpp +++ b/Plugins/Root/include/ActsPlugins/Root/TGeoSurfaceConverter.hpp @@ -33,6 +33,9 @@ class Surface; } // namespace Acts namespace ActsPlugins { +/// @addtogroup root_plugin +/// @{ + class TGeoDetectorElement; /// Helper struct to convert TGeoShapes into Surface or Volume Bounds @@ -113,4 +116,5 @@ struct TGeoSurfaceConverter { } }; +/// @} } // namespace ActsPlugins diff --git a/Plugins/Root/src/RootMaterialDecorator.cpp b/Plugins/Root/src/RootMaterialDecorator.cpp index 8efc3d5eca0..f34a48e79af 100644 --- a/Plugins/Root/src/RootMaterialDecorator.cpp +++ b/Plugins/Root/src/RootMaterialDecorator.cpp @@ -177,9 +177,10 @@ ActsPlugins::RootMaterialDecorator::RootMaterialDecorator( Material::fromMassDensity(dx0, dl0, da, dz, drho); mGrid.at(p - 1) = material.parameters(); } - MaterialMapper matMap(transfoGlobalToLocal, mGrid); + MaterialMapLookup matMap(transfoGlobalToLocal, + mGrid); vMaterial = std::make_shared< - InterpolatedMaterialMap>>( + InterpolatedMaterialMap>>( std::move(matMap), bUtility); } else if (dim == 3) { // 3D Grid material @@ -208,9 +209,10 @@ ActsPlugins::RootMaterialDecorator::RootMaterialDecorator( Material::fromMassDensity(dx0, dl0, da, dz, drho); mGrid.at(p - 1) = material.parameters(); } - MaterialMapper matMap(transfoGlobalToLocal, mGrid); + MaterialMapLookup matMap(transfoGlobalToLocal, + mGrid); vMaterial = std::make_shared< - InterpolatedMaterialMap>>( + InterpolatedMaterialMap>>( std::move(matMap), bUtility); } } else { diff --git a/Plugins/Root/src/RootMaterialMapIo.cpp b/Plugins/Root/src/RootMaterialMapIo.cpp index fdc01e897fc..ae995a07e75 100644 --- a/Plugins/Root/src/RootMaterialMapIo.cpp +++ b/Plugins/Root/src/RootMaterialMapIo.cpp @@ -380,7 +380,7 @@ ActsPlugins::RootMaterialMapIo::readTextureSurfaceMaterial( return nullptr; } - // Now reconstruct the bin untilities + // Now reconstruct the bin utilities BinUtility bUtility; for (int ib = 1; ib < n->GetNbinsX() + 1; ++ib) { auto nbins = static_cast(n->GetBinContent(ib)); diff --git a/README.md b/README.md index 6aba11f1124..2be22a1d21a 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ cmake --build For more details, e.g. specific versions and additional dependencies, have a look at the [getting started guide](docs/getting_started.md). If you find a bug, have a feature request, or want to contribute to ACTS, have a look at the -[contribution guidelines](CONTRIBUTING.rst). +[contribution guidelines](CONTRIBUTING.md). ## Versioning and public API diff --git a/Tests/CommonHelpers/include/ActsTests/CommonHelpers/BenchmarkTools.hpp b/Tests/CommonHelpers/include/ActsTests/CommonHelpers/BenchmarkTools.hpp index 4cc83fc6a87..e7691126894 100644 --- a/Tests/CommonHelpers/include/ActsTests/CommonHelpers/BenchmarkTools.hpp +++ b/Tests/CommonHelpers/include/ActsTests/CommonHelpers/BenchmarkTools.hpp @@ -77,7 +77,7 @@ namespace ActsTests { // The current implementation has limitations that you should bear in mind: // // - "clobber" data which resides in CPU registers must be flushed to memory -// and reloaded from memory afterwards if re-used. This will increase memory +// and reloaded from memory afterwards if reused. This will increase memory // traffic and cache footprint in a potentially unrealistic fashion. // - Putting this optimization barrier on every iteration of a loop will // prevent compiler loop optimizations like autovectorization, which is diff --git a/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp b/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp index 6af1cd51392..79f0575fa71 100644 --- a/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp +++ b/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp @@ -40,7 +40,7 @@ BOOST_AUTO_TEST_CASE(CuboidVolumeConstruction) { // Test Construction CuboidVolumeBounds box(hx, hy, hz); - // Test initilizer list construction + // Test initializer list construction CuboidVolumeBounds init( {{CuboidVolumeBounds::BoundValues::eHalfLengthX, hx}, {CuboidVolumeBounds::BoundValues::eHalfLengthY, hy}, @@ -79,7 +79,7 @@ BOOST_AUTO_TEST_CASE(CuboidVolumeException) { BOOST_CHECK_THROW(CuboidVolumeBounds(hx, -hy, -hz), std::logic_error); // Other iterations : all BOOST_CHECK_THROW(CuboidVolumeBounds(-hx, -hy, -hz), std::logic_error); - // Initilizer list with missing bound values + // Initializer list with missing bound values BOOST_CHECK_THROW( CuboidVolumeBounds({{CuboidVolumeBounds::BoundValues::eHalfLengthX, hx}, {CuboidVolumeBounds::BoundValues::eHalfLengthZ, hz}}), diff --git a/Tests/UnitTests/Core/MagneticField/TextMagneticFieldIoTests.cpp b/Tests/UnitTests/Core/MagneticField/TextMagneticFieldIoTests.cpp index b41e91ac123..517166c73be 100644 --- a/Tests/UnitTests/Core/MagneticField/TextMagneticFieldIoTests.cpp +++ b/Tests/UnitTests/Core/MagneticField/TextMagneticFieldIoTests.cpp @@ -82,7 +82,7 @@ BOOST_AUTO_TEST_CASE(InterpolatedBFieldMap_rz_from_text) { }, tmp.path() / fieldName, 1_mm, fieldScale, fOctant, dlm); - // Check that the bfield is two dimenstional + // Check that the bfield is two dimensional auto nBins = rzField.getNBins(); BOOST_CHECK_EQUAL(nBins.size(), 2u); diff --git a/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp b/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp index f33cd8105fa..6d58113a8f8 100644 --- a/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp +++ b/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp @@ -44,7 +44,7 @@ BOOST_AUTO_TEST_CASE(InterpolatedMaterialMap_MaterialCell_test) { std::array matArray = {mat, mat, mat, mat}; - MaterialMapper::MaterialCell materialCell( + MaterialMapLookup::MaterialCell materialCell( trafoGlobalToLocal, lowerLeft, upperRight, matArray); // Test InterpolatedMaterialMap::MaterialCell::isInside method @@ -60,7 +60,7 @@ BOOST_AUTO_TEST_CASE(InterpolatedMaterialMap_MaterialCell_test) { BOOST_CHECK_EQUAL(materialCell.getMaterial({0.5, 0.5, 0.5}), Material(mat)); } -BOOST_AUTO_TEST_CASE(InterpolatedMaterialMap_MaterialMapper_test) { +BOOST_AUTO_TEST_CASE(InterpolatedMaterialMap_MaterialMapLookup_test) { // Create the axes for the grid Axis axisX(0, 3, 3); Axis axisY(0, 3, 3); @@ -73,13 +73,13 @@ BOOST_AUTO_TEST_CASE(InterpolatedMaterialMap_MaterialMapper_test) { for (std::size_t i = 0; i < grid.size(); i++) { grid.at(i) = mat; } - MaterialMapper matMap(trafoGlobalToLocal, grid); + MaterialMapLookup matMap(trafoGlobalToLocal, grid); // Test Material getter BOOST_CHECK_EQUAL(matMap.getMaterial({0.5, 0.5, 0.5}), Material(mat)); // Test the MaterialCell getter - MaterialMapper::MaterialCell matCell = + MaterialMapLookup::MaterialCell matCell = matMap.getMaterialCell({0.5, 0.5, 0.5}); BOOST_CHECK_EQUAL(matCell.getMaterial({0.5, 0.5, 0.5}), Material(mat)); @@ -132,7 +132,7 @@ BOOST_AUTO_TEST_CASE(InterpolatedMaterialMap_test) { for (std::size_t i = 0; i < grid.size(); i++) { grid.at(i) = mat; } - MaterialMapper matMap(trafoGlobalToLocal, grid); + MaterialMapLookup matMap(trafoGlobalToLocal, grid); InterpolatedMaterialMap ipolMatMap(std::move(matMap)); // Test the material getter @@ -145,9 +145,9 @@ BOOST_AUTO_TEST_CASE(InterpolatedMaterialMap_test) { std::array matArray = {mat, mat, mat, mat}; - MaterialMapper::MaterialCell materialCell( + MaterialMapLookup::MaterialCell materialCell( trafoGlobalToLocal, lowerLeft, upperRight, matArray); - InterpolatedMaterialMap>::Cache cache; + InterpolatedMaterialMap>::Cache cache; cache.matCell = materialCell; cache.initialized = true; BOOST_CHECK_EQUAL(ipolMatMap.getMaterial(Vector3(0.5, 0.5, 0.5), cache), diff --git a/Tests/UnitTests/Core/Propagator/MaterialCollectionTests.cpp b/Tests/UnitTests/Core/Propagator/MaterialCollectionTests.cpp index 45d6b35e02d..e45017ec4dc 100644 --- a/Tests/UnitTests/Core/Propagator/MaterialCollectionTests.cpp +++ b/Tests/UnitTests/Core/Propagator/MaterialCollectionTests.cpp @@ -72,7 +72,7 @@ int ntests = 500; int skip = 0; bool debugMode = false; -/// the actual test nethod that runs the test can be used with several +/// the actual test method that runs the test can be used with several /// propagator types /// /// @tparam propagator_t is the actual propagator type diff --git a/Tests/UnitTests/Core/Seeding/SpacePointContainer.hpp b/Tests/UnitTests/Core/Seeding/SpacePointContainer.hpp index bd2f7678624..e061e9d25b6 100644 --- a/Tests/UnitTests/Core/Seeding/SpacePointContainer.hpp +++ b/Tests/UnitTests/Core/Seeding/SpacePointContainer.hpp @@ -27,7 +27,7 @@ class SpacePointContainer { // default constructor is of no use. It cannot be used, so why bother? SpacePointContainer() = delete; // we never get the ownership. In both read-only and read-and-write mode - // the memory backend is independetly handled. This is only interfacing it to + // the memory backend is independently handled. This is only interfacing it to // ACTS SpacePointContainer(CollectionType&& container) = delete; explicit SpacePointContainer(CollectionType& container) diff --git a/Tests/UnitTests/Core/Seeding/StrawHitGeneratorHelper.hpp b/Tests/UnitTests/Core/Seeding/StrawHitGeneratorHelper.hpp index e5cd574dbe1..52fc12119d1 100644 --- a/Tests/UnitTests/Core/Seeding/StrawHitGeneratorHelper.hpp +++ b/Tests/UnitTests/Core/Seeding/StrawHitGeneratorHelper.hpp @@ -252,7 +252,7 @@ class SpCalibrator { } /// @brief Provide the calibrated drift radius given the straw measurement and time offset /// Needed for the Fast Fitter. - /// @param ctx: Calibration context (Needed by conept interface) + /// @param ctx: Calibration context (Needed by concept interface) /// @param measurement: measurement. It should be a straw measurement /// @param timeOffSet: Offset in the time of arrival static double driftRadius(const Acts::CalibrationContext& /*ctx*/, @@ -265,7 +265,7 @@ class SpCalibrator { } /// @brief Provide the drift velocity given the straw measurent and time offset /// Needed for the Fast Fitter. - /// @param ctx: Calibration context (Needed by conept interface) + /// @param ctx: Calibration context (Needed by concept interface) /// @param measurement: measurement /// @param timeOffSet: Offset in the time of arrival static double driftVelocity(const Acts::CalibrationContext& /*ctx*/, @@ -278,7 +278,7 @@ class SpCalibrator { } /// @brief Provide the drift acceleration given the straw measurent and time offset /// Needed for the Fast Fitter. - /// @param ctx: Calibration context (Needed by conept interface) + /// @param ctx: Calibration context (Needed by concept interface) /// @param measurement: measurement /// @param timeOffSet: Offset in the time of arrival static double driftAcceleration(const Acts::CalibrationContext& /*ctx*/, @@ -290,7 +290,7 @@ class SpCalibrator { return driftAcceleration(Acts::abs(measurement.time() - timeOffSet)); } /// @brief Compute the distance of the point of closest approach of a straw measurement - /// @param ctx: Calibration context (Needed by conept interface) + /// @param ctx: Calibration context (Needed by concept interface) /// @param trackPos: Position of the track at z=0. /// @param trackDir: Direction of the track in the local frame /// @param measurement: Measurement @@ -328,7 +328,7 @@ class SpCalibrator { return copySp; } /// @brief Calibrate a set of straw measurements using the best known estimate on a straight line track - /// @param ctx: Calibration context (Needed by conept interface) + /// @param ctx: Calibration context (Needed by concept interface) /// @param trackPos: Position of the track at z=0. /// @param trackDir: Direction of the track in the local frame /// @param timeOffSet: Offset in the time of arrival (To be implemented) @@ -360,7 +360,7 @@ class SpCalibrator { } } /// @brief Provide the drift velocity given the straw measurent after being calibrated - /// @param ctx: Calibration context (Needed by conept interface) + /// @param ctx: Calibration context (Needed by concept interface) /// @param measurement: measurement static double driftVelocity(const Acts::CalibrationContext& /*ctx*/, const FitTestSpacePoint& measurement) { @@ -370,7 +370,7 @@ class SpCalibrator { return driftVelocity(driftTime(Acts::abs(measurement.driftRadius()))); } /// @brief Provide the drift acceleration given the straw measurent after being calibrated - /// @param ctx: Calibration context (Needed by conept interface) + /// @param ctx: Calibration context (Needed by concept interface) /// @param measurement: measurement static double driftAcceleration(const Acts::CalibrationContext& /*ctx*/, const FitTestSpacePoint& measurement) { diff --git a/Tests/UnitTests/Core/Utilities/FiniteStateMachineTests.cpp b/Tests/UnitTests/Core/Utilities/FiniteStateMachineTests.cpp index 6467238815b..58ebd867ee9 100644 --- a/Tests/UnitTests/Core/Utilities/FiniteStateMachineTests.cpp +++ b/Tests/UnitTests/Core/Utilities/FiniteStateMachineTests.cpp @@ -110,7 +110,7 @@ BOOST_AUTO_TEST_CASE(Transitions) { BOOST_CHECK(sm.is(states::Disconnected{})); } -BOOST_AUTO_TEST_CASE(Terminted) { +BOOST_AUTO_TEST_CASE(Terminated) { fsm sm{}; BOOST_CHECK(sm.is(states::Disconnected{})); diff --git a/Tests/UnitTests/Core/Vertexing/HoughVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/HoughVertexFinderTests.cpp index ef38f93e98a..4b07d611065 100644 --- a/Tests/UnitTests/Core/Vertexing/HoughVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/HoughVertexFinderTests.cpp @@ -155,7 +155,7 @@ BOOST_AUTO_TEST_CASE(hough_vertex_finder_full_test) { // add some smearing to the layers // layers are (9-11), (19-21), and (29-31) double r = rIndx * 10 + getRndDouble(gen, -1., 1.); - // intersection of the layer and the straigh line + // intersection of the layer and the straight line double x1 = (D * dirY + part * sgn * dirX * std::sqrt(r * r * dirR2 - D * D)) / dirR2; diff --git a/Tests/UnitTests/Core/Visualization/Interpolation3DTests.cpp b/Tests/UnitTests/Core/Visualization/Interpolation3DTests.cpp index 31be3c128c6..5abb3c359a4 100644 --- a/Tests/UnitTests/Core/Visualization/Interpolation3DTests.cpp +++ b/Tests/UnitTests/Core/Visualization/Interpolation3DTests.cpp @@ -66,7 +66,7 @@ BOOST_AUTO_TEST_CASE(SplineInterpolationArray) { // This time we keep the original hits auto trajectory = Acts::Interpolation3D::spline(inputs, 100, true); - // Check the outpu type is correct + // Check the output type is correct constexpr bool isOutput = std::is_same_v; BOOST_CHECK(isOutput); diff --git a/Tests/UnitTests/Plugins/DD4hep/DD4hepDetectorSurfaceFactoryTests.cpp b/Tests/UnitTests/Plugins/DD4hep/DD4hepDetectorSurfaceFactoryTests.cpp index 59469914656..ac64527d3ab 100644 --- a/Tests/UnitTests/Plugins/DD4hep/DD4hepDetectorSurfaceFactoryTests.cpp +++ b/Tests/UnitTests/Plugins/DD4hep/DD4hepDetectorSurfaceFactoryTests.cpp @@ -321,7 +321,7 @@ BOOST_AUTO_TEST_CASE(ConvertSensitivesextended) { auto world = lcdd->world(); - // A typical extension would be overriding the `tranform(const + // A typical extension would be overriding the `transform(const // GeometryContext&)` method in order change how the detector element is // handled in alignment, for simplicity here we show a simple extension that // overrides the thickness diff --git a/Tests/UnitTests/Plugins/DD4hep/DD4hepTestsHelper.hpp b/Tests/UnitTests/Plugins/DD4hep/DD4hepTestsHelper.hpp index 17cb0330613..2d12ba9ee10 100644 --- a/Tests/UnitTests/Plugins/DD4hep/DD4hepTestsHelper.hpp +++ b/Tests/UnitTests/Plugins/DD4hep/DD4hepTestsHelper.hpp @@ -31,7 +31,7 @@ namespace ActsTests::DD4hepTestsHelper { /// /// @tparam T the type of the extension /// @param elt the detector element -/// @return the extracted/created extennsion +/// @return the extracted/created extension template T& ensureExtension(dd4hep::DetElement& elt) { T* ext = elt.extension(false); @@ -48,7 +48,7 @@ T& ensureExtension(dd4hep::DetElement& elt) { /// /// This parses the dediced \< surface_binning \> tag /// - allowed/understood binnings are x,y,z,phi,r -/// - allowed/unserstood types are equidistant/variable (those are +/// - allowed/understood types are equidistant/variable (those are /// auto-detected) /// /// Example for e.g. bname = \"surface_binning\": diff --git a/Tests/UnitTests/Plugins/Json/EqualityHelpers.hpp b/Tests/UnitTests/Plugins/Json/EqualityHelpers.hpp index 6790ffc820e..0278458a52b 100644 --- a/Tests/UnitTests/Plugins/Json/EqualityHelpers.hpp +++ b/Tests/UnitTests/Plugins/Json/EqualityHelpers.hpp @@ -86,7 +86,7 @@ inline static bool isEqual(const Acts::BinUtility& ba, /// @param eb the second extent object /// @param tolerance the tolerance parameter /// -/// @return bool for euqal +/// @return bool for equal inline static bool isEqual(const Acts::Extent& ea, const Acts::Extent& eb, double tolerance = 0.) { bool equalConstrains = true; diff --git a/Tests/UnitTests/Plugins/Root/RootMagneticFieldIoTests.cpp b/Tests/UnitTests/Plugins/Root/RootMagneticFieldIoTests.cpp index bfdbde99996..c178d27f87d 100644 --- a/Tests/UnitTests/Plugins/Root/RootMagneticFieldIoTests.cpp +++ b/Tests/UnitTests/Plugins/Root/RootMagneticFieldIoTests.cpp @@ -65,7 +65,7 @@ BOOST_AUTO_TEST_CASE(InterpolatedBFieldMap_rz_from_root) { }, fileName, fieldName, 1_mm, 1_T, false); - // Check that the bfield is two dimenstional + // Check that the bfield is two dimensional auto nBins = rzField.getNBins(); BOOST_CHECK_EQUAL(nBins.size(), 2u); diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt new file mode 100644 index 00000000000..52de6d36d14 --- /dev/null +++ b/docs/CMakeLists.txt @@ -0,0 +1,33 @@ +include(FetchContent) +FetchContent_Declare( + doxygen-awesome-css + GIT_REPOSITORY https://github.com/jothepro/doxygen-awesome-css.git + GIT_TAG 1f3620084ff75734ed192101acf40e9dff01d848 +) +FetchContent_MakeAvailable(doxygen-awesome-css) + +# Save the location the files were cloned into +# This allows us to get the path to doxygen-awesome.css +FetchContent_GetProperties(doxygen-awesome-css SOURCE_DIR AWESOME_CSS_DIR) + +set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) +set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) +set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) +configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY) + +doxygen_add_docs( + docs + COMMENT "Generating documentation using doxygen" + CONFIG_FILE ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile +) + +# docs build is off by default +set_target_properties(docs PROPERTIES EXCLUDE_FROM_ALL TRUE) + +# docs examples are on by default +add_library(docs-examples SHARED) +target_sources( + docs-examples + PRIVATE examples/logging.cpp examples/units.cpp examples/errors.cpp +) +target_link_libraries(docs-examples PRIVATE Acts::Core) diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in new file mode 100644 index 00000000000..dfa6ea6c81a --- /dev/null +++ b/docs/Doxyfile.in @@ -0,0 +1,2356 @@ +# Doxyfile 1.8.11 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = ACTS + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = Experiment-independent tracking + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = figures/acts_logo_colored.svg + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIR@ + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = .. + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = ../Core/include \ + ../Fatras/include \ + ../Plugins/DD4hep/include \ + ../Plugins/Geant4/include \ + ../Plugins/Json/include \ + ../Plugins/Root/include \ + ../Plugins/Gnn/include + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = ipp=C++ + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = NO + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = YES + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = YES + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = YES + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = YES + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = NO + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = references.bib + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = YES + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = $(DOXYGEN_WARN_AS_ERROR) + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = index.md \ + getting_started.md \ + groups \ + pages \ + examples \ + namespaces.dox \ + experimental.md \ + ../Core/include \ + ../Fatras/include \ + ../Plugins/ActSVG/include \ + ../Plugins/Covfie/include \ + ../Plugins/DD4hep/include \ + ../Plugins/Detray/include \ + ../Plugins/EDM4hep/include \ + ../Plugins/FastJet/include \ + ../Plugins/FpeMonitoring/include \ + ../Plugins/Geant4/include \ + ../Plugins/GeoModel/include \ + ../Plugins/Hashing/include \ + ../Plugins/Json/include \ + ../Plugins/Onnx/include \ + ../Plugins/Root/include \ + ../Plugins/Gnn/include \ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, +# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = *.hpp, *.md + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = */detail/* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = Acts::*detail* \ + Acts::make_error_code \ + ActsFatras::*detail* \ + ActsPlugins::*detail* \ + dfe \ + nlohmann \ + std \ + dd4hep \ + edm4hep \ + CLHEP \ + HepGeom \ + nvinfer1 \ + Ort \ + podio \ + ActsTests \ + ActsPodioEdm \ + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = . + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = figures + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = "" + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = index.md + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = NO + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +#CLANG_ASSISTED_PARSING = + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +#CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = NO + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = header.html + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = @AWESOME_CSS_DIR@/doxygen-awesome.css \ + @AWESOME_CSS_DIR@/doxygen-awesome-sidebar-only.css \ + @AWESOME_CSS_DIR@/doxygen-awesome-sidebar-only-darkmode-toggle.css + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = @AWESOME_CSS_DIR@/doxygen-awesome-darkmode-toggle.js \ + @AWESOME_CSS_DIR@/doxygen-awesome-paragraph-link.js \ + @AWESOME_CSS_DIR@/doxygen-awesome-interactive-toc.js + + +HTML_COLORSTYLE = LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = YES + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /