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/utils/include/G4VEmModel.hh

    r819 r961  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEmModel.hh,v 1.48 2007/10/29 08:38:58 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-01-patch-02 $
     26// $Id: G4VEmModel.hh,v 1.66 2009/02/19 09:57:36 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02-ref-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6161// 29-06-06 Add member currentElement and Get/Set methods (V.Ivanchenko)
    6262// 29-10-07 Added SampleScattering (V.Ivanchenko)
     63// 15-07-08 Reorder class members and improve comments (VI)
     64// 21-07-08 Added vector of G4ElementSelector and methods to use it (VI)
     65// 12-09-08 Added methods GetParticleCharge, GetChargeSquareRatio,
     66//          CorrectionsAlongStep, ActivateNuclearStopping (VI)
     67// 16-02-09 Move implementations of virtual methods to source (VI)
    6368//
    6469// Class Description:
     
    8186#include "G4DataVector.hh"
    8287#include "G4VEmFluctuationModel.hh"
     88#include "G4EmElementSelector.hh"
    8389#include "Randomize.hh"
     90#include <vector>
    8491
    8592class G4PhysicsTable;
     
    98105
    99106  //------------------------------------------------------------------------
    100   // Virtual methods to be implemented for the concrete model
    101   //------------------------------------------------------------------------
    102 
    103   virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&) = 0;
    104 
     107  // Virtual methods to be implemented for any concrete model
     108  //------------------------------------------------------------------------
     109
     110  virtual void Initialise(const G4ParticleDefinition*,
     111                          const G4DataVector&) = 0;
    105112
    106113  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     
    114121  //------------------------------------------------------------------------
    115122
    116   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    117                         const G4MaterialCutsCouple*);
    118 
    119   virtual G4double ComputeDEDX(const G4MaterialCutsCouple*,
    120                                const G4ParticleDefinition*,
    121                                G4double kineticEnergy,
    122                                G4double cutEnergy = DBL_MAX);
    123 
    124   virtual G4double CrossSection(const G4MaterialCutsCouple*,
    125                                 const G4ParticleDefinition*,
    126                                 G4double kineticEnergy,
    127                                 G4double cutEnergy = 0.0,
    128                                 G4double maxEnergy = DBL_MAX);
    129 
     123  // main method to compute dEdx
    130124  virtual G4double ComputeDEDXPerVolume(const G4Material*,
    131125                                        const G4ParticleDefinition*,
     
    133127                                        G4double cutEnergy = DBL_MAX);
    134128
    135 
    136   virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
    137                                               G4double kinEnergy,
    138                                               G4double Z,
    139                                               G4double A = 0.,
    140                                               G4double cutEnergy = 0.0,
    141                                               G4double maxEnergy = DBL_MAX);
    142                                      
    143   virtual G4double ComputeMeanFreePath(const G4ParticleDefinition*,
    144                                        G4double kineticEnergy,
    145                                        const G4Material*,   
    146                                        G4double cutEnergy = 0.0,
    147                                        G4double maxEnergy = DBL_MAX);
    148                                      
     129  // main method to compute cross section per Volume
    149130  virtual G4double CrossSectionPerVolume(const G4Material*,
    150131                                         const G4ParticleDefinition*,
     
    153134                                         G4double maxEnergy = DBL_MAX);
    154135
     136  // main method to compute cross section depending on atom
     137  virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
     138                                              G4double kinEnergy,
     139                                              G4double Z,
     140                                              G4double A = 0., /* amu */
     141                                              G4double cutEnergy = 0.0,
     142                                              G4double maxEnergy = DBL_MAX);
     143                                                                     
     144  // min cut in kinetic energy allowed by the model
     145  virtual G4double MinEnergyCut(const G4ParticleDefinition*,
     146                                const G4MaterialCutsCouple*);
     147
     148  // Compute effective ion charge square
     149  virtual G4double GetChargeSquareRatio(const G4ParticleDefinition*,
     150                                        const G4Material*,
     151                                        G4double kineticEnergy);
     152
     153  // Compute ion charge
     154  virtual G4double GetParticleCharge(const G4ParticleDefinition*,
     155                                     const G4Material*,
     156                                     G4double kineticEnergy);
     157
     158  // add correction to energy loss and ompute non-ionizing energy loss
     159  virtual void CorrectionsAlongStep(const G4MaterialCutsCouple*,
     160                                    const G4DynamicParticle*,
     161                                    G4double& eloss,
     162                                    G4double& niel,
     163                                    G4double length);
     164
     165  // sample PIXE deexcitation
     166  virtual void SampleDeexcitationAlongStep(const G4Material*,
     167                                           const G4Track&,
     168                                           G4double& eloss);
     169
    155170protected:
    156171
     172  // kinematically allowed max kinetic energy of a secondary
    157173  virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    158174                                      G4double kineticEnergy); 
     
    177193  virtual void DefineForRegion(const G4Region*);
    178194
     195  virtual void SetupForMaterial(const G4ParticleDefinition*,
     196                                const G4Material*,
     197                                G4double kineticEnergy);
     198
    179199  //------------------------------------------------------------------------
    180200  // Generic methods common to all models
    181201  //------------------------------------------------------------------------
    182202
    183   void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel*);
    184 
    185   G4VEmFluctuationModel* GetModelOfFluctuations();
    186 
    187   G4double HighEnergyLimit();
    188 
    189   G4double LowEnergyLimit();
    190 
    191   void SetHighEnergyLimit(G4double);
    192 
    193   void SetLowEnergyLimit(G4double);
    194 
    195   G4double MaxSecondaryKinEnergy(const G4DynamicParticle* dynParticle);
    196 
    197   const G4Element* SelectRandomAtom(const G4Material*,
    198                                     const G4ParticleDefinition*,
    199                                     G4double kineticEnergy,
    200                                     G4double cutEnergy = 0.0,
    201                                     G4double maxEnergy = DBL_MAX);
    202 
    203   const G4String& GetName() const;
     203  // should be called at initialisation to build element selectors
     204  void InitialiseElementSelectors(const G4ParticleDefinition*,
     205                                  const G4DataVector&);
     206
     207  // dEdx per unit length
     208  inline G4double ComputeDEDX(const G4MaterialCutsCouple*,
     209                              const G4ParticleDefinition*,
     210                              G4double kineticEnergy,
     211                              G4double cutEnergy = DBL_MAX);
     212
     213  // cross section per volume
     214  inline G4double CrossSection(const G4MaterialCutsCouple*,
     215                                const G4ParticleDefinition*,
     216                                G4double kineticEnergy,
     217                                G4double cutEnergy = 0.0,
     218                                G4double maxEnergy = DBL_MAX);
     219
     220  // compute mean free path via cross section per volume
     221  inline G4double ComputeMeanFreePath(const G4ParticleDefinition*,
     222                                      G4double kineticEnergy,
     223                                      const G4Material*,   
     224                                      G4double cutEnergy = 0.0,
     225                                      G4double maxEnergy = DBL_MAX);
     226
     227  // generic cross section per element
     228  inline G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
     229                                             const G4Element*,
     230                                             G4double kinEnergy,
     231                                             G4double cutEnergy = 0.0,
     232                                             G4double maxEnergy = DBL_MAX);
     233
     234  // atom can be selected effitiantly if element selectors are initialised
     235  inline const G4Element* SelectRandomAtom(const G4MaterialCutsCouple*,
     236                                           const G4ParticleDefinition*,
     237                                           G4double kineticEnergy,
     238                                           G4double cutEnergy = 0.0,
     239                                           G4double maxEnergy = DBL_MAX);
     240
     241  // to select atom cross section per volume is recomputed for each element
     242  inline const G4Element* SelectRandomAtom(const G4Material*,
     243                                           const G4ParticleDefinition*,
     244                                           G4double kineticEnergy,
     245                                           G4double cutEnergy = 0.0,
     246                                           G4double maxEnergy = DBL_MAX);
     247
     248  // select isotope in order to have precise mass of the nucleus
     249  inline G4int SelectIsotopeNumber(const G4Element*);
     250
     251  //------------------------------------------------------------------------
     252  // Get/Set methods
     253  //------------------------------------------------------------------------
     254
     255  inline G4VEmFluctuationModel* GetModelOfFluctuations();
     256
     257  inline G4double HighEnergyLimit() const;
     258
     259  inline G4double LowEnergyLimit() const;
     260
     261  inline G4double PolarAngleLimit() const;
     262
     263  inline G4double SecondaryThreshold() const;
     264
     265  inline G4bool LPMFlag() const;
     266
     267  inline G4bool DeexcitationFlag() const;
     268
     269  inline void SetHighEnergyLimit(G4double);
     270
     271  inline void SetLowEnergyLimit(G4double);
     272
     273  inline void SetPolarAngleLimit(G4double);
     274
     275  inline void SetSecondaryThreshold(G4double);
     276
     277  inline void SetLPMFlag(G4bool val);
     278
     279  inline void SetDeexcitationFlag(G4bool val);
     280
     281  inline void ActivateNuclearStopping(G4bool);
     282
     283  inline G4double MaxSecondaryKinEnergy(const G4DynamicParticle* dynParticle);
     284
     285  inline const G4String& GetName() const;
     286
     287  inline void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel*);
     288
     289  inline void SetCurrentCouple(const G4MaterialCutsCouple*);
    204290
    205291protected:
    206292
    207   const G4Element* GetCurrentElement() const;
    208 
    209   void SetCurrentElement(const G4Element*);
     293  inline const G4MaterialCutsCouple* CurrentCouple() const;
     294
     295  inline void SetCurrentElement(const G4Element*);
     296
     297  inline const G4Element* GetCurrentElement() const;
    210298
    211299private:
     
    215303  G4VEmModel(const  G4VEmModel&);
    216304
     305  // ======== Parameters of the class fixed at construction =========
     306
     307  G4VEmFluctuationModel* fluc;
     308  const G4String   name;
     309
     310  // ======== Parameters of the class fixed at initialisation =======
     311
    217312  G4double        lowLimit;
    218313  G4double        highLimit;
    219   G4double        xsec[40];
    220 
    221   G4VEmFluctuationModel* fluc;
    222 
    223   const G4String   name;
    224   const G4Element* currentElement;
     314  G4double        polarAngleLimit;
     315  G4double        secondaryThreshold;
     316  G4bool          theLPMflag;
     317
     318  G4int           nSelectors;
     319  std::vector<G4EmElementSelector*> elmSelectors;
    225320
    226321protected:
    227322
    228323  G4VParticleChange*  pParticleChange;
     324  G4bool              nuclearStopping;
     325
     326  // ======== Cashed values - may be state dependent ================
     327
     328private:
     329
     330  const G4MaterialCutsCouple* currentCouple;
     331  const G4Element*            currentElement;
     332
     333  G4int                  nsec;
     334  G4bool                 flagDeexcitation;
     335  std::vector<G4double>  xsec;
     336
    229337};
    230338
    231339//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    232 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    233 
    234 inline G4double G4VEmModel::HighEnergyLimit()
    235 {
    236   return highLimit;
    237 }
    238 
    239 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    240 
    241 inline G4double G4VEmModel::LowEnergyLimit()
    242 {
    243   return lowLimit;
    244 }
    245 
    246 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    247 
    248 inline void G4VEmModel::SetHighEnergyLimit(G4double val)
    249 {
    250   highLimit = val;
    251 }
    252 
    253 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    254 
    255 inline void G4VEmModel::SetLowEnergyLimit(G4double val)
    256 {
    257   lowLimit = val;
    258 }
    259 
    260 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    261 
    262 inline void G4VEmModel::SetParticleChange(G4VParticleChange* p, 
    263                                           G4VEmFluctuationModel* f = 0)
    264 {
    265   if(p && pParticleChange != p) pParticleChange = p;
    266   fluc = f;
    267 }
    268 
    269 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    270 
    271 
    272 inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations()
    273 {
    274   return fluc;
    275 }
    276 
    277 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    278 
    279 inline G4double G4VEmModel::MinEnergyCut(const G4ParticleDefinition*,
    280                                          const G4MaterialCutsCouple*)
    281 {
    282   return 0.0;
    283 }
    284 
    285 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    286 
    287 inline G4double G4VEmModel::ComputeDEDXPerVolume(
    288                                         const G4Material*,
    289                                         const G4ParticleDefinition*,
    290                                         G4double,
    291                                         G4double)
    292 {
    293   return 0.0;
    294 }
    295 
    296340//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    297341
     
    301345                                        G4double cutEnergy)
    302346{
     347  currentCouple = c;
    303348  return ComputeDEDXPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy);
    304349}
     
    312357                                         G4double maxEnergy)
    313358{
    314   return
    315     CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy);
     359  currentCouple = c;
     360  return CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy);
     361}
     362
     363//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     364
     365inline G4double G4VEmModel::ComputeMeanFreePath(const G4ParticleDefinition* p,
     366                                                G4double ekin,
     367                                                const G4Material* material,     
     368                                                G4double emin,
     369                                                G4double emax)
     370{
     371  G4double mfp = DBL_MAX;
     372  G4double cross = CrossSectionPerVolume(material,p,ekin,emin,emax);
     373  if (cross > DBL_MIN) mfp = 1./cross;
     374  return mfp;
    316375}
    317376
     
    319378
    320379inline G4double G4VEmModel::ComputeCrossSectionPerAtom(
    321                                          const G4ParticleDefinition*,
    322                                          G4double, G4double, G4double,
    323                                          G4double, G4double)
    324 {
    325   return 0.0;
    326 }
    327 
    328 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    329 
    330 inline const G4Element* G4VEmModel::SelectRandomAtom(
    331                                          const G4Material* material,
    332                                          const G4ParticleDefinition* pd,
    333                                          G4double kinEnergy,
    334                                          G4double tcut,
    335                                          G4double tmax)
     380                const G4ParticleDefinition* part,
     381                const G4Element* elm,
     382                G4double kinEnergy,
     383                G4double cutEnergy,
     384                G4double maxEnergy)
     385{
     386  currentElement = elm;
     387  return ComputeCrossSectionPerAtom(part,kinEnergy,elm->GetZ(),elm->GetN(),
     388                                    cutEnergy,maxEnergy);
     389}
     390
     391//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     392
     393inline
     394const G4Element* G4VEmModel::SelectRandomAtom(const G4MaterialCutsCouple* couple,
     395                                              const G4ParticleDefinition* p,
     396                                              G4double kinEnergy,
     397                                              G4double cutEnergy,
     398                                              G4double maxEnergy)
     399{
     400  currentCouple = couple;
     401  if(nSelectors > 0) {
     402    currentElement =
     403      elmSelectors[couple->GetIndex()]->SelectRandomAtom(kinEnergy);
     404  } else {
     405    currentElement = SelectRandomAtom(couple->GetMaterial(),p,kinEnergy,
     406                                      cutEnergy,maxEnergy);
     407  }
     408  return currentElement;
     409}
     410
     411//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     412
     413inline
     414const G4Element* G4VEmModel::SelectRandomAtom(const G4Material* material,
     415                                              const G4ParticleDefinition* pd,
     416                                              G4double kinEnergy,
     417                                              G4double tcut,
     418                                              G4double tmax)
    336419{
    337420  const G4ElementVector* theElementVector = material->GetElementVector();
    338   G4int nelm = material->GetNumberOfElements();
    339   currentElement = (*theElementVector)[nelm-1];
    340   if (nelm > 1) {
     421  G4int n = material->GetNumberOfElements() - 1;
     422  currentElement = (*theElementVector)[n];
     423  if (n > 0) {
    341424    G4double x = G4UniformRand()*
    342                  CrossSectionPerVolume(material,pd,kinEnergy,tcut,tmax);
    343     for(G4int i=0; i<nelm; i++) {
     425                 G4VEmModel::CrossSectionPerVolume(material,pd,kinEnergy,tcut,tmax);
     426    for(G4int i=0; i<n; i++) {
    344427      if (x <= xsec[i]) {
    345428        currentElement = (*theElementVector)[i];
     
    353436//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    354437
     438inline G4int G4VEmModel::SelectIsotopeNumber(const G4Element* elm)
     439{
     440  G4int N = G4int(elm->GetN() + 0.5);
     441  G4int ni = elm->GetNumberOfIsotopes();
     442  if(ni > 0) {
     443    G4int idx = 0;
     444    if(ni > 1) {
     445      G4double* ab = currentElement->GetRelativeAbundanceVector();
     446      G4double x = G4UniformRand();
     447      for(; idx<ni; idx++) {
     448        x -= ab[idx];
     449        if (x <= 0.0) break;
     450      }
     451      if(idx >= ni) idx = ni - 1;
     452    }
     453    N = elm->GetIsotope(idx)->GetN();
     454  }
     455  return N;
     456}
     457
     458//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     459
     460inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations()
     461{
     462  return fluc;
     463}
     464
     465//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     466
     467inline G4double G4VEmModel::HighEnergyLimit() const
     468{
     469  return highLimit;
     470}
     471
     472//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     473
     474inline G4double G4VEmModel::LowEnergyLimit() const
     475{
     476  return lowLimit;
     477}
     478
     479//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     480
     481inline G4double G4VEmModel::PolarAngleLimit() const
     482{
     483  return polarAngleLimit;
     484}
     485
     486//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     487
     488inline G4double G4VEmModel::SecondaryThreshold() const
     489{
     490  return secondaryThreshold;
     491}
     492
     493//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     494
     495inline G4bool G4VEmModel::LPMFlag() const
     496{
     497  return theLPMflag;
     498}
     499
     500//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     501
     502inline G4bool G4VEmModel::DeexcitationFlag() const
     503{
     504  return flagDeexcitation;
     505}
     506
     507//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     508
     509inline void G4VEmModel::SetHighEnergyLimit(G4double val)
     510{
     511  highLimit = val;
     512}
     513
     514//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     515
     516inline void G4VEmModel::SetLowEnergyLimit(G4double val)
     517{
     518  lowLimit = val;
     519}
     520
     521//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     522
     523inline void G4VEmModel::SetPolarAngleLimit(G4double val)
     524{
     525  polarAngleLimit = val;
     526}
     527
     528//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     529
     530inline void G4VEmModel::SetSecondaryThreshold(G4double val)
     531{
     532  secondaryThreshold = val;
     533}
     534
     535//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     536
     537inline void G4VEmModel::SetLPMFlag(G4bool val)
     538{
     539  theLPMflag = val;
     540}
     541
     542//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     543
     544inline void G4VEmModel::SetDeexcitationFlag(G4bool val)
     545{
     546  flagDeexcitation = val;
     547}
     548
     549//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     550
     551inline void G4VEmModel::ActivateNuclearStopping(G4bool val)
     552{
     553  nuclearStopping = val;
     554}
     555
     556//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     557
     558inline
     559G4double G4VEmModel::MaxSecondaryKinEnergy(const G4DynamicParticle* dynPart)
     560{
     561  return MaxSecondaryEnergy(dynPart->GetDefinition(),
     562                            dynPart->GetKineticEnergy());
     563}
     564
     565//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     566
     567inline const G4String& G4VEmModel::GetName() const
     568{
     569  return name;
     570}
     571
     572//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     573
     574inline void G4VEmModel::SetParticleChange(G4VParticleChange* p, 
     575                                          G4VEmFluctuationModel* f = 0)
     576{
     577  if(p && pParticleChange != p) pParticleChange = p;
     578  fluc = f;
     579}
     580
     581//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     582
     583inline void G4VEmModel::SetCurrentCouple(const G4MaterialCutsCouple* p)
     584{
     585  currentCouple = p;
     586}
     587
     588//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     589
     590inline const G4MaterialCutsCouple* G4VEmModel::CurrentCouple() const
     591{
     592  return currentCouple;
     593}
     594
     595//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     596
     597inline void G4VEmModel::SetCurrentElement(const G4Element* elm)
     598{
     599  currentElement = elm;
     600}
     601
     602//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     603
    355604inline const G4Element* G4VEmModel::GetCurrentElement() const
    356605{
     
    360609//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    361610
    362 inline void G4VEmModel::SetCurrentElement(const G4Element* elm)
    363 {
    364   currentElement = elm;
    365 }
    366 
    367 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    368 
    369 inline G4double G4VEmModel::MaxSecondaryKinEnergy(
    370                                           const G4DynamicParticle* dynParticle)
    371 {
    372   return MaxSecondaryEnergy(dynParticle->GetDefinition(),
    373                             dynParticle->GetKineticEnergy());
    374 }
    375 
    376 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    377 
    378 inline G4double G4VEmModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
    379                                                G4double kineticEnergy)
    380 {
    381   return kineticEnergy;
    382 }
    383 
    384 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    385 
    386 inline const G4String& G4VEmModel::GetName() const
    387 {
    388   return name;
    389 }
    390 
    391 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    392 // Methods for msc simulation
    393 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    394 
    395 inline void G4VEmModel::SampleScattering(const G4DynamicParticle*, G4double)
    396 {}
    397 
    398 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    399 
    400 inline G4double G4VEmModel::ComputeTruePathLengthLimit(
    401                                 const G4Track&,
    402                                 G4PhysicsTable*,
    403                                 G4double)
    404 {
    405   return DBL_MAX;
    406 }
    407 
    408 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    409 
    410 inline G4double G4VEmModel::ComputeGeomPathLength(G4double truePathLength)
    411 {
    412   return truePathLength;
    413 }
    414 
    415 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    416 
    417 inline G4double G4VEmModel::ComputeTrueStepLength(G4double geomPathLength)
    418 {
    419   return geomPathLength;
    420 }
    421 
    422 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    423 
    424 inline void G4VEmModel::DefineForRegion(const G4Region*)
    425 {}
    426 
    427 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    428 
    429611#endif
    430612
Note: See TracChangeset for help on using the changeset viewer.