... | ... | @@ -50,8 +50,14 @@ Notes from HD: |
|
|
- HD to DB: You can have such a wrapper, but then the underlying processes must have a common interface that the wrapper can use. Which brings me back to my other point, that InteractionProcess and DecayProcess and possibly a future CherenkovProcess should inherit from a common base process.
|
|
|
|
|
|
- Interactions and Decays are very similar and called by the ProcessSequence in essentially the same way. This common aspect of the two classes should be factored into a base class. InteractionProcess and DecayProcess remain distinct, but have a common ancestor, perhaps called InteractionOrDecayProcess.
|
|
|
- RU: if we want a common anchestor, it probably should be ```DiscreteProcess```. However, what exactly should it do? The decay has "GetLifetime(projectile)" "DoDecay(projectile)" while the interaction has "GetInteractionLength(projectile)", "DoInteraction(projectile, target)". Note: the "target" in the last call is still missing but should be added for physics reasons.
|
|
|
- RU: if we want a common anchestor, it probably should be ```DiscreteProcess```. However, what exactly should it do? The decay has "GetLifetime(projectile)" "DoDecay(projectile)" while the interaction has "GetInteractionLength(projectile)", "DoInteraction(projectile, target)". Note: the "target" in the last call is still missing but should be added for physics reasons.
|
|
|
|
|
|
- HD to RU: Ok, `DiscreteProcess` then. The common ancestor would have `GetStepLength` and `MakeSecondaries` or something similar. That `GetStepLength` means something different for an InteractionProcess and a DecayProcess can be explained in the comments/docs.
|
|
|
|
|
|
- CherenkovProcess also shares functionality with DecayProcess and InteractionProcess. This could also possibility factored into a common base class (but I don't know enough about Cherenkov production to see whether this makes sense). Regarding thinning, there should be a gain a ThinnedCherenkovProcess which inherits from the common CherenkovProcess. The thinning algorithm for Cherenkov photons is likely different from the one applied to interactions, so these two should not be forced together.
|
|
|
|
|
|
- RU: Cherenkov is a very good candidate for ```ContinousProcess```. In fact, Cherenkov radiation IS part of the continuous energy loss calculations a la Bethe-Bloch. Radio emmission, Cherenkov, dEdX are all ```ContinuousProcess```es. At least currently Cherenkov photons (as well as radio photons/waves) are not put on the particle stack in C7, they are directly processes and written to file. But is is up to discussion to eventually change this in C8 and also pipe it through the stack (?). This might be highly inefficient since we would all the time create a large number of very short-lived object dynamically on the stack...
|
|
|
- RU: Cherenkov is a very good candidate for ```ContinousProcess```. In fact, Cherenkov radiation IS part of the continuous energy loss calculations a la Bethe-Bloch. Radio emmission, Cherenkov, dEdX are all ```ContinuousProcess```es. At least currently Cherenkov photons (as well as radio photons/waves) are not put on the particle stack in C7, they are directly processes and written to file. But is is up to discussion to eventually change this in C8 and also pipe it through the stack (?). This might be highly inefficient since we would all the time create a large number of very short-lived object dynamically on the stack...
|
|
|
|
|
|
- HD to RU: The Stack should hold on to allocated memory and not give it back, to minimize the very costly allocations and deallocations. Ideally, the Stack would be placed on the stack, by implementing it based on std::array or similar. The particles placed on the Stack should be trivially constructible types, so that copying a particle is a matter of copying bits around. Under these conditions, using the Stack could be fast enough. If the photons have to be stored somewhere anyway, they should be put on the stack.
|
|
|
|
|
|
- DB: Cherenkov photons are in physics terms a ```ContinousProcess``` even if they there contribution is rather small. For most implementations the exact track must be known (similar to Radio). Cherenkov Photons do require some sort of storage/stack... (see [Requirement DynamicStack](Requirement-list-for-the-Dynamic-Stack)) |
|
|
\ No newline at end of file |