Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-15 08:54:44

0001 //------------------------------- -*- C++ -*- -------------------------------//
0002 // Copyright Celeritas contributors: see top-level COPYRIGHT file for details
0003 // SPDX-License-Identifier: (Apache-2.0 OR MIT)
0004 //---------------------------------------------------------------------------//
0005 //! \file celeritas/inp/Tracking.hh
0006 //---------------------------------------------------------------------------//
0007 #pragma once
0008 
0009 #include <limits>
0010 
0011 #include "corecel/Types.hh"
0012 namespace celeritas
0013 {
0014 namespace inp
0015 {
0016 //---------------------------------------------------------------------------//
0017 /*!
0018  * Hard cutoffs for counters.
0019  */
0020 struct TrackingLimits
0021 {
0022     //! Don't limit the number of steps
0023     static inline constexpr size_type unlimited
0024         = std::numeric_limits<size_type>::max();
0025 
0026     //! Steps per track before killing it
0027     size_type steps{unlimited};
0028     //! Step iterations before aborting a run
0029     size_type step_iters{unlimited};
0030     //! Integration substeps during field propagation before ending the step
0031     size_type field_substeps{100};
0032 
0033     //! Stop electron/positron below this energy
0034     // TODO: Energy electron_energy = Energy{0.001};
0035 };
0036 
0037 //---------------------------------------------------------------------------//
0038 /*!
0039  * Specify non-physical parameters which can affect the physics.
0040  */
0041 struct Tracking
0042 {
0043     //! Hard-coded cutoffs before giving up
0044     TrackingLimits limits;
0045 
0046     //! Hardcoded maximum step for debugging charged particles (none if zero)
0047     real_type force_step_limit{};
0048 };
0049 
0050 //---------------------------------------------------------------------------//
0051 }  // namespace inp
0052 }  // namespace celeritas