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
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #include "MyDecayPhysics.hh"
00044
00045 #include "G4ParticleDefinition.hh"
00046 #include "G4ProcessManager.hh"
00047
00048 #include "G4BosonConstructor.hh"
00049 #include "G4LeptonConstructor.hh"
00050 #include "G4MesonConstructor.hh"
00051 #include "G4BosonConstructor.hh"
00052 #include "G4BaryonConstructor.hh"
00053 #include "G4IonConstructor.hh"
00054 #include "G4ShortLivedConstructor.hh"
00055
00056 #include "G4ParticleTypes.hh"
00057 #include "G4ParticleTable.hh"
00058 #include "G4DecayTable.hh"
00059 #include "G4VDecayChannel.hh"
00060 #include "G4PhaseSpaceDecayChannel.hh"
00061
00062 MyDecayPhysics::MyDecayPhysics(G4int ver)
00063 : G4VPhysicsConstructor("Decay"), verbose(ver), wasActivated(false)
00064 {
00065 fDecayProcess = 0;
00066 }
00067
00068 MyDecayPhysics::MyDecayPhysics(const G4String& name, G4int ver)
00069 : G4VPhysicsConstructor(name), verbose(ver), wasActivated(false)
00070 {
00071 fDecayProcess = 0;
00072 }
00073
00074 MyDecayPhysics::~MyDecayPhysics()
00075 {
00076 delete fDecayProcess;
00077 }
00078
00079 void MyDecayPhysics::ConstructParticle()
00080 {
00081
00082
00083 G4BosonConstructor pBosonConstructor;
00084 pBosonConstructor.ConstructParticle();
00085
00086 G4LeptonConstructor pLeptonConstructor;
00087 pLeptonConstructor.ConstructParticle();
00088
00089 G4MesonConstructor pMesonConstructor;
00090 pMesonConstructor.ConstructParticle();
00091
00092 G4BaryonConstructor pBaryonConstructor;
00093 pBaryonConstructor.ConstructParticle();
00094
00095 G4IonConstructor pIonConstructor;
00096 pIonConstructor.ConstructParticle();
00097
00098 G4ShortLivedConstructor pShortLivedConstructor;
00099 pShortLivedConstructor.ConstructParticle();
00100
00101 G4DecayTable* table;
00102 G4VDecayChannel* mode;
00103
00104 table = new G4DecayTable();
00105 mode = new G4PhaseSpaceDecayChannel("pi-",0.999877,2,"mu-","anti_nu_mu");
00106 table->Insert(mode);
00107
00108 mode = new G4PhaseSpaceDecayChannel("pi-",1.230e-4,2,"e-","anti_nu_e");
00109 table->Insert(mode);
00110 G4PionMinus::PionMinusDefinition()->SetDecayTable(table);
00111
00112 table = new G4DecayTable();
00113 mode = new G4PhaseSpaceDecayChannel("pi+",0.999877,2,"mu+","nu_mu");
00114 table->Insert(mode);
00115
00116 mode = new G4PhaseSpaceDecayChannel("pi+",1.230e-4,2,"e+","nu_e");
00117 table->Insert(mode);
00118 G4PionPlus::PionPlusDefinition()->SetDecayTable(table);
00119
00120 }
00121
00122 void MyDecayPhysics::ConstructProcess()
00123 {
00124 if(wasActivated) { return; }
00125 wasActivated = true;
00126
00127 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
00128
00129
00130 fDecayProcess = new G4Decay();
00131
00132
00133 G4ParticleDefinition* particle=0;
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147 }