File indexing completed on 2026-07-13 08:21:03
0001 #ifndef G4EmTrackingManager_h
0002 #define G4EmTrackingManager_h 1
0003
0004 #include "G4VTrackingManager.hh"
0005 #include "globals.hh"
0006
0007 class G4eMultipleScattering;
0008 class G4CoulombScattering;
0009 class G4eIonisation;
0010 class G4eBremsstrahlung;
0011 class G4eplusAnnihilation;
0012
0013 class G4ComptonScattering;
0014 class G4GammaConversion;
0015 class G4PhotoElectricEffect;
0016
0017 class G4Step;
0018
0019
0020
0021 class G4EmTrackingManager : public G4VTrackingManager {
0022 public:
0023 G4EmTrackingManager();
0024 ~G4EmTrackingManager();
0025
0026 void BuildPhysicsTable(const G4ParticleDefinition &) override;
0027
0028 void PreparePhysicsTable(const G4ParticleDefinition &) override;
0029
0030 void HandOverOneTrack(G4Track *aTrack) override;
0031
0032 private:
0033 void TrackElectron(G4Track *aTrack);
0034 void TrackPositron(G4Track *aTrack);
0035 void TrackGamma(G4Track *aTrack);
0036
0037 struct {
0038 G4eMultipleScattering *msc;
0039 G4eIonisation *ioni;
0040 G4eBremsstrahlung *brems;
0041 G4CoulombScattering *ss;
0042 } electron;
0043
0044 struct {
0045 G4eMultipleScattering *msc;
0046 G4eIonisation *ioni;
0047 G4eBremsstrahlung *brems;
0048 G4eplusAnnihilation *annihilation;
0049 G4CoulombScattering *ss;
0050 } positron;
0051
0052 struct {
0053 G4PhotoElectricEffect *pe;
0054 G4ComptonScattering *compton;
0055 G4GammaConversion *conversion;
0056 } gamma;
0057
0058 G4Step *fStep;
0059
0060 static G4EmTrackingManager *masterTrackingManager;
0061 };
0062
0063
0064
0065 #endif