00001 // 00002 // ******************************************************************** 00003 // * License and Disclaimer * 00004 // * * 00005 // * The Geant4 software is copyright of the Copyright Holders of * 00006 // * the Geant4 Collaboration. It is provided under the terms and * 00007 // * conditions of the Geant4 Software License, included in the file * 00008 // * LICENSE and available at http://cern.ch/geant4/license . These * 00009 // * include a list of copyright holders. * 00010 // * * 00011 // * Neither the authors of this software system, nor their employing * 00012 // * institutes,nor the agencies providing financial support for this * 00013 // * work make any representation or warranty, express or implied, * 00014 // * regarding this software system or assume any liability for its * 00015 // * use. Please see the license in the file LICENSE and URL above * 00016 // * for the full disclaimer and the limitation of liability. * 00017 // * * 00018 // * This code implementation is the result of the scientific and * 00019 // * technical work of the GEANT4 collaboration. * 00020 // * By using, copying, modifying or distributing the software (or * 00021 // * any work based on the software) you agree to acknowledge its * 00022 // * use in resulting scientific publications, and indicate your * 00023 // * acceptance of all terms of the Geant4 Software license. * 00024 // ******************************************************************** 00025 // 00026 // $Id$ 00027 // 00028 //--------------------------------------------------------------------------- 00029 // 00030 // ClassName: G4QPhotoNuclearPhysics 00031 // 00032 // Author: 2009 M. V. Kosov 00033 // 00034 // Modified: 00035 // 00036 //---------------------------------------------------------------------------- 00037 // 00038 00039 #ifndef G4QPhotoNuclearPhysics_h 00040 #define G4QPhotoNuclearPhysics_h 1 00041 00042 #include "G4VPhysicsConstructor.hh" 00043 #include "globals.hh" 00044 00045 #include "G4QMessenger.hh" 00046 00047 #include "G4QSynchRad.hh" 00048 #include "G4QInelastic.hh" 00049 00050 #include "G4ParticleDefinition.hh" 00051 #include "G4ParticleTable.hh" 00052 #include "G4Gamma.hh" 00053 #include "G4Electron.hh" 00054 #include "G4Positron.hh" 00055 #include "G4MuonPlus.hh" 00056 #include "G4MuonMinus.hh" 00057 #include "G4TauPlus.hh" 00058 #include "G4TauMinus.hh" 00059 #include "G4MesonConstructor.hh" 00060 #include "G4BaryonConstructor.hh" 00061 #include "G4ProcessManager.hh" 00062 00063 00064 class G4QPhotoNuclearPhysics : public G4VPhysicsConstructor 00065 { 00066 public: 00067 G4QPhotoNuclearPhysics(G4int verbose =1); 00068 G4QPhotoNuclearPhysics(const G4String& name); 00069 virtual ~G4QPhotoNuclearPhysics(); 00070 00071 void ConstructParticle(); 00072 void ConstructProcess(); 00073 00074 G4String GetSynchRadOnOff() {return synchrOn ? "on" : "off";} 00075 G4String GetGammaNuclearOnOff() {return gamNucOn ? "on" : "off";} 00076 G4String GetElPosNuclearOnOff() {return eleNucOn ? "on" : "off";} 00077 G4String GetMuonNuclearOnOff() {return muoNucOn ? "on" : "off";} 00078 G4String GetTauNuclearOnOff() {return tauNucOn ? "on" : "off";} 00079 00080 void SetSynchRadOnOff(G4String& aSwitch); 00081 void SetGammaNuclearOnOff(G4String& aSwitch); 00082 void SetElPosNuclearOnOff(G4String& aSwitch); 00083 void SetMuonNuclearOnOff(G4String& aSwitch); 00084 void SetTauNuclearOnOff(G4String& aSwitch); 00085 void SetMinGammaSR(G4double newValue); 00086 void SetPhotoNucBias(G4double newValue); 00087 00088 private: 00089 00090 void BuildSynchRad(); 00091 void BuildGammaNuclear(); 00092 void BuildElectroNuclear(); 00093 void BuildMuonNuclear(); 00094 void BuildTauNuclear(); 00095 00096 G4bool wasBuilt; // Flag of forbidden reactivation of processes 00097 G4bool SynchRActivated; // Flag of finished activation of SynchroRadiation 00098 G4bool GamNucActivated; // Flag of finished activation of gamma-nuclear 00099 G4bool EleNucActivated; // Flag of finished activation of electron-nuclear 00100 G4bool MuoNucActivated; // Flag of finished activation of muon-nuclear 00101 G4bool TauNucActivated; // Flag of finished activation of tau-nuclear 00102 G4bool synchrOn; // Switch flag for Synchrotron Radiation process 00103 G4double synchrMinGam; // MinimumGamma for SynchrotronRadiation activation 00104 G4bool gamNucOn; // Switch flag for the gamma-nuclear process 00105 G4bool eleNucOn; // Switch flag for the electron-nuclear process 00106 G4bool muoNucOn; // Switch flag for the electron-nuclear process 00107 G4bool tauNucOn; // Switch flag for the electron-nuclear process 00108 G4double photoNucBias; // Biasing factor for photo-nuclear processes 00109 00110 G4QInelastic* inelastic; 00111 G4QSynchRad* synchrad; 00112 G4QMessenger* theMessenger; 00113 }; 00114 00115 #endif