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/Problem.hh
0006 //---------------------------------------------------------------------------//
0007 #pragma once
0008 
0009 #include "Control.hh"
0010 #include "Diagnostics.hh"
0011 #include "Field.hh"
0012 #include "Model.hh"
0013 #include "Physics.hh"
0014 #include "Scoring.hh"
0015 #include "Tracking.hh"
0016 
0017 namespace celeritas
0018 {
0019 //---------------------------------------------------------------------------//
0020 /*!
0021  * Configure Celeritas input.
0022  *
0023  * Note that many of these input structs match up with the runtime classes that
0024  * they help construct. Future restructuring of the code may result in more
0025  * direct correspondence.
0026  */
0027 namespace inp
0028 {
0029 //---------------------------------------------------------------------------//
0030 /*!
0031  * Celeritas problem input definition.
0032  *
0033  * This should specify all the information necessary to track particles
0034  * within Celeritas for offloading or standalone execution. (It does \em not
0035  * contain system configuration such as GPU, or event/offload information.)
0036  *
0037  * Multiple problems can be run independently across the same program
0038  * execution.
0039  *
0040  * Eventually this class and its daughters will subsume all the data in
0041  * \c celeritas/io/ and all the input options from Models, Processes,
0042  * Params, and other classes that are not implementation details.
0043  *
0044  * After loading, the struct will be able to be serialized to ROOT or JSON or
0045  * some other struct for reproducibility.
0046  */
0047 struct Problem
0048 {
0049     //! Geometry, material, and region definitions
0050     Model model;
0051     //! Physics models and options
0052     Physics physics;
0053     //! Set up the magnetic field
0054     Field field;
0055     //! Manage scoring of hits and other quantities
0056     Scoring scoring;
0057     //! Tuning options that affect the physics
0058     Tracking tracking;
0059 
0060     //! Low-level performance tuning and simulation control options
0061     Control control;
0062     //! Monte Carlo tracking, performance, and debugging diagnostics
0063     Diagnostics diagnostics;
0064 };
0065 
0066 //---------------------------------------------------------------------------//
0067 }  // namespace inp
0068 }  // namespace celeritas