Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-07 10:20:32

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 larceler/detail/PDFullSimCelerConfig.hh
0006 //---------------------------------------------------------------------------//
0007 #pragma once
0008 
0009 #include <string>
0010 #include <canvas/Utilities/InputTag.h>
0011 #include <fhiclcpp/types/Atom.h>
0012 
0013 #include "corecel/Types.hh"
0014 
0015 namespace celeritas
0016 {
0017 namespace detail
0018 {
0019 //---------------------------------------------------------------------------//
0020 // Top-level config for constructing a PDFullSimCeler
0021 struct PDFullSimCelerConfig
0022 {
0023     fhicl::Atom<art::InputTag> SimulationLabel{
0024         fhicl::Name{"SimulationLabel"},
0025         fhicl::Comment{R"(SimEnergyDeposit event tag)"}};
0026 
0027     // GPU options
0028     fhicl::Atom<bool> EnableDevice{fhicl::Name{"EnableDevice"},
0029                                    fhicl::Comment{R"(Activate the GPU)"},
0030                                    false};
0031 
0032     fhicl::Atom<size_type> DeviceStackSize{
0033         fhicl::Name{"DeviceStackSize"},
0034         fhicl::Comment{R"(Per-thread CUDA stack size [B] (ignored if 0))"},
0035         0};
0036 
0037     fhicl::Atom<size_type> DeviceHeapSize{
0038         fhicl::Name{"DeviceHeapSize"},
0039         fhicl::Comment{R"(Global dynamic CUDA heap size [B] (ignored if 0))"},
0040         0};
0041 
0042     // Optical buffer-size capacities
0043     fhicl::Atom<size_type> OpticalCapacityPrimaries{
0044         fhicl::Name{"OpticalCapacityPrimaries"},
0045         fhicl::Comment{R"(Max primaries buffered before stepping)"}};
0046 
0047     fhicl::Atom<size_type> OpticalCapacityTracks{
0048         fhicl::Name{"OpticalCapacityTracks"},
0049         fhicl::Comment{R"(Max track slots stepped simultaneously)"}};
0050 
0051     fhicl::Atom<size_type> OpticalCapacityGenerators{
0052         fhicl::Name{"OpticalCapacityGenerators"},
0053         fhicl::Comment{R"(Max queued photon-generation steps)"}};
0054 
0055     // Optical tracking limits
0056     fhicl::Atom<size_type> OpticalLimitSteps{
0057         fhicl::Name{"OpticalLimitSteps"},
0058         fhicl::Comment{R"(Steps per track before killing (0 for unlimited))"},
0059         0};
0060 
0061     fhicl::Atom<size_type> OpticalLimitStepIters{
0062         fhicl::Name{"OpticalLimitStepIters"},
0063         fhicl::Comment{
0064             R"(Iterations before aborting stepping loop (0 for unlimited))"},
0065         0};
0066 
0067     fhicl::Atom<std::string> OutputFile{
0068         fhicl::Name{"OutputFile"},
0069         fhicl::Comment{R"(Celeritas output filename)"}};
0070 
0071     fhicl::Atom<bool> ActionTimes{
0072         fhicl::Name{"ActionTimes"},
0073         fhicl::Comment{R"(Accumulate elapsed time in actions)"},
0074         false};
0075 
0076     fhicl::Atom<bool> StepTimes{
0077         fhicl::Name{"StepTimes"},
0078         fhicl::Comment{R"(Record elapsed time per step)"},
0079         false};
0080 
0081     fhicl::Atom<unsigned int> Seed{
0082         fhicl::Name{"Seed"}, fhicl::Comment{R"(RNG seed)"}, 12345};
0083 };
0084 
0085 //---------------------------------------------------------------------------//
0086 }  // namespace detail
0087 }  // namespace celeritas