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 #include <iomanip>
00042
00043 #include "HadronPhysicsQGSP_INCLXX.hh"
00044
00045 #include "globals.hh"
00046 #include "G4ios.hh"
00047 #include "G4SystemOfUnits.hh"
00048 #include "G4ParticleDefinition.hh"
00049 #include "G4ParticleTable.hh"
00050
00051 #include "G4MesonConstructor.hh"
00052 #include "G4BaryonConstructor.hh"
00053 #include "G4ShortLivedConstructor.hh"
00054
00055
00056 #include "G4PhysicsConstructorFactory.hh"
00057
00058 G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_INCLXX);
00059
00060 HadronPhysicsQGSP_INCLXX::HadronPhysicsQGSP_INCLXX(G4int)
00061 : G4VPhysicsConstructor("hInelastic QGSP_INCLXX")
00062 , theNeutrons(0)
00063 , theLEPNeutron(0)
00064 , theQGSPNeutron(0)
00065 , theBertiniNeutron(0)
00066 , theInclAblaNeutron(0)
00067 , thePiK(0)
00068 , theLEPPiK(0)
00069 , theQGSPPiK(0)
00070 , theBertiniPiK(0)
00071 , theInclAblaPiK(0)
00072 , thePro(0)
00073 , theLEPPro(0)
00074 , theQGSPPro(0)
00075 , theBertiniPro(0)
00076 , theInclAblaPro(0)
00077 , theMisc(0)
00078 , QuasiElastic(true)
00079 , ProjectileDiffraction(false)
00080 {
00081 }
00082
00083 HadronPhysicsQGSP_INCLXX::HadronPhysicsQGSP_INCLXX(const G4String& name, G4bool quasiElastic)
00084 : G4VPhysicsConstructor(name)
00085 , theNeutrons(0)
00086 , theLEPNeutron(0)
00087 , theQGSPNeutron(0)
00088 , theBertiniNeutron(0)
00089 , theInclAblaNeutron(0)
00090 , thePiK(0)
00091 , theLEPPiK(0)
00092 , theQGSPPiK(0)
00093 , theBertiniPiK(0)
00094 , theInclAblaPiK(0)
00095 , thePro(0)
00096 , theLEPPro(0)
00097 , theQGSPPro(0)
00098 , theBertiniPro(0)
00099 , theInclAblaPro(0)
00100 , theMisc(0)
00101 , QuasiElastic(quasiElastic)
00102 , ProjectileDiffraction(false)
00103 {
00104 }
00105
00106 void HadronPhysicsQGSP_INCLXX::CreateModels()
00107 {
00108 theNeutrons=new G4NeutronBuilder;
00109 theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic, ProjectileDiffraction));
00110 theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
00111 theLEPNeutron->SetMinInelasticEnergy(9.5*GeV);
00112 theLEPNeutron->SetMaxInelasticEnergy(25*GeV);
00113
00114 theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
00115 theBertiniNeutron->SetMinEnergy(2.9*GeV);
00116 theBertiniNeutron->SetMaxEnergy(9.9*GeV);
00117
00118 theNeutrons->RegisterMe(theInclAblaNeutron=new G4INCLXXNeutronBuilder);
00119 theInclAblaNeutron->SetMinEnergy(0.0*GeV);
00120 theInclAblaNeutron->SetMaxEnergy(3.0*GeV);
00121
00122 thePro=new G4ProtonBuilder;
00123 thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic, ProjectileDiffraction));
00124 thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder);
00125 theLEPPro->SetMinEnergy(9.5*GeV);
00126 theLEPPro->SetMaxEnergy(25*GeV);
00127
00128 thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
00129 theBertiniPro->SetMinEnergy(2.9*GeV);
00130 theBertiniPro->SetMaxEnergy(9.9*GeV);
00131
00132 thePro->RegisterMe(theInclAblaPro=new G4INCLXXProtonBuilder);
00133 theInclAblaPro->SetMinEnergy(0.0*GeV);
00134 theInclAblaPro->SetMaxEnergy(3.0*GeV);
00135
00136 thePiK=new G4PiKBuilder;
00137 thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(QuasiElastic));
00138 thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
00139 theLEPPiK->SetMaxEnergy(25*GeV);
00140 theLEPPiK->SetMinEnergy(9.5*GeV);
00141
00142 thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
00143 theBertiniPiK->SetMinEnergy(2.9*GeV);
00144 theBertiniPiK->SetMaxEnergy(9.9*GeV);
00145
00146 thePiK->RegisterMe(theInclAblaPiK=new G4INCLXXPiKBuilder);
00147 theInclAblaPiK->SetMinEnergy(0.0*GeV);
00148 theInclAblaPiK->SetMaxEnergy(3.0*GeV);
00149
00150 theMisc=new G4MiscBuilder;
00151 }
00152
00153 HadronPhysicsQGSP_INCLXX::~HadronPhysicsQGSP_INCLXX()
00154 {
00155 delete theMisc;
00156 delete theQGSPNeutron;
00157 delete theLEPNeutron;
00158 delete theBertiniNeutron;
00159 delete theInclAblaNeutron;
00160 delete theQGSPPro;
00161 delete theLEPPro;
00162 delete thePro;
00163 delete theBertiniPro;
00164 delete theInclAblaPro;
00165 delete theQGSPPiK;
00166 delete theLEPPiK;
00167 delete theInclAblaPiK;
00168 delete theBertiniPiK;
00169 delete thePiK;
00170 }
00171
00172 void HadronPhysicsQGSP_INCLXX::ConstructParticle()
00173 {
00174 G4MesonConstructor pMesonConstructor;
00175 pMesonConstructor.ConstructParticle();
00176
00177 G4BaryonConstructor pBaryonConstructor;
00178 pBaryonConstructor.ConstructParticle();
00179
00180 G4ShortLivedConstructor pShortLivedConstructor;
00181 pShortLivedConstructor.ConstructParticle();
00182 }
00183
00184 #include "G4ProcessManager.hh"
00185 void HadronPhysicsQGSP_INCLXX::ConstructProcess()
00186 {
00187 CreateModels();
00188 theNeutrons->Build();
00189 thePro->Build();
00190 thePiK->Build();
00191 theMisc->Build();
00192 }
00193