File indexing completed on 2024-04-06 12:30:27
0001 #ifndef SimG4Core_PhysicsLists_CMSEmStandardPhysicsTrackingManager_h
0002 #define SimG4Core_PhysicsLists_CMSEmStandardPhysicsTrackingManager_h
0003
0004 #include "G4VTrackingManager.hh"
0005 #include "globals.hh"
0006 #include "G4MscStepLimitType.hh"
0007
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009
0010 class G4eMultipleScattering;
0011 class G4CoulombScattering;
0012 class G4eIonisation;
0013 class G4eBremsstrahlung;
0014 class G4eplusAnnihilation;
0015 class G4ElectronNuclearProcess;
0016 class G4PositronNuclearProcess;
0017
0018 class G4GammaGeneralProcess;
0019
0020 class CMSEmStandardPhysicsTrackingManager : public G4VTrackingManager {
0021 public:
0022 CMSEmStandardPhysicsTrackingManager(const edm::ParameterSet &p);
0023 ~CMSEmStandardPhysicsTrackingManager() override;
0024
0025 void BuildPhysicsTable(const G4ParticleDefinition &) override;
0026
0027 void PreparePhysicsTable(const G4ParticleDefinition &) override;
0028
0029 void HandOverOneTrack(G4Track *aTrack) override;
0030
0031 private:
0032 void TrackElectron(G4Track *aTrack);
0033 void TrackPositron(G4Track *aTrack);
0034 void TrackGamma(G4Track *aTrack);
0035
0036 G4double fRangeFactor;
0037 G4double fGeomFactor;
0038 G4double fSafetyFactor;
0039 G4double fLambdaLimit;
0040 G4MscStepLimitType fStepLimitType;
0041
0042 struct {
0043 G4eMultipleScattering *msc;
0044 G4eIonisation *ioni;
0045 G4eBremsstrahlung *brems;
0046 G4CoulombScattering *ss;
0047 G4ElectronNuclearProcess *nuc;
0048 } electron;
0049
0050 struct {
0051 G4eMultipleScattering *msc;
0052 G4eIonisation *ioni;
0053 G4eBremsstrahlung *brems;
0054 G4eplusAnnihilation *annihilation;
0055 G4CoulombScattering *ss;
0056 G4PositronNuclearProcess *nuc;
0057 } positron;
0058
0059 G4GammaGeneralProcess *gammaProc;
0060
0061 static CMSEmStandardPhysicsTrackingManager *masterTrackingManager;
0062 };
0063
0064 #endif