00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "Physics/ExN04EMPhysics.hh"
00030
00031 #include "globals.hh"
00032 #include "G4ios.hh"
00033
00034
00035 ExN04EMPhysics::ExN04EMPhysics(const G4String& name)
00036 : G4VPhysicsConstructor(name)
00037 {
00038 }
00039
00040 ExN04EMPhysics::~ExN04EMPhysics()
00041 {
00042 }
00043
00044 #include "G4ParticleDefinition.hh"
00045 #include "G4ParticleTable.hh"
00046
00047 #include "G4Gamma.hh"
00048
00049 #include "G4Electron.hh"
00050 #include "G4Positron.hh"
00051
00052 #include "G4NeutrinoE.hh"
00053 #include "G4AntiNeutrinoE.hh"
00054
00055 void ExN04EMPhysics::ConstructParticle()
00056 {
00057
00058 G4Gamma::GammaDefinition();
00059
00060
00061 G4Electron::ElectronDefinition();
00062 G4Positron::PositronDefinition();
00063 G4NeutrinoE::NeutrinoEDefinition();
00064 G4AntiNeutrinoE::AntiNeutrinoEDefinition();
00065 }
00066
00067
00068 #include "G4ProcessManager.hh"
00069
00070
00071 void ExN04EMPhysics::ConstructProcess()
00072 {
00073 G4ProcessManager * pManager = 0;
00074
00075
00076 pManager = G4Gamma::Gamma()->GetProcessManager();
00077 pManager->AddDiscreteProcess(&thePhotoEffect);
00078 pManager->AddDiscreteProcess(&theComptonEffect);
00079 pManager->AddDiscreteProcess(&thePairProduction);
00080
00081
00082 pManager = G4Electron::Electron()->GetProcessManager();
00083
00084 pManager->AddDiscreteProcess(&theElectronBremsStrahlung);
00085
00086 pManager->AddProcess(&theElectronIonisation, ordInActive,2, 2);
00087
00088 pManager->AddProcess(&theElectronMultipleScattering);
00089 pManager->SetProcessOrdering(&theElectronMultipleScattering, idxAlongStep, 1);
00090 pManager->SetProcessOrdering(&theElectronMultipleScattering, idxPostStep, 1);
00091
00092
00093 pManager = G4Positron::Positron()->GetProcessManager();
00094
00095 pManager->AddDiscreteProcess(&thePositronBremsStrahlung);
00096
00097 pManager->AddDiscreteProcess(&theAnnihilation);
00098
00099 pManager->AddRestProcess(&theAnnihilation);
00100
00101 pManager->AddProcess(&thePositronIonisation, ordInActive,2, 2);
00102
00103 pManager->AddProcess(&thePositronMultipleScattering);
00104 pManager->SetProcessOrdering(&thePositronMultipleScattering, idxAlongStep, 1);
00105 pManager->SetProcessOrdering(&thePositronMultipleScattering, idxPostStep, 1);
00106
00107 }
00108
00109
00110