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