LDMX-Software / SimCore

Integration of Geant4 simulation framework into a more generalized event processing framework.
2 stars 0 forks source link

Update LHE reader to enable placing A' decay vertex at a specific position #60

Closed omar-moreno closed 3 years ago

omar-moreno commented 3 years ago

This is required when looking at long lived visibly decaying dark photons.

tomeichlersmith commented 3 years ago

This is already enabled using a specific format that we made up for the LHEPrimaryGenerator.

https://github.com/LDMX-Software/SimCore/blob/e5e154cb2b3ed91bb36189a87392db01e64e8ebf/src/SimCore/LHEReader.cxx#L44-L46

i.e. You can insert the vertex that you want into the LHE file for each event separately.

<event>
  ...normal LHE format for particles and their momenta...
#vertex x y z [t]
</event>

where the time t is optional. This would have to be done manually using e.g. a python script.

Without any modification to ldmx-sw, a person could use two primary generators and a time-offset between them in order to have both a dark brem vertex and a A' decay vertex anywhere you want in our detector volumes. If this sounds interesting, reach out because we have a script generating LHE files for cosmic muons that is a good place to start. Of course, the downside to this method is that there cannot be any action upstream of the dark brem vertex.

Now if you are talking about enabling the A' generated by the dark brem process to decay later in the event, that would require more of an effort. The best solution would be to write another custom process APrimeDecay that would be attached to the A'. We could (similar to the dark brem process) read in an LHE file of A' decays to use for reference if there isn't an analytic method for randomly determing the outgoing particles and their kinematics.

tomeichlersmith commented 3 years ago

General idea we reached after discussing on slack.

Implementing a custom primary generator which uses the current LHE reader and does the following steps.

  1. Retrieve the recoil electron and A' from a dark brem vertex in the LHE file
  2. Randomly determine the liftime of the A' -> use a randomly chosen dark brem vertex, this lifetime, and the A' momentum to get the A' decay vertex
  3. Randomly determine the decay products and their kinematics
  4. Put the recoil electron, the A', and the A''s children (at a time delay) into the simulation, all as primaries

Since the A' won't interact with anything else, we can safely put its decay products in as "primaries". We may need to do some fiddling with the A''s track settings using a filter in order to avoid any shenanigans or we could avoid adding the A' at all and only include the visible particles.

omar-moreno commented 3 years ago

@jmlazaro25 is using the two LHE solution so I'm closing this issue.