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 #include <iomanip>
00039
00040 #include "HadronPhysicsFTF_BIC.hh"
00041
00042 #include "globals.hh"
00043 #include "G4ios.hh"
00044 #include "G4SystemOfUnits.hh"
00045 #include "G4ParticleDefinition.hh"
00046 #include "G4ParticleTable.hh"
00047
00048 #include "G4MesonConstructor.hh"
00049 #include "G4BaryonConstructor.hh"
00050 #include "G4ShortLivedConstructor.hh"
00051
00052
00053 #include "G4PhysicsConstructorFactory.hh"
00054
00055 G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsFTF_BIC);
00056
00057 HadronPhysicsFTF_BIC::HadronPhysicsFTF_BIC(G4int)
00058 : G4VPhysicsConstructor("hInelastic FTF_BIC")
00059 , theNeutrons(0)
00060 , theLEPNeutron(0)
00061 , theFTFBinaryNeutron(0)
00062 , theBinaryNeutron(0)
00063 , thePion(0)
00064 , theKaon(0)
00065 , theBICPion(0)
00066 , theBertiniKaon(0)
00067 , theFTFBinaryPion(0)
00068 , theFTFBinaryKaon(0)
00069 , thePro(0)
00070 , theFTFBinaryPro(0)
00071 , theBinaryPro(0)
00072 , theHyperon(0)
00073 , theAntiBaryon(0)
00074 , theFTFPAntiBaryon(0)
00075 , QuasiElastic(false)
00076 {}
00077
00078 HadronPhysicsFTF_BIC::HadronPhysicsFTF_BIC(const G4String& name, G4bool quasiElastic)
00079 : G4VPhysicsConstructor(name)
00080 , theNeutrons(0)
00081 , theLEPNeutron(0)
00082 , theFTFBinaryNeutron(0)
00083 , theBinaryNeutron(0)
00084 , thePion(0)
00085 , theKaon(0)
00086 , theBICPion(0)
00087 , theBertiniKaon(0)
00088 , theFTFBinaryPion(0)
00089 , theFTFBinaryKaon(0)
00090 , thePro(0)
00091 , theFTFBinaryPro(0)
00092 , theBinaryPro(0)
00093 , theHyperon(0)
00094 , theAntiBaryon(0)
00095 , theFTFPAntiBaryon(0)
00096 , QuasiElastic(quasiElastic)
00097 {}
00098
00099 void HadronPhysicsFTF_BIC::CreateModels()
00100 {
00101 theNeutrons=new G4NeutronBuilder;
00102
00103 theNeutrons->RegisterMe(theFTFBinaryNeutron=new G4FTFBinaryNeutronBuilder(QuasiElastic));
00104 theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
00105 theLEPNeutron->SetMinInelasticEnergy(0.*eV);
00106 theLEPNeutron->SetMaxInelasticEnergy(0.*eV);
00107
00108 theNeutrons->RegisterMe(theBinaryNeutron=new G4BinaryNeutronBuilder);
00109 theBinaryNeutron->SetMaxEnergy(5.0*GeV);
00110
00111 thePro=new G4ProtonBuilder;
00112 thePro->RegisterMe(theFTFBinaryPro=new G4FTFBinaryProtonBuilder(QuasiElastic));
00113
00114 thePro->RegisterMe(theBinaryPro=new G4BinaryProtonBuilder);
00115 theBinaryPro->SetMaxEnergy(5.0*GeV);
00116
00117 thePion=new G4PionBuilder;
00118 thePion->RegisterMe(theFTFBinaryPion=new G4FTFBinaryPionBuilder(QuasiElastic));
00119 thePion->RegisterMe(theBICPion = new G4BinaryPionBuilder);
00120 theBICPion->SetMaxEnergy(5*GeV);
00121
00122 theKaon=new G4KaonBuilder;
00123 theKaon->RegisterMe(theFTFBinaryKaon=new G4FTFBinaryKaonBuilder(QuasiElastic));
00124 theKaon->RegisterMe(theBertiniKaon=new G4BertiniKaonBuilder);
00125 theBertiniKaon->SetMaxEnergy(5*GeV);
00126
00127
00128 theHyperon=new G4HyperonFTFPBuilder;
00129
00130 theAntiBaryon=new G4AntiBarionBuilder;
00131 theAntiBaryon->RegisterMe(theFTFPAntiBaryon=new G4FTFPAntiBarionBuilder(QuasiElastic));
00132 }
00133
00134 HadronPhysicsFTF_BIC::~HadronPhysicsFTF_BIC()
00135 {
00136 delete theFTFBinaryNeutron;
00137 delete theLEPNeutron;
00138 delete theBinaryNeutron;
00139 delete theNeutrons;
00140
00141 delete theFTFBinaryPro;
00142 delete theBinaryPro;
00143 delete thePro;
00144
00145 delete theFTFBinaryPion;
00146 delete theBICPion;
00147 delete thePion;
00148
00149 delete theFTFBinaryKaon;
00150 delete theBertiniKaon;
00151 delete theKaon;
00152
00153 delete theHyperon;
00154 delete theAntiBaryon;
00155 delete theFTFPAntiBaryon;
00156
00157 }
00158
00159 void HadronPhysicsFTF_BIC::ConstructParticle()
00160 {
00161 G4MesonConstructor pMesonConstructor;
00162 pMesonConstructor.ConstructParticle();
00163
00164 G4BaryonConstructor pBaryonConstructor;
00165 pBaryonConstructor.ConstructParticle();
00166
00167 G4ShortLivedConstructor pShortLivedConstructor;
00168 pShortLivedConstructor.ConstructParticle();
00169 }
00170
00171
00172 #include "G4PhysListUtil.hh"
00173 void HadronPhysicsFTF_BIC::ConstructProcess()
00174 {
00175 CreateModels();
00176 theNeutrons->Build();
00177 thePro->Build();
00178 thePion->Build();
00179 theKaon->Build();
00180
00181 theHyperon->Build();
00182 theAntiBaryon->Build();
00183 }
00184