Back to home page

EIC code displayed by LXR

 
 

    


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

0001 //----------------------------------*-C++-*----------------------------------//
0002 // Copyright 2021-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/em/data/BetheHeitlerData.hh
0007 //---------------------------------------------------------------------------//
0008 #pragma once
0009 
0010 #include "corecel/Macros.hh"
0011 #include "corecel/Types.hh"
0012 #include "celeritas/Quantities.hh"
0013 #include "celeritas/Types.hh"
0014 
0015 namespace celeritas
0016 {
0017 //---------------------------------------------------------------------------//
0018 /*!
0019  * Particle IDs used in Bethe-Heitler.
0020  */
0021 struct BetheHeitlerIds
0022 {
0023     //! ID of an electron
0024     ParticleId electron;
0025     //! ID of an positron
0026     ParticleId positron;
0027     //! ID of a gamma
0028     ParticleId gamma;
0029 
0030     //! Check whether the IDs are assigned
0031     explicit CELER_FUNCTION operator bool() const
0032     {
0033         return electron && positron && gamma;
0034     }
0035 };
0036 
0037 //---------------------------------------------------------------------------//
0038 /*!
0039  * Device data for creating a BetheHeitlerInteractor.
0040  */
0041 struct BetheHeitlerData
0042 {
0043     //! Model/particle IDs
0044     BetheHeitlerIds ids;
0045     //! Electron mass [MevMass]
0046     units::MevMass electron_mass;
0047     //! LPM flag
0048     bool enable_lpm{false};
0049 
0050     //! Include a dielectric suppression effect in LPM functions
0051     static CELER_CONSTEXPR_FUNCTION bool dielectric_suppression()
0052     {
0053         return false;
0054     }
0055 
0056     //! Check whether the data is assigned
0057     explicit CELER_FUNCTION operator bool() const
0058     {
0059         return ids && electron_mass > zero_quantity();
0060     }
0061 };
0062 
0063 using BetheHeitlerHostRef = BetheHeitlerData;
0064 using BetheHeitlerDeviceRef = BetheHeitlerData;
0065 
0066 //---------------------------------------------------------------------------//
0067 }  // namespace celeritas