Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-07 10:11:32

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/g4/detail/GeantBremsstrahlungProcess.hh
0006 //---------------------------------------------------------------------------//
0007 #pragma once
0008 
0009 #include <iosfwd>
0010 #include <G4VEnergyLossProcess.hh>
0011 
0012 #include "celeritas/ext/GeantPhysicsOptions.hh"
0013 
0014 class G4ParticleDefinition;
0015 
0016 namespace celeritas
0017 {
0018 namespace detail
0019 {
0020 //---------------------------------------------------------------------------//
0021 /*!
0022  * Electron/positron Bremsstrahlung process class derived from
0023  * \c G4eBremsstrahlung . The need for a new process class is to add the option
0024  * to manually select individual models.
0025  */
0026 class GeantBremsstrahlungProcess : public G4VEnergyLossProcess
0027 {
0028   public:
0029     //!@{
0030     //! \name Type aliases
0031     using Energy = units::MevEnergy;
0032     using ModelSelection = BremsModelSelection;
0033     //!@}
0034 
0035   public:
0036     // Construct with model selection and energy limit
0037     GeantBremsstrahlungProcess(ModelSelection selection,
0038                                double seltzer_berger_limit);
0039 
0040     // True for electrons and positrons
0041     bool IsApplicable(G4ParticleDefinition const& particle) final;
0042     // Print documentation
0043     void ProcessDescription(std::ostream&) const override;
0044 
0045   protected:
0046     // Initialise process by constructing selected models
0047     void InitialiseEnergyLossProcess(G4ParticleDefinition const*,
0048                                      G4ParticleDefinition const*) override;
0049     // Print class parameters
0050     void StreamProcessInfo(std::ostream& output) const override;
0051 
0052   private:
0053     bool is_initialized_{false};
0054     ModelSelection model_selection_;
0055     double sb_limit_;
0056 };
0057 
0058 //---------------------------------------------------------------------------//
0059 }  // namespace detail
0060 }  // namespace celeritas