00001 // 00002 // ******************************************************************** 00003 // * DISCLAIMER * 00004 // * * 00005 // * The following disclaimer summarizes all the specific disclaimers * 00006 // * of contributors to this software. The specific disclaimers,which * 00007 // * govern, are listed with their locations in: * 00008 // * http://cern.ch/geant4/license * 00009 // * * 00010 // * Neither the authors of this software system, nor their employing * 00011 // * institutes,nor the agencies providing financial support for this * 00012 // * work make any representation or warranty, express or implied, * 00013 // * regarding this software system or assume any liability for its * 00014 // * use. * 00015 // * * 00016 // * This code implementation is the intellectual property of the * 00017 // * GEANT4 collaboration. * 00018 // * By copying, distributing or modifying the Program (or any work * 00019 // * based on the Program) you indicate your acceptance of this * 00020 // * statement, and all its terms. * 00021 // ******************************************************************** 00022 // 00023 // 00024 // $Id: ExN04HadronPhysics.hh,v 1.1.1.1 2004/09/28 05:16:53 liwd Exp $ 00025 // GEANT4 tag $Name: G4Svc-00-01-52 $ 00026 // 00027 // 00028 // ------------------------------------------------------------ 00029 // GEANT 4 class header file 00030 // Class Description: 00031 // This class is an derived class of G4VPhysicsConstructor 00032 // 00033 // ------------------------------------------- 00034 // History 00035 // first version 12 Nov. 2000 by H.Kurashige 00036 // ------------------------------------------------------------ 00037 #ifndef ExN04HadronPhysics_h 00038 #define ExN04HadronPhysics_h 1 00039 00040 #include "globals.hh" 00041 #include "G4ios.hh" 00042 00043 #include "G4VPhysicsConstructor.hh" 00044 00045 #include "G4MultipleScattering.hh" 00046 #include "G4hIonisation.hh" 00047 00048 #include "G4HadronElasticProcess.hh" 00049 #include "G4HadronFissionProcess.hh" 00050 #include "G4HadronCaptureProcess.hh" 00051 00052 #include "G4PionPlusInelasticProcess.hh" 00053 #include "G4PionMinusInelasticProcess.hh" 00054 #include "G4KaonPlusInelasticProcess.hh" 00055 #include "G4KaonZeroSInelasticProcess.hh" 00056 #include "G4KaonZeroLInelasticProcess.hh" 00057 #include "G4KaonMinusInelasticProcess.hh" 00058 #include "G4ProtonInelasticProcess.hh" 00059 #include "G4AntiProtonInelasticProcess.hh" 00060 #include "G4NeutronInelasticProcess.hh" 00061 #include "G4AntiNeutronInelasticProcess.hh" 00062 #include "G4LambdaInelasticProcess.hh" 00063 #include "G4AntiLambdaInelasticProcess.hh" 00064 #include "G4SigmaPlusInelasticProcess.hh" 00065 #include "G4SigmaMinusInelasticProcess.hh" 00066 #include "G4AntiSigmaPlusInelasticProcess.hh" 00067 #include "G4AntiSigmaMinusInelasticProcess.hh" 00068 #include "G4XiZeroInelasticProcess.hh" 00069 #include "G4XiMinusInelasticProcess.hh" 00070 #include "G4AntiXiZeroInelasticProcess.hh" 00071 #include "G4AntiXiMinusInelasticProcess.hh" 00072 #include "G4DeuteronInelasticProcess.hh" 00073 #include "G4TritonInelasticProcess.hh" 00074 #include "G4AlphaInelasticProcess.hh" 00075 #include "G4OmegaMinusInelasticProcess.hh" 00076 #include "G4AntiOmegaMinusInelasticProcess.hh" 00077 00078 // Low-energy Models 00079 #include "G4LElastic.hh" 00080 #include "G4LFission.hh" 00081 #include "G4LCapture.hh" 00082 00083 #include "G4LEPionPlusInelastic.hh" 00084 #include "G4LEPionMinusInelastic.hh" 00085 #include "G4LEKaonPlusInelastic.hh" 00086 #include "G4LEKaonZeroSInelastic.hh" 00087 #include "G4LEKaonZeroLInelastic.hh" 00088 #include "G4LEKaonMinusInelastic.hh" 00089 #include "G4LEProtonInelastic.hh" 00090 #include "G4LEAntiProtonInelastic.hh" 00091 #include "G4LENeutronInelastic.hh" 00092 #include "G4LEAntiNeutronInelastic.hh" 00093 #include "G4LELambdaInelastic.hh" 00094 #include "G4LEAntiLambdaInelastic.hh" 00095 #include "G4LESigmaPlusInelastic.hh" 00096 #include "G4LESigmaMinusInelastic.hh" 00097 #include "G4LEAntiSigmaPlusInelastic.hh" 00098 #include "G4LEAntiSigmaMinusInelastic.hh" 00099 #include "G4LEXiZeroInelastic.hh" 00100 #include "G4LEXiMinusInelastic.hh" 00101 #include "G4LEAntiXiZeroInelastic.hh" 00102 #include "G4LEAntiXiMinusInelastic.hh" 00103 #include "G4LEDeuteronInelastic.hh" 00104 #include "G4LETritonInelastic.hh" 00105 #include "G4LEAlphaInelastic.hh" 00106 #include "G4LEOmegaMinusInelastic.hh" 00107 #include "G4LEAntiOmegaMinusInelastic.hh" 00108 00109 // High-energy Models 00110 00111 #include "G4HEPionPlusInelastic.hh" 00112 #include "G4HEPionMinusInelastic.hh" 00113 #include "G4HEKaonPlusInelastic.hh" 00114 #include "G4HEKaonZeroInelastic.hh" 00115 #include "G4HEKaonZeroInelastic.hh" 00116 #include "G4HEKaonMinusInelastic.hh" 00117 #include "G4HEProtonInelastic.hh" 00118 #include "G4HEAntiProtonInelastic.hh" 00119 #include "G4HENeutronInelastic.hh" 00120 #include "G4HEAntiNeutronInelastic.hh" 00121 #include "G4HELambdaInelastic.hh" 00122 #include "G4HEAntiLambdaInelastic.hh" 00123 #include "G4HESigmaPlusInelastic.hh" 00124 #include "G4HESigmaMinusInelastic.hh" 00125 #include "G4HEAntiSigmaPlusInelastic.hh" 00126 #include "G4HEAntiSigmaMinusInelastic.hh" 00127 #include "G4HEXiZeroInelastic.hh" 00128 #include "G4HEXiMinusInelastic.hh" 00129 #include "G4HEAntiXiZeroInelastic.hh" 00130 #include "G4HEAntiXiMinusInelastic.hh" 00131 #include "G4HEOmegaMinusInelastic.hh" 00132 #include "G4HEAntiOmegaMinusInelastic.hh" 00133 00134 // Stopping processes 00135 #include "G4AntiProtonAnnihilationAtRest.hh" 00136 #include "G4AntiNeutronAnnihilationAtRest.hh" 00137 00138 #ifdef TRIUMF_STOP_PIMINUS 00139 #include "G4PionMinusAbsorptionAtRest.hh" 00140 #else 00141 #include "G4PiMinusAbsorptionAtRest.hh" 00142 #endif 00143 #ifdef TRIUMF_STOP_KMINUS 00144 #include "G4KaonMinusAbsorption.hh" 00145 #else 00146 #include "G4KaonMinusAbsorptionAtRest.hh" 00147 #endif 00148 00149 class ExN04HadronPhysics : public G4VPhysicsConstructor 00150 { 00151 public: 00152 ExN04HadronPhysics(const G4String& name ="hadron"); 00153 virtual ~ExN04HadronPhysics(); 00154 00155 public: 00156 // This method will be invoked in the Construct() method. 00157 // each particle type will be instantiated 00158 virtual void ConstructParticle(); 00159 00160 // This method will be invoked in the Construct() method. 00161 // each physics process will be instantiated and 00162 // registered to the process manager of each particle type 00163 virtual void ConstructProcess(); 00164 00165 protected: 00166 // Elastic Process 00167 G4HadronElasticProcess theElasticProcess; 00168 G4LElastic* theElasticModel; 00169 00170 // Pi + 00171 G4PionPlusInelasticProcess thePionPlusInelastic; 00172 G4LEPionPlusInelastic* theLEPionPlusModel; 00173 G4HEPionPlusInelastic* theHEPionPlusModel; 00174 G4MultipleScattering thePionPlusMult; 00175 G4hIonisation thePionPlusIonisation; 00176 00177 // Pi - 00178 G4PionMinusInelasticProcess thePionMinusInelastic; 00179 G4LEPionMinusInelastic* theLEPionMinusModel; 00180 G4HEPionMinusInelastic* theHEPionMinusModel; 00181 G4MultipleScattering thePionMinusMult; 00182 G4hIonisation thePionMinusIonisation; 00183 #ifdef TRIUMF_STOP_PIMINUS 00184 G4PionMinusAbsorptionAtRest thePionMinusAbsorption; 00185 #else 00186 G4PiMinusAbsorptionAtRest thePionMinusAbsorption; 00187 #endif 00188 00189 // K + 00190 G4KaonPlusInelasticProcess theKaonPlusInelastic; 00191 G4LEKaonPlusInelastic* theLEKaonPlusModel; 00192 G4HEKaonPlusInelastic* theHEKaonPlusModel; 00193 G4MultipleScattering theKaonPlusMult; 00194 G4hIonisation theKaonPlusIonisation; 00195 00196 // K - 00197 G4KaonMinusInelasticProcess theKaonMinusInelastic; 00198 G4LEKaonMinusInelastic* theLEKaonMinusModel; 00199 G4HEKaonMinusInelastic* theHEKaonMinusModel; 00200 G4MultipleScattering theKaonMinusMult; 00201 G4hIonisation theKaonMinusIonisation; 00202 #ifdef TRIUMF_STOP_KMINUS 00203 G4KaonMinusAbsorption theKaonMinusAbsorption; 00204 #else 00205 G4PiMinusAbsorptionAtRest theKaonMinusAbsorption; 00206 #endif 00207 00208 // K0L 00209 G4KaonZeroLInelasticProcess theKaonZeroLInelastic; 00210 G4LEKaonZeroLInelastic* theLEKaonZeroLModel; 00211 G4HEKaonZeroInelastic* theHEKaonZeroLModel; 00212 00213 // K0S 00214 G4KaonZeroSInelasticProcess theKaonZeroSInelastic; 00215 G4LEKaonZeroSInelastic* theLEKaonZeroSModel; 00216 G4HEKaonZeroInelastic* theHEKaonZeroSModel; 00217 00218 // Proton 00219 G4ProtonInelasticProcess theProtonInelastic; 00220 G4LEProtonInelastic* theLEProtonModel; 00221 G4HEProtonInelastic* theHEProtonModel; 00222 G4MultipleScattering theProtonMult; 00223 G4hIonisation theProtonIonisation; 00224 00225 // anti-proton 00226 G4AntiProtonInelasticProcess theAntiProtonInelastic; 00227 G4LEAntiProtonInelastic* theLEAntiProtonModel; 00228 G4HEAntiProtonInelastic* theHEAntiProtonModel; 00229 G4MultipleScattering theAntiProtonMult; 00230 G4hIonisation theAntiProtonIonisation; 00231 G4AntiProtonAnnihilationAtRest theAntiProtonAnnihilation; 00232 00233 // neutron 00234 G4NeutronInelasticProcess theNeutronInelastic; 00235 G4LENeutronInelastic* theLENeutronModel; 00236 G4HENeutronInelastic* theHENeutronModel; 00237 G4HadronFissionProcess theNeutronFission; 00238 G4LFission* theNeutronFissionModel; 00239 G4HadronCaptureProcess theNeutronCapture; 00240 G4LCapture* theNeutronCaptureModel; 00241 00242 00243 // anti-neutron 00244 G4AntiNeutronInelasticProcess theAntiNeutronInelastic; 00245 G4LEAntiNeutronInelastic* theLEAntiNeutronModel; 00246 G4HEAntiNeutronInelastic* theHEAntiNeutronModel; 00247 G4AntiNeutronAnnihilationAtRest theAntiNeutronAnnihilation; 00248 00249 // Lambda 00250 G4LambdaInelasticProcess theLambdaInelastic; 00251 G4LELambdaInelastic* theLELambdaModel; 00252 G4HELambdaInelastic* theHELambdaModel; 00253 00254 // AntiLambda 00255 G4AntiLambdaInelasticProcess theAntiLambdaInelastic; 00256 G4LEAntiLambdaInelastic* theLEAntiLambdaModel; 00257 G4HEAntiLambdaInelastic* theHEAntiLambdaModel; 00258 00259 // SigmaMinus 00260 G4SigmaMinusInelasticProcess theSigmaMinusInelastic; 00261 G4LESigmaMinusInelastic* theLESigmaMinusModel; 00262 G4HESigmaMinusInelastic* theHESigmaMinusModel; 00263 G4MultipleScattering theSigmaMinusMult; 00264 G4hIonisation theSigmaMinusIonisation; 00265 00266 // AntiSigmaMinus 00267 G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelastic; 00268 G4LEAntiSigmaMinusInelastic* theLEAntiSigmaMinusModel; 00269 G4HEAntiSigmaMinusInelastic* theHEAntiSigmaMinusModel; 00270 G4MultipleScattering theAntiSigmaMinusMult; 00271 G4hIonisation theAntiSigmaMinusIonisation; 00272 00273 // SigmaPlus 00274 G4SigmaPlusInelasticProcess theSigmaPlusInelastic; 00275 G4LESigmaPlusInelastic* theLESigmaPlusModel; 00276 G4HESigmaPlusInelastic* theHESigmaPlusModel; 00277 G4MultipleScattering theSigmaPlusMult; 00278 G4hIonisation theSigmaPlusIonisation; 00279 00280 // AntiSigmaPlus 00281 G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelastic; 00282 G4LEAntiSigmaPlusInelastic* theLEAntiSigmaPlusModel; 00283 G4HEAntiSigmaPlusInelastic* theHEAntiSigmaPlusModel; 00284 G4MultipleScattering theAntiSigmaPlusMult; 00285 G4hIonisation theAntiSigmaPlusIonisation; 00286 00287 // XiZero 00288 G4XiZeroInelasticProcess theXiZeroInelastic; 00289 G4LEXiZeroInelastic* theLEXiZeroModel; 00290 G4HEXiZeroInelastic* theHEXiZeroModel; 00291 00292 // AntiXiZero 00293 G4AntiXiZeroInelasticProcess theAntiXiZeroInelastic; 00294 G4LEAntiXiZeroInelastic* theLEAntiXiZeroModel; 00295 G4HEAntiXiZeroInelastic* theHEAntiXiZeroModel; 00296 00297 // XiMinus 00298 G4XiMinusInelasticProcess theXiMinusInelastic; 00299 G4LEXiMinusInelastic* theLEXiMinusModel; 00300 G4HEXiMinusInelastic* theHEXiMinusModel; 00301 G4MultipleScattering theXiMinusMult; 00302 G4hIonisation theXiMinusIonisation; 00303 00304 // AntiXiMinus 00305 G4AntiXiMinusInelasticProcess theAntiXiMinusInelastic; 00306 G4LEAntiXiMinusInelastic* theLEAntiXiMinusModel; 00307 G4HEAntiXiMinusInelastic* theHEAntiXiMinusModel; 00308 G4MultipleScattering theAntiXiMinusMult; 00309 G4hIonisation theAntiXiMinusIonisation; 00310 00311 // OmegaMinus 00312 G4OmegaMinusInelasticProcess theOmegaMinusInelastic; 00313 G4LEOmegaMinusInelastic* theLEOmegaMinusModel; 00314 G4HEOmegaMinusInelastic* theHEOmegaMinusModel; 00315 G4MultipleScattering theOmegaMinusMult; 00316 G4hIonisation theOmegaMinusIonisation; 00317 00318 // AntiOmegaMinus 00319 G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelastic; 00320 G4LEAntiOmegaMinusInelastic* theLEAntiOmegaMinusModel; 00321 G4HEAntiOmegaMinusInelastic* theHEAntiOmegaMinusModel; 00322 G4MultipleScattering theAntiOmegaMinusMult; 00323 G4hIonisation theAntiOmegaMinusIonisation; 00324 00325 00326 }; 00327 00328 00329 #endif 00330