Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-22 10:31:20

0001 //----------------------------------*-C++-*----------------------------------//
0002 // Copyright 2024 UT-Battelle, LLC, and other Celeritas developers.
0003 // See the top-level COPYRIGHT file for details.
0004 // SPDX-License-Identifier: (Apache-2.0 OR MIT)
0005 //---------------------------------------------------------------------------//
0006 //! \file celeritas/ext/detail/GeantOpticalModelImporter.hh
0007 //---------------------------------------------------------------------------//
0008 #pragma once
0009 
0010 #include <optional>
0011 #include <string>
0012 #include <vector>
0013 
0014 #include "corecel/OpaqueId.hh"
0015 #include "celeritas/Types.hh"
0016 #include "celeritas/io/ImportOpticalModel.hh"
0017 
0018 class G4VProcess;
0019 class G4MaterialPropertiesTable;
0020 
0021 namespace celeritas
0022 {
0023 struct ImportPhysMaterial;
0024 
0025 namespace detail
0026 {
0027 //---------------------------------------------------------------------------//
0028 /*!
0029  * Imports optical model MFP tables from Geant4 material property tables.
0030  */
0031 class GeantOpticalModelImporter
0032 {
0033   public:
0034     //!@{
0035     //! \name Type aliases
0036     using IMC = optical::ImportModelClass;
0037     //!@}
0038 
0039   public:
0040     // Construct model importer with given optical material mapping
0041     GeantOpticalModelImporter(std::vector<ImportPhysMaterial> const& materials);
0042 
0043     // Import model MFP table for given model class
0044     ImportOpticalModel operator()(IMC imc) const;
0045 
0046   private:
0047     // Import MFP table for the given property name
0048     std::vector<ImportPhysicsVector>
0049     import_mfps(std::string const& mfp_property_name) const;
0050 
0051     std::vector<G4MaterialPropertiesTable const*> opt_to_mat_;
0052 };
0053 
0054 //---------------------------------------------------------------------------//
0055 }  // namespace detail
0056 }  // namespace celeritas