Ignore:
Timestamp:
Apr 6, 2009, 12:21:12 PM (15 years ago)
Author:
garnier
Message:

update processes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreen.cc

    r819 r961  
    2424// ********************************************************************
    2525//
    26 //
    27 // $Id: G4CrossSectionExcitationMillerGreen.cc,v 1.3 2007/11/09 20:11:04 pia Exp $
    28 // GEANT4 tag $Name:  $
    29 //
    30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
    31 //
    32 // Reference: TNS Geant4-DNA paper
    33 // Reference for implementation model: NIM. 155, pp. 145-156, 1978
    34 
    35 // History:
    36 // -----------
    37 // Date         Name              Modification
    38 // 28 Apr 2007  M.G. Pia          Created in compliance with design described in TNS paper
    39 //
    40 // -------------------------------------------------------------------
    41 
    42 // Class description:
    43 // Geant4-DNA Cross total cross section for electron elastic scattering in water
    44 // Reference: TNS Geant4-DNA paper
    45 // S. Chauvie et al., Geant4 physics processes for microdosimetry simulation:
    46 // design foundation and implementation of the first set of models,
    47 // IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007.
    48 // Further documentation available from http://www.ge.infn.it/geant4/dna
    49 
    50 // -------------------------------------------------------------------
    51 
     26// $Id: G4CrossSectionExcitationMillerGreen.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02-ref-02 $
    5228
    5329#include "G4CrossSectionExcitationMillerGreen.hh"
    54 #include "G4Track.hh"
    55 #include "G4DynamicParticle.hh"
    56 #include "G4Proton.hh"
    57 #include "G4CrossSectionExcitationEmfietzoglouPartial.hh"
    58 #include "G4DNAGenericIonsManager.hh"
     30
     31//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    5932
    6033G4CrossSectionExcitationMillerGreen::G4CrossSectionExcitationMillerGreen()
    6134{
    62   // Default energy limits (defined for protection against anomalous behaviour only)
    63   name = "ExcitationMillerGreen";
    6435  lowEnergyLimitDefault = 10 * eV;
    6536  highEnergyLimitDefault = 10 * MeV;
     
    7849
    7950  if (protonDef != 0)
    80     {
    81       proton = protonDef->GetParticleName();
    82       lowEnergyLimit[proton] = 10. * eV;
    83       highEnergyLimit[proton] = 500. * keV;
    84     }
     51  {
     52    proton = protonDef->GetParticleName();
     53    lowEnergyLimit[proton] = 10. * eV;
     54    highEnergyLimit[proton] = 500. * keV;
     55  }
    8556  else
    86     {
    87       G4Exception("G4CrossSectionExcitationMillerGreen Constructor: proton is not defined");
    88     }
     57  {
     58    G4Exception("G4CrossSectionExcitationMillerGreen Constructor: proton is not defined");
     59  }
    8960
    9061  if (alphaPlusPlusDef != 0)
    91     {
    92       alphaPlusPlus = alphaPlusPlusDef->GetParticleName();
    93       lowEnergyLimit[alphaPlusPlus] = 1. * keV;
    94       highEnergyLimit[alphaPlusPlus] = 10. * MeV;
    95     }
     62  {
     63    alphaPlusPlus = alphaPlusPlusDef->GetParticleName();
     64    lowEnergyLimit[alphaPlusPlus] = 1. * keV;
     65    highEnergyLimit[alphaPlusPlus] = 10. * MeV;
     66  }
    9667  else
    97     {
     68  {
    9869      G4Exception("G4CrossSectionExcitationMillerGreen Constructor: alphaPlusPlus is not defined");
    99     }
     70  }
    10071
    10172  if (alphaPlusDef != 0)
    102     {
    103       alphaPlus = alphaPlusDef->GetParticleName();
    104       lowEnergyLimit[alphaPlus] = 1. * keV;
    105       highEnergyLimit[alphaPlus] = 10. * MeV;
    106     }
     73  {
     74    alphaPlus = alphaPlusDef->GetParticleName();
     75    lowEnergyLimit[alphaPlus] = 1. * keV;
     76    highEnergyLimit[alphaPlus] = 10. * MeV;
     77  }
    10778  else
    108     {
    109       G4Exception("G4CrossSectionExcitationMillerGreen Constructor: alphaPlus is not defined");
    110     }
     79  {
     80    G4Exception("G4CrossSectionExcitationMillerGreen Constructor: alphaPlus is not defined");
     81  }
    11182
    11283  if (heliumDef != 0)
    113     {
    114       helium = heliumDef->GetParticleName();
    115       lowEnergyLimit[helium] = 1. * keV;
    116       highEnergyLimit[helium] = 10. * MeV;
    117     }
     84  {
     85    helium = heliumDef->GetParticleName();
     86    lowEnergyLimit[helium] = 1. * keV;
     87    highEnergyLimit[helium] = 10. * MeV;
     88  }
    11889  else
    119     {
    120       G4Exception("G4CrossSectionExcitationMillerGreen Constructor: helium is not defined");
    121     }
    122  
    123  
     90  {
     91    G4Exception("G4CrossSectionExcitationMillerGreen Constructor: helium is not defined");
     92  }
     93   
    12494}
    12595
     96//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    12697
    12798G4CrossSectionExcitationMillerGreen::~G4CrossSectionExcitationMillerGreen()
    12899{}
    129100 
     101//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    130102
    131103G4double G4CrossSectionExcitationMillerGreen::CrossSection(const G4Track& track)
     
    154126  const G4String& particleName = particle->GetDefinition()->GetParticleName();
    155127
    156   // Retrieve energy limits for the current particle type
    157 
    158128  std::map< G4String,G4double,std::less<G4String> >::iterator pos1;
    159129  pos1 = lowEnergyLimit.find(particleName);
    160130
    161   // Lower limit
    162131  if (pos1 != lowEnergyLimit.end())
    163     {
    164       lowLim = pos1->second;
    165     }
     132  {
     133    lowLim = pos1->second;
     134  }
    166135
    167   // Upper limit
    168136  std::map< G4String,G4double,std::less<G4String> >::iterator pos2;
    169137  pos2 = highEnergyLimit.find(particleName);
    170138
    171139  if (pos2 != highEnergyLimit.end())
    172     {
    173       highLim = pos2->second;
    174     }
     140  {
     141    highLim = pos2->second;
     142  }
    175143
    176   //
    177144  const G4ParticleDefinition* particleDefinition = track.GetDefinition();
    178145
     
    180147 
    181148  if (k >= lowLim && k <= highLim)
     149  {
     150    crossSection = partialCrossSection.Sum(k,particleDefinition);
     151    G4DNAGenericIonsManager *instance;
     152    instance = G4DNAGenericIonsManager::Instance();
     153
     154    // add ONE or TWO electron-water excitation for alpha+ and helium
     155 
     156    if ( particleDefinition == instance->GetIon("alpha+")
     157         ||
     158         particleDefinition == instance->GetIon("helium")
     159       )
    182160    {
    183  
    184       crossSection = partialCrossSection.Sum(k,particleDefinition);
    185       G4DNAGenericIonsManager *instance;
    186       instance = G4DNAGenericIonsManager::Instance();
    187 
    188       // add ONE or TWO electron-water excitation for alpha+ and helium
    189  
    190       if ( particleDefinition == instance->GetIon("alpha+")
    191            ||
    192            particleDefinition == instance->GetIon("helium")
    193            )
    194         {
    195161          G4CrossSectionExcitationEmfietzoglouPartial * excitationXS =
    196162            new G4CrossSectionExcitationEmfietzoglouPartial();
     163
    197164          G4double sigmaExcitation=0;
    198165          if (k*0.511/3728 > 7.4*eV && k*0.511/3728 < 10*keV) sigmaExcitation = excitationXS->Sum(k*0.511/3728);
     
    200167          if ( particleDefinition == instance->GetIon("alpha+") )
    201168            crossSection = crossSection +  sigmaExcitation ;
     169         
    202170          if ( particleDefinition == instance->GetIon("helium") )
    203171            crossSection = crossSection + 2*sigmaExcitation ;
     172         
    204173          delete excitationXS;
    205         }     
    206     }
     174    }     
     175  }
    207176     
    208177  return crossSection;
Note: See TracChangeset for help on using the changeset viewer.