Back to home page

EIC code displayed by LXR

 
 

    


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

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/optical/CerenkovParams.hh
0007 //---------------------------------------------------------------------------//
0008 #pragma once
0009 
0010 #include "corecel/Types.hh"
0011 #include "corecel/data/CollectionMirror.hh"
0012 #include "corecel/data/ParamsDataInterface.hh"
0013 
0014 #include "CerenkovData.hh"
0015 
0016 namespace celeritas
0017 {
0018 namespace optical
0019 {
0020 class MaterialParams;
0021 
0022 //---------------------------------------------------------------------------//
0023 /*!
0024  * Build and manage Cerenkov data.
0025  */
0026 class CerenkovParams final : public ParamsDataInterface<CerenkovData>
0027 {
0028   public:
0029     //!@{
0030     //! \name Type aliases
0031     using SPConstMaterial = std::shared_ptr<MaterialParams const>;
0032     //!@}
0033 
0034   public:
0035     // Construct with optical property data
0036     explicit CerenkovParams(SPConstMaterial material);
0037 
0038     //! Access physics material on the host
0039     HostRef const& host_ref() const final { return data_.host_ref(); }
0040 
0041     //! Access physics material on the device
0042     DeviceRef const& device_ref() const final { return data_.device_ref(); }
0043 
0044   private:
0045     CollectionMirror<CerenkovData> data_;
0046 };
0047 
0048 //---------------------------------------------------------------------------//
0049 }  // namespace optical
0050 }  // namespace celeritas