Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc(dRICH): PID algorithms and collections #708

Merged
merged 2 commits into from
Jun 6, 2023
Merged

doc(dRICH): PID algorithms and collections #708

merged 2 commits into from
Jun 6, 2023

Conversation

c-dilks
Copy link
Member

@c-dilks c-dilks commented Jun 5, 2023

Briefly, what does this PR introduce?

Documentation for the dRICH PID. This is a bit ahead of main, but is up-to-date for our development branch irt-algo; therefore, part of it represents plans for main.

What kind of change does this PR introduce?

  • Bug fix (issue #__)
  • New feature (issue #__)
  • Documentation update
  • Other: __

Please check if this PR fulfills the following:

Does this PR introduce breaking changes? What changes might users need to make to their code?

no

Does this PR change default behavior?

no

@c-dilks c-dilks marked this pull request as ready for review June 5, 2023 21:48
@c-dilks c-dilks requested review from veprbl and wdconinc June 5, 2023 21:49
@c-dilks c-dilks changed the title doc: dRICH PID doc(dRICH): PID algorithms and collections Jun 5, 2023
Copy link
Contributor

@wdconinc wdconinc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hard to really see the flowcharts on my phone but approving (and encouraging) the addition of documentation!

@wdconinc wdconinc merged commit 05fb86c into main Jun 6, 2023
@wdconinc wdconinc deleted the doc-drich branch June 6, 2023 00:43
@c-dilks c-dilks mentioned this pull request Jun 6, 2023
30 tasks
@c-dilks c-dilks self-assigned this Jun 6, 2023
veprbl pushed a commit that referenced this pull request Jun 29, 2023
Initial connection of [`irt`](https://github.com/eic/irt) to `EICrecon`
algorithms, via new algorithm `IrtCherenkovParticleID` and corresponding
factory `IrtCherenkovParticleID_factory`.

#### Notes
- not production ready, therefore not enabled by default in
`JEventProcessorPODIO`, but we have been using this for routine current
dRICH performance studies
- difficult to unit test `IrtCherenkovParticleID`, because of the
complexity of its inputs; prefer to defer testing to [DRICH
`reconstruction_benchmarks`](https://eicweb.phy.anl.gov/EIC/benchmarks/reconstruction_benchmarks/-/merge_requests/293)
- `valgrind` leak checks: #709 (see below for comments)
- documentation: #708 

#### Caveats
- there are several known issues, which should be resolved in separate
PRs
  - #689
  - #690
  - #691
  - #692
  - #693
  - #705
- `ROOT` dependence is needed, since `irt` heavily relies on objects
such as `TVector3`
- converters from `EDM4{hep,eic}` vectors to `ROOT` vectors are included
in common header `Tools.h` (other downstream PID algorithms will use
this header too)
- where possible, smart pointers are used in `IrtCherenkovParticleID`,
but sometimes we had to unfortunately fall back to raw pointers, for
compatibility with the `irt` repository, since:
  - `irt` does not use any smart pointers
- `irt` classes typically include custom destructors; using smart
pointers here in `EICrecon` runs the risk of 'double free' violations
- any usage of the (banned) operator `new` includes a comment indicating
where the allocated object will be destroyed (most likely within an
`irt` class destructor)
- `irt` objects can be streamed to ROOT files, and closing those ROOT
files may `delete` the corresponding object(s); using smart pointers in
this scenario can also cause 'double free' violations
- we can try to fix this issue in separate PRs, but given the general
fragility of streaming objects to ROOT files, I'm afraid this will not
be straightforward
- not surprisingly, #709 identified a few leaks in the `irt` repository
itself
- [deferring fixing them until `irt`
v2.0](eic/irt#36), where we expect a [large
refactor](eic/irt#34)
- fixed a few leaks from local geometry service `richgeo`; again
unfortunately `irt` does not cooperate with smart pointers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants