00001
00002 #include "BesIonPhysics.hh"
00003
00004 #include "globals.hh"
00005 #include "G4ios.hh"
00006 #include <iomanip>
00007
00008
00009 BesIonPhysics::BesIonPhysics(const G4String& name)
00010 : G4VPhysicsConstructor(name)
00011 {
00012 }
00013
00014 BesIonPhysics::~BesIonPhysics()
00015 {
00016 }
00017
00018 #include "G4ParticleDefinition.hh"
00019 #include "G4ParticleTable.hh"
00020
00021
00022 #include "G4IonConstructor.hh"
00023
00024 void BesIonPhysics::ConstructParticle()
00025 {
00026
00027 G4IonConstructor pConstructor;
00028 pConstructor.ConstructParticle();
00029 }
00030
00031
00032 #include "G4ProcessManager.hh"
00033
00034
00035 void BesIonPhysics::ConstructProcess()
00036 {
00037 G4ProcessManager * pManager = 0;
00038
00039
00040 theElasticModel = new G4LElastic();
00041 theElasticProcess.RegisterMe(theElasticModel);
00042
00043
00044 pManager = G4GenericIon::GenericIon()->GetProcessManager();
00045
00046 pManager->AddDiscreteProcess(&theElasticProcess);
00047
00048 pManager->AddProcess(&fIonMultipleScattering, -1, 1, 1);
00049 pManager->AddProcess(&fIonIonisation, -1, 2, 2);
00050
00051
00052 pManager = G4Deuteron::Deuteron()->GetProcessManager();
00053
00054 pManager->AddDiscreteProcess(&theElasticProcess);
00055
00056 fDeuteronModel = new G4LEDeuteronInelastic();
00057 fDeuteronProcess.RegisterMe(fDeuteronModel);
00058 pManager->AddDiscreteProcess(&fDeuteronProcess);
00059
00060 pManager->AddProcess(&fDeuteronMultipleScattering, -1, 1, 1);
00061 pManager->AddProcess(&fDeuteronIonisation, -1, 2, 2);
00062
00063
00064 pManager = G4Triton::Triton()->GetProcessManager();
00065
00066 pManager->AddDiscreteProcess(&theElasticProcess);
00067
00068 fTritonModel = new G4LETritonInelastic();
00069 fTritonProcess.RegisterMe(fTritonModel);
00070 pManager->AddDiscreteProcess(&fTritonProcess);
00071
00072 pManager->AddProcess(&fTritonMultipleScattering, -1, 1, 1);
00073 pManager->AddProcess(&fTritonIonisation, -1, 2, 2);
00074
00075
00076 pManager = G4Alpha::Alpha()->GetProcessManager();
00077
00078 pManager->AddDiscreteProcess(&theElasticProcess);
00079
00080 fAlphaModel = new G4LEAlphaInelastic();
00081 fAlphaProcess.RegisterMe(fAlphaModel);
00082 pManager->AddDiscreteProcess(&fAlphaProcess);
00083
00084 pManager->AddProcess(&fAlphaMultipleScattering, -1, 1, 1);
00085 pManager->AddProcess(&fAlphaIonisation, -1, 2, 2);
00086
00087
00088 pManager = G4He3::He3()->GetProcessManager();
00089
00090 pManager->AddDiscreteProcess(&theElasticProcess);
00091
00092 pManager->AddProcess(&fHe3MultipleScattering, -1, 1, 1);
00093 pManager->AddProcess(&fHe3Ionisation, -1, 2, 2);
00094
00095
00096 }
00097
00098
00099