Back to home page

EIC code displayed by LXR

 
 

    


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

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/ext/detail/GeantBremsstrahlungProcess.hh
0007 //---------------------------------------------------------------------------//
0008 #pragma once
0009 
0010 #include <iosfwd>
0011 #include <G4ParticleDefinition.hh>
0012 #include <G4VEnergyLossProcess.hh>
0013 
0014 #include "../GeantPhysicsOptions.hh"
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 ModelSelection = BremsModelSelection;
0032     //!@}
0033 
0034   public:
0035     // Construct with model selection
0036     explicit GeantBremsstrahlungProcess(ModelSelection selection);
0037 
0038     // True for electrons and positrons
0039     bool IsApplicable(G4ParticleDefinition const& particle) final;
0040     // Print documentation
0041     void ProcessDescription(std::ostream&) const override;
0042 
0043     //! Which models are used
0044     ModelSelection model_selection() const { return model_selection_; }
0045 
0046   protected:
0047     // Initialise process by constructing selected models
0048     void InitialiseEnergyLossProcess(G4ParticleDefinition const*,
0049                                      G4ParticleDefinition const*) override;
0050     // Print class parameters
0051     void StreamProcessInfo(std::ostream& output) const override;
0052 
0053   private:
0054     bool is_initialized_;
0055     ModelSelection model_selection_;
0056 };
0057 
0058 //---------------------------------------------------------------------------//
0059 }  // namespace detail
0060 }  // namespace celeritas