File indexing completed on 2026-07-13 08:21:04
0001
0002 #ifndef G4HepEmGammaInteractionConversion_HH
0003 #define G4HepEmGammaInteractionConversion_HH
0004
0005 #include "G4HepEmMacros.hh"
0006
0007 #include <cmath>
0008
0009 class G4HepEmTLData;
0010 class G4HepEmRandomEngine;
0011 struct G4HepEmData;
0012 struct G4HepEmElemData;
0013
0014 class G4HepEmGammaInteractionConversion {
0015 private:
0016 G4HepEmGammaInteractionConversion() = delete;
0017
0018 public:
0019 static void Perform(G4HepEmTLData* tlData, struct G4HepEmData* hepEmData);
0020
0021 G4HepEmHostDevice
0022 static void SampleKinEnergies(struct G4HepEmData* hepEmData, double thePrimEkin, double theLogEkin,
0023 int theMCIndx, double& eKinEnergy, double& pKinEnergy, G4HepEmRandomEngine* rnge);
0024
0025
0026 G4HepEmHostDevice
0027 static void SampleDirections(const double* orgGammaDir, double* secElDir, double* secPosDir,
0028 const double secElEkin, const double secPosEkin, G4HepEmRandomEngine* rnge);
0029
0030
0031
0032
0033 G4HepEmHostDevice
0034 static int SelectTargetAtom(const struct G4HepEmGammaData* gmData, const int imat, const double ekin,
0035 const double lekin, const double urndn);
0036
0037 G4HepEmHostDevice
0038 static double SampleEnergyRateNoLPM(const double normCond, const double epsMin, const double epsRange,
0039 const double deltaFactor, const double invF10, const double invF20,
0040 const double fz, G4HepEmRandomEngine* rnge);
0041
0042 G4HepEmHostDevice
0043 static double SampleEnergyRateWithLPM(const double normCond, const double epsMin, const double epsRange,
0044 const double deltaFactor, const double invF10, const double invF20,
0045 const double fz, G4HepEmRandomEngine* rnge, const double eGamma,
0046 const double lpmEnergy, const struct G4HepEmElemData* elemData);
0047
0048 G4HepEmHostDevice
0049 static void ComputePhi12(const double delta, double &phi1, double &phi2);
0050
0051
0052
0053 G4HepEmHostDevice
0054 static double ScreenFunction1(const double delta);
0055
0056
0057 G4HepEmHostDevice
0058 static double ScreenFunction2(const double delta);
0059
0060
0061 G4HepEmHostDevice
0062 static void ScreenFunction12(const double delta, double &f1, double &f2);
0063 };
0064
0065 #endif