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 <cmath>
00030
00031 #include "Physics/ExN04MuonPhysics.hh"
00032
00033 #include "globals.hh"
00034 #include "G4ios.hh"
00035
00036
00037 ExN04MuonPhysics::ExN04MuonPhysics(const G4String& name)
00038 : G4VPhysicsConstructor(name)
00039 {
00040 }
00041
00042 ExN04MuonPhysics::~ExN04MuonPhysics()
00043 {
00044 }
00045
00046 #include "G4ParticleDefinition.hh"
00047 #include "G4ParticleTable.hh"
00048
00049 #include "G4MuonPlus.hh"
00050 #include "G4MuonMinus.hh"
00051 #include "G4TauMinus.hh"
00052 #include "G4TauPlus.hh"
00053 #include "G4NeutrinoTau.hh"
00054 #include "G4AntiNeutrinoTau.hh"
00055 #include "G4NeutrinoMu.hh"
00056 #include "G4AntiNeutrinoMu.hh"
00057
00058 void ExN04MuonPhysics::ConstructParticle()
00059 {
00060
00061 G4MuonPlus::MuonPlusDefinition();
00062 G4MuonMinus::MuonMinusDefinition();
00063 G4NeutrinoMu::NeutrinoMuDefinition();
00064 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
00065
00066
00067 G4TauMinus::TauMinusDefinition();
00068 G4TauPlus::TauPlusDefinition();
00069 G4NeutrinoTau::NeutrinoTauDefinition();
00070 G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
00071
00072 }
00073
00074
00075 #include "G4ProcessManager.hh"
00076
00077 void ExN04MuonPhysics::ConstructProcess()
00078 {
00079 G4ProcessManager * pManager = 0;
00080
00081
00082 pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
00083
00084 pManager->AddProcess(&fMuPlusIonisation, ordInActive,2, 2);
00085
00086 pManager->AddDiscreteProcess(&fMuPlusBremsstrahlung);
00087
00088 pManager->AddDiscreteProcess(&fMuPlusPairProduction);
00089
00090 pManager->AddProcess(&fMuPlusMultipleScattering);
00091 pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxAlongStep, 1);
00092 pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxPostStep, 1);
00093
00094
00095 pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
00096
00097 pManager->AddProcess(&fMuMinusIonisation, ordInActive,2, 2);
00098
00099 pManager->AddDiscreteProcess(&fMuMinusBremsstrahlung);
00100
00101 pManager->AddDiscreteProcess(&fMuMinusPairProduction);
00102
00103 pManager->AddProcess(&fMuMinusMultipleScattering);
00104 pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxAlongStep, 1);
00105 pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxPostStep, 1);
00106 pManager->AddRestProcess(&fMuMinusCaptureAtRest);
00107
00108
00109 pManager = G4TauPlus::TauPlus()->GetProcessManager();
00110
00111 pManager->AddProcess(&fTauPlusIonisation, ordInActive,2, 2);
00112
00113 pManager->AddProcess(&fTauPlusMultipleScattering);
00114 pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxAlongStep, 1);
00115 pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxPostStep, 1);
00116
00117
00118 pManager = G4TauMinus::TauMinus()->GetProcessManager();
00119
00120 pManager->AddProcess(&fTauMinusIonisation, ordInActive,2, 2);
00121
00122 pManager->AddProcess(&fTauMinusMultipleScattering);
00123 pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxAlongStep, 1);
00124 pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxPostStep, 1);
00125
00126 }
00127
00128
00129