Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/celeritas/ext/detail/GeantBremsstrahlungProcess.hh was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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