Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-13 08:21:04

0001 
0002 #ifndef G4HepEmGammaManager_HH
0003 #define G4HepEmGammaManager_HH
0004 
0005 #include "G4HepEmMacros.hh"
0006 
0007 struct G4HepEmData;
0008 struct G4HepEmParameters;
0009 struct G4HepEmGammaData;
0010 
0011 class  G4HepEmTLData;
0012 class  G4HepEmGammaTrack;
0013 class  G4HepEmTrack;
0014 
0015 /**
0016  * @file    G4HepEmGammaManager.hh
0017  * @struct  G4HepEmGammaManager
0018  * @author  M. Novak
0019  * @date    2021
0020  *
0021  * @brief The top level run-time manager for \f$\gamma\f$ transport simulations.
0022  *
0023  * It will be the same for \f$\gamma\f$ as the G4HepEmElectronManager for e-/e+.
0024  */
0025 
0026 class G4HepEmGammaManager {
0027 private:
0028   G4HepEmGammaManager() = delete;
0029 
0030 public:
0031   // step length
0032   static void HowFar(struct G4HepEmData* /*hepEmData*/, struct G4HepEmParameters* /*hepEmPars*/, G4HepEmTLData* /*tlData*/);
0033 
0034   G4HepEmHostDevice
0035   static void HowFar(struct G4HepEmData* hepEmData, struct G4HepEmParameters* hepEmPars, G4HepEmGammaTrack* theTrack);
0036 
0037 
0038   // interactions
0039   static void Perform(struct G4HepEmData* /*hepEmData*/, struct G4HepEmParameters* /*hepEmPars*/, G4HepEmTLData* /*tlData*/);
0040 
0041   G4HepEmHostDevice
0042   static void UpdateNumIALeft(G4HepEmTrack* theTrack);
0043 
0044   G4HepEmHostDevice
0045   static double
0046   GetTotalMacXSec(const struct G4HepEmData* hepEmData, G4HepEmGammaTrack* theGammaTrack);
0047 
0048   G4HepEmHostDevice
0049   static double GetMacXSecPE(const struct G4HepEmData* hepEmData, const int imat, const double ekin);
0050 
0051   static void SelectInteraction(const struct G4HepEmData* hepEmData, G4HepEmTLData* tlData);
0052 
0053   G4HepEmHostDevice
0054   static void
0055   SampleInteraction(const struct G4HepEmData* hepEmData, G4HepEmGammaTrack* theGammaTrack, const double urnd);
0056 
0057 };
0058 
0059 #endif // G4HepEmGammaManager_HH