Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-10-26 09:34:37

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 corecel/random/distribution/DistributionInserter.hh
0006 //---------------------------------------------------------------------------//
0007 #pragma once
0008 
0009 #include "corecel/Types.hh"
0010 #include "corecel/cont/Array.hh"
0011 #include "corecel/inp/Distributions.hh"
0012 #include "corecel/random/data/DistributionData.hh"
0013 
0014 namespace celeritas
0015 {
0016 //---------------------------------------------------------------------------//
0017 /*!
0018  * Help construct data for sampling from user-specified distributions.
0019  */
0020 class DistributionInserter
0021 {
0022   public:
0023     // Construct with a reference to mutable host data
0024     explicit DistributionInserter(HostVal<DistributionParamsData>&);
0025 
0026     // Add 1D distribution data
0027     OnedDistributionId operator()(inp::DeltaDistribution<double> const&);
0028     OnedDistributionId operator()(inp::NormalDistribution const&);
0029     OnedDistributionId operator()(
0030         inp::TruncatedDistribution<inp::NormalDistribution> const&);
0031 
0032     // Add 3D distribution data
0033     ThreedDistributionId operator()(
0034         inp::DeltaDistribution<Array<double, 3>> const&);
0035     ThreedDistributionId operator()(inp::IsotropicDistribution const&);
0036     ThreedDistributionId operator()(inp::UniformBoxDistribution const&);
0037 
0038   private:
0039     HostVal<DistributionParamsData>& data_;
0040 
0041     OnedDistributionId operator()(OnedDistributionType type, size_type idx);
0042     ThreedDistributionId operator()(ThreedDistributionType type, size_type idx);
0043 };
0044 
0045 //---------------------------------------------------------------------------//
0046 }  // namespace celeritas