G4QAtomicPhysics.cc

Go to the documentation of this file.
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:   G4QAtomicPhysics
00031 //
00032 // Author:      M. Kosov 20.11.2009 (similar to G4QAtomicPhysics)
00033 //
00034 // Modified:
00035 //
00036 //----------------------------------------------------------------------------
00037 //
00038 
00039 #include "G4QAtomicPhysics.hh"
00040 #include "G4ParticleDefinition.hh"
00041 #include "G4ProcessManager.hh"
00042 #include "G4LossTableManager.hh"
00043 #include "G4EmProcessOptions.hh"
00044 
00045 #include "G4ComptonScattering.hh"
00046 #include "G4GammaConversion.hh"
00047 #include "G4PhotoElectricEffect.hh"
00048 
00049 #include "G4eMultipleScattering.hh"
00050 #include "G4MuMultipleScattering.hh"
00051 #include "G4hMultipleScattering.hh"
00052 
00053 #include "G4eIonisation.hh"
00054 #include "G4eBremsstrahlung.hh"
00055 #include "G4eplusAnnihilation.hh"
00056 
00057 #include "G4MuIonisation.hh"
00058 #include "G4MuBremsstrahlung.hh"
00059 #include "G4MuPairProduction.hh"
00060 #include "G4hBremsstrahlung.hh"
00061 #include "G4hPairProduction.hh"
00062 
00063 #include "G4hIonisation.hh"
00064 #include "G4ionIonisation.hh"
00065 
00066 #include "G4Gamma.hh"
00067 #include "G4Electron.hh"
00068 #include "G4Positron.hh"
00069 #include "G4MuonPlus.hh"
00070 #include "G4MuonMinus.hh"
00071 #include "G4PionPlus.hh"
00072 #include "G4PionMinus.hh"
00073 #include "G4KaonPlus.hh"
00074 #include "G4KaonMinus.hh"
00075 #include "G4Proton.hh"
00076 #include "G4AntiProton.hh"
00077 #include "G4SigmaPlus.hh"
00078 #include "G4SigmaMinus.hh"
00079 #include "G4XiMinus.hh"
00080 #include "G4OmegaMinus.hh"
00081 #include "G4AntiSigmaPlus.hh"
00082 #include "G4AntiSigmaMinus.hh"
00083 #include "G4AntiXiMinus.hh"
00084 #include "G4AntiOmegaMinus.hh"
00085 #include "G4Deuteron.hh"
00086 #include "G4Triton.hh"
00087 #include "G4He3.hh"
00088 #include "G4Alpha.hh"
00089 #include "G4GenericIon.hh"
00090 #include "G4BuilderType.hh"
00091 
00092 G4QAtomicPhysics::G4QAtomicPhysics(G4int ver)
00093   : G4VPhysicsConstructor("CHIPS Atomic"), verbose(ver)
00094 {
00095   G4LossTableManager::Instance();
00096   SetPhysicsType(bElectromagnetic);
00097 }
00098 
00099 G4QAtomicPhysics::G4QAtomicPhysics(G4int ver, const G4String& name)
00100   : G4VPhysicsConstructor(name), verbose(ver)
00101 {
00102   G4LossTableManager::Instance();
00103   SetPhysicsType(bElectromagnetic);
00104 }
00105 
00106 G4QAtomicPhysics::~G4QAtomicPhysics()
00107 {}
00108 
00109 void G4QAtomicPhysics::ConstructParticle()
00110 {
00111 // gamma
00112   G4Gamma::Gamma();
00113 
00114 // leptons
00115   G4Electron::Electron();
00116   G4Positron::Positron();
00117   G4MuonPlus::MuonPlus();
00118   G4MuonMinus::MuonMinus();
00119 
00120 // mesons
00121   G4PionPlus::PionPlusDefinition();
00122   G4PionMinus::PionMinusDefinition();
00123   G4KaonPlus::KaonPlusDefinition();
00124   G4KaonMinus::KaonMinusDefinition();
00125 
00126 // barions
00127   G4Proton::Proton();
00128   G4AntiProton::AntiProton();
00129   G4SigmaPlus::SigmaPlus();
00130   G4SigmaMinus::SigmaMinus();
00131   G4XiMinus::XiMinus();
00132   G4OmegaMinus::OmegaMinus();
00133   G4AntiSigmaPlus::AntiSigmaPlus();
00134   G4AntiSigmaMinus::AntiSigmaMinus();
00135   G4AntiXiMinus::AntiXiMinus();
00136   G4AntiOmegaMinus::AntiOmegaMinus();
00137 
00138 // ions
00139   G4Deuteron::Deuteron();
00140   G4Triton::Triton();
00141   G4He3::He3();
00142   G4Alpha::Alpha();
00143   G4GenericIon::GenericIonDefinition();
00144 }
00145 
00146 void G4QAtomicPhysics::ConstructProcess()
00147 {
00148   theParticleIterator->reset();
00149   while( (*theParticleIterator)() )
00150   {
00151     G4ParticleDefinition* particlePointer = theParticleIterator->value();
00152     G4ProcessManager* pmanager = particlePointer->GetProcessManager();
00153     G4String particle = particlePointer->GetParticleName();
00154     if(verbose > 1) G4cout<<"###G4QAtomicPhysics::ConstructProcesses: try "
00155                           <<GetPhysicsName()<<" builder for "<<particle<<G4endl;
00156     if     ( particle == "gamma")
00157     {
00158 
00159       pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
00160       pmanager->AddDiscreteProcess(new G4ComptonScattering);
00161       pmanager->AddDiscreteProcess(new G4GammaConversion);
00162     }
00163     else if( particle == "e-")
00164     {
00165       pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
00166       pmanager->AddProcess(new G4eIonisation,           -1, 2, 2);
00167       pmanager->AddProcess(new G4eBremsstrahlung(),     -1,-3, 3);
00168     }
00169     else if( particle == "e+")
00170     {
00171       pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
00172       pmanager->AddProcess(new G4eIonisation,           -1, 2, 2);
00173       pmanager->AddProcess(new G4eBremsstrahlung,       -1,-3, 3);
00174       pmanager->AddProcess(new G4eplusAnnihilation,      0,-1, 4);
00175     }
00176     else if( particle == "mu+"      || particle == "mu-" )
00177     {
00178       pmanager->AddProcess(new G4MuMultipleScattering,  -1, 1, 1);
00179       pmanager->AddProcess(new G4MuIonisation,          -1, 2, 2);
00180       pmanager->AddProcess(new G4MuBremsstrahlung,      -1,-3, 3);
00181       pmanager->AddProcess(new G4MuPairProduction,      -1,-4, 4);
00182     }
00183     else if( particle == "pi-"      || particle == "pi+"         ||
00184              particle == "kaon-"    || particle == "kaon+"       ||
00185              particle == "proton"   || particle == "anti_proton" ||
00186              particle == "tau-"     || particle == "tau+"        ||
00187              particle == "deuteron" || particle == "triton"      ||
00188              particle == "xi-"      || particle == "anti_xi-"    ||
00189              particle == "sigma+"   || particle == "anti_sigma+" ||
00190              particle == "sigma-"   || particle == "anti_sigma-" ||
00191              particle == "omega-"   || particle == "anti_omega-" )
00192     {
00193       pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
00194       pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
00195       pmanager->AddProcess(new G4hBremsstrahlung,     -1,-3, 3);
00196       pmanager->AddProcess(new G4hPairProduction,     -1,-4, 4);
00197     }
00198     else if(particle == "alpha" || particle == "He3" ||particle == "GenericIon")
00199     {
00200       pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
00201       pmanager->AddProcess(new G4ionIonisation,       -1, 2, 2);
00202     }
00203     else if (particle == "B+"        || particle == "B-"             ||
00204              particle == "D+"        || particle == "D-"             ||
00205              particle == "Ds+"       || particle == "Ds-"            ||
00206              particle == "lambda_c+" || particle == "anti_lambda_c+" ||
00207              particle == "sigma_c+"  || particle == "anti_sigma_c+"  ||
00208              particle == "sigma_c++" || particle == "anti_sigma_c++" ||
00209              particle == "xi_c+"     || particle == "anti_xi_c+"     )
00210     {
00211       pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
00212       pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
00213     }
00214   }
00215   G4EmProcessOptions opt;
00216   opt.SetVerbose(verbose);
00217 }

Generated on Mon May 27 17:49:30 2013 for Geant4 by  doxygen 1.4.7