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 // * * 00025 // * cosmicray_charging advanced example for Geant4 * 00026 // * (adapted simulation of test-mass charging in the LISA mission) * 00027 // * * 00028 // * Henrique Araujo (h.araujo@imperial.ac.uk) & Peter Wass * 00029 // * Imperial College London * 00030 // * * 00031 // ******************************************************************** 00032 00033 #ifndef LISAPhysicsList_h 00034 #define LISAPhysicsList_h 1 00035 00036 #include "G4VUserPhysicsList.hh" 00037 #include "globals.hh" 00038 00039 // Hadronics 00040 #include "G4HadronElasticProcess.hh" 00041 #include "G4HadronInelasticProcess.hh" 00042 #include "G4HadronCaptureProcess.hh" 00043 #include "G4HadronFissionProcess.hh" 00044 00045 // Inelastic Processes 00046 #include "G4ProtonInelasticProcess.hh" 00047 #include "G4AntiProtonInelasticProcess.hh" 00048 #include "G4NeutronInelasticProcess.hh" 00049 #include "G4AntiNeutronInelasticProcess.hh" 00050 #include "G4PionPlusInelasticProcess.hh" 00051 #include "G4PionMinusInelasticProcess.hh" 00052 #include "G4KaonPlusInelasticProcess.hh" 00053 #include "G4KaonZeroSInelasticProcess.hh" 00054 #include "G4KaonZeroLInelasticProcess.hh" 00055 #include "G4KaonMinusInelasticProcess.hh" 00056 #include "G4DeuteronInelasticProcess.hh" 00057 #include "G4TritonInelasticProcess.hh" 00058 #include "G4AlphaInelasticProcess.hh" 00059 #include "G4LambdaInelasticProcess.hh" 00060 #include "G4AntiLambdaInelasticProcess.hh" 00061 #include "G4OmegaMinusInelasticProcess.hh" 00062 #include "G4AntiOmegaMinusInelasticProcess.hh" 00063 #include "G4SigmaMinusInelasticProcess.hh" 00064 #include "G4AntiSigmaMinusInelasticProcess.hh" 00065 #include "G4SigmaPlusInelasticProcess.hh" 00066 #include "G4AntiSigmaPlusInelasticProcess.hh" 00067 #include "G4XiZeroInelasticProcess.hh" 00068 #include "G4AntiXiZeroInelasticProcess.hh" 00069 #include "G4XiMinusInelasticProcess.hh" 00070 #include "G4AntiXiMinusInelasticProcess.hh" 00071 00072 // Low-energy Parameterised Models: 1 to 25 GeV 00073 #include "G4LElastic.hh" 00074 #include "G4LEPionPlusInelastic.hh" 00075 #include "G4LEPionMinusInelastic.hh" 00076 #include "G4LEKaonPlusInelastic.hh" 00077 #include "G4LEKaonZeroSInelastic.hh" 00078 #include "G4LEKaonZeroLInelastic.hh" 00079 #include "G4LEKaonMinusInelastic.hh" 00080 // #include "G4LEProtonInelastic.hh" 00081 #include "G4LEAntiProtonInelastic.hh" 00082 // #include "G4LENeutronInelastic.hh" 00083 #include "G4LEAntiNeutronInelastic.hh" 00084 #include "G4LEDeuteronInelastic.hh" 00085 #include "G4LETritonInelastic.hh" 00086 #include "G4LEAlphaInelastic.hh" 00087 #include "G4LELambdaInelastic.hh" 00088 #include "G4LEAntiLambdaInelastic.hh" 00089 #include "G4LEOmegaMinusInelastic.hh" 00090 #include "G4LEAntiOmegaMinusInelastic.hh" 00091 #include "G4LESigmaMinusInelastic.hh" 00092 #include "G4LEAntiSigmaMinusInelastic.hh" 00093 #include "G4LESigmaPlusInelastic.hh" 00094 #include "G4LEAntiSigmaPlusInelastic.hh" 00095 #include "G4LEXiZeroInelastic.hh" 00096 #include "G4LEAntiXiZeroInelastic.hh" 00097 #include "G4LEXiMinusInelastic.hh" 00098 #include "G4LEAntiXiMinusInelastic.hh" 00099 // neutrons 00100 #include "G4LCapture.hh" 00101 #include "G4LFission.hh" 00102 00103 // High-energy Parameterised Models: 25 GeV to 10 TeV 00104 // #include "G4HEPionPlusInelastic.hh" 00105 // #include "G4HEPionMinusInelastic.hh" 00106 // #include "G4HEKaonPlusInelastic.hh" 00107 // #include "G4HEKaonZeroInelastic.hh" 00108 // #include "G4HEKaonZeroInelastic.hh" 00109 // #include "G4HEKaonMinusInelastic.hh" 00110 // #include "G4HEProtonInelastic.hh" 00111 // #include "G4HENeutronInelastic.hh" 00112 #include "G4HEAntiProtonInelastic.hh" 00113 #include "G4HEAntiNeutronInelastic.hh" 00114 #include "G4HELambdaInelastic.hh" 00115 #include "G4HEAntiLambdaInelastic.hh" 00116 #include "G4HEOmegaMinusInelastic.hh" 00117 #include "G4HEAntiOmegaMinusInelastic.hh" 00118 #include "G4HESigmaMinusInelastic.hh" 00119 #include "G4HEAntiSigmaMinusInelastic.hh" 00120 #include "G4HESigmaPlusInelastic.hh" 00121 #include "G4HEAntiSigmaPlusInelastic.hh" 00122 #include "G4HEXiZeroInelastic.hh" 00123 #include "G4HEAntiXiZeroInelastic.hh" 00124 #include "G4HEXiMinusInelastic.hh" 00125 #include "G4HEAntiXiMinusInelastic.hh" 00126 00127 // // Neutron HP Models: Thermal to 19 MeV 00128 // #include "G4NeutronHPElastic.hh" 00129 // #include "G4NeutronHPElasticData.hh" 00130 // #include "G4NeutronHPCapture.hh" 00131 // #include "G4NeutronHPCaptureData.hh" 00132 // #include "G4NeutronHPInelastic.hh" 00133 // #include "G4NeutronHPInelasticData.hh" 00134 00135 // Stopping processes 00136 #include "G4PiMinusAbsorptionAtRest.hh" 00137 #include "G4KaonMinusAbsorptionAtRest.hh" 00138 #include "G4AntiProtonAnnihilationAtRest.hh" 00139 #include "G4AntiNeutronAnnihilationAtRest.hh" 00140 00141 // Generator models: HE 00142 #include "G4TheoFSGenerator.hh" 00143 #include "G4Evaporation.hh" 00144 #include "G4CompetitiveFission.hh" 00145 #include "G4FermiBreakUp.hh" 00146 #include "G4StatMF.hh" 00147 #include "G4ExcitationHandler.hh" 00148 #include "G4PreCompoundModel.hh" 00149 #include "G4GeneratorPrecompoundInterface.hh" 00150 #include "G4QGSModel.hh" 00151 #include "G4QGSParticipants.hh" 00152 #include "G4QGSMFragmentation.hh" 00153 #include "G4ExcitedStringDecay.hh" 00154 00155 // Kinetic Model 00156 #include "G4BinaryCascade.hh" 00157 #include "G4BinaryLightIonReaction.hh" 00158 #include "G4TripathiCrossSection.hh" 00159 #include "G4IonsShenCrossSection.hh" 00160 00161 00162 /////////////////////////// 00163 // ElectroNuclear Physics 00164 00165 // photonuclear and electronuclear reaction 00166 #include "G4PhotoNuclearProcess.hh" 00167 #include "G4ElectronNuclearProcess.hh" 00168 #include "G4PositronNuclearProcess.hh" 00169 #include "G4GammaNuclearReaction.hh" 00170 #include "G4ElectroNuclearReaction.hh" 00171 00172 // CHIPS fragmentation model 00173 #include "G4TheoFSGenerator.hh" 00174 #include "G4StringChipsParticleLevelInterface.hh" 00175 #include "G4QGSModel.hh" 00176 #include "G4GammaParticipants.hh" 00177 #include "G4QGSMFragmentation.hh" 00178 #include "G4ExcitedStringDecay.hh" 00179 00180 // muon photonuclear reaction 00181 #include "G4MuNuclearInteraction.hh" 00182 00183 00184 00185 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 00186 00187 class LISAPhysicsList: public G4VUserPhysicsList { 00188 00189 public: 00190 LISAPhysicsList(); 00191 virtual ~LISAPhysicsList(); 00192 00193 public: 00194 virtual void SetCuts(); 00195 00196 protected: 00197 // particles and physics 00198 virtual void ConstructParticle(); 00199 virtual void ConstructProcess(); 00200 00201 // physics processes 00202 virtual void AddTransportation(); 00203 virtual void ElectromagneticPhysics(); 00204 virtual void HadronicPhysics(); 00205 virtual void ElectroNuclearPhysics(); 00206 virtual void GeneralPhysics(); 00207 00208 private: 00209 G4int VerboseLevel; 00210 protected: 00211 00212 // PhotoNuclear ************************************************* 00213 00214 G4PhotoNuclearProcess thePhotoNuclearProcess; 00215 G4GammaNuclearReaction* theGammaReaction; 00216 G4TheoFSGenerator* theHEModel_PN; 00217 G4StringChipsParticleLevelInterface* theCascade_PN; 00218 G4QGSModel<G4GammaParticipants> theStringModel_PN; 00219 G4QGSMFragmentation theFragmentation_PN; 00220 G4ExcitedStringDecay* theStringDecay_PN; 00221 // ElectronNuclear 00222 G4ElectronNuclearProcess theElectronNuclearProcess; 00223 G4ElectroNuclearReaction* theElectroReaction; 00224 // PositronNuclear 00225 G4PositronNuclearProcess thePositronNuclearProcess; 00226 // MuNucleus 00227 G4MuNuclearInteraction theMuMinusNuclearInteraction; 00228 G4MuNuclearInteraction theMuPlusNuclearInteraction; 00229 00230 00231 // Hadronics ************************************************* 00232 00233 // Binary Cascade 00234 G4TheoFSGenerator* theHEModel; 00235 G4Evaporation* theEvaporation; 00236 G4FermiBreakUp* theFermiBreakUp; 00237 G4StatMF* theMF; 00238 G4ExcitationHandler* theHandler; 00239 G4PreCompoundModel* thePreEquilib; 00240 G4GeneratorPrecompoundInterface* theCascade; 00241 G4VPartonStringModel* theStringModel; 00242 G4BinaryCascade* theCasc; 00243 G4VLongitudinalStringDecay* theFragmentation; 00244 G4ExcitedStringDecay* theStringDecay; 00245 G4BinaryCascade* theCascForPi; 00246 // Cascade for light ions 00247 G4BinaryLightIonReaction* theIonCascade; 00248 G4TripathiCrossSection* theTripathiCrossSection; 00249 G4IonsShenCrossSection* theShenCrossSection; 00250 G4BinaryLightIonReaction* theGenIonCascade; 00251 00252 00253 // Elastic Process 00254 G4HadronElasticProcess theElasticProcess; 00255 G4LElastic* theElasticModel; 00256 00257 // pi+ 00258 G4PionPlusInelasticProcess thePionPlusInelasticProcess; 00259 G4LEPionPlusInelastic* theLEPionPlusInelasticModel; 00260 00261 // pi- 00262 G4PionMinusInelasticProcess thePionMinusInelasticProcess; 00263 G4LEPionMinusInelastic* theLEPionMinusInelasticModel; 00264 G4PiMinusAbsorptionAtRest thePiMinusAbsorptionAtRest; 00265 00266 // kaon+ 00267 G4KaonPlusInelasticProcess theKaonPlusInelasticProcess; 00268 G4LEKaonPlusInelastic* theLEKaonPlusInelasticModel; 00269 00270 // kaon0S 00271 G4KaonZeroSInelasticProcess theKaonZeroSInelasticProcess; 00272 G4LEKaonZeroSInelastic* theLEKaonZeroSInelasticModel; 00273 00274 // kaon0L 00275 G4KaonZeroLInelasticProcess theKaonZeroLInelasticProcess; 00276 G4LEKaonZeroLInelastic* theLEKaonZeroLInelasticModel; 00277 00278 // kaon- 00279 G4KaonMinusInelasticProcess theKaonMinusInelasticProcess; 00280 G4LEKaonMinusInelastic* theLEKaonMinusInelasticModel; 00281 G4KaonMinusAbsorptionAtRest theKaonMinusAbsorptionAtRest; 00282 00283 // proton 00284 G4ProtonInelasticProcess theProtonInelasticProcess; 00285 00286 // anti-proton 00287 G4AntiProtonInelasticProcess theAntiProtonInelasticProcess; 00288 G4LEAntiProtonInelastic* theLEAntiProtonInelasticModel; 00289 G4HEAntiProtonInelastic* theHEAntiProtonInelasticModel; 00290 G4AntiProtonAnnihilationAtRest theAntiProtonAnnihilationAtRest; 00291 00292 // neutron 00293 G4HadronElasticProcess theNeutronElasticProcess; 00294 G4LElastic* theNeutronElasticModel1; 00295 // G4NeutronHPElastic* theNeutronElasticModel2; 00296 // G4NeutronHPElasticData* theNeutronElasticData; 00297 G4NeutronInelasticProcess theNeutronInelasticProcess; 00298 // G4NeutronHPInelastic* theNeutronInelasticModel1; 00299 // G4NeutronHPInelasticData* theNeutronInelasticData1; 00300 G4HadronCaptureProcess theNeutronCaptureProcess; 00301 G4LCapture* theNeutronCaptureModel1; 00302 // G4NeutronHPCapture* theNeutronCaptureModel2; 00303 // G4NeutronHPCaptureData* theNeutronCaptureData; 00304 G4HadronFissionProcess theNeutronFissionProcess; 00305 G4LFission* theNeutronFissionModel; 00306 00307 // anti-neutron 00308 G4AntiNeutronInelasticProcess theAntiNeutronInelasticProcess; 00309 G4LEAntiNeutronInelastic* theLEAntiNeutronInelasticModel; 00310 G4HEAntiNeutronInelastic* theHEAntiNeutronInelasticModel; 00311 G4AntiNeutronAnnihilationAtRest theAntiNeutronAnnihilationAtRest; 00312 00313 // deuteron 00314 G4DeuteronInelasticProcess* theDeuteronInelasticProcess; 00315 G4LEDeuteronInelastic* theLEDeuteronInelasticModel; 00316 00317 // triton 00318 G4TritonInelasticProcess* theTritonInelasticProcess; 00319 G4LETritonInelastic* theLETritonInelasticModel; 00320 00321 // alpha 00322 G4AlphaInelasticProcess* theAlphaInelasticProcess; 00323 G4LEAlphaInelastic* theLEAlphaInelasticModel; 00324 00325 // He-3 00326 G4HadronInelasticProcess* theHe3InelasticProcess; 00327 00328 // Generic Ion 00329 G4HadronInelasticProcess* theGenericIonInelasticProcess; 00330 00331 // lambda 00332 G4LambdaInelasticProcess theLambdaInelasticProcess; 00333 G4LELambdaInelastic* theLELambdaInelasticModel; 00334 G4HELambdaInelastic* theHELambdaInelasticModel; 00335 00336 // anti-lambda 00337 G4AntiLambdaInelasticProcess theAntiLambdaInelasticProcess; 00338 G4LEAntiLambdaInelastic* theLEAntiLambdaInelasticModel; 00339 G4HEAntiLambdaInelastic* theHEAntiLambdaInelasticModel; 00340 00341 // omega- 00342 G4OmegaMinusInelasticProcess theOmegaMinusInelasticProcess; 00343 G4LEOmegaMinusInelastic* theLEOmegaMinusInelasticModel; 00344 G4HEOmegaMinusInelastic* theHEOmegaMinusInelasticModel; 00345 00346 // anti-omega- 00347 G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelasticProcess; 00348 G4LEAntiOmegaMinusInelastic* theLEAntiOmegaMinusInelasticModel; 00349 G4HEAntiOmegaMinusInelastic* theHEAntiOmegaMinusInelasticModel; 00350 00351 // sigma- 00352 G4SigmaMinusInelasticProcess theSigmaMinusInelasticProcess; 00353 G4LESigmaMinusInelastic* theLESigmaMinusInelasticModel; 00354 G4HESigmaMinusInelastic* theHESigmaMinusInelasticModel; 00355 00356 // anti-sigma- 00357 G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelasticProcess; 00358 G4LEAntiSigmaMinusInelastic* theLEAntiSigmaMinusInelasticModel; 00359 G4HEAntiSigmaMinusInelastic* theHEAntiSigmaMinusInelasticModel; 00360 00361 // sigma+ 00362 G4SigmaPlusInelasticProcess theSigmaPlusInelasticProcess; 00363 G4LESigmaPlusInelastic* theLESigmaPlusInelasticModel; 00364 G4HESigmaPlusInelastic* theHESigmaPlusInelasticModel; 00365 00366 // anti-sigma+ 00367 G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelasticProcess; 00368 G4LEAntiSigmaPlusInelastic* theLEAntiSigmaPlusInelasticModel; 00369 G4HEAntiSigmaPlusInelastic* theHEAntiSigmaPlusInelasticModel; 00370 00371 // xi0 00372 G4XiZeroInelasticProcess theXiZeroInelasticProcess; 00373 G4LEXiZeroInelastic* theLEXiZeroInelasticModel; 00374 G4HEXiZeroInelastic* theHEXiZeroInelasticModel; 00375 00376 // anti-xi0 00377 G4AntiXiZeroInelasticProcess theAntiXiZeroInelasticProcess; 00378 G4LEAntiXiZeroInelastic* theLEAntiXiZeroInelasticModel; 00379 G4HEAntiXiZeroInelastic* theHEAntiXiZeroInelasticModel; 00380 00381 // xi- 00382 G4XiMinusInelasticProcess theXiMinusInelasticProcess; 00383 G4LEXiMinusInelastic* theLEXiMinusInelasticModel; 00384 G4HEXiMinusInelastic* theHEXiMinusInelasticModel; 00385 00386 // anti-xi- 00387 G4AntiXiMinusInelasticProcess theAntiXiMinusInelasticProcess; 00388 G4LEAntiXiMinusInelastic* theLEAntiXiMinusInelasticModel; 00389 G4HEAntiXiMinusInelastic* theHEAntiXiMinusInelasticModel; 00390 00391 00392 }; 00393 00394 #endif