G4MuElecInelastic.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 //
00027 // G4MuElecInelastic.cc, 2011/08/29 A.Valentin, M. Raine
00028 //
00029 // Based on the following publications
00030 //
00031 //          - Inelastic cross-sections of low energy electrons in silicon
00032 //          for the simulation of heavy ion tracks with theGeant4-DNA toolkit,
00033 //          NSS Conf. Record 2010, pp. 80-85.
00034 //          - Geant4 physics processes for microdosimetry simulation:
00035 //          very low energy electromagnetic models for electrons in Si,
00036 //          NIM B, vol. 288, pp. 66 - 73, 2012.
00037 //          - Geant4 physics processes for microdosimetry simulation:
00038 //          very low energy electromagnetic models for protons and
00039 //          heavy ions in Si, NIM B, vol. 287, pp. 124 - 129, 2012.
00040 //
00041 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
00042 
00043 
00044 #include "G4MuElecInelastic.hh"
00045 #include "G4SystemOfUnits.hh"
00046 
00047 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00048 
00049 using namespace std;
00050 
00051 G4MuElecInelastic::G4MuElecInelastic(const G4String& processName,
00052   G4ProcessType type):G4VEmProcess (processName, type),
00053     isInitialised(false)
00054 {
00055   SetProcessSubType(53);
00056 }
00057 
00058 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00059  
00060 G4MuElecInelastic::~G4MuElecInelastic()
00061 {}
00062 
00063 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00064 
00065 G4bool G4MuElecInelastic::IsApplicable(const G4ParticleDefinition& p)
00066 {
00067   return (&p == G4Electron::Electron() ||
00068         &p == G4Proton::Proton()  || 
00069         (p.GetPDGCharge() != 0.0 && !p.IsShortLived() && p.GetParticleType() == "nucleus"));
00070 }
00071 
00072 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00073 
00074 void G4MuElecInelastic::InitialiseProcess(const G4ParticleDefinition* p)
00075 {
00076   if(!isInitialised) 
00077   {
00078     isInitialised = true;
00079     SetBuildTableFlag(false);
00080     G4String name = p->GetParticleName();
00081 
00082     if(name == "e-")
00083     {
00084       if(!Model()) SetModel(new G4MuElecInelasticModel);
00085       Model()->SetLowEnergyLimit(16.7*eV);
00086       Model()->SetHighEnergyLimit(100*MeV);
00087 
00088       AddEmModel(1, Model());   
00089     }
00090 
00091     else if(name == "proton")
00092     {
00093       if(!Model()) SetModel(new G4MuElecInelasticModel);
00094       Model()->SetLowEnergyLimit(50.*keV);
00095       Model()->SetHighEnergyLimit(1*GeV);
00096 
00097       AddEmModel(1, Model());   
00098     }
00099 
00100     else
00101     {
00102       if(!Model()) SetModel(new G4MuElecInelasticModel);
00103       Model()->SetLowEnergyLimit(50.*keV);
00104       Model()->SetHighEnergyLimit(100.*GeV);
00105 
00106       AddEmModel(1, Model());   
00107     }
00108   } 
00109 }
00110 
00111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00112 
00113 void G4MuElecInelastic::PrintInfo()
00114 {
00115   if (Model(2))
00116   {
00117     G4cout
00118       << " Total cross sections computed from " 
00119       << Model(1)->GetName() 
00120       << " and "
00121       << Model(2)->GetName() 
00122       << " models"
00123       << G4endl;
00124   } 
00125   else
00126   {
00127     G4cout
00128       << " Total cross sections computed from " 
00129       << Model()->GetName() 
00130       << G4endl;
00131   }
00132 }         
00133 
00134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

Generated on Mon May 27 17:48:54 2013 for Geant4 by  doxygen 1.4.7