Connection between PROPOSAL and hadronic interaction models
There are two types of hadronic interactions that can occur in electromagnetic showers:
- Photoproduction by photons. This should be the dominant interaction for photons above 1EeV
As far as I know, this is not implemented at the moment (at least it is not implemented in PROPOSAL). It would not be a problem to implement the corresponding crosssection into PROPOSAL.
- Photonuclear interactions of leptons (electrons, muons, tau) with atomic nuclei. They are subdominant for electrons and positrons but relevant for muons
This is implemented in PROPOSAL. However, PROPOSAL is unable to put explicit secondary particles on the CORSIKA stack from these interactions. Actually, PROPOSAL puts no particles at all onto the stack in case of photonuclear interactions, so the initial lepton just vanishes at the moment.
Our idea would be to put something onto the stack (for example a virtual particle) that can be used by a hadronic interaction model to produce the corresponding secondary particles.
For this, PROPOSAL can provide information about the energy that went into the photonuclear interaction (v
) as well as the involved nucleon target
(for example A
and Z
via GetAtomicNum()
and GetNucCharge()
).
This approach could look something like this:
view.addSecondary(std::make_tuple(Code::Nucleus, // add appropriate `Code` here
v * projectile.getEnergy(),
p_virt,
projectile.getPosition(),
projectile.getTime(),
target.GetAtomicNum(),
target.GetNucCharge()));
I created a branch photonuclear_interaction_using_virtual_particles
where I just these lines into the doInteraction
routine of corsika::proposal::Interaction
.
My questions are:
- How should the particle that I put on the stack look like? I doubt that
Code::Nucleus
is a correct physical representation of this interaction. I am also not sure whether I correctly understood the last two parameters of thestd::tuple
that we put on the stack. - Does PROPOSAL need to provide additional information about this interaction? If so, what are these, and how can we pass the information to the stack?
- Is this idea of putting some (virtual) particle on the stack even the correct approach for this problem? As an alternative, PROPOSAL could also call some other routine instead of putting a particle on the stack.