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 #include <iomanip>
00040
00041 #include "HadronPhysicsQGS_BIC.hh"
00042
00043 #include "globals.hh"
00044 #include "G4ios.hh"
00045 #include "G4SystemOfUnits.hh"
00046 #include "G4ParticleDefinition.hh"
00047 #include "G4ParticleTable.hh"
00048
00049 #include "G4MesonConstructor.hh"
00050 #include "G4BaryonConstructor.hh"
00051 #include "G4ShortLivedConstructor.hh"
00052
00053
00054 #include "G4PhysicsConstructorFactory.hh"
00055
00056 G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGS_BIC);
00057
00058 HadronPhysicsQGS_BIC::HadronPhysicsQGS_BIC(G4int)
00059 : G4VPhysicsConstructor("hInelastic QGS_BIC")
00060 , theNeutrons(0)
00061 , theLEPNeutron(0)
00062 , theQGSBinaryNeutron(0)
00063 , theBinaryNeutron(0)
00064 , thePiK(0)
00065 , theBICPiK(0)
00066 , theLEPPiK(0)
00067 , theQGSBinaryPiK(0)
00068 , thePro(0)
00069 , theLEPPro(0)
00070 , theQGSBinaryPro(0)
00071 , theBinaryPro(0)
00072 , theMisc(0)
00073 , QuasiElastic(true)
00074 {}
00075
00076 HadronPhysicsQGS_BIC::HadronPhysicsQGS_BIC(const G4String& name, G4bool quasiElastic)
00077 : G4VPhysicsConstructor(name)
00078 , theNeutrons(0)
00079 , theLEPNeutron(0)
00080 , theQGSBinaryNeutron(0)
00081 , theBinaryNeutron(0)
00082 , thePiK(0)
00083 , theBICPiK(0)
00084 , theLEPPiK(0)
00085 , theQGSBinaryPiK(0)
00086 , thePro(0)
00087 , theLEPPro(0)
00088 , theQGSBinaryPro(0)
00089 , theBinaryPro(0)
00090 , theMisc(0)
00091 , QuasiElastic(quasiElastic)
00092 {}
00093
00094 void HadronPhysicsQGS_BIC::CreateModels()
00095 {
00096 theNeutrons=new G4NeutronBuilder;
00097
00098 theNeutrons->RegisterMe(theQGSBinaryNeutron=new G4QGSBinaryNeutronBuilder(QuasiElastic));
00099 theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
00100 theLEPNeutron->SetMinInelasticEnergy(9.5*GeV);
00101 theLEPNeutron->SetMaxInelasticEnergy(25*GeV);
00102
00103 theNeutrons->RegisterMe(theBinaryNeutron=new G4BinaryNeutronBuilder);
00104 theBinaryNeutron->SetMaxEnergy(9.9*GeV);
00105
00106 thePro=new G4ProtonBuilder;
00107 thePro->RegisterMe(theQGSBinaryPro=new G4QGSBinaryProtonBuilder(QuasiElastic));
00108 thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder);
00109 theLEPPro->SetMinEnergy(9.5*GeV);
00110 theLEPPro->SetMaxEnergy(25*GeV);
00111
00112 thePro->RegisterMe(theBinaryPro=new G4BinaryProtonBuilder);
00113 theBinaryPro->SetMaxEnergy(9.9*GeV);
00114
00115 thePiK=new G4PiKBuilder;
00116 thePiK->RegisterMe(theQGSBinaryPiK=new G4QGSBinaryPiKBuilder(QuasiElastic));
00117 thePiK->RegisterMe(theBICPiK = new G4BinaryPiKBuilder);
00118 thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
00119 theLEPPiK->SetMinPionEnergy(1.2*GeV);
00120 theLEPPiK->SetMaxEnergy(25*GeV);
00121
00122 theMisc=new G4MiscBuilder;
00123 }
00124
00125 HadronPhysicsQGS_BIC::~HadronPhysicsQGS_BIC()
00126 {
00127 delete theMisc;
00128 delete theQGSBinaryNeutron;
00129 delete theLEPNeutron;
00130 delete theBinaryNeutron;
00131 delete theQGSBinaryPro;
00132 delete theLEPPro;
00133 delete thePro;
00134 delete theBinaryPro;
00135 delete theQGSBinaryPiK;
00136 delete theBICPiK;
00137 delete theLEPPiK;
00138 delete thePiK;
00139 }
00140
00141 void HadronPhysicsQGS_BIC::ConstructParticle()
00142 {
00143 G4MesonConstructor pMesonConstructor;
00144 pMesonConstructor.ConstructParticle();
00145
00146 G4BaryonConstructor pBaryonConstructor;
00147 pBaryonConstructor.ConstructParticle();
00148
00149 G4ShortLivedConstructor pShortLivedConstructor;
00150 pShortLivedConstructor.ConstructParticle();
00151 }
00152
00153 #include "G4ProcessManager.hh"
00154 void HadronPhysicsQGS_BIC::ConstructProcess()
00155 {
00156 CreateModels();
00157 theNeutrons->Build();
00158 thePro->Build();
00159 thePiK->Build();
00160 theMisc->Build();
00161 }
00162