CMS 3D CMS Logo

CMSEmStandardPhysicsTrackingManager.h
Go to the documentation of this file.
1 #ifndef SimG4Core_PhysicsLists_CMSEmStandardPhysicsTrackingManager_h
2 #define SimG4Core_PhysicsLists_CMSEmStandardPhysicsTrackingManager_h
3 
4 #include "G4Version.hh"
5 #if G4VERSION_NUMBER >= 1100
6 
7 #include "G4VTrackingManager.hh"
8 #include "globals.hh"
9 #include "G4MscStepLimitType.hh"
10 
12 
13 class G4eMultipleScattering;
14 class G4CoulombScattering;
15 class G4eIonisation;
16 class G4eBremsstrahlung;
17 class G4eplusAnnihilation;
18 class G4ElectronNuclearProcess;
19 class G4PositronNuclearProcess;
20 
22 
23 class CMSEmStandardPhysicsTrackingManager : public G4VTrackingManager {
24 public:
25  CMSEmStandardPhysicsTrackingManager(const edm::ParameterSet &p);
26  ~CMSEmStandardPhysicsTrackingManager();
27 
28  void BuildPhysicsTable(const G4ParticleDefinition &) override;
29 
30  void PreparePhysicsTable(const G4ParticleDefinition &) override;
31 
32  void HandOverOneTrack(G4Track *aTrack) override;
33 
34 private:
35  void TrackElectron(G4Track *aTrack);
36  void TrackPositron(G4Track *aTrack);
37  void TrackGamma(G4Track *aTrack);
38 
39  G4double fRangeFactor;
40  G4double fGeomFactor;
41  G4double fSafetyFactor;
42  G4double fLambdaLimit;
43  G4MscStepLimitType fStepLimitType;
44 
45  struct {
46  G4eMultipleScattering *msc;
47  G4eIonisation *ioni;
48  G4eBremsstrahlung *brems;
49  G4CoulombScattering *ss;
50  G4ElectronNuclearProcess *nuc;
51  } electron;
52 
53  struct {
54  G4eMultipleScattering *msc;
55  G4eIonisation *ioni;
56  G4eBremsstrahlung *brems;
57  G4eplusAnnihilation *annihilation;
58  G4CoulombScattering *ss;
59  G4PositronNuclearProcess *nuc;
60  } positron;
61 
62  G4GammaGeneralProcess *gammaProc;
63 
64  static CMSEmStandardPhysicsTrackingManager *masterTrackingManager;
65 };
66 
67 #endif
68 
69 #endif