00001 00002 #ifndef BesHadronPhysics_h 00003 #define BesHadronPhysics_h 1 00004 00005 #include "globals.hh" 00006 #include "G4ios.hh" 00007 #include <vector> 00008 00009 #include "G4VPhysicsConstructor.hh" 00010 00011 #include "G4MultipleScattering.hh" 00012 #include "G4hIonisation.hh" 00013 00014 #include "G4HadronElasticProcess.hh" 00015 #include "G4HadronFissionProcess.hh" 00016 #include "G4HadronCaptureProcess.hh" 00017 00018 #include "G4PionPlusInelasticProcess.hh" 00019 #include "G4PionMinusInelasticProcess.hh" 00020 #include "G4KaonPlusInelasticProcess.hh" 00021 #include "G4KaonZeroSInelasticProcess.hh" 00022 #include "G4KaonZeroLInelasticProcess.hh" 00023 #include "G4KaonMinusInelasticProcess.hh" 00024 #include "G4ProtonInelasticProcess.hh" 00025 #include "G4AntiProtonInelasticProcess.hh" 00026 #include "G4NeutronInelasticProcess.hh" 00027 #include "G4AntiNeutronInelasticProcess.hh" 00028 #include "G4LambdaInelasticProcess.hh" 00029 #include "G4AntiLambdaInelasticProcess.hh" 00030 #include "G4SigmaPlusInelasticProcess.hh" 00031 #include "G4SigmaMinusInelasticProcess.hh" 00032 #include "G4AntiSigmaPlusInelasticProcess.hh" 00033 #include "G4AntiSigmaMinusInelasticProcess.hh" 00034 #include "G4XiZeroInelasticProcess.hh" 00035 #include "G4XiMinusInelasticProcess.hh" 00036 #include "G4AntiXiZeroInelasticProcess.hh" 00037 #include "G4AntiXiMinusInelasticProcess.hh" 00038 #include "G4DeuteronInelasticProcess.hh" 00039 #include "G4TritonInelasticProcess.hh" 00040 #include "G4AlphaInelasticProcess.hh" 00041 #include "G4OmegaMinusInelasticProcess.hh" 00042 #include "G4AntiOmegaMinusInelasticProcess.hh" 00043 00044 // Low-energy Models 00045 #include "G4LElastic.hh" 00046 #include "G4LFission.hh" 00047 #include "G4LCapture.hh" 00048 00049 #include "G4LEPionPlusInelastic.hh" 00050 #include "G4LEPionMinusInelastic.hh" 00051 #include "G4LEKaonPlusInelastic.hh" 00052 #include "G4LEKaonZeroSInelastic.hh" 00053 #include "G4LEKaonZeroLInelastic.hh" 00054 #include "G4LEKaonMinusInelastic.hh" 00055 #include "G4LEProtonInelastic.hh" 00056 #include "G4LEAntiProtonInelastic.hh" 00057 #include "G4LENeutronInelastic.hh" 00058 #include "G4LEAntiNeutronInelastic.hh" 00059 #include "G4LELambdaInelastic.hh" 00060 #include "G4LEAntiLambdaInelastic.hh" 00061 #include "G4LESigmaPlusInelastic.hh" 00062 #include "G4LESigmaMinusInelastic.hh" 00063 #include "G4LEAntiSigmaPlusInelastic.hh" 00064 #include "G4LEAntiSigmaMinusInelastic.hh" 00065 #include "G4LEXiZeroInelastic.hh" 00066 #include "G4LEXiMinusInelastic.hh" 00067 #include "G4LEAntiXiZeroInelastic.hh" 00068 #include "G4LEAntiXiMinusInelastic.hh" 00069 #include "G4LEDeuteronInelastic.hh" 00070 #include "G4LETritonInelastic.hh" 00071 #include "G4LEAlphaInelastic.hh" 00072 #include "G4LEOmegaMinusInelastic.hh" 00073 #include "G4LEAntiOmegaMinusInelastic.hh" 00074 00075 // High-energy Models 00076 00077 #include "G4HEPionPlusInelastic.hh" 00078 #include "G4HEPionMinusInelastic.hh" 00079 #include "G4HEKaonPlusInelastic.hh" 00080 #include "G4HEKaonZeroInelastic.hh" 00081 #include "G4HEKaonZeroInelastic.hh" 00082 #include "G4HEKaonMinusInelastic.hh" 00083 #include "G4HEProtonInelastic.hh" 00084 #include "G4HEAntiProtonInelastic.hh" 00085 #include "G4HENeutronInelastic.hh" 00086 #include "G4HEAntiNeutronInelastic.hh" 00087 #include "G4HELambdaInelastic.hh" 00088 #include "G4HEAntiLambdaInelastic.hh" 00089 #include "G4HESigmaPlusInelastic.hh" 00090 #include "G4HESigmaMinusInelastic.hh" 00091 #include "G4HEAntiSigmaPlusInelastic.hh" 00092 #include "G4HEAntiSigmaMinusInelastic.hh" 00093 #include "G4HEXiZeroInelastic.hh" 00094 #include "G4HEXiMinusInelastic.hh" 00095 #include "G4HEAntiXiZeroInelastic.hh" 00096 #include "G4HEAntiXiMinusInelastic.hh" 00097 #include "G4HEOmegaMinusInelastic.hh" 00098 #include "G4HEAntiOmegaMinusInelastic.hh" 00099 00100 // Stopping processes 00101 #include "G4AntiProtonAnnihilationAtRest.hh" 00102 #include "G4AntiNeutronAnnihilationAtRest.hh" 00103 00104 #ifdef TRIUMF_STOP_PIMINUS 00105 #include "G4PionMinusAbsorptionAtRest.hh" 00106 #else 00107 #include "G4PiMinusAbsorptionAtRest.hh" 00108 #endif 00109 #ifdef TRIUMF_STOP_KMINUS 00110 #include "G4KaonMinusAbsorption.hh" 00111 #else 00112 #include "G4KaonMinusAbsorptionAtRest.hh" 00113 #endif 00114 00115 // quark gluon string model with chips afterburner. 00116 #include "G4TheoFSGenerator.hh" 00117 #include "G4ExcitationHandler.hh" 00118 #include "G4PreCompoundModel.hh" 00119 #include "G4GeneratorPrecompoundInterface.hh" 00120 /* AZ #include "G4QGSModel.hh" 00121 #include "G4QGSParticipants.hh" 00122 #include "G4QGSMFragmentation.hh" 00123 #include "G4ExcitedStringDecay.hh" 00124 */ 00125 class BesHadronPhysics : public G4VPhysicsConstructor 00126 { 00127 public: 00128 BesHadronPhysics(const G4String& name ="hadron"); 00129 virtual ~BesHadronPhysics(); 00130 00131 public: 00132 // This method will be invoked in the Construct() method. 00133 // each particle type will be instantiated 00134 virtual void ConstructParticle(); 00135 00136 // This method will be invoked in the Construct() method. 00137 // each physics process will be instantiated and 00138 // registered to the process manager of each particle type 00139 virtual void ConstructProcess(); 00140 00141 protected: 00142 // Elastic Process 00143 G4HadronElasticProcess theElasticProcess; 00144 G4LElastic* theElasticModel; 00145 00146 // Pi + 00147 G4PionPlusInelasticProcess thePionPlusInelastic; 00148 G4LEPionPlusInelastic* theLEPionPlusModel; 00149 G4MultipleScattering thePionPlusMult; 00150 G4hIonisation thePionPlusIonisation; 00151 00152 // Pi - 00153 G4PionMinusInelasticProcess thePionMinusInelastic; 00154 G4LEPionMinusInelastic* theLEPionMinusModel; 00155 G4MultipleScattering thePionMinusMult; 00156 G4hIonisation thePionMinusIonisation; 00157 #ifdef TRIUMF_STOP_PIMINUS 00158 G4PionMinusAbsorptionAtRest thePionMinusAbsorption; 00159 #else 00160 G4PiMinusAbsorptionAtRest thePionMinusAbsorption; 00161 #endif 00162 00163 // pi+ and pi- 00164 00165 /* AZ G4TheoFSGenerator theTheoModel; 00166 */ 00167 G4ExcitationHandler theHandler; 00168 G4PreCompoundModel * thePreEquilib; 00169 G4GeneratorPrecompoundInterface theCascade; 00170 /* AZ G4QGSModel< G4QGSParticipants >* theStringModel; 00171 G4QGSMFragmentation theFragmentation; 00172 G4ExcitedStringDecay * theStringDecay; 00173 */ 00174 // K + 00175 G4KaonPlusInelasticProcess theKaonPlusInelastic; 00176 G4LEKaonPlusInelastic* theLEKaonPlusModel; 00177 G4HEKaonPlusInelastic* theHEKaonPlusModel; 00178 G4MultipleScattering theKaonPlusMult; 00179 G4hIonisation theKaonPlusIonisation; 00180 00181 // K - 00182 G4KaonMinusInelasticProcess theKaonMinusInelastic; 00183 G4LEKaonMinusInelastic* theLEKaonMinusModel; 00184 G4HEKaonMinusInelastic* theHEKaonMinusModel; 00185 G4MultipleScattering theKaonMinusMult; 00186 G4hIonisation theKaonMinusIonisation; 00187 #ifdef TRIUMF_STOP_KMINUS 00188 G4KaonMinusAbsorption theKaonMinusAbsorption; 00189 #else 00190 G4PiMinusAbsorptionAtRest theKaonMinusAbsorption; 00191 #endif 00192 00193 // K0L 00194 G4KaonZeroLInelasticProcess theKaonZeroLInelastic; 00195 G4LEKaonZeroLInelastic* theLEKaonZeroLModel; 00196 G4HEKaonZeroInelastic* theHEKaonZeroLModel; 00197 // K0Regeneration theK0LRegeneration; 00198 00199 // K0S 00200 G4KaonZeroSInelasticProcess theKaonZeroSInelastic; 00201 G4LEKaonZeroSInelastic* theLEKaonZeroSModel; 00202 G4HEKaonZeroInelastic* theHEKaonZeroSModel; 00203 00204 // Proton 00205 G4ProtonInelasticProcess theProtonInelastic; 00206 G4LEProtonInelastic* theLEProtonModel; 00207 G4HEProtonInelastic* theHEProtonModel; 00208 G4MultipleScattering theProtonMult; 00209 G4hIonisation theProtonIonisation; 00210 00211 // anti-proton 00212 G4AntiProtonInelasticProcess theAntiProtonInelastic; 00213 G4LEAntiProtonInelastic* theLEAntiProtonModel; 00214 G4HEAntiProtonInelastic* theHEAntiProtonModel; 00215 G4MultipleScattering theAntiProtonMult; 00216 G4hIonisation theAntiProtonIonisation; 00217 G4AntiProtonAnnihilationAtRest theAntiProtonAnnihilation; 00218 00219 // neutron 00220 G4NeutronInelasticProcess theNeutronInelastic; 00221 G4LENeutronInelastic* theLENeutronModel; 00222 G4HENeutronInelastic* theHENeutronModel; 00223 G4HadronFissionProcess theNeutronFission; 00224 G4LFission* theNeutronFissionModel; 00225 G4HadronCaptureProcess theNeutronCapture; 00226 G4LCapture* theNeutronCaptureModel; 00227 00228 00229 // anti-neutron 00230 G4AntiNeutronInelasticProcess theAntiNeutronInelastic; 00231 G4LEAntiNeutronInelastic* theLEAntiNeutronModel; 00232 G4HEAntiNeutronInelastic* theHEAntiNeutronModel; 00233 G4AntiNeutronAnnihilationAtRest theAntiNeutronAnnihilation; 00234 00235 // Lambda 00236 G4LambdaInelasticProcess theLambdaInelastic; 00237 G4LELambdaInelastic* theLELambdaModel; 00238 G4HELambdaInelastic* theHELambdaModel; 00239 00240 // AntiLambda 00241 G4AntiLambdaInelasticProcess theAntiLambdaInelastic; 00242 G4LEAntiLambdaInelastic* theLEAntiLambdaModel; 00243 G4HEAntiLambdaInelastic* theHEAntiLambdaModel; 00244 00245 // SigmaMinus 00246 G4SigmaMinusInelasticProcess theSigmaMinusInelastic; 00247 G4LESigmaMinusInelastic* theLESigmaMinusModel; 00248 G4HESigmaMinusInelastic* theHESigmaMinusModel; 00249 G4MultipleScattering theSigmaMinusMult; 00250 G4hIonisation theSigmaMinusIonisation; 00251 00252 // AntiSigmaMinus 00253 G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelastic; 00254 G4LEAntiSigmaMinusInelastic* theLEAntiSigmaMinusModel; 00255 G4HEAntiSigmaMinusInelastic* theHEAntiSigmaMinusModel; 00256 G4MultipleScattering theAntiSigmaMinusMult; 00257 G4hIonisation theAntiSigmaMinusIonisation; 00258 00259 // SigmaPlus 00260 G4SigmaPlusInelasticProcess theSigmaPlusInelastic; 00261 G4LESigmaPlusInelastic* theLESigmaPlusModel; 00262 G4HESigmaPlusInelastic* theHESigmaPlusModel; 00263 G4MultipleScattering theSigmaPlusMult; 00264 G4hIonisation theSigmaPlusIonisation; 00265 00266 // AntiSigmaPlus 00267 G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelastic; 00268 G4LEAntiSigmaPlusInelastic* theLEAntiSigmaPlusModel; 00269 G4HEAntiSigmaPlusInelastic* theHEAntiSigmaPlusModel; 00270 G4MultipleScattering theAntiSigmaPlusMult; 00271 G4hIonisation theAntiSigmaPlusIonisation; 00272 00273 // XiZero 00274 G4XiZeroInelasticProcess theXiZeroInelastic; 00275 G4LEXiZeroInelastic* theLEXiZeroModel; 00276 G4HEXiZeroInelastic* theHEXiZeroModel; 00277 00278 // AntiXiZero 00279 G4AntiXiZeroInelasticProcess theAntiXiZeroInelastic; 00280 G4LEAntiXiZeroInelastic* theLEAntiXiZeroModel; 00281 G4HEAntiXiZeroInelastic* theHEAntiXiZeroModel; 00282 00283 // XiMinus 00284 G4XiMinusInelasticProcess theXiMinusInelastic; 00285 G4LEXiMinusInelastic* theLEXiMinusModel; 00286 G4HEXiMinusInelastic* theHEXiMinusModel; 00287 G4MultipleScattering theXiMinusMult; 00288 G4hIonisation theXiMinusIonisation; 00289 00290 // AntiXiMinus 00291 G4AntiXiMinusInelasticProcess theAntiXiMinusInelastic; 00292 G4LEAntiXiMinusInelastic* theLEAntiXiMinusModel; 00293 G4HEAntiXiMinusInelastic* theHEAntiXiMinusModel; 00294 G4MultipleScattering theAntiXiMinusMult; 00295 G4hIonisation theAntiXiMinusIonisation; 00296 00297 // OmegaMinus 00298 G4OmegaMinusInelasticProcess theOmegaMinusInelastic; 00299 G4LEOmegaMinusInelastic* theLEOmegaMinusModel; 00300 G4HEOmegaMinusInelastic* theHEOmegaMinusModel; 00301 G4MultipleScattering theOmegaMinusMult; 00302 G4hIonisation theOmegaMinusIonisation; 00303 00304 // AntiOmegaMinus 00305 G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelastic; 00306 G4LEAntiOmegaMinusInelastic* theLEAntiOmegaMinusModel; 00307 G4HEAntiOmegaMinusInelastic* theHEAntiOmegaMinusModel; 00308 G4MultipleScattering theAntiOmegaMinusMult; 00309 G4hIonisation theAntiOmegaMinusIonisation; 00310 00311 00312 }; 00313 00314 00315 #endif 00316