|
Celeritas 0.7.0-dev.170+develop.df22d2a88
|
Propagate a charged particle in a field. More...
#include <FieldPropagator.hh>
Public Types | |
Type aliases | |
| using | result_type = Propagation |
Public Member Functions | |
| CELER_FUNCTION | FieldPropagator (SubstepperT &&advance, ParticleTrackView const &particle, GTV &&geo) |
| Construct with shared field parameters and the field driver. | |
| CELER_FUNCTION result_type | operator() () |
| Propagate a charged particle until it hits a boundary. | |
| CELER_FUNCTION result_type | operator() (real_type dist) |
| Propagate a charged particle in a field. | |
| CELER_FUNCTION short int | max_substeps () const |
| Limit on substeps. | |
| CELER_FUNCTION real_type | delta_intersection () const |
| Distance close enough to a boundary to mark as being on the boundary. | |
| CELER_FUNCTION real_type | bump_distance () const |
| Distance to bump or to consider a "zero" movement. | |
| CELER_FUNCTION real_type | minimum_substep () const |
| Distance to bump or to consider a "zero" movement. | |
Static Public Member Functions | |
| static CELER_CONSTEXPR_FUNCTION bool | tracks_can_loop () |
| Whether it's possible to have tracks that are looping. | |
Propagate a charged particle in a field.
For a given initial state (position, momentum), it propagates a charged particle along a curved trajectory up to an interaction length proposed by a chosen physics process for the step, possibly integrating sub-steps by an adaptive step control with a required accuracy of tracking in a field. It updates the final state (position, momentum, boundary) along with the step actually taken. If the final position is outside the current volume, it returns a geometry limited step and the state at the intersection between the curve trajectory and the first volume boundary using an iterative step control method within a tolerance error imposed on the closest distance between two positions by the field stepper and the linear projection to the volume boundary.
|
inline |
Distance close enough to a boundary to mark as being on the boundary.
TODO: change delta intersection from property in FieldDriverOptions to another FieldPropagatorOptions
|
inline |
Limit on substeps.
Maximum number of substeps.
|
inline |
Propagate a charged particle in a field.
It utilises a field driver (based on an adaptive step control to limit the length traveled based on the magnetic field behavior and geometric tolerances) to track a charged particle along a curved trajectory for a given step length within a required accuracy or intersects with a new volume (geometry limited step).
The position of the internal OdeState state_ should be consistent with the geometry geo_'s position, but the geometry's direction will be a series of "trial" directions that are the chords between the start and end points of a curved substep through the field. At the end of the propagation step, the geometry state's direction is updated based on the actual value of the calculated momentum.
Caveats: