Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-10-31 08:58:50

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/phys/PhysicsParamsOutput.hh
0006 //---------------------------------------------------------------------------//
0007 #pragma once
0008 #include <memory>
0009 
0010 #include "corecel/io/OutputInterface.hh"
0011 
0012 namespace celeritas
0013 {
0014 class PhysicsParams;
0015 //---------------------------------------------------------------------------//
0016 /*!
0017  * Save detailed debugging information about the physics in use.
0018  */
0019 class PhysicsParamsOutput final : public OutputInterface
0020 {
0021   public:
0022     //!@{
0023     //! \name Type aliases
0024     using SPConstPhysicsParams = std::shared_ptr<PhysicsParams const>;
0025     //!@}
0026 
0027   public:
0028     // Construct from shared physics data
0029     explicit PhysicsParamsOutput(SPConstPhysicsParams physics);
0030 
0031     //! Category of data to write
0032     Category category() const final { return Category::internal; }
0033 
0034     //! Name of the entry inside the category.
0035     std::string_view label() const final { return "physics"; }
0036 
0037     // Write output to the given JSON object
0038     void output(JsonPimpl*) const final;
0039 
0040   private:
0041     SPConstPhysicsParams physics_;
0042 };
0043 
0044 //---------------------------------------------------------------------------//
0045 }  // namespace celeritas