Skip to content

feat: add DIRC to Acts geometry for truth hits and projection surfaces #900

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

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

wdconinc
Copy link
Contributor

Briefly, what does this PR introduce?

The DIRC group needs track projections to the DIRC, a way to assess the quality of these track projections, and truth information to generate lookup tables.

This PR adds Acts support to the DIRC. This will ensure consistency between truth and reconstruction surfaces, and the material budgets around the DIRC (inner/outer). The sim hits on the DIRC will be generated for non-optical photons only, and will not be used in the track reconstruction (naturally).

What kind of change does this PR introduce?

  • Bug fix (issue #__)
  • New feature (issue: DIRC needs the track position at the quartz bars)
  • Documentation update
  • Other: __

Please check if this PR fulfills the following:

  • Tests for the changes have been added
  • Documentation has been added / updated
  • Changes have been communicated to collaborators

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

No.

Does this PR change default behavior?

No.

@github-actions github-actions bot added topic: barrel Mid-rapidity detectors topic: PID Particle identification labels Jun 27, 2025
@wdconinc wdconinc marked this pull request as draft June 27, 2025 23:30
@mposik1983
Copy link
Contributor

I was taking a look over this and ran into a couple issues.

  1. The current DIRC_geo code puts the sensitive surface onto the MCP box (https://github.com/eic/epic/blob/main/src/DIRC_geo.cpp#L227C1-L227C93), which is at a fixed z position. For the angular resolution evaluation we need to know where the particle entered the DIRC bar. I made the DIRC bars sensitive (I had to had to set MCP box to be not sensitive to keep the code from crashing) which seems to give the needed positions. Below you can find the z and x vs. y positions for the DIRC (blue) and outer mpgd barrel (red) for the case where the MCP box is the sensitive surface and when the DIRC bars are set to sensitive:
Screenshot 2025-07-21 at 12 58 46 PM Screenshot 2025-07-21 at 1 00 19 PM

I assume the dirc group needs the MCP box to remain sensitive, so to also make the bars sensitive, I guess we need to assign it its own readout tag?

  1. To calculate the angular resolution residual we need the true momentum vector of the particle at the dirc surface. However, it seems that using the optical tracking action that is assigned to the cherenkov detectors doesn't give the incident particles momentum. Here are two examples produced from p = 6GeV pi- particles using the particle gun with the DIRC bars set to be sensitive. To turn off the optical tracking, I commented out the dirc related optical tracking lines in npsim. I am not sure the best way to handle this.
Screenshot 2025-07-21 at 1 15 51 PM

@wdconinc
Copy link
Contributor Author

I was taking a look over this and ran into a couple issues.

  1. The current DIRC_geo code puts the sensitive surface onto the MCP box (https://github.com/eic/epic/blob/main/src/DIRC_geo.cpp#L227C1-L227C93), which is at a fixed z position. For the angular resolution evaluation we need to know where the particle entered the DIRC bar. I made the DIRC bars sensitive (I had to had to set MCP box to be not sensitive to keep the code from crashing) which seems to give the needed positions. Below you can find the z and x vs. y positions for the DIRC (blue) and outer mpgd barrel (red) for the case where the MCP box is the sensitive surface and when the DIRC bars are set to sensitive:

I assume the dirc group needs the MCP box to remain sensitive, so to also make the bars sensitive, I guess we need to assign it its own readout tag?

Correct, we need to have two separate sensitive detectors, with separate readout collections, created by the single detector plugin. The default xml parsing has just one (and I propose we keep that pointing to the MCP plane. The following code block in DD4hep should be able to be adapted. https://github.com/AIDASoft/DD4hep/blob/25130845bc9087d5cd60528024f7020029f31748/DDCore/src/plugins/Compact2Objects.cpp#L1423-L1436

  1. To calculate the angular resolution residual we need the true momentum vector of the particle at the dirc surface. However, it seems that using the optical tracking action that is assigned to the cherenkov detectors doesn't give the incident particles momentum. Here are two examples produced from p = 6GeV pi- particles using the particle gun with the DIRC bars set to be sensitive. To turn off the optical tracking, I commented out the dirc related optical tracking lines in npsim. I am not sure the best way to handle this.

We want both to be active at the same time: optical photon tracking with the MCP plane sensitive to optical photons, and storing charged particle (non-optical) particles at the DIRC plane.

What we absolutely want to get away from is defining the geometry once again (independently) in the reconstruction. That's not sustainable or maintainable. That's why this needs to go in the geometry description, tied to the actual geometry.

@ShujieL
Copy link
Contributor

ShujieL commented Jul 24, 2025

can we attach an ACTS measurement surface to the geometry like this ?
As long as we don't put this in the hit collection for CKF it should not interfere with the tracking performance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: barrel Mid-rapidity detectors topic: PID Particle identification
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants