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 "HadronPhysicsQGSC_BERT.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(HadronPhysicsQGSC_BERT);
00057
00058 HadronPhysicsQGSC_BERT::HadronPhysicsQGSC_BERT(G4int)
00059 : G4VPhysicsConstructor("hInelastic QGSC_BERT")
00060 , theNeutrons(0)
00061 , theQGSCNeutron(0)
00062 , theBertiniNeutron(0)
00063 , theLEPNeutron(0)
00064 , thePiK(0)
00065 , theQGSCPiK(0)
00066 , theBertiniPiK(0)
00067 , thePro(0)
00068 , theQGSCPro(0)
00069 , theBertiniPro(0)
00070 , theMiscLHEP(0)
00071 , QuasiElastic(true)
00072 {}
00073
00074 HadronPhysicsQGSC_BERT::HadronPhysicsQGSC_BERT(const G4String& name, G4bool quasiElastic)
00075 : G4VPhysicsConstructor(name)
00076 , theNeutrons(0)
00077 , theQGSCNeutron(0)
00078 , theBertiniNeutron(0)
00079 , theLEPNeutron(0)
00080 , thePiK(0)
00081 , theQGSCPiK(0)
00082 , theBertiniPiK(0)
00083 , thePro(0)
00084 , theQGSCPro(0)
00085 , theBertiniPro(0)
00086 , theMiscLHEP(0)
00087 , QuasiElastic(quasiElastic)
00088 {}
00089
00090 void HadronPhysicsQGSC_BERT::CreateModels()
00091 {
00092 theNeutrons=new G4NeutronBuilder;
00093 theNeutrons->RegisterMe(theQGSCNeutron=new G4QGSCNeutronBuilder(QuasiElastic));
00094 theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
00095
00096 theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
00097 theLEPNeutron->SetMinInelasticEnergy(0.0*eV);
00098 theLEPNeutron->SetMaxInelasticEnergy(0.0*eV);
00099
00100 theQGSCNeutron->SetMinEnergy(6*GeV);
00101 theBertiniNeutron->SetMinEnergy(0.0*GeV);
00102 theBertiniNeutron->SetMaxEnergy(9.0*GeV);
00103
00104 thePro=new G4ProtonBuilder;
00105 thePro->RegisterMe(theQGSCPro=new G4QGSCProtonBuilder(QuasiElastic));
00106 thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
00107
00108 theQGSCPro->SetMinEnergy(6*GeV);
00109 theBertiniPro->SetMaxEnergy(9.0*GeV);
00110
00111 thePiK=new G4PiKBuilder;
00112 thePiK->RegisterMe(theQGSCPiK=new G4QGSCPiKBuilder(QuasiElastic));
00113 thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
00114
00115 theQGSCPiK->SetMinEnergy(6*GeV);
00116 theBertiniPiK->SetMaxEnergy(9.0*GeV);
00117
00118 theMiscLHEP=new G4MiscLHEPBuilder;
00119 }
00120
00121 HadronPhysicsQGSC_BERT::~HadronPhysicsQGSC_BERT()
00122 {
00123 delete theQGSCNeutron;
00124 delete theBertiniNeutron;
00125 delete theLEPNeutron;
00126 delete theNeutrons;
00127 delete theQGSCPro;
00128 delete theBertiniPro;
00129 delete thePro;
00130 delete theQGSCPiK;
00131 delete theBertiniPiK;
00132 delete thePiK;
00133 delete theMiscLHEP;
00134 }
00135
00136 void HadronPhysicsQGSC_BERT::ConstructParticle()
00137 {
00138 G4MesonConstructor pMesonConstructor;
00139 pMesonConstructor.ConstructParticle();
00140
00141 G4BaryonConstructor pBaryonConstructor;
00142 pBaryonConstructor.ConstructParticle();
00143
00144 G4ShortLivedConstructor pShortLivedConstructor;
00145 pShortLivedConstructor.ConstructParticle();
00146 }
00147
00148 #include "G4ProcessManager.hh"
00149 void HadronPhysicsQGSC_BERT::ConstructProcess()
00150 {
00151 CreateModels();
00152 theNeutrons->Build();
00153 thePro->Build();
00154 thePiK->Build();
00155 theMiscLHEP->Build();
00156 }
00157