So far we have DecayProcess as template and process::sibyll::Decay, which implements GetLifetime and DoDecay.
There is nothing Sibyll specific in GetLifetime and it would be silly to implement this for every decay process. Since it only depends on the particle and kinematics maybe it should move to the stack, i.e. ParticleBase or something.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
(first version of this reply was misleading since I did not properly read your Issue!)
Indeed, you are right! For GetLifetime it is sufficient to have corsika::particle::GetLifetime(Code), which we already have.
I cannot imagine a useful situation, where this is not sufficient. If we want to decay particles e.g. with PYTHIA the branching ratios are anyhow applied internally to PYTHIA. It would probably be messy to change that. But even when we do, we have to work with branching ratios here and not with lifetimes.
So GetLifetime() should be removed from DecayProcess.
Depending on #162 (closed) it may be necessary to keep GetLiftime part of the Decay processes. At the moment we would have to in order to select a specific decay process.
But the lifetime itself is not the right property for this purpose. We should revert to branching ratios for this as natural parameter. The situation is a bit different compared to "interactions", for decays I imagine a decay process earlier in the sequence may decay a particular particle with a particular process, further decay processes more downstream should avoid to provide the same decay channel. This will be a bit difficult (I think) since if we decay K->mu nu in a custom model, but maybe want to have also rare processes in pythia, we have to switch off K->mu nu in pythia.
I think this is the only point we have to consider and think about.
It seems to me the case you have in mind is using different Processes in the ProcessSequence for different decay modes of the same particle. Selecting between those you need the branching ratio, true. I was thinking about the earlier step of deciding between decay and interaction.
Maybe I am thoroughly confusing things but I don't think we can implement the individual decay channels as individual processes with the partial lifetimes as selection criteria.
For the separation between decay and interaction we only need the overall particle lifetime, the decay modes are not relevant. So it is simple: in the "top" of corsika::Step we only need "c*tau" and only in SelectDecay we have to look into the branching ratios. Right?