Ignore:
Timestamp:
Nov 25, 2009, 5:13:58 PM (16 years ago)
Author:
garnier
Message:

update CVS release candidate geant4.9.3.01

Location:
trunk/source/materials/src
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/materials/src/G4AtomicShells.cc

    r986 r1196  
    2626//
    2727// $Id: G4AtomicShells.cc,v 1.7 2006/10/17 15:15:46 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
  • trunk/source/materials/src/G4Element.cc

    r986 r1196  
    2525//
    2626//
    27 // $Id: G4Element.cc,v 1.31 2008/08/11 11:53:11 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4Element.cc,v 1.34 2009/09/18 15:35:36 vnivanch Exp $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     
    9999  }
    100100   
    101   fNbOfAtomicShells = G4AtomicShells::GetNumberOfShells(iz);
    102   fAtomicShells     = new G4double[fNbOfAtomicShells];
    103   for (G4int i=0;i<fNbOfAtomicShells;i++) {
     101  fNbOfAtomicShells      = G4AtomicShells::GetNumberOfShells(iz);
     102  fAtomicShells          = new G4double[fNbOfAtomicShells];
     103  fNbOfShellElectrons    = new G4int[fNbOfAtomicShells];
     104
     105  for (G4int i=0;i<fNbOfAtomicShells;i++)
     106  {
    104107    fAtomicShells[i] = G4AtomicShells::GetBindingEnergy(iz, i);
     108    fNbOfShellElectrons[i] = G4AtomicShells::GetNumberOfElectrons(iz, i);
    105109  }
    106110  ComputeDerivedQuantities();
     
    172176    fNbOfAtomicShells = G4AtomicShells::GetNumberOfShells(iz);
    173177    fAtomicShells     = new G4double[fNbOfAtomicShells];
    174     for (G4int j=0;j<fNbOfAtomicShells;j++) {
    175       fAtomicShells[j] = G4AtomicShells::GetBindingEnergy(iz, j);
    176     }
    177          
     178    fNbOfShellElectrons = new G4int[fNbOfAtomicShells];
     179
     180    for ( G4int j = 0; j < fNbOfAtomicShells; j++ )
     181    {
     182      fAtomicShells[j]       = G4AtomicShells::GetBindingEnergy(iz, j);
     183      fNbOfShellElectrons[j] = G4AtomicShells::GetNumberOfElectrons(iz, j);
     184    }         
    178185    ComputeDerivedQuantities();
    179186
     
    188195  fRelativeAbundanceVector = 0;
    189196  fAtomicShells = 0;
     197  fNbOfShellElectrons = 0;
    190198  fIonisation = 0;
    191199  fNumberOfIsotopes = 0;
     
    200208G4Element::G4Element( __void__& )
    201209  : fZeff(0), fNeff(0), fAeff(0), fNbOfAtomicShells(0),
    202     fAtomicShells(0), fNumberOfIsotopes(0), theIsotopeVector(0),
     210    fAtomicShells(0), fNbOfShellElectrons(0), fNumberOfIsotopes(0), theIsotopeVector(0),
    203211    fRelativeAbundanceVector(0), fCountUse(0), fIndexInTable(0),
    204212    fCoulomb(0), fRadTsai(0), fIonisation(0)
     
    215223  if (fRelativeAbundanceVector) delete [] fRelativeAbundanceVector;
    216224  if (fAtomicShells)            delete [] fAtomicShells;
     225  if (fNbOfShellElectrons)      delete [] fNbOfShellElectrons;
    217226  if (fIonisation)              delete    fIonisation;
    218227 
     
    288297G4double G4Element::GetAtomicShell(G4int i) const
    289298{
    290   if (i<0 || i>=fNbOfAtomicShells)
    291       G4Exception("Invalid argument in G4Element::GetAtomicShell");
     299  if (i<0 || i>=fNbOfAtomicShells) {
     300    G4Exception("Invalid argument in G4Element::GetAtomicShell");
     301  }
    292302  return fAtomicShells[i];
     303}
     304
     305//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     306
     307G4int G4Element::GetNbOfShellElectrons(G4int i) const
     308{
     309  if (i<0 || i>=fNbOfAtomicShells) {
     310    G4Exception("Invalid argument in G4Element::GetNbOfShellElectrons");
     311  }
     312  return fNbOfShellElectrons[i];
    293313}
    294314
     
    352372     
    353373      if (fAtomicShells) delete [] fAtomicShells;     
    354       fNbOfAtomicShells        = right.fNbOfAtomicShells;
     374      fNbOfAtomicShells = right.fNbOfAtomicShells;
    355375      fAtomicShells     = new G4double[fNbOfAtomicShells];
    356       for (G4int i=0;i<fNbOfAtomicShells;i++)     
    357          fAtomicShells[i]      = right.fAtomicShells[i];
    358          
     376
     377      if (fNbOfShellElectrons) delete [] fNbOfShellElectrons;
     378      fNbOfAtomicShells   = right.fNbOfAtomicShells;           
     379      fNbOfShellElectrons = new G4int[fNbOfAtomicShells];
     380
     381      for ( G4int i = 0; i < fNbOfAtomicShells; i++ )
     382      {     
     383         fAtomicShells[i]     = right.fAtomicShells[i];
     384         fNbOfShellElectrons[i] = right.fNbOfShellElectrons[i];
     385      }
    359386      if (theIsotopeVector) delete theIsotopeVector;
    360387      if (fRelativeAbundanceVector) delete [] fRelativeAbundanceVector;
  • trunk/source/materials/src/G4ExtDEDXTable.cc

    r1058 r1196  
    3737//
    3838// Modifications:
     39// 03.11.2009 A. Lechner:  Added new methods BuildPhysicsVector according
     40//            to interface changes in base class G4VIonDEDXTable.
    3941//
    4042//
     
    7880// #########################################################################
    7981
     82G4bool G4ExtDEDXTable::BuildPhysicsVector(G4int ionZ, G4int matZ) {
     83
     84  return IsApplicable( ionZ, matZ );
     85}
     86
     87
     88// #########################################################################
     89
     90G4bool G4ExtDEDXTable::BuildPhysicsVector(G4int ionZ,
     91                                          const G4String& matName) {
     92
     93  return IsApplicable( ionZ, matName );
     94}
     95
     96// #########################################################################
     97
    8098G4bool G4ExtDEDXTable::IsApplicable(
    8199         G4int atomicNumberIon,  // Atomic number of ion
  • trunk/source/materials/src/G4IonisParamElm.cc

    r986 r1196  
    2626//
    2727// $Id: G4IonisParamElm.cc,v 1.15 2008/06/03 14:30:10 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//
  • trunk/source/materials/src/G4IonisParamMat.cc

    r986 r1196  
    2525//
    2626//
    27 // $Id: G4IonisParamMat.cc,v 1.25 2008/07/08 10:34:56 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4IonisParamMat.cc,v 1.33 2009/11/19 16:43:36 vnivanch Exp $
     28// GEANT4 tag $Name: geant4-09-03-cand-01 $
    2929//
    3030//
     
    4040// 27-09-07, add computation of parameters for ions (V.Ivanchenko)
    4141// 04-03-08, remove reference to G4NistManager. Add fBirks constant (mma)
     42// 30-10-09, add G4DensityEffectData class and density effect computation (VI)
    4243
    4344//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
     
    4546#include "G4IonisParamMat.hh"
    4647#include "G4Material.hh"
     48#include "G4DensityEffectData.hh"
     49
     50G4DensityEffectData* G4IonisParamMat::fDensityData = 0;
    4751
    4852//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
     
    5155  : fMaterial(material)
    5256{
     57  fBirks = 0.;
     58  fMeanEnergyPerIon = 0.0;
     59
     60  // minimal set of default parameters for density effect
     61  fCdensity = 0.0;
     62  fD0density = 0.0;
     63  fAdjustmentFactor = 1.0;
     64  if(!fDensityData) fDensityData = new G4DensityEffectData();
     65
     66  // compute parameters
    5367  ComputeMeanParameters();
    5468  ComputeDensityEffect();
    5569  ComputeFluctModel();
    5670  ComputeIonParameters();
    57  
    58   fBirks = 0.;
    59   fMeanEnergyPerIon = 0.;
    6071}
    6172
     
    119130
    120131//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
     132
     133G4DensityEffectData* G4IonisParamMat::GetDensityEffectData()
     134{
     135  return fDensityData;
     136}
     137
     138//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
    121139                   
    122140void G4IonisParamMat::ComputeDensityEffect()
    123141{
    124   // Compute parameters for the density effect correction in DE/Dx formula.
    125   // The parametrization is from R.M. Sternheimer, Phys. Rev.B,3:3681 (1971)
    126 
    127   const G4double Cd2 = 4*pi*hbarc_squared*classic_electr_radius;
    128   const G4double twoln10 = 2.*std::log(10.);
    129 
    130   G4int icase;
     142  static const G4double twoln10 = 2.*std::log(10.);
     143  G4State State = fMaterial->GetState();
     144
     145  // Check if density effect data exist in the table
     146  // R.M. Sternheimer, Atomic Data and Nuclear Data Tables, 30: 261 (1984)
     147  G4int idx = fDensityData->GetIndex(fMaterial->GetName());
     148  if(idx < 0 && fMaterial->GetNumberOfElements() == 1) {
     149    idx = fDensityData->GetIndex(G4int(fMaterial->GetZ()));
     150  }
     151
     152  if(idx >= 0) {
     153
     154    // Take parameters for the density effect correction from
     155    // R.M. Sternheimer et al. Density Effect For The Ionization Loss
     156    // of Charged Particles in Various Substances.
     157    // Atom. Data Nucl. Data Tabl. 30 (1984) 261-271.
     158
     159    fCdensity = fDensityData->GetCdensity(idx);
     160    fMdensity = fDensityData->GetMdensity(idx);
     161    fAdensity = fDensityData->GetAdensity(idx);
     162    fX0density = fDensityData->GetX0density(idx);
     163    fX1density = fDensityData->GetX1density(idx);
     164    fD0density = fDensityData->GetDelta0density(idx);
     165    fPlasmaEnergy = fDensityData->GetPlasmaEnergy(idx);
     166    fAdjustmentFactor = fDensityData->GetAdjustmentFactor(idx);
     167
     168  } else {
     169
     170    const G4double Cd2 = 4*pi*hbarc_squared*classic_electr_radius;
     171    fPlasmaEnergy = std::sqrt(Cd2*fMaterial->GetTotNbOfElectPerVolume());
     172
     173    // Compute parameters for the density effect correction in DE/Dx formula.
     174    // The parametrization is from R.M. Sternheimer, Phys. Rev.B,3:3681 (1971)
     175    G4int icase;
     176   
     177    fCdensity = 1. + 2*std::log(fMeanExcitationEnergy/fPlasmaEnergy);
     178
     179    //fCdensity = 1. + std::log(fMeanExcitationEnergy*fMeanExcitationEnergy
     180    //                        /(Cd2*fMaterial->GetTotNbOfElectPerVolume()));
     181
     182    //
     183    // condensed materials
     184    //
    131185 
    132   fCdensity = 1. + std::log(fMeanExcitationEnergy*fMeanExcitationEnergy
    133               /(Cd2*fMaterial->GetTotNbOfElectPerVolume()));
    134 
    135   //
    136   // condensed materials
    137   //
    138   G4State State = fMaterial->GetState();
    139  
    140   if ((State == kStateSolid)||(State == kStateLiquid)) {
     186    if ((State == kStateSolid)||(State == kStateLiquid)) {
    141187
    142188      const G4double E100eV  = 100.*eV;
     
    157203         fX0density = 0.425; fX1density = 2.0; fMdensity = 5.949;
    158204      }
    159   }
    160 
    161   //
    162   // gases
    163   //
    164   if (State == kStateGas) {
     205    }
     206
     207    //
     208    // gases
     209    //
     210    if (State == kStateGas) {
    165211
    166212      const G4double ClimiG[] = { 10. , 10.5 , 11. , 11.5 , 12.25 , 13.804};
     
    182228         fX0density = 2.191; fX1density = 3.0; fMdensity = 3.297;
    183229      }
    184 
    185       // change parameters if the gas is not in STP.
    186       // For the correction the density(STP) is needed.
    187       // Density(STP) is calculated here :
     230    }
     231  }
     232
     233  // change parameters if the gas is not in STP.
     234  // For the correction the density(STP) is needed.
     235  // Density(STP) is calculated here :
     236 
     237   
     238  if (State == kStateGas) {
     239    G4double Density  = fMaterial->GetDensity();
     240    G4double Pressure = fMaterial->GetPressure();
     241    G4double Temp     = fMaterial->GetTemperature();
    188242     
    189       G4double Density  = fMaterial->GetDensity();
    190       G4double Pressure = fMaterial->GetPressure();
    191       G4double Temp     = fMaterial->GetTemperature();
    192      
    193      G4double DensitySTP = Density*STP_Pressure*Temp/(Pressure*STP_Temperature);
    194 
    195       G4double ParCorr = std::log(Density/DensitySTP);
     243    G4double DensitySTP = Density*STP_Pressure*Temp/(Pressure*STP_Temperature);
     244
     245    G4double ParCorr = std::log(Density/DensitySTP);
    196246 
    197       fCdensity  -= ParCorr;
    198       fX0density -= ParCorr/twoln10;
    199       fX1density -= ParCorr/twoln10;
    200   }
    201 
    202   G4double Xa = fCdensity/twoln10;
    203   fAdensity = twoln10*(Xa-fX0density)
    204               /std::pow((fX1density-fX0density),fMdensity);
     247    fCdensity  -= ParCorr;
     248    fX0density -= ParCorr/twoln10;
     249    fX1density -= ParCorr/twoln10;
     250  }
     251
     252  // fAdensity parameter can be fixed for not conductive materials
     253  if(0.0 == fD0density) {
     254    G4double Xa = fCdensity/twoln10;
     255    fAdensity = twoln10*(Xa-fX0density)
     256      /std::pow((fX1density-fX0density),fMdensity);
     257  }
     258  /*
     259  G4cout << "G4IonisParamMat: density effect data for <" << fMaterial->GetName()
     260         << "> " << G4endl;
     261  G4cout << "Eplasma(eV)= " << fPlasmaEnergy/eV
     262         << " rho= " << fAdjustmentFactor
     263         << " -C= " << fCdensity
     264         << " x0= " << fX0density
     265         << " x1= " << fX1density
     266         << " a= " << fAdensity
     267         << " m= " << fMdensity
     268         << G4endl;
     269  */
    205270}
    206271
     
    358423G4IonisParamMat::~G4IonisParamMat()
    359424{
    360   if (fShellCorrectionVector) delete [] fShellCorrectionVector;
     425  if (fShellCorrectionVector) { delete [] fShellCorrectionVector; }
     426  if (fDensityData) { delete fDensityData; }
     427  fDensityData = 0;
    361428}
    362429
     
    388455      fX0density                = right.fX0density;
    389456      fX1density                = right.fX1density;
     457      fD0density                = right.fD0density;
     458      fPlasmaEnergy             = right.fPlasmaEnergy;
     459      fAdjustmentFactor         = right.fAdjustmentFactor;
    390460      fF1fluct                  = right.fF1fluct;
    391461      fF2fluct                  = right.fF2fluct;
     
    396466      fEnergy0fluct             = right.fEnergy0fluct;
    397467      fRateionexcfluct          = right.fRateionexcfluct;
    398      }
     468      fZeff                     = right.fZeff;
     469      fFermiEnergy              = right.fFermiEnergy;
     470      fLfactor                  = right.fLfactor;
     471      fBirks                    = right.fBirks;
     472      fMeanEnergyPerIon         = right.fMeanEnergyPerIon;
     473      fDensityData              = right.fDensityData;
     474    }
    399475  return *this;
    400476}
  • trunk/source/materials/src/G4IronStoppingICRU73.cc

    r1058 r1196  
    2525//
    2626//
    27 // $Id: G4IronStoppingICRU73.cc,v 1.7 2009/05/07 18:51:01 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
     27// $Id: G4IronStoppingICRU73.cc,v 1.9 2009/11/09 16:51:07 vnivanch Exp $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929
    3030//---------------------------------------------------------------------------
     
    3535//
    3636// Author:    A.Ivanchenko 10.08.2008
     37//
     38// in the framework of the ESA Technology Research Programme
     39// (ESA contract 21435/08/NL/AT)
    3740//
    3841// Modifications:
    3942// 29.04.2009 A.Ivantchenko added data for G4WATER
    4043//            provided by  Prof.P.Sigmund Univ. Southern Denmark
     44// 03.11.2009 A. Lechner: Added new methods BuildPhysicsVector according
     45//            to interface changes in base class G4VIonDEDXTable.
    4146//
    4247//----------------------------------------------------------------------------
     
    7782  atomicNumbersMat.clear();
    7883  namesMat.clear();
     84}
     85
     86//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     87G4bool G4IronStoppingICRU73::BuildPhysicsVector(G4int ionZ,
     88                                                G4int matZ)
     89{
     90  return IsApplicable( ionZ, matZ );
     91}
     92
     93//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     94
     95G4bool G4IronStoppingICRU73::BuildPhysicsVector(G4int ionZ,
     96                                                const G4String& matName)
     97{
     98  return IsApplicable( ionZ, matName );
    7999}
    80100
  • trunk/source/materials/src/G4Isotope.cc

    r986 r1196  
    2626//
    2727// $Id: G4Isotope.cc,v 1.22 2008/08/11 11:53:11 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
  • trunk/source/materials/src/G4MPVEntry.cc

    r1058 r1196  
    2626//
    2727// $Id: G4MPVEntry.cc,v 1.9 2009/04/21 15:35:45 gcosmo Exp $
    28 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//
  • trunk/source/materials/src/G4Material.cc

    r986 r1196  
    2626//
    2727// $Id: G4Material.cc,v 1.42 2008/08/13 16:06:42 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
  • trunk/source/materials/src/G4MaterialPropertiesTable.cc

    r1058 r1196  
    2626//
    2727// $Id: G4MaterialPropertiesTable.cc,v 1.21 2009/04/21 15:35:45 gcosmo Exp $
    28 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//
  • trunk/source/materials/src/G4MaterialPropertyVector.cc

    r1058 r1196  
    2626//
    2727// $Id: G4MaterialPropertyVector.cc,v 1.17 2009/04/21 15:35:45 gcosmo Exp $
    28 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//
  • trunk/source/materials/src/G4MaterialStoppingICRU73.cc

    r1058 r1196  
    2525//
    2626//
    27 // $Id: G4MaterialStoppingICRU73.cc,v 1.7 2009/04/29 13:51:53 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
     27// $Id: G4MaterialStoppingICRU73.cc,v 1.10 2009/11/09 16:51:07 vnivanch Exp $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929
    3030//---------------------------------------------------------------------------
     
    3636// Author:      A.Ivantchenko 07.08.2008
    3737//
     38// in the framework of the ESA Technology Research Programme
     39// (ESA contract 21435/08/NL/AT)
     40//
    3841// Modifications:
    3942// 29.04.2009 A.Ivantchenko added revised data for G4WATER, G4WATER_VAPOR,
    4043//            G4_NYLON-6/6 provided by  Prof.P.Sigmund Univ. Southern Denmark
    41 //
     44// 01.11.2009 A. Lechner: Extended energy range of G4_WATER tables up to
     45//            1 GeV/u
     46// 03.11.2009 A. Lechner: Changed material name from G4_NYLON-6/6 to
     47//            G4_NYLON-6-6. Added new methods BuildPhysicsVector according
     48//            to interface changes in base class G4VIonDEDXTable.
     49// 
    4250//----------------------------------------------------------------------------
    4351//
     
    5664  maxIonAtomicNmb = 18;
    5765
    58   G4String matName[31] = {"G4_A-150_TISSUE","G4_ADIPOSE_TISSUE_ICRP","G4_AIR","G4_ALUMINUM_OXIDE","G4_BONE_COMPACT_ICRU","G4_BONE_CORTICAL_ICRP","G4_C-552","G4_CALCIUM_FLUORIDE","G4_CARBON_DIOXIDE","G4_Pyrex_Glass","G4_KAPTON","G4_LITHIUM_FLUORIDE","G4_LITHIUM_TETRABORATE","G4_METHANE","G4_MUSCLE_STRIATED_ICRU","G4_NYLON-6/6","G4_PHOTO_EMULSION","G4_PLASTIC_SC_VINYLTOLUENE","G4_POLYCARBONATE","G4_POLYETHYLENE","G4_MYLAR","G4_LUCITE","G4_POLYSTYRENE","G4_TEFLON","G4_PROPANE","G4_SILICON_DIOXIDE","G4_SODIUM_IODIDE","G4_TISSUE-METHANE","G4_TISSUE-PROPANE","G4_WATER","G4_WATER_VAPOR"};
     66  G4String matName[31] = {"G4_A-150_TISSUE","G4_ADIPOSE_TISSUE_ICRP","G4_AIR","G4_ALUMINUM_OXIDE","G4_BONE_COMPACT_ICRU","G4_BONE_CORTICAL_ICRP","G4_C-552","G4_CALCIUM_FLUORIDE","G4_CARBON_DIOXIDE","G4_Pyrex_Glass","G4_KAPTON","G4_LITHIUM_FLUORIDE","G4_LITHIUM_TETRABORATE","G4_METHANE","G4_MUSCLE_STRIATED_ICRU","G4_NYLON-6-6","G4_PHOTO_EMULSION","G4_PLASTIC_SC_VINYLTOLUENE","G4_POLYCARBONATE","G4_POLYETHYLENE","G4_MYLAR","G4_LUCITE","G4_POLYSTYRENE","G4_TEFLON","G4_PROPANE","G4_SILICON_DIOXIDE","G4_SODIUM_IODIDE","G4_TISSUE-METHANE","G4_TISSUE-PROPANE","G4_WATER","G4_WATER_VAPOR"};
    5967
    6068  for( size_t i = 0; i < 31; i++ ) {
     
    7482  dedxKeys.clear();
    7583  dedx.clear();
     84}
     85
     86//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     87G4bool G4MaterialStoppingICRU73::BuildPhysicsVector(G4int ionZ,
     88                                                    G4int matZ)
     89{
     90  return IsApplicable( ionZ, matZ );
     91}
     92
     93//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     94
     95G4bool G4MaterialStoppingICRU73::BuildPhysicsVector(G4int ionZ,
     96                                                    const G4String& matName)
     97{
     98  return IsApplicable( ionZ, matName );
    7699}
    77100
     
    114137
    115138  for( G4int i = 0; i < 31; i++ ) {
     139    pv->PutValues(i,energy[i],stoppower[i]*factor);
     140  }
     141
     142  return pv;
     143}
     144
     145//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     146
     147G4PhysicsVector* G4MaterialStoppingICRU73::CreatePhysicsVectorFullRange(
     148                                       G4double* energy,
     149                                       G4double* stoppower,
     150                                       G4double factor)
     151{
     152  G4LPhysicsFreeVector* pv = new G4LPhysicsFreeVector(53,energy[0],energy[52]);
     153  pv->SetSpline(spline);
     154
     155  for( G4int i = 0; i < 53; i++ ) {
    116156    pv->PutValues(i,energy[i],stoppower[i]*factor);
    117157  }
     
    182222  G4double factor = MeV * cm2 / (0.001 * g);
    183223
    184   G4double E[31] = {.025,.03,.04,.05,.06,.07,.08,.09,.1,.15,.2,.25,.3,.4,.5,.6,.7,.8,.9,1,1.5,2,2.5,3,4,5,6,7,8,9,10};
    185 
    186   for( G4int i = 0; i < 31; i++ ) E[i] *= MeV;
     224  G4double E[53] = {.025,.03,.04,.05,.06,.07,0.08,0.09,0.1,0.15,0.2,0.25,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.5,2,2.5,3,4,5,6,7,8,9,10,15,20,25,30,40,50,60,70,80,90,100,150,200,250,300,400,500,600,700,800,900,1000};
     225
     226  for( G4int i = 0; i < 53; i++ ) E[i] *= MeV;
    187227
    188228  if( matName == namesMat[0] ) {
     
    21312171  else if( matName == namesMat[29] ) {
    21322172    if( ionZ == 3) {
    2133    G4double ZZ_3[31]={2.3193,2.5198,2.8539,3.1164,3.3203,3.4756,3.5914,3.6755,3.7347,3.8125,3.7349,3.6134,3.4818,3.2258,2.9949,2.7909,2.611,2.4517,2.3103,2.1841,1.7151,1.4139,1.2053,1.0525,0.84417,0.70862,0.61317,0.54214,0.48708,0.44305,0.40697};
    2134    physicsVector = CreatePhysicsVector(E,ZZ_3,factor);
     2173   G4double ZZ_3[53]={2.3193,2.5198,2.8539,3.1164,3.3203,3.4756,3.5914,3.6755,3.7347,3.8125,3.7349,3.6134,3.4818,3.2258,2.9949,2.7909,2.611,2.4517,2.3103,2.1841,1.7151,1.4139,1.2053,1.0525,0.84417,0.70862,0.61317,0.54214,0.48708,0.44305,0.40697,0.29312,0.23208,0.19364,0.16706,0.13252,0.11092,0.09608,0.08522,0.076915,0.07035,0.065026,0.048615,0.040137,0.034964,0.03149,0.027148,0.024579,0.022911,0.021761,0.020937,0.020327,0.019862};
     2174   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_3,factor);
    21352175}
    21362176 else if( ionZ == 4) {
    2137    G4double ZZ_4[31]={2.872,3.1439,3.6102,3.9967,4.3169,4.5788,4.7897,4.9568,5.0872,5.387,5.4028,5.3185,5.1971,4.9243,4.6549,4.4036,4.1732,3.9629,3.771,3.5957,2.9117,2.4439,2.1062,1.8518,1.4956,1.2587,1.0901,0.96393,0.86589,0.78742,0.72313};
    2138    physicsVector = CreatePhysicsVector(E,ZZ_4,factor);
     2177   G4double ZZ_4[53]={2.872,3.1439,3.6102,3.9967,4.3169,4.5788,4.7897,4.9568,5.0872,5.387,5.4028,5.3185,5.1971,4.9243,4.6549,4.4036,4.1732,3.9629,3.771,3.5957,2.9117,2.4439,2.1062,1.8518,1.4956,1.2587,1.0901,0.96393,0.86589,0.78742,0.72313,0.52053,0.41214,0.34394,0.2968,0.2355,0.19717,0.17081,0.15152,0.13676,0.1251,0.11564,0.086471,0.071399,0.062202,0.056023,0.048303,0.043734,0.040767,0.038723,0.037256,0.036172,0.035345};
     2178   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_4,factor);
    21392179 }
    21402180 else if( ionZ == 5) {
    2141    G4double ZZ_5[31]={3.2922,3.6315,4.2226,4.7242,5.1543,5.5219,5.8323,6.0911,6.3043,6.8888,7.0451,7.0309,6.9445,6.6925,6.4129,6.1372,5.8747,5.6283,5.3983,5.1841,4.3121,3.6826,3.2109,2.8459,2.3203,1.9619,1.7028,1.5072,1.3543,1.2315,1.1307};
    2142    physicsVector = CreatePhysicsVector(E,ZZ_5,factor);
     2181   G4double ZZ_5[53]={3.2922,3.6315,4.2226,4.7242,5.1543,5.5219,5.8323,6.0911,6.3043,6.8888,7.0451,7.0309,6.9445,6.6925,6.4129,6.1372,5.8747,5.6283,5.3983,5.1841,4.3121,3.6826,3.2109,2.8459,2.3203,1.9619,1.7028,1.5072,1.3543,1.2315,1.1307,0.81305,0.64344,0.53693,0.46337,0.36777,0.30797,0.26684,0.23674,0.21371,0.1955,0.18072,0.13517,0.11163,0.097256,0.087601,0.075535,0.068395,0.063757,0.060561,0.058268,0.056574,0.05528};
     2182   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_5,factor);
    21432183 }
    21442184 else if( ionZ == 6) {
    2145    G4double ZZ_6[31]={3.6037,4.0035,4.7125,5.3248,5.8601,6.3287,6.7363,7.0875,7.3872,8.2986,8.635,8.7189,8.6879,8.485,8.2162,7.9331,7.6534,7.3839,7.1272,6.884,5.8573,5.0814,4.4808,4.0044,3.3005,2.808,2.4458,2.1691,1.9511,1.7751,1.6302};
    2146    physicsVector = CreatePhysicsVector(E,ZZ_6,factor);
     2185   G4double ZZ_6[53]={3.6037,4.0035,4.7125,5.3248,5.8601,6.3287,6.7363,7.0875,7.3872,8.2986,8.635,8.7189,8.6879,8.485,8.2162,7.9331,7.6534,7.3839,7.1272,6.884,5.8573,5.0814,4.4808,4.0044,3.3005,2.808,2.4458,2.1691,1.9511,1.7751,1.6302,1.1714,0.9263,0.77269,0.66676,0.52925,0.44328,0.38415,0.34086,0.30773,0.28154,0.26028,0.19473,0.16083,0.14014,0.12624,0.10886,0.098575,0.091894,0.08729,0.083986,0.081545,0.079682};
     2186   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_6,factor);
    21472187 }
    21482188 else if( ionZ == 7) {
    2149    G4double ZZ_7[31]={3.8821,4.3278,5.1314,5.8371,6.4632,7.021,7.5168,7.9545,8.3378,9.5943,10.145,10.356,10.402,10.278,10.041,9.7677,9.4845,9.2035,8.9301,8.6668,7.5173,6.6126,5.8919,5.308,4.4226,3.7883,3.3138,2.9467,2.655,2.4179,2.2217};
    2150    physicsVector = CreatePhysicsVector(E,ZZ_7,factor);
     2189   G4double ZZ_7[53]={3.8821,4.3278,5.1314,5.8371,6.4632,7.021,7.5168,7.9545,8.3378,9.5943,10.145,10.356,10.402,10.278,10.041,9.7677,9.4845,9.2035,8.9301,8.6668,7.5173,6.6126,5.8919,5.308,4.4226,3.7883,3.3138,2.9467,2.655,2.4179,2.2217,1.5965,1.2614,1.0516,0.90715,0.71995,0.60305,0.52268,0.46384,0.41882,0.3832,0.35431,0.26515,0.21903,0.19087,0.17194,0.14829,0.13429,0.12519,0.11892,0.11442,0.1111,0.10856};
     2190   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_7,factor);
    21512191 }
    21522192 else if( ionZ == 8) {
    2153    G4double ZZ_8[31]={4.1215,4.6063,5.4945,6.2868,6.9978,7.6391,8.2175,8.7372,9.201,10.808,11.596,11.955,12.096,12.077,11.89,11.639,11.364,11.081,10.799,10.523,9.2787,8.2615,7.4307,6.7431,5.6787,4.8981,4.3045,3.8393,3.4663,3.161,2.9069};
    2154    physicsVector = CreatePhysicsVector(E,ZZ_8,factor);
     2193   G4double ZZ_8[53]={4.1215,4.6063,5.4945,6.2868,6.9978,7.6391,8.2175,8.7372,9.201,10.808,11.596,11.955,12.096,12.077,11.89,11.639,11.364,11.081,10.799,10.523,9.2787,8.2615,7.4307,6.7431,5.6787,4.8981,4.3045,3.8393,3.4663,3.161,2.9069,2.0903,1.6501,1.3745,1.1851,0.94004,0.78733,0.68244,0.60568,0.54694,0.50048,0.46278,0.34643,0.28622,0.24945,0.22474,0.19384,0.17555,0.16367,0.15547,0.14959,0.14525,0.14194};
     2194   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_8,factor);
    21552195 }
    21562196else if( ionZ == 9) {
    2157   G4double ZZ_9[31]={4.2951,4.8107,5.7678,6.6342,7.4196,8.1343,8.7858,9.3786,9.9152,11.857,12.89,13.408,13.652,13.749,13.62,13.398,13.136,12.857,12.573,12.291,10.982,9.88,8.9601,8.1871,6.9687,6.0574,5.3535,4.7954,4.3434,3.9704,3.658};
    2158   physicsVector = CreatePhysicsVector(E,ZZ_9,factor);
     2197  G4double ZZ_9[53]={4.2951,4.8107,5.7678,6.6342,7.4196,8.1343,8.7858,9.3786,9.9152,11.857,12.89,13.408,13.652,13.749,13.62,13.398,13.136,12.857,12.573,12.291,10.982,9.88,8.9601,8.1871,6.9687,6.0574,5.3535,4.7954,4.3434,3.9704,3.658,2.642,2.0878,1.7393,1.4994,1.1892,0.99601,0.86336,0.76632,0.69207,0.63334,0.58568,0.43857,0.36242,0.3159,0.28462,0.24552,0.22237,0.20733,0.19696,0.18951,0.18401,0.17981};
     2198  physicsVector = CreatePhysicsVectorFullRange(E,ZZ_9,factor);
    21592199}
    21602200else if( ionZ == 10) {
    2161   G4double ZZ_10[31]={4.4513,4.991,6.004,6.9338,7.7852,8.5662,9.284,9.9435,10.547,12.813,14.099,14.791,15.151,15.382,15.321,15.136,14.895,14.626,14.345,14.061,12.705,11.53,10.532,9.6823,8.3208,7.2846,6.4735,5.8234,5.2919,4.8502,4.4779};
    2162   physicsVector = CreatePhysicsVector(E,ZZ_10,factor);
     2201  G4double ZZ_10[53]={4.4513,4.991,6.004,6.9338,7.7852,8.5662,9.284,9.9435,10.547,12.813,14.099,14.791,15.151,15.382,15.321,15.136,14.895,14.626,14.345,14.061,12.705,11.53,10.532,9.6823,8.3208,7.2846,6.4735,5.8234,5.2919,4.8502,4.4779,3.252,2.5745,2.146,1.8503,1.4675,1.2291,1.0654,0.94575,0.85419,0.78178,0.72301,0.54158,0.44763,0.39022,0.35162,0.30335,0.27477,0.25619,0.24339,0.23419,0.2274,0.22222};
     2202  physicsVector = CreatePhysicsVectorFullRange(E,ZZ_10,factor);
    21632203}
    21642204 else if( ionZ == 11) {
    2165    G4double ZZ_11[31]={4.5914,5.1553,6.2244,7.2203,8.1435,8.9982,9.7906,10.526,11.206,13.848,15.453,16.384,16.916,17.369,17.442,17.344,17.16,16.93,16.675,16.407,15.045,13.799,12.706,11.753,10.187,8.9672,7.9956,7.2072,6.5562,6.0112,5.5493};
    2166    physicsVector = CreatePhysicsVector(E,ZZ_11,factor);
     2205   G4double ZZ_11[53]={4.5914,5.1553,6.2244,7.2203,8.1435,8.9982,9.7906,10.526,11.206,13.848,15.453,16.384,16.916,17.369,17.442,17.344,17.16,16.93,16.675,16.407,15.045,13.799,12.706,11.753,10.187,8.9672,7.9956,7.2072,6.5562,6.0112,5.5493,4.0154,3.1635,2.6262,2.2573,1.7832,1.4904,1.2907,1.1451,1.0339,0.94615,0.87498,0.65548,0.54186,0.47243,0.42574,0.36734,0.33275,0.31027,0.29478,0.28364,0.27542,0.26915};
     2206   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_11,factor);
    21672207 }
    21682208 else if( ionZ == 12) {
    2169    G4double ZZ_12[31]={4.7537,5.3178,6.3962,7.4137,8.3663,9.2554,10.085,10.859,11.581,14.455,16.279,17.373,18.018,18.598,18.727,18.654,18.479,18.25,17.99,17.716,16.313,15.026,13.895,12.907,11.277,9.9981,8.9727,8.1344,7.4376,6.8507,6.35};
    2170    physicsVector = CreatePhysicsVector(E,ZZ_12,factor);
     2209   G4double ZZ_12[53]={4.7537,5.3178,6.3962,7.4137,8.3663,9.2554,10.085,10.859,11.581,14.455,16.279,17.373,18.018,18.598,18.727,18.654,18.479,18.25,17.99,17.716,16.313,15.026,13.895,12.907,11.277,9.9981,8.9727,8.1344,7.4376,6.8507,6.35,4.6625,3.7049,3.0916,2.666,2.1135,1.7695,1.5336,1.3613,1.2296,1.1255,1.041,0.7802,0.64511,0.56252,0.50698,0.43749,0.39634,0.36958,0.35114,0.33789,0.3281,0.32063};
     2210   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_12,factor);
    21712211 }
    21722212 else if( ionZ == 13) {
    2173    G4double ZZ_13[31]={4.911,5.4856,6.5852,7.6302,8.6193,9.551,10.426,11.248,12.018,15.152,17.23,18.531,19.33,20.11,20.354,20.352,20.224,20.024,19.785,19.521,18.12,16.795,15.611,14.565,12.819,11.431,10.305,9.3772,8.6003,7.9413,7.3761};
    2174    physicsVector = CreatePhysicsVector(E,ZZ_13,factor);
     2213   G4double ZZ_13[53]={4.911,5.4856,6.5852,7.6302,8.6193,9.551,10.426,11.248,12.018,15.152,17.23,18.531,19.33,20.11,20.354,20.352,20.224,20.024,19.785,19.521,18.12,16.795,15.611,14.565,12.819,11.431,10.305,9.3772,8.6003,7.9413,7.3761,5.45,4.342,3.6272,3.129,2.4808,2.0767,1.7997,1.5975,1.4429,1.3207,1.2216,0.91581,0.75739,0.66053,0.59537,0.51383,0.46554,0.43413,0.41248,0.39693,0.38544,0.37667};
     2214   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_13,factor);
    21752215 }
    21762216 else if( ionZ == 14) {
    2177    G4double ZZ_14[31]={5.0697,5.6529,6.77,7.8376,8.8564,9.8229,10.736,11.597,12.409,15.773,18.09,19.594,20.549,21.535,21.9,21.975,21.896,21.73,21.513,21.265,19.878,18.525,17.298,16.202,14.354,12.867,11.651,10.64,9.7876,9.0607,8.4341};
    2178    physicsVector = CreatePhysicsVector(E,ZZ_14,factor);
     2217   G4double ZZ_14[53]={5.0697,5.6529,6.77,7.8376,8.8564,9.8229,10.736,11.597,12.409,15.773,18.09,19.594,20.549,21.535,21.9,21.975,21.896,21.73,21.513,21.265,19.878,18.525,17.298,16.202,14.354,12.867,11.651,10.64,9.7876,9.0607,8.4341,6.2756,5.0169,4.1981,3.6247,2.8758,2.4078,2.0868,1.8523,1.6731,1.5315,1.4167,1.0623,0.8787,0.76644,0.69091,0.59637,0.54036,0.50394,0.47883,0.46078,0.44746,0.43728};
     2218   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_14,factor);
    21792219 }
    21802220 else if( ionZ == 15) {
    2181    G4double ZZ_15[31]={5.2616,5.8538,6.9867,8.074,9.1192,10.117,11.065,11.964,12.815,16.396,18.945,20.657,21.779,22.993,23.502,23.672,23.659,23.54,23.356,23.132,21.792,20.425,19.162,18.02,16.066,14.472,13.155,12.051,11.114,10.311,9.6149};
    2182    physicsVector = CreatePhysicsVector(E,ZZ_15,factor);
     2221   G4double ZZ_15[53]={5.2616,5.8538,6.9867,8.074,9.1192,10.117,11.065,11.964,12.815,16.396,18.945,20.657,21.779,22.993,23.502,23.672,23.659,23.54,23.356,23.132,21.792,20.425,19.162,18.02,16.066,14.472,13.155,12.051,11.114,10.311,9.6149,7.1917,5.7614,4.8249,4.1667,3.305,2.7661,2.3966,2.1269,1.9215,1.7603,1.6263,1.2197,1.0091,0.88027,0.79361,0.68512,0.62083,0.57902,0.55019,0.52947,0.51417,0.50248};
     2222   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_15,factor);
    21832223 }
    21842224 else if( ionZ == 16) {
    2185    G4double ZZ_16[31]={5.4129,6.0193,7.1761,8.2871,9.36,10.39,11.373,12.308,13.196,16.986,19.762,21.683,22.976,24.431,25.091,25.363,25.421,25.354,25.208,25.013,23.734,22.366,21.074,19.891,17.84,16.146,14.731,13.536,12.516,11.636,10.869};
    2186    physicsVector = CreatePhysicsVector(E,ZZ_16,factor);
     2225   G4double ZZ_16[53]={5.4129,6.0193,7.1761,8.2871,9.36,10.39,11.373,12.308,13.196,16.986,19.762,21.683,22.976,24.431,25.091,25.363,25.421,25.354,25.208,25.013,23.734,22.366,21.074,19.891,17.84,16.146,14.731,13.536,12.516,11.636,10.869,8.1727,6.5617,5.4997,4.7505,3.7671,3.1514,2.7293,2.4215,2.1866,2.0012,1.8509,1.3881,1.1485,1.002,0.90348,0.78008,0.70695,0.65938,0.62657,0.60299,0.58558,0.57229};
     2226   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_16,factor);
    21872227 }
    21882228 else if( ionZ == 17) {
    2189    G4double ZZ_17[31]={5.6171,6.2307,7.3984,8.5209,9.6097,10.661,11.669,12.632,13.551,17.518,20.497,22.615,24.076,25.769,26.58,26.953,27.082,27.066,26.958,26.791,25.579,24.214,22.901,21.685,19.553,17.771,16.271,14.996,13.9,12.949,12.118};
    2190    physicsVector = CreatePhysicsVector(E,ZZ_17,factor);
     2229   G4double ZZ_17[53]={5.6171,6.2307,7.3984,8.5209,9.6097,10.661,11.669,12.632,13.551,17.518,20.497,22.615,24.076,25.769,26.58,26.953,27.082,27.066,26.958,26.791,25.579,24.214,22.901,21.685,19.553,17.771,16.271,14.996,13.9,12.949,12.118,9.1688,7.385,6.2003,5.3604,4.2535,3.5588,3.0821,2.7343,2.4689,2.2595,2.0898,1.5673,1.297,1.1318,1.0205,0.88128,0.79874,0.74504,0.708,0.68138,0.66172,0.64671};
     2230   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_17,factor);
    21912231 }
    21922232 else if( ionZ == 18) {
    2193    G4double ZZ_18[31]={5.7158,6.3394,7.5204,8.6525,9.7528,10.82,11.849,12.836,13.78,17.904,21.07,23.375,24.999,26.928,27.889,28.361,28.559,28.592,28.521,28.381,27.228,25.869,24.541,23.299,21.103,19.255,17.686,16.346,15.19,14.183,13.3};
    2194    physicsVector = CreatePhysicsVector(E,ZZ_18,factor);
     2233   G4double ZZ_18[53]={5.7158,6.3394,7.5204,8.6525,9.7528,10.82,11.849,12.836,13.78,17.904,21.07,23.375,24.999,26.928,27.889,28.361,28.559,28.592,28.521,28.381,27.228,25.869,24.541,23.299,21.103,19.255,17.686,16.346,15.19,14.183,13.3,10.137,8.2021,6.9062,5.9819,4.757,3.9841,3.4523,3.0636,2.7668,2.5324,2.3425,1.7573,1.4546,1.2694,1.1448,0.98872,0.8962,0.83601,0.79448,0.76464,0.74259,0.72575};
     2234   physicsVector = CreatePhysicsVectorFullRange(E,ZZ_18,factor);
    21952235 }
    21962236  }
  • trunk/source/materials/src/G4NistElementBuilder.cc

    r986 r1196  
    2424// ********************************************************************
    2525//
    26 // $Id: G4NistElementBuilder.cc,v 1.22 2008/08/11 11:53:11 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4NistElementBuilder.cc,v 1.23 2009/07/17 18:45:57 vnivanch Exp $
     27// GEANT4 tag $Name: materials-V09-02-18 $
    2828//
    2929// -------------------------------------------------------------------
     
    203203           << nc << " isotopes:"
    204204           << G4endl;
    205     if(verbose > 1) {
    206       G4int j;
    207       G4int idx = idxIsotopes[i];
    208       G4int n0  = nFirstIsotope[i];
    209       G4cout << "             N: ";
    210       for(j=0; j<nc; j++) {G4cout << n0 + j << "  ";}
    211       G4cout << G4endl;
    212       G4cout << "          mass(amu): ";
    213       for(j=0; j<nc; j++) {G4cout << GetAtomicMass(i, n0 + j) << " ";}
    214       G4cout << G4endl;
    215       G4cout << "     abanbance: ";
    216       for(j=0; j<nc; j++) {G4cout << relAbundance[idx + j] << " ";}
    217       G4cout << G4endl;
    218     }
     205    G4int j;
     206    G4int idx = idxIsotopes[i];
     207    G4int n0  = nFirstIsotope[i];
     208    G4cout << "             N: ";
     209    for(j=0; j<nc; j++) {G4cout << n0 + j << "  ";}
     210    G4cout << G4endl;
     211    G4cout << "          mass(amu): ";
     212    for(j=0; j<nc; j++) {G4cout << GetAtomicMass(i, n0 + j) << " ";}
     213    G4cout << G4endl;
     214    G4cout << "     abanbance: ";
     215    for(j=0; j<nc; j++) {G4cout << relAbundance[idx + j] << " ";}
     216    G4cout << G4endl;
    219217  }
    220218}
     
    270268  }
    271269
    272   if (verbose > 0) PrintElement(Z);
     270  if (verbose > 1) {PrintElement(Z);}
     271  else if(1 == verbose) {
     272    G4cout << "Nist Element  " << elmSymbol[Z]
     273           << "  Z= " << Z
     274           << "  Aeff(amu)= " << atomicMass[Z] << "  "
     275           << nIsotopes[Z] << " isotopes:"
     276           << G4endl;
     277  }
    273278}
    274279
  • trunk/source/materials/src/G4NistManager.cc

    r986 r1196  
    2525//
    2626// $Id: G4NistManager.cc,v 1.19 2008/07/23 14:49:31 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: materials-V09-02-18 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/materials/src/G4NistMaterialBuilder.cc

    r1058 r1196  
    2424// ********************************************************************
    2525//
    26 // $Id: G4NistMaterialBuilder.cc,v 1.20 2009/05/07 18:50:46 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
     26// $Id: G4NistMaterialBuilder.cc,v 1.22 2009/11/03 17:02:03 alechner Exp $
     27// GEANT4 tag $Name: materials-V09-02-18 $
    2828//
    2929//
     
    4444// 27.06.06 V.Ivanchneko fix graphite description
    4545// 27.07.07 V.Ivanchneko remove dependence on NistManager
     46// 30.10.09 V.Ivanchneko update density of G4_GRAFITE from PDG'2008
     47//                       added G4_GRAPHITE_POROUS
     48// 03.11.09 A.Lechner changed following material names:
     49//                    From G4_NYLON-6/6 to G4_NYLON-6-6
     50//                    From G4_NYLON-6/10 to G4_NYLON-6-10
    4651//
    4752// -------------------------------------------------------------------
     
    13371342  AddElementByWeightFraction( 8, 0.148539);
    13381343
    1339   AddMaterial("G4_NYLON-6/6", 1.14, 0, 63.9, 4);
     1344  AddMaterial("G4_NYLON-6-6", 1.14, 0, 63.9, 4);
    13401345  AddElementByWeightFraction( 1, 0.097976);
    13411346  AddElementByWeightFraction( 6, 0.636856);
     
    13431348  AddElementByWeightFraction( 8, 0.141389);
    13441349
    1345   AddMaterial("G4_NYLON-6/10", 1.14, 0, 63.2, 4);
     1350  AddMaterial("G4_NYLON-6-10", 1.14, 0, 63.2, 4);
    13461351  AddElementByWeightFraction( 1, 0.107062);
    13471352  AddElementByWeightFraction( 6, 0.680449);
     
    17031708  AddElementByWeightFraction( 6, 0.905065);
    17041709
    1705   AddMaterial("G4_GRAPHITE", 1.7, 6, 78.);
     1710  AddMaterial("G4_GRAPHITE", 2.21, 6, 78.);
    17061711  nNIST = nMaterials;
    17071712  AddChemicalFormula("G4_GRAPHITE","Graphite");
     
    17271732  AddMaterial("G4_Galactic", density, 1, 21.8, 1, kStateGas);
    17281733  AddGas("G4_Galactic",2.73*kelvin, 3.e-18*pascal);
    1729 }
    1730 
    1731 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    1732 
     1734
     1735  AddMaterial("G4_GRAPHITE_POROUS", 1.7, 6, 78.);
     1736  AddChemicalFormula("G4_GRAPHITE","Graphite");
     1737
     1738}
     1739
     1740//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     1741
  • trunk/source/materials/src/G4NistMessenger.cc

    r986 r1196  
    2525//
    2626//
    27 // $Id: G4NistMessenger.cc,v 1.4 2007/05/02 10:48:52 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4NistMessenger.cc,v 1.8 2009/10/30 19:39:35 bagoulia Exp $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//
     
    5151#include "G4UIcmdWithAnInteger.hh"
    5252#include "G4UIcmdWithAString.hh"
     53#include "G4IonisParamMat.hh"
     54#include "G4DensityEffectData.hh"
    5355
    5456//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     
    7072  prtElmCmd->SetGuidance("symbol = element.");
    7173  prtElmCmd->SetGuidance("all    = all elements.");
    72   prtElmCmd->SetGuidance("verbose>1 : list associated isotopes."); 
    7374  prtElmCmd->SetParameterName("symbol", true);
    7475  prtElmCmd->SetDefaultValue("all");
     
    7677  przElmCmd = new G4UIcmdWithAnInteger("/material/nist/printElementZ",this);
    7778  przElmCmd->SetGuidance("print element Z in dataBase.");
    78   przElmCmd->SetGuidance("verbose>1 : list associated isotopes.");
     79  przElmCmd->SetGuidance("0 = all elements.");
     80  przElmCmd->SetParameterName("Z", true);
     81  przElmCmd->SetDefaultValue(0);
    7982   
    8083  lisMatCmd = new G4UIcmdWithAString("/material/nist/listMaterials",this);
    81   lisMatCmd->SetGuidance("list materials in dataBase.");
    82   lisMatCmd->SetGuidance("simple = simple nist materials.");
    83   lisMatCmd->SetGuidance("compound = compound nist materials.");
    84   lisMatCmd->SetGuidance("hep = hep materials.");
    85   lisMatCmd->SetGuidance("all = all materials.");
     84  lisMatCmd->SetGuidance("list materials in Geant4 dataBase.");
     85  lisMatCmd->SetGuidance("simple - simple NIST materials.");
     86  lisMatCmd->SetGuidance("compound - compound NIST materials.");
     87  lisMatCmd->SetGuidance("hep - HEP materials.");
     88  lisMatCmd->SetGuidance("all - list of all Geant4 materials.");
    8689  lisMatCmd->SetParameterName("list", true);
    8790  lisMatCmd->SetCandidates("simple compound hep all");
     
    9295 
    9396  g4ElmCmd = new G4UIcmdWithAString("/material/g4/printElement",this);
    94   g4ElmCmd->SetGuidance("print Element in G4ElementTable.");
     97  g4ElmCmd->SetGuidance("print Element from G4ElementTable.");
     98  g4ElmCmd->SetGuidance("all - all elements.");
     99  g4ElmCmd->SetParameterName("elm", true);
     100  g4ElmCmd->SetDefaultValue("all");
    95101   
    96102  g4MatCmd = new G4UIcmdWithAString("/material/g4/printMaterial",this);
    97   g4MatCmd->SetGuidance("print Material in G4MaterialTable.");
     103  g4MatCmd->SetGuidance("print Material from G4MaterialTable.");
     104  g4MatCmd->SetGuidance("all - all materials");
     105  g4MatCmd->SetParameterName("mat", true);
     106  g4MatCmd->SetDefaultValue("all");
    98107
     108  g4DensCmd = new G4UIcmdWithAString("/material/g4/printDensityEffParam",this);
     109  g4DensCmd->SetGuidance("print Material from G4DensityEffectData.");
     110  g4DensCmd->SetGuidance("all - all materials");
     111  g4DensCmd->SetParameterName("mat", true);
     112  g4DensCmd->SetDefaultValue("all");
    99113}
    100114
     
    136150  if (command == g4MatCmd)
    137151   { manager->PrintG4Material(newValue);}
     152
     153  if (command == g4DensCmd)
     154    { if (G4Material::GetNumberOfMaterials > 0) {
     155      G4IonisParamMat::GetDensityEffectData()->PrintData(newValue);
     156    }
     157    }
    138158}
    139 
    140159//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
  • trunk/source/materials/src/G4OpticalSurface.cc

    r986 r1196  
    2525//
    2626//
    27 // $Id: G4OpticalSurface.cc,v 1.12 2008/12/11 10:23:54 gcosmo Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4OpticalSurface.cc,v 1.15 2009/11/20 00:57:51 gum Exp $
     28// GEANT4 tag $Name: geant4-09-03-cand-01 $
    2929//
    3030//
     
    6666      polish                     = right.polish;
    6767      theMaterialPropertiesTable = right.theMaterialPropertiesTable;
     68      AngularDistribution        = right.AngularDistribution;
    6869     }
    6970  return *this;
     
    9293                polish = 0.0;
    9394        }
     95        else if ( model == LUT ) {
     96                sigma_alpha = value;
     97                polish = 0.0;
     98        }
    9499        else {
    95100                G4Exception("G4OpticalSurface::G4OpticalSurface ==> "
    96101                            "Constructor called with INVALID model.");
    97102        }
    98 }
    99 
    100 G4OpticalSurface::G4OpticalSurface()
    101   : G4SurfaceProperty()
    102 {
     103
     104        AngularDistribution = NULL;
     105
     106        if (type == dielectric_LUT) {
     107           AngularDistribution =
     108                       new float[incidentIndexMax*thetaIndexMax*phiIndexMax];
     109           ReadFile();
     110        }
    103111}
    104112
    105113G4OpticalSurface::~G4OpticalSurface()
    106114{
     115        if (AngularDistribution) delete AngularDistribution;
    107116}
    108117
     
    143152                G4cout << polish      << G4endl;
    144153        }
     154        else if (theModel == LUT ){
     155                G4cout << sigma_alpha << G4endl;
     156        }
    145157        else {
    146158                G4cout << sigma_alpha << G4endl;
     
    148160        G4cout << G4endl;
    149161}
     162
     163void G4OpticalSurface::SetType(const G4SurfaceType& type)
     164{
     165  theType = type;
     166  if (type == dielectric_LUT) {
     167     if (!AngularDistribution) AngularDistribution =
     168                       new float[incidentIndexMax*thetaIndexMax*phiIndexMax];
     169     ReadFile();
     170  }
     171}
     172
     173void G4OpticalSurface::SetFinish(const G4OpticalSurfaceFinish finish)
     174{
     175  theFinish = finish;
     176  if (theType == dielectric_LUT) {
     177     if (!AngularDistribution) AngularDistribution =
     178                       new float[incidentIndexMax*thetaIndexMax*phiIndexMax];
     179     ReadFile();
     180  }
     181}
     182
     183void G4OpticalSurface::ReadFile()
     184{
     185  G4String readFileName = " ";
     186
     187  if (theFinish == polishedlumirrorglue) {
     188     readFileName = "PolishedLumirrorGlue.dat";
     189  }
     190  else if (theFinish == polishedlumirrorair) {
     191     readFileName = "PolishedLumirror.dat";
     192  }
     193  else if (theFinish == polishedteflonair) {
     194     readFileName = "PolishedTeflon.dat";
     195  }
     196  else if (theFinish == polishedtioair) {
     197     readFileName = "PolishedTiO.dat";
     198  }
     199  else if (theFinish == polishedtyvekair) {
     200     readFileName = "PolishedTyvek.dat";
     201  }
     202  else if (theFinish == polishedvm2000glue) {
     203     readFileName = "PolishedVM2000Glue.dat";
     204  }
     205  else if (theFinish == polishedvm2000air) {
     206     readFileName = "PolishedVM2000.dat";
     207  }
     208  else if (theFinish == etchedlumirrorglue) {
     209     readFileName = "EtchedLumirrorGlue.dat";
     210  }
     211  else if (theFinish == etchedlumirrorair) {
     212     readFileName = "EtchedLumirror.dat";
     213  }
     214  else if (theFinish == etchedteflonair) {
     215     readFileName = "EtchedTeflon.dat";
     216  }
     217  else if (theFinish == etchedtioair) {
     218     readFileName = "EtchedTiO.dat";
     219  }
     220  else if (theFinish == etchedtyvekair) {
     221     readFileName = "EtchedTyvek.dat";
     222  }
     223  else if (theFinish == etchedvm2000glue) {
     224     readFileName = "EtchedVM2000Glue.dat";
     225  }
     226  else if (theFinish == etchedvm2000air) {
     227     readFileName = "EtchedVM2000.dat";
     228  }
     229  else if (theFinish == groundlumirrorglue) {
     230     readFileName = "GroundLumirrorGlue.dat";
     231  }
     232  else if (theFinish == groundlumirrorair) {
     233     readFileName = "GroundLumirror.dat";
     234  }
     235  else if (theFinish == groundteflonair) {
     236     readFileName = "GroundTeflon.dat";
     237  }
     238  else if (theFinish == groundtioair) {
     239     readFileName = "GroundTiO.dat";
     240  }
     241  else if (theFinish == groundtyvekair) {
     242     readFileName = "GroundTyvek.dat";
     243  }
     244  else if (theFinish == groundvm2000glue) {
     245     readFileName = "GroundVM2000Glue.dat";
     246  }
     247  else if (theFinish == groundvm2000air) {
     248     readFileName = "GroundVM2000.dat";
     249  }
     250
     251  if (readFileName == " ") return;
     252
     253  char* path = getenv("G4REALSURFACEDATA");
     254  if (!path) {
     255     G4String excep =
     256        "G4OpBoundaryProcess - G4REALSURFACEDATA environment variable not set";
     257     G4Exception(excep);
     258  }
     259  G4String pathString(path);
     260
     261  readFileName = pathString + "/" + readFileName;
     262
     263  // Open LUT with Material and Integer Angle
     264  FILE* readFileHandle;
     265
     266  readFileHandle = fopen(readFileName,"r");
     267
     268  if (readFileHandle!=NULL) {
     269     for (int i=0;i<incidentIndexMax*thetaIndexMax*phiIndexMax;i++) {
     270         fscanf(readFileHandle,"%6f", &AngularDistribution[i]);
     271     }
     272     G4cout << "LUT - data file: " << readFileName << " read in! " << G4endl;
     273  }
     274  else {
     275     G4String excep = "LUT - data file: " + readFileName + " not found";
     276     G4Exception(excep);
     277  }
     278  fclose(readFileHandle);
     279}
  • trunk/source/materials/src/G4SandiaTable.cc

    r986 r1196  
    2626//
    2727// $Id: G4SandiaTable.cc,v 1.34 2007/10/02 10:13:33 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
  • trunk/source/materials/src/G4SimpleMaterialStoppingICRU73.cc

    r1058 r1196  
    2525//
    2626//
    27 // $Id: G4SimpleMaterialStoppingICRU73.cc,v 1.7 2009/04/29 13:51:53 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
     27// $Id: G4SimpleMaterialStoppingICRU73.cc,v 1.9 2009/11/09 16:51:07 vnivanch Exp $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929
    3030//---------------------------------------------------------------------------
     
    3636// Author:      A.Ivantchenko 07.08.2008
    3737//
     38// in the framework of the ESA Technology Research Programme
     39// (ESA contract 21435/08/NL/AT)
     40//
    3841// Modifications:
    3942// 29.04.2009 A.Ivantchenko added revised data for G4_Cu
    4043//            provided by  Prof.P.Sigmund Univ. Southern Denmark
     44// 03.11.2009 A. Lechner: Added new methods BuildPhysicsVector according
     45//            to interface changes in base class G4VIonDEDXTable.
    4146//
    4247//----------------------------------------------------------------------------
     
    6772
    6873//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    69 
     74G4bool G4SimpleMaterialStoppingICRU73::BuildPhysicsVector(G4int ionZ,
     75                                                          G4int matZ)
     76{
     77  return IsApplicable( ionZ, matZ );
     78}
     79
     80//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     81
     82G4bool G4SimpleMaterialStoppingICRU73::BuildPhysicsVector(G4int ionZ,
     83                                                       const G4String& matName)
     84{
     85  return IsApplicable( ionZ, matName );
     86}
     87
     88//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    7089G4bool G4SimpleMaterialStoppingICRU73::IsApplicable(G4int ionZ,
    7190                                             G4int matZ)
  • trunk/source/materials/src/G4SurfaceProperty.cc

    r986 r1196  
    2626//
    2727// $Id: G4SurfaceProperty.cc,v 1.5 2008/12/11 10:23:54 gcosmo Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: materials-V09-02-18 $
    2929//
    3030//
Note: See TracChangeset for help on using the changeset viewer.