File indexing completed on 2026-07-13 08:21:04
0001
0002 #ifndef G4HepEmElectronInteractionBrem_HH
0003 #define G4HepEmElectronInteractionBrem_HH
0004
0005 #include "G4HepEmMacros.hh"
0006
0007 class G4HepEmTLData;
0008 class G4HepEmRandomEngine;
0009 struct G4HepEmData;
0010 struct G4HepEmElectronData;
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 class G4HepEmElectronInteractionBrem {
0024 private:
0025 G4HepEmElectronInteractionBrem() = delete;
0026
0027 public:
0028 static void Perform(G4HepEmTLData* tlData, struct G4HepEmData* hepEmData, bool iselectron, bool isSBmodel);
0029
0030
0031
0032
0033 G4HepEmHostDevice
0034 static double SampleETransferSB(struct G4HepEmData* hepEmData, double thePrimEkin, double theLogEkin,
0035 int theIMCIndx, G4HepEmRandomEngine* rnge, bool iselectron);
0036
0037
0038
0039 G4HepEmHostDevice
0040 static double SampleETransferRB(struct G4HepEmData* hepEmData, double thePrimEkin, double theLogEkin,
0041 int theIMCIndx, G4HepEmRandomEngine* rnge, bool iselectron);
0042
0043
0044
0045
0046 G4HepEmHostDevice
0047 static int SelectTargetAtom(const struct G4HepEmElectronData* elData, const int imc, const double ekin,
0048 const double lekin, const double urndn, const bool isbremSB);
0049
0050
0051 G4HepEmHostDevice
0052 static void SampleDirections(const double thePrimEkin, const double theSecGammaEkin, double* theSecGammaDir,
0053 double* thePrimElecDir, G4HepEmRandomEngine* rnge);
0054
0055
0056
0057
0058 G4HepEmHostDevice
0059 static int LinSearch(const double* vect, const int size, const double val);
0060 };
0061
0062 #endif