Ignore:
Timestamp:
Jun 18, 2010, 11:42:07 AM (14 years ago)
Author:
garnier
Message:

update geant4-09-04-beta-cand-01 interfaces-V09-03-09 vis-V09-03-08

Location:
trunk/source/processes/electromagnetic/standard/include
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/electromagnetic/standard/include/G4ASTARStopping.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4ASTARStopping.hh,v 1.6 2008/11/13 12:04:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4ASTARStopping.hh,v 1.8 2010/04/26 17:22:08 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828
    2929#ifndef G4ASTARStopping_h
     
    5555
    5656#include "globals.hh"
     57#include "G4LPhysicsFreeVector.hh"
     58#include <vector>
    5759
    5860class G4Material;
     
    7678  void Initialise();
    7779
     80  void AddData(G4double* e, G4double* s, G4int idx);
     81
    7882  // hide assignment operator
    7983  G4ASTARStopping & operator=(const  G4ASTARStopping &right);
    8084  G4ASTARStopping(const  G4ASTARStopping&);
    8185
     86  G4int matIndex;
    8287  const G4Material* currentMaterial;
    83   G4int index, matIndex;
    84   G4String name[74];
    85   G4double currentE, res;
    86   G4double e[74][78], kinE[78];
    87   G4double effZ[74];
     88  G4double emin;
     89  std::vector<G4String> name;
     90  std::vector<G4double> effZ;
     91  std::vector<G4LPhysicsFreeVector*> sdata;
    8892};
    8993
     
    97101{
    98102  return effZ[idx];
    99 }
     103} 
    100104
    101105#endif
  • trunk/source/processes/electromagnetic/standard/include/G4BetheBlochModel.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BetheBlochModel.hh,v 1.20 2009/04/23 17:44:43 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4BetheBlochModel.hh,v 1.23 2010/05/27 14:26:17 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    116116                                     G4double kineticEnergy);
    117117
    118   virtual void CorrectionsAlongStep(const G4MaterialCutsCouple*,
    119                                     const G4DynamicParticle*,
     118  virtual void CorrectionsAlongStep(const G4MaterialCutsCouple* couple,
     119                                    const G4DynamicParticle* dp,
    120120                                    G4double& eloss,
    121                                     G4double& niel,
     121                                    G4double&,
    122122                                    G4double length);
    123123
     
    133133                                      G4double kinEnergy);
    134134
     135  inline G4double GetChargeSquareRatio() const;
     136
     137  inline void SetChargeSquareRatio(G4double val);
     138
    135139private:
    136140
    137   inline void SetupParameters();
     141  void SetupParameters();
    138142
    139143  inline void SetParticle(const G4ParticleDefinition* p);
     
    169173//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    170174
    171 inline void G4BetheBlochModel::SetupParameters()
    172 {
    173   mass = particle->GetPDGMass();
    174   spin = particle->GetPDGSpin();
    175   G4double q = particle->GetPDGCharge()/eplus;
    176   chargeSquare = q*q;
    177   ratio = electron_mass_c2/mass;
    178   G4double magmom = particle->GetPDGMagneticMoment()*mass/(0.5*eplus*hbar_Planck*c_squared);
    179   magMoment2 = magmom*magmom - 1.0;
    180   formfact = 0.0;
    181   if(particle->GetLeptonNumber() == 0) {
    182     G4double x = 0.8426*GeV;
    183     if(spin == 0.0 && mass < GeV) {x = 0.736*GeV;}
    184     else if(mass > GeV) {
    185       x /= nist->GetZ13(mass/proton_mass_c2);
    186       //        tlimit = 51.2*GeV*A13[iz]*A13[iz];
    187     }
    188     formfact = 2.0*electron_mass_c2/(x*x);
    189     tlimit   = 2.0/formfact;
    190   }
    191 }
    192 
    193 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    194 
    195175inline void G4BetheBlochModel::SetParticle(const G4ParticleDefinition* p)
    196176{
    197177  if(particle != p) {
    198178    particle = p;
    199     if (p->GetPDGCharge()/eplus > 1.5 && p->GetBaryonNumber() > 2) isIon = true;
     179    if (p->GetPDGCharge()/eplus > 1.5 && p->GetBaryonNumber() > 2)
     180      { isIon = true; }
    200181    SetupParameters();
    201182  }
     
    206187inline void G4BetheBlochModel::SetGenericIon(const G4ParticleDefinition* p)
    207188{
    208   if(p && particle != p) {
    209     if(p->GetParticleName() == "GenericIon") isIon = true;
     189  if(p && particle != p) { 
     190    if(p->GetParticleName() == "GenericIon") { isIon = true; }
    210191  }
    211192}
    212193
     194//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     195
     196inline G4double G4BetheBlochModel::GetChargeSquareRatio() const
     197{
     198  return chargeSquare;
     199}
     200
     201//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     202
     203inline void G4BetheBlochModel::SetChargeSquareRatio(G4double val)
     204{
     205  chargeSquare = val;
     206}
     207
     208//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     209
    213210#endif
  • trunk/source/processes/electromagnetic/standard/include/G4BraggModel.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BraggModel.hh,v 1.14 2009/11/10 19:25:47 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4BraggModel.hh,v 1.15 2010/05/27 10:08:58 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    121121                                     const G4Material* mat,
    122122                                     G4double kineticEnergy);
    123   /*
    124   // add correction to energy loss and compute non-ionizing energy loss
    125   virtual void CorrectionsAlongStep(const G4MaterialCutsCouple*,
    126                                     const G4DynamicParticle*,
    127                                     G4double& eloss,
    128                                     G4double& niel,
    129                                     G4double length);
    130   */
    131123
    132124protected:
     
    134126  virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    135127                                      G4double kinEnergy);
     128
     129  inline G4double GetChargeSquareRatio() const;
     130
     131  inline void SetChargeSquareRatio(G4double val);
    136132
    137133private:
     
    197193}
    198194
     195inline G4double G4BraggModel::GetChargeSquareRatio() const
     196{
     197  return chargeSquare;
     198}
     199
     200inline void G4BraggModel::SetChargeSquareRatio(G4double val)
     201{
     202  chargeSquare = val;
     203}
     204
    199205//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    200206
  • trunk/source/processes/electromagnetic/standard/include/G4CoulombScattering.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4CoulombScattering.hh,v 1.13 2009/05/07 18:41:45 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4CoulombScattering.hh,v 1.14 2010/02/17 18:59:22 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    7373  // Set energy above which high energy model will be used
    7474  inline void SetHEModelLimit(G4double);
    75 
    76   // obsolete method to be removed
    77   inline void SetBuildTableFlag(G4bool);
    7875
    7976  // Print out of the class parameters
     
    125122//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    126123
    127 inline void G4CoulombScattering::SetBuildTableFlag(G4bool)
    128 {}
    129 
    130 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    131 
    132124inline void G4CoulombScattering::SetHEModelLimit(G4double val)
    133125{
  • trunk/source/processes/electromagnetic/standard/include/G4CoulombScatteringModel.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4CoulombScatteringModel.hh,v 1.15 2008/07/31 13:11:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4CoulombScatteringModel.hh,v 1.17 2010/05/27 14:22:05 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    4545// 09.10.07 V.Ivanchenko reorganized methods, add cut dependence in scattering off e-
    4646// 09.06.08 V.Ivanchenko SelectIsotope is moved to the base class
     47// 27.05.10 V.Ivanchenko added G4WentzelOKandVIxSection class to
     48//              compute cross sections and sample scattering angle
    4749//
    4850// Class Description:
  • trunk/source/processes/electromagnetic/standard/include/G4GoudsmitSaundersonMscModel.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4GoudsmitSaundersonMscModel.hh,v 1.2 2009/06/04 13:45:49 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4GoudsmitSaundersonMscModel.hh,v 1.4 2010/05/17 15:11:30 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    4141// Modifications:
    4242// 04.03.2009 V.Ivanchenko cleanup and format according to Geant4 EM style
     43// 12.05.2010 O.Kadri: adding Qn1 and Qn12 as private doubles
    4344//
    4445// Class description:
     
    5455//Ref.5:F. Salvat et al.,"ELSEPA--Dirac partial ...molecules", Comp. Phys. Comm. 165 (2005) pp 157-190;
    5556//Ref.6:G4UrbanMscModel G4_v9.1Ref09;
    56 //Ref.7:G4eCoulombScatteringModel G4_v9.1Ref09.
     57//Ref.7:G4WentzelVIModel G4_v9.3.
    5758//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    5859
     
    6364#include "G4PhysicsTable.hh"
    6465#include "globals.hh"
    65 #include "G4DataInterpolation.hh"
    6666
    6767class G4DataVector;
     
    114114  G4GoudsmitSaundersonMscModel(const  G4GoudsmitSaundersonMscModel&);
    115115
    116   G4double              lowKEnergy;
    117   G4double              highKEnergy;
     116  G4double lowKEnergy;
     117  G4double highKEnergy;
    118118  G4double currentKinEnergy;
    119119  G4double currentRange;
     
    125125  G4double charge,lambdalimit;
    126126  G4double tPathLength,stepmin ;
    127   G4double lambda1,lambda11;
     127  G4double lambda0,lambda1,lambda11,Qn1,Qn12;
    128128  G4double mass;
    129   G4double lambda0;
    130129  G4int    currentMaterialIndex;
    131130
     
    139138  const G4ParticleDefinition* particle;
    140139  G4ParticleChangeForMSC*     fParticleChange;
    141   G4DataInterpolation* MyValue;
    142140  const G4MaterialCutsCouple* currentCouple;
    143141
  • trunk/source/processes/electromagnetic/standard/include/G4GoudsmitSaundersonTable.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4GoudsmitSaundersonTable.hh,v 1.3 2009/06/18 18:43:09 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4GoudsmitSaundersonTable.hh,v 1.4 2010/02/19 09:29:53 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4PSTARStopping.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PSTARStopping.hh,v 1.5 2008/11/13 12:04:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4PSTARStopping.hh,v 1.7 2010/04/26 17:22:08 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828
    2929#ifndef G4PSTARStopping_h
     
    5656
    5757#include "globals.hh"
     58#include "G4LPhysicsFreeVector.hh"
     59#include <vector>
    5860
    5961class G4Material;
     
    7678  void Initialise();
    7779
     80  void AddData(G4double* e, G4double* s, G4int idx);
     81
    7882  // hide assignment operator
    7983  G4PSTARStopping & operator=(const  G4PSTARStopping &right);
    8084  G4PSTARStopping(const  G4PSTARStopping&);
    8185
     86  G4int matIndex;
    8287  const G4Material* currentMaterial;
    83   G4int index, matIndex;
    84   G4String name[74];
    85   G4double currentE, res;
    86   G4double e[74][60], kinE[60];
     88  G4double emin;
     89  std::vector<G4String> name;
     90  std::vector<G4LPhysicsFreeVector*> sdata;
    8791};
    8892
  • trunk/source/processes/electromagnetic/standard/include/G4UrbanMscModel93.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4UrbanMscModel93.hh,v 1.1 2009/11/01 13:04:12 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4UrbanMscModel93.hh,v 1.4 2009/12/14 06:57:12 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4WaterStopping.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4WaterStopping.hh,v 1.7 2009/06/19 10:39:48 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4WaterStopping.hh,v 1.8 2010/04/26 17:22:08 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828
    2929#ifndef G4WaterStopping_h
     
    7979  G4int    Z[17];
    8080  G4double A[17];
     81  G4double emin;
    8182  std::vector<G4LPhysicsFreeVector*>  dedx;
    8283};
  • trunk/source/processes/electromagnetic/standard/include/G4WentzelVIModel.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4WentzelVIModel.hh,v 1.21 2009/10/10 15:16:57 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4WentzelVIModel.hh,v 1.29 2010/05/27 14:22:05 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    4040//
    4141// Modifications:
    42 //
     42// 27-05-2010 V.Ivanchenko added G4WentzelOKandVIxSection class to
     43//              compute cross sections and sample scattering angle
    4344//
    4445// Class Description:
     
    6061#include "G4VMscModel.hh"
    6162#include "G4PhysicsTable.hh"
    62 #include "G4MscStepLimitType.hh"
    6363#include "G4MaterialCutsCouple.hh"
    64 #include "G4NistManager.hh"
    65 
     64#include "G4WentzelOKandVIxSection.hh"
     65
     66class G4ParticleDefinition;
    6667class G4LossTableManager;
    67 class G4ParticleChangeForMSC;
    68 class G4ParticleDefinition;
     68class G4Pow;
    6969
    7070//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     
    100100private:
    101101
    102   G4double ComputeTransportXSectionPerAtom();
    103 
    104102  G4double ComputeXSectionPerVolume();
    105103
    106   void ComputeMaxElectronScattering(G4double cut);
    107 
    108104  inline G4double GetLambda(G4double kinEnergy);
    109105
    110106  inline void SetupParticle(const G4ParticleDefinition*);
    111 
    112   inline void SetupKinematic(G4double kinEnergy, G4double cut);
    113  
    114   inline void SetupTarget(G4double Z, G4double kinEnergy);
    115107
    116108  inline void DefineMaterial(const G4MaterialCutsCouple*);
     
    120112  G4WentzelVIModel(const  G4WentzelVIModel&);
    121113
    122   const G4ParticleDefinition* theProton;
    123   const G4ParticleDefinition* theElectron;
    124   const G4ParticleDefinition* thePositron;
    125 
     114  G4LossTableManager*       theManager;
    126115  G4ParticleChangeForMSC*   fParticleChange;
     116  G4WentzelOKandVIxSection* wokvi;
     117  G4Pow*                    fG4pow;
    127118
    128119  G4PhysicsTable*           theLambdaTable;
    129   G4PhysicsTable*           theLambda2Table;
    130   G4LossTableManager*       theManager;
    131120  const G4DataVector*       currentCuts;
    132121
    133   G4NistManager*            fNistManager;
    134 
    135   G4double numlimit;
    136122  G4double tlimitminfix;
    137123  G4double invsqrt12;
    138124
    139   // cash
     125  // cache kinematics
    140126  G4double preKinEnergy;
    141   G4double ecut;
    142   G4double lambda0;
    143127  G4double tPathLength;
    144128  G4double zPathLength;
    145129  G4double lambdaeff;
    146130  G4double currentRange;
    147   G4double par1;
    148   G4double par2;
    149   G4double par3;
    150 
     131
     132  // data for single scattering mode
    151133  G4double xtsec;
    152134  std::vector<G4double> xsecn;
     
    154136  G4int    nelments;
    155137
    156   G4int    nbins;
    157   G4int    nwarnings;
    158   G4int    nwarnlimit;
    159 
     138  G4double numlimit;
     139
     140  // cache material
    160141  G4int    currentMaterialIndex;
    161 
    162142  const G4MaterialCutsCouple* currentCouple;
    163143  const G4Material* currentMaterial;
    164144
    165145  // single scattering parameters
    166   G4double coeff;
    167146  G4double cosThetaMin;
    168147  G4double cosThetaMax;
    169148  G4double cosTetMaxNuc;
    170   G4double cosTetMaxNuc2;
    171   G4double cosTetMaxElec;
    172   G4double cosTetMaxElec2;
    173   G4double q2Limit;
    174   G4double alpha2;
    175149
    176150  // projectile
    177151  const G4ParticleDefinition* particle;
    178 
    179   G4double chargeSquare;
    180   G4double spin;
    181   G4double mass;
    182   G4double tkin;
    183   G4double mom2;
    184   G4double invbeta2;
    185   G4double kinFactor;
    186   G4double etag;
    187152  G4double lowEnergyLimit;
    188 
    189   // target
    190   G4double targetZ;
    191   G4double targetMass;
    192   G4double screenZ;
    193   G4double formfactA;
    194   G4int    iz;
    195 
    196   static G4double ScreenRSquare[100];
    197   static G4double FormFactor[100];
    198153
    199154  // flags
     
    222177  G4double x;
    223178  if(theLambdaTable) {
    224     G4bool b;
    225     x = ((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b);
     179    x = ((*theLambdaTable)[currentMaterialIndex])->Value(e);
    226180  } else {
    227181    x = CrossSection(currentCouple,particle,e,
    228182                     (*currentCuts)[currentMaterialIndex]);
    229183  }
    230   if(x > DBL_MIN) x = 1./x;
    231   else            x = DBL_MAX;
     184  if(x > DBL_MIN) { x = 1./x; }
     185  else            { x = DBL_MAX; }
    232186  return x;
    233187}
     
    240194  if(p != particle) {
    241195    particle = p;
    242     mass = particle->GetPDGMass();
    243     spin = particle->GetPDGSpin();
    244     G4double q = particle->GetPDGCharge()/eplus;
    245     chargeSquare = q*q;
    246     tkin = 0.0;
     196    wokvi->SetupParticle(p);
    247197  }
    248198}
    249199
    250 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    251 
    252 inline void G4WentzelVIModel::SetupKinematic(G4double ekin, G4double cut)
    253 {
    254   if(ekin != tkin || ecut != cut) {
    255     tkin  = ekin;
    256     mom2  = tkin*(tkin + 2.0*mass);
    257     invbeta2 = 1.0 +  mass*mass/mom2;
    258     cosTetMaxNuc = cosThetaMax;
    259     if(mass < MeV && ekin <= 10.*cut) {
    260       cosTetMaxNuc = ekin*(cosThetaMax + 1.0)/(10.*cut) - 1.0;
    261     }
    262     ComputeMaxElectronScattering(cut);
    263   }
    264 }
    265 
    266 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    267  
    268 inline void G4WentzelVIModel::SetupTarget(G4double Z, G4double e)
    269 {
    270   if(Z != targetZ || e != etag) {
    271     etag    = e;
    272     targetZ = Z;
    273     iz = G4int(Z);
    274     if(iz > 99) iz = 99;
    275     targetMass = fNistManager->GetAtomicMassAmu(iz)*amu_c2;
    276     screenZ = ScreenRSquare[iz]/mom2;
    277     G4double meff = targetMass/(mass+targetMass);
    278     kinFactor = coeff*targetZ*chargeSquare*invbeta2/(mom2*meff*meff);
    279     screenZ *=(1.13 + std::min(1.0,3.76*Z*Z*invbeta2*alpha2));
    280     if(mass > MeV) { screenZ *= 2.0; }
    281     formfactA = FormFactor[iz]*mom2;
    282     cosTetMaxNuc2 = cosTetMaxNuc;
    283     cosTetMaxElec2 = cosTetMaxElec;
    284   }
    285 }
    286 
    287200//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    288201
  • trunk/source/processes/electromagnetic/standard/include/G4eCoulombScatteringModel.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eCoulombScatteringModel.hh,v 1.49 2009/10/10 15:16:57 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4eCoulombScatteringModel.hh,v 1.56 2010/05/27 14:22:05 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    4747// 09.06.08 V.Ivanchenko add SelectIsotope and sampling of the recoil ion
    4848// 17.06.09 C.Consoalndi modified SetupTarget method - remove kinFactor
     49// 27.05.10 V.Ivanchenko added G4WentzelOKandVIxSection class to
     50//              compute cross sections and sample scattering angle
    4951//                                     
    5052//
     
    6668
    6769#include "G4VEmModel.hh"
    68 #include "G4PhysicsTable.hh"
    6970#include "globals.hh"
    70 #include "G4NistManager.hh"
    71 #include <vector>
     71#include "G4MaterialCutsCouple.hh"
     72#include "G4WentzelOKandVIxSection.hh"
    7273
    7374class G4ParticleChangeForGamma;
    7475class G4ParticleDefinition;
     76class G4ParticleTable;
     77class G4NistManager;
    7578
    7679class G4eCoulombScatteringModel : public G4VEmModel
     
    99102                                 G4double maxEnergy);
    100103
     104  // defines low energy limit of the model
     105  inline void SetLowEnergyLimit(G4double val);
     106
     107  // obsolete method
    101108  inline void SetRecoilThreshold(G4double eth);
    102109
    103110protected:
    104 
    105   G4double CrossSectionPerAtom();
    106 
    107   G4double SampleCosineTheta();
    108111
    109112  inline void DefineMaterial(const G4MaterialCutsCouple*);
     
    111114  inline void SetupParticle(const G4ParticleDefinition*);
    112115
    113   inline void SetupKinematic(G4double kinEnergy, G4double cut);
    114  
    115   inline void SetupTarget(G4double Z, G4double kinEnergy);
    116 
    117116private:
    118 
    119   void ComputeMaxElectronScattering(G4double cut);
    120117
    121118  // hide assignment operator
     
    125122protected:
    126123 
    127   const G4ParticleDefinition* theProton;
    128   const G4ParticleDefinition* theElectron;
    129   const G4ParticleDefinition* thePositron;
    130 
    131   G4ParticleTable*          theParticleTable;
     124  G4ParticleTable*          theParticleTable;
    132125  G4ParticleChangeForGamma* fParticleChange;
     126  G4WentzelOKandVIxSection* wokvi;
    133127  G4NistManager*            fNistManager;
    134128
     
    140134  G4int                       currentMaterialIndex;
    141135
    142   G4double                  coeff;
    143136  G4double                  cosThetaMin;
    144137  G4double                  cosThetaMax;
    145138  G4double                  cosTetMinNuc;
    146139  G4double                  cosTetMaxNuc;
    147   G4double                  cosTetMaxNuc2;
    148   G4double                  cosTetMaxElec;
    149   G4double                  cosTetMaxElec2;
    150   G4double                  q2Limit;
    151140  G4double                  recoilThreshold;
    152   G4double                  elecXSection;
    153   G4double                  nucXSection;
    154   G4double                  ecut;
     141  G4double                  elecRatio;
     142  G4double                  mass;
    155143
    156144  // projectile
    157145  const G4ParticleDefinition* particle;
     146  const G4ParticleDefinition* theProton;
    158147
    159   G4double                  chargeSquare;
    160   G4double                  spin;
    161   G4double                  mass;
    162   G4double                  tkin;
    163   G4double                  mom2;
    164   G4double                  invbeta2;
    165   G4double                  etag;
    166148  G4double                  lowEnergyLimit;
    167149
    168   // target
    169   G4double                  targetZ;
    170   G4double                  targetMass;
    171   G4double                  screenZ;
    172   G4double                  formfactA;
    173   G4int                     idxelm;
    174   G4int                     iz;
    175 
    176150private:
    177 
    178   G4double                  alpha2;
    179   G4double                  faclim;
    180 
    181   static G4double ScreenRSquare[100];
    182   static G4double FormFactor[100];
    183151
    184152  G4bool                    isInitialised;             
     
    206174    particle = p;
    207175    mass = particle->GetPDGMass();
    208     spin = particle->GetPDGSpin();
    209     G4double q = particle->GetPDGCharge()/eplus;
    210     chargeSquare = q*q;
    211     tkin = 0.0;
     176    wokvi->SetupParticle(p);
    212177  }
    213178}
     
    215180//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    216181
    217 inline void G4eCoulombScatteringModel::SetupKinematic(G4double ekin,
    218                                                       G4double cut)
     182inline void G4eCoulombScatteringModel::SetLowEnergyLimit(G4double val)
    219183{
    220   if(ekin != tkin || ecut != cut) {
    221     tkin = ekin;
    222     mom2 = tkin*(tkin + 2.0*mass);
    223     invbeta2 = 1.0 +  mass*mass/mom2;
    224     cosTetMinNuc = cosThetaMin;
    225     cosTetMaxNuc = cosThetaMax;
    226     if(mass < MeV && cosThetaMin < 1.0 && ekin <= 10.*cut) {
    227       cosTetMinNuc = ekin*(cosThetaMin + 1.0)/(10.*cut) - 1.0;
    228     }
    229     ComputeMaxElectronScattering(cut);
    230   }
     184  lowEnergyLimit = val;
    231185}
    232 
    233 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    234  
    235 inline void G4eCoulombScatteringModel::SetupTarget(G4double Z, G4double e)
    236 {
    237   if(Z != targetZ || e != etag) {
    238     etag    = e;
    239     targetZ = Z;
    240     iz= G4int(Z);
    241     if(iz > 99) iz = 99;
    242     targetMass = fNistManager->GetAtomicMassAmu(iz)*amu_c2;
    243     screenZ = ScreenRSquare[iz]/mom2;
    244     screenZ *=(1.13 + std::min(1.0,3.76*Z*Z*invbeta2*alpha2));
    245     if(mass > MeV) { screenZ *= 2.0; }
    246     formfactA = FormFactor[iz]*mom2;
    247     cosTetMaxNuc2 = cosTetMaxNuc;
    248     if(1 == iz && particle == theProton && cosTetMaxNuc2 < 0.0) {
    249       cosTetMaxNuc2 = 0.0;
    250     }
    251     cosTetMaxElec2 = cosTetMaxElec;
    252   }
    253 }
    254186
    255187//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
  • trunk/source/processes/electromagnetic/standard/include/G4hIonisation.hh

    r1228 r1315  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hIonisation.hh,v 1.42 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4hIonisation.hh,v 1.44 2010/05/27 10:25:23 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-04-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    101101  virtual void PrintInfo();
    102102
     103  // obsolete method
    103104  void ActivateNuclearStopping(G4bool);
    104105
     
    115116
    116117  G4bool     isInitialised;
    117   G4bool     nuclearStopping;
    118118
    119119  G4double   mass;
     
    124124//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    125125
    126 inline void G4hIonisation::ActivateNuclearStopping(G4bool val)
    127 {
    128   nuclearStopping = val;
    129 }
    130 
    131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    132 
    133126#endif
Note: See TracChangeset for help on using the changeset viewer.