Ignore:
Timestamp:
Apr 17, 2009, 12:17:14 PM (17 years ago)
Author:
garnier
Message:

update

Location:
trunk/source/processes/electromagnetic
Files:
386 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/electromagnetic/highenergy/History

    r961 r991  
    1 $Id: History,v 1.31 2009/02/20 16:38:33 vnivanch Exp $
     1$Id: History,v 1.30 2008/10/16 14:29:48 vnivanch Exp $
    22-------------------------------------------------------------------
    33
     
    1717     * Reverse chronological order (last date on top), please *
    1818     ----------------------------------------------------------
    19 
    20 20 February 09: V.Ivanchenko (emhighenergy-V09-02-00)
    21 - Cleanup: improved comments, move virtual methods from .hh to .cc
    2219
    232016 October 08: V.Ivanchenko (emhighenergy-V09-01-06)
  • trunk/source/processes/electromagnetic/highenergy/include/G4AnnihiToMuPair.hh

    r961 r991  
    2626//
    2727// $Id: G4AnnihiToMuPair.hh,v 1.2 2006/06/29 19:32:12 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//         ------------ G4AnnihiToMuPair physics process ------
  • trunk/source/processes/electromagnetic/highenergy/include/G4BetheBlochNoDeltaModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BetheBlochNoDeltaModel.hh,v 1.8 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BetheBlochNoDeltaModel.hh,v 1.7 2006/06/29 19:32:14 gunter Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6868                                        G4double cutEnergy);
    6969
    70   virtual G4double CrossSectionPerVolume(const G4Material*,
    71                                          const G4ParticleDefinition*,
    72                                          G4double kineticEnergy,
    73                                          G4double cutEnergy,
    74                                          G4double maxEnergy);
     70  virtual G4double ComputeCrossSectionPerElectron(
     71                                        const G4ParticleDefinition*,
     72                                        G4double kineticEnergy,
     73                                        G4double cutEnergy,
     74                                        G4double maxEnergy);
    7575
    7676private:
     
    8484//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    8585
     86inline G4double G4BetheBlochNoDeltaModel::ComputeDEDXPerVolume(
     87                            const G4Material* material,
     88                            const G4ParticleDefinition* pd,
     89                            G4double kinEnergy, G4double)
     90{
     91  G4double dedx = G4BetheBlochModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX);
     92  return dedx;
     93}
     94
     95inline G4double G4BetheBlochNoDeltaModel::ComputeCrossSectionPerElectron(
     96                            const G4ParticleDefinition*,
     97                            G4double, G4double, G4double)
     98{
     99  return 0.0;
     100}
     101
     102//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     103
    86104#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4BraggNoDeltaModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BraggNoDeltaModel.hh,v 1.7 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BraggNoDeltaModel.hh,v 1.6 2006/06/29 19:32:16 gunter Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6868                                        G4double cutEnergy);
    6969
    70   virtual G4double CrossSectionPerVolume(const G4Material*,
     70  virtual G4double ComputeCrossSectionPerElectron(
    7171                                         const G4ParticleDefinition*,
    7272                                         G4double kineticEnergy,
    7373                                         G4double cutEnergy,
    7474                                         G4double maxEnergy);
     75
    7576private:
    7677
     
    8384//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    8485
     86inline G4double G4BraggNoDeltaModel::ComputeDEDXPerVolume(
     87                            const G4Material* material,
     88                            const G4ParticleDefinition* pd,
     89                            G4double kinEnergy, G4double)
     90{
     91  G4double dedx = G4BraggIonModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX);
     92  return dedx;
     93}
     94
     95inline G4double G4BraggNoDeltaModel::ComputeCrossSectionPerElectron(
     96                            const G4ParticleDefinition*,
     97                            G4double, G4double, G4double)
     98{
     99  return 0.0;
     100}
     101
     102//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     103
    85104#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4GammaConversionToMuons.hh

    r961 r991  
    2626//
    2727// $Id: G4GammaConversionToMuons.hh,v 1.2 2006/06/29 19:32:18 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//         ------------ G4GammaConversionToMuons physics process ------
  • trunk/source/processes/electromagnetic/highenergy/include/G4Vee2hadrons.hh

    r961 r991  
    2525//
    2626// $Id: G4Vee2hadrons.hh,v 1.4 2008/07/10 18:06:38 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/include/G4ee2KChargedModel.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4ee2KChargedModel.hh,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4ee2KChargedModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6767  virtual ~G4ee2KChargedModel();
    6868
    69   virtual G4double ThresholdEnergy() const;
     69  G4double ThresholdEnergy() const;
    7070
    71   virtual G4double PeakEnergy() const;
     71  G4double PeakEnergy() const;
    7272
    73   virtual G4double ComputeCrossSection(G4double) const;
     73  G4double ComputeCrossSection(G4double) const;
    7474
    75   virtual G4PhysicsVector* PhysicsVector(G4double, G4double) const;
     75  G4PhysicsVector* PhysicsVector(G4double, G4double) const;
    7676
    7777  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     
    9292//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    9393
     94inline G4double G4ee2KChargedModel::ThresholdEnergy() const
     95{
     96  return 2.0*massK;
     97}
     98
     99//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     100
     101inline G4double G4ee2KChargedModel::PeakEnergy() const
     102{
     103  return massPhi;
     104}
     105
     106//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     107
     108inline G4double G4ee2KChargedModel::ComputeCrossSection(G4double e) const
     109{
     110  G4double ee = std::min(HighEnergy(),e);
     111  return cross->CrossSection2Kcharged(ee);
     112}
     113
     114//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     115
    94116#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4ee2KNeutralModel.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4ee2KNeutralModel.hh,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4ee2KNeutralModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6767  virtual ~G4ee2KNeutralModel();
    6868
    69   virtual G4double ThresholdEnergy() const;
     69  G4double ThresholdEnergy() const;
    7070
    71   virtual G4double PeakEnergy() const;
     71  G4double PeakEnergy() const;
    7272
    73   virtual G4double ComputeCrossSection(G4double) const;
     73  G4double ComputeCrossSection(G4double) const;
    7474
    75   virtual G4PhysicsVector* PhysicsVector(G4double, G4double) const;
     75  G4PhysicsVector* PhysicsVector(G4double, G4double) const;
    7676
    7777  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     
    9292//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    9393
     94inline G4double G4ee2KNeutralModel::ThresholdEnergy() const
     95{
     96  return 2.0*massK;
     97}
     98
     99//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     100
     101inline G4double G4ee2KNeutralModel::PeakEnergy() const
     102{
     103  return massPhi;
     104}
     105
     106//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     107
     108inline G4double G4ee2KNeutralModel::ComputeCrossSection(G4double e) const
     109{
     110  G4double ee = std::min(HighEnergy(),e);
     111  return cross->CrossSection2Kneutral(ee);
     112}
     113
     114//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     115
    94116#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4eeCrossSections.hh

    r961 r991  
    2525//
    2626// $Id: G4eeCrossSections.hh,v 1.3 2008/07/10 18:06:38 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/include/G4eeTo3PiModel.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeTo3PiModel.hh,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeTo3PiModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6767  virtual ~G4eeTo3PiModel();
    6868
    69   virtual G4double ThresholdEnergy() const;
     69  G4double ThresholdEnergy() const;
    7070
    71   virtual G4double PeakEnergy() const;
     71  G4double PeakEnergy() const;
    7272
    73   virtual G4double ComputeCrossSection(G4double) const;
     73  G4double ComputeCrossSection(G4double) const;
    7474
    75   virtual G4PhysicsVector* PhysicsVector(G4double, G4double) const;
     75  G4PhysicsVector* PhysicsVector(G4double, G4double) const;
    7676
    7777  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     
    9696//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    9797
     98inline G4double G4eeTo3PiModel::ThresholdEnergy() const
     99{
     100  return std::max(LowEnergy(),2.0*massPi + massPi0);
     101}
     102
     103//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     104
     105inline G4double G4eeTo3PiModel::PeakEnergy() const
     106{
     107  G4double e = massOm;
     108  if(HighEnergy() > massPhi) e = massPhi;
     109  return e;
     110}
     111
     112//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     113
     114inline G4double G4eeTo3PiModel::ComputeCrossSection(G4double e) const
     115{
     116  G4double ee = std::min(HighEnergy(),e);
     117  return cross->CrossSection3pi(ee);
     118}
     119
     120//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     121
    98122#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4eeToHadrons.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeToHadrons.hh,v 1.9 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeToHadrons.hh,v 1.8 2007/05/23 08:50:41 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7070
    7171  // Print out of the class parameters
    72   virtual void PrintInfo();
     72  void PrintInfo();
    7373
    7474  // Set the factor to artificially increase the crossSection (default 1)
     
    7777protected:
    7878
    79   virtual void InitialiseProcess(const G4ParticleDefinition*);
     79  void InitialiseProcess(const G4ParticleDefinition*);
    8080
    8181private:
     
    9292};
    9393
     94//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     95//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     96
     97inline G4bool G4eeToHadrons::IsApplicable(const G4ParticleDefinition& p)
     98{
     99  return (&p == G4Positron::Positron());
     100}
     101
    94102//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    95103
  • trunk/source/processes/electromagnetic/highenergy/include/G4eeToHadronsModel.hh

    r961 r991  
    2525//
    2626// $Id: G4eeToHadronsModel.hh,v 1.7 2008/07/10 18:06:38 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/include/G4eeToHadronsMultiModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeToHadronsMultiModel.hh,v 1.7 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeToHadronsMultiModel.hh,v 1.6 2008/07/10 18:06:38 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    9191                                 G4double maxEnergy = DBL_MAX);
    9292
    93   virtual void PrintInfo();
    94 
    95   // Set the factor to artificially increase the crossSection (default 1)
    96   void SetCrossSecFactor(G4double fac);
    97 
    9893  inline G4double ComputeCrossSectionPerElectron(
    9994                                         const G4ParticleDefinition*,
     
    10196                                         G4double cutEnergy = 0.0,
    10297                                         G4double maxEnergy = DBL_MAX);
     98
     99  void PrintInfo();
     100
     101  // Set the factor to artificially increase the crossSection (default 1)
     102  void SetCrossSecFactor(G4double fac);
    103103
    104104private:
  • trunk/source/processes/electromagnetic/highenergy/include/G4eeToPGammaModel.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeToPGammaModel.hh,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeToPGammaModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6868  virtual ~G4eeToPGammaModel();
    6969
    70   virtual G4double ThresholdEnergy() const;
     70  G4double ThresholdEnergy() const;
    7171
    72   virtual G4double PeakEnergy() const;
     72  G4double PeakEnergy() const;
    7373
    74   virtual G4double ComputeCrossSection(G4double) const;
     74  G4double ComputeCrossSection(G4double) const;
    7575
    76   virtual G4PhysicsVector* PhysicsVector(G4double, G4double) const;
     76  G4PhysicsVector* PhysicsVector(G4double, G4double) const;
    7777
    7878  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     
    9797//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    9898
     99inline G4double G4eeToPGammaModel::ThresholdEnergy() const
     100{
     101  return LowEnergy();
     102}
     103
     104//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     105
     106inline G4double G4eeToPGammaModel::PeakEnergy() const
     107{
     108  return massR;
     109}
     110
     111//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     112
     113inline G4double G4eeToPGammaModel::ComputeCrossSection(G4double e) const
     114{
     115  G4double ee = std::min(HighEnergy(),e);
     116  G4double xs;
     117  if(particle == pi0) xs = cross->CrossSectionPi0G(ee);
     118  else                xs = cross->CrossSectionEtaG(ee);
     119  return xs;
     120}
     121
     122//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     123
    99124#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4eeToTwoPiModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeToTwoPiModel.hh,v 1.5 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeToTwoPiModel.hh,v 1.4 2008/07/10 18:06:39 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6767  virtual ~G4eeToTwoPiModel();
    6868
    69   virtual G4double ThresholdEnergy() const;
     69  G4double ThresholdEnergy() const;
    7070
    71   virtual G4double PeakEnergy() const;
     71  G4double PeakEnergy() const;
    7272
    73   virtual G4double ComputeCrossSection(G4double) const;
     73  G4double ComputeCrossSection(G4double) const;
    7474
    75   virtual G4PhysicsVector* PhysicsVector(G4double, G4double) const;
     75  G4PhysicsVector* PhysicsVector(G4double, G4double) const;
    7676
    7777  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     
    9393//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    9494
     95inline G4double G4eeToTwoPiModel::ThresholdEnergy() const
     96{
     97  return 2.0*massPi;
     98}
     99
     100//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     101
     102inline G4double G4eeToTwoPiModel::PeakEnergy() const
     103{
     104  return massRho;
     105}
     106
     107//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     108
     109inline G4double G4eeToTwoPiModel::ComputeCrossSection(G4double e) const
     110{
     111  G4double ee = std::min(HighEnergy(),e);
     112  return cross->CrossSection2pi(ee);
     113}
     114
     115//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     116
    95117#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4hBremsstrahlung.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hBremsstrahlung.hh,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4hBremsstrahlung.hh,v 1.1 2008/03/06 11:47:10 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7272  virtual ~G4hBremsstrahlung();
    7373
    74   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     74  G4bool IsApplicable(const G4ParticleDefinition& p);
    7575
    76   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    77                                     const G4Material*,
    78                                     G4double cut);
     76  G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     77                            const G4Material*,
     78                            G4double cut);
    7979
    8080  // Print out of the class parameters
    81   virtual void PrintInfo();
     81  void PrintInfo();
    8282
    8383protected:
    8484
    85   virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
    86                                            const G4ParticleDefinition*);
     85  void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
     86                                   const G4ParticleDefinition*);
    8787
    8888private:
     
    100100
    101101//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     102//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     103
     104inline
     105G4bool G4hBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)
     106{
     107  return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV);
     108}
     109
     110//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     111
     112inline
     113G4double G4hBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,
     114                                              const G4Material*,
     115                                              G4double)
     116{
     117  return lowestKinEnergy;
     118}
     119
     120//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    102121
    103122#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4hBremsstrahlungModel.hh

    r966 r991  
    2525//
    2626// $Id: G4hBremsstrahlungModel.hh,v 1.2 2008/07/22 16:15:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/include/G4hPairProduction.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hPairProduction.hh,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4hPairProduction.hh,v 1.1 2008/03/06 11:47:11 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6969  virtual ~G4hPairProduction();
    7070
    71   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     71  G4bool IsApplicable(const G4ParticleDefinition& p);
    7272
    73   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    74                                     const G4Material*, G4double cut);
     73  G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     74                            const G4Material*, G4double cut);
    7575
    7676  // Print out of the class parameters
    77   virtual void PrintInfo();
     77  void PrintInfo();
    7878
    7979protected:
    8080
    81   virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
    82                                            const G4ParticleDefinition*);
     81  void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
     82                                   const G4ParticleDefinition*);
    8383
    8484private:
     
    9898
    9999//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     100//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     101
     102inline
     103G4bool G4hPairProduction::IsApplicable(const G4ParticleDefinition& p)
     104{
     105  return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV);
     106}
     107
     108//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     109
     110inline
     111G4double G4hPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,
     112                                              const G4Material*,
     113                                              G4double)
     114{
     115  return lowestKinEnergy;
     116}
     117
     118//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    100119
    101120#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4hPairProductionModel.hh

    r966 r991  
    2525//
    2626// $Id: G4hPairProductionModel.hh,v 1.2 2008/07/22 16:15:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/include/G4hhIonisation.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hhIonisation.hh,v 1.6 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4hhIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6969  virtual ~G4hhIonisation();
    7070
    71   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     71  G4bool IsApplicable(const G4ParticleDefinition& p);
    7272
    73   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    74                                     const G4Material*, G4double cut);
     73  G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     74                            const G4Material*, G4double cut);
    7575
    7676  // Print out of the class parameters
     
    104104
    105105//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     106//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     107
     108inline G4bool G4hhIonisation::IsApplicable(const G4ParticleDefinition& p)
     109{
     110  return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 100.0*MeV &&
     111         !p.IsShortLived());
     112}
     113
     114//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     115
     116inline G4double G4hhIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
     117                                                const G4Material*,
     118                                                G4double cut)
     119{
     120  G4double x = 0.5*cut/electron_mass_c2;
     121  G4double y = electron_mass_c2/mass;
     122  G4double g = x*y + std::sqrt((1. + x)*(1. + x*y*y));
     123  return mass*(g - 1.0);
     124}
     125
     126//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    106127
    107128#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4mplIonisation.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4mplIonisation.hh,v 1.6 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4mplIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7272  virtual ~G4mplIonisation();
    7373
    74   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     74  G4bool IsApplicable(const G4ParticleDefinition& p);
    7575
    7676  // Print out of the class parameters
     
    9494
    9595//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     96//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     97
     98inline G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition& p)
     99{
     100  return (p.GetParticleName() == "monopole");
     101}
     102
     103//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    96104
    97105#endif
  • trunk/source/processes/electromagnetic/highenergy/include/G4mplIonisationModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4mplIonisationModel.hh,v 1.7 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4mplIonisationModel.hh,v 1.6 2007/11/13 18:36:29 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    120120
    121121//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     122
     123inline void G4mplIonisationModel::SampleSecondaries(std::vector<G4DynamicParticle*>*,
     124                                                    const G4MaterialCutsCouple*,
     125                                                    const G4DynamicParticle*,
     126                                                    G4double,
     127                                                    G4double)
     128{}
     129
     130inline G4double G4mplIonisationModel::Dispersion(
     131                          const G4Material* material,
     132                          const G4DynamicParticle* dp,
     133                                G4double& tmax,
     134                                G4double& length)
     135{
     136  G4double siga = 0.0;
     137  G4double tau   = dp->GetKineticEnergy()/mass;
     138  if(tau > 0.0) {
     139    G4double electronDensity = material->GetElectronDensity();
     140    G4double gam   = tau + 1.0;
     141    G4double invbeta2 = (gam*gam)/(tau * (tau+2.0));
     142    siga  = (invbeta2 - 0.5) * twopi_mc2_rcl2 * tmax * length
     143      * electronDensity * chargeSquare;
     144  }
     145  return siga;
     146}
     147
     148
     149//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
  • trunk/source/processes/electromagnetic/highenergy/src/G4AnnihiToMuPair.cc

    r961 r991  
    2626//
    2727// $Id: G4AnnihiToMuPair.cc,v 1.5 2008/10/16 14:29:48 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//         ------------ G4AnnihiToMuPair physics process ------
  • trunk/source/processes/electromagnetic/highenergy/src/G4BetheBlochNoDeltaModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BetheBlochNoDeltaModel.cc,v 1.4 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BetheBlochNoDeltaModel.cc,v 1.3 2006/06/29 19:32:36 gunter Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    5858{}
    5959
    60 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    61 
    6260G4BetheBlochNoDeltaModel::~G4BetheBlochNoDeltaModel()
    6361{}
     
    6563//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    6664
    67 G4double G4BetheBlochNoDeltaModel::ComputeDEDXPerVolume(
    68                             const G4Material* material,
    69                             const G4ParticleDefinition* pd,
    70                             G4double kinEnergy, G4double)
    71 {
    72   return
    73     G4BetheBlochModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX);
    74 }
    7565
    76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    77 
    78 G4double G4BetheBlochNoDeltaModel::CrossSectionPerVolume(
    79                     const G4Material*,const G4ParticleDefinition*,
    80                     G4double, G4double, G4double)
    81 {
    82   return 0.0;
    83 }
    84 
    85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    86 
    87 
  • trunk/source/processes/electromagnetic/highenergy/src/G4BraggNoDeltaModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BraggNoDeltaModel.cc,v 1.4 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BraggNoDeltaModel.cc,v 1.3 2006/06/29 19:32:38 gunter Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    5353//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    5454
     55
    5556G4BraggNoDeltaModel::G4BraggNoDeltaModel(const G4ParticleDefinition*p,
    5657                                         const G4String& nam) :
    5758  G4BraggIonModel(p, nam)
    5859{}
    59 
    60 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    6160
    6261G4BraggNoDeltaModel::~G4BraggNoDeltaModel()
     
    6564//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    6665
    67 G4double G4BraggNoDeltaModel::ComputeDEDXPerVolume(
    68                             const G4Material* material,
    69                             const G4ParticleDefinition* pd,
    70                             G4double kinEnergy, G4double)
    71 {
    72   return
    73     G4BraggIonModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX);
    74 }
    7566
    76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    77 
    78 G4double G4BraggNoDeltaModel::CrossSectionPerVolume(
    79                             const G4Material*,
    80                             const G4ParticleDefinition*,
    81                             G4double, G4double, G4double)
    82 {
    83   return 0.0;
    84 }
    85 
    86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    87 
    88 
  • trunk/source/processes/electromagnetic/highenergy/src/G4GammaConversionToMuons.cc

    r961 r991  
    2626//
    2727// $Id: G4GammaConversionToMuons.cc,v 1.7 2008/10/16 14:29:48 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//         ------------ G4GammaConversionToMuons physics process ------
  • trunk/source/processes/electromagnetic/highenergy/src/G4ee2KChargedModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4ee2KChargedModel.cc,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4ee2KChargedModel.cc,v 1.1 2008/07/10 18:07:27 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7575//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    7676
    77 G4double G4ee2KChargedModel::ThresholdEnergy() const
    78 {
    79   return 2.0*massK;
    80 }
    81 
    82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    83 
    84 G4double G4ee2KChargedModel::PeakEnergy() const
    85 {
    86   return massPhi;
    87 }
    88 
    89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    90 
    91 G4double G4ee2KChargedModel::ComputeCrossSection(G4double e) const
    92 {
    93   G4double ee = std::min(HighEnergy(),e);
    94   return cross->CrossSection2Kcharged(ee);
    95 }
    96 
    97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    98 
    9977G4PhysicsVector* G4ee2KChargedModel::PhysicsVector(G4double emin,
    10078                                                   G4double emax) const
  • trunk/source/processes/electromagnetic/highenergy/src/G4ee2KNeutralModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4ee2KNeutralModel.cc,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4ee2KNeutralModel.cc,v 1.1 2008/07/10 18:07:27 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7575//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    7676
    77 G4double G4ee2KNeutralModel::ThresholdEnergy() const
    78 {
    79   return 2.0*massK;
    80 }
    81 
    82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    83 
    84 G4double G4ee2KNeutralModel::PeakEnergy() const
    85 {
    86   return massPhi;
    87 }
    88 
    89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    90 
    91 G4double G4ee2KNeutralModel::ComputeCrossSection(G4double e) const
    92 {
    93   G4double ee = std::min(HighEnergy(),e);
    94   return cross->CrossSection2Kneutral(ee);
    95 }
    96 
    97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    98 
    9977G4PhysicsVector* G4ee2KNeutralModel::PhysicsVector(G4double emin,
    10078                                                   G4double emax) const
  • trunk/source/processes/electromagnetic/highenergy/src/G4eeCrossSections.cc

    r961 r991  
    2525//
    2626// $Id: G4eeCrossSections.cc,v 1.7 2008/07/10 18:06:39 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/src/G4eeTo3PiModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeTo3PiModel.cc,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeTo3PiModel.cc,v 1.1 2008/07/10 18:07:27 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8181  G4cout << "### G4eeTo3PiModel::~G4eeTo3PiModel: gmax= "
    8282         << gmax << " gcash= " << gcash << G4endl;
    83 }
    84 
    85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    86 
    87 G4double G4eeTo3PiModel::ThresholdEnergy() const
    88 {
    89   return std::max(LowEnergy(),2.0*massPi + massPi0);
    90 }
    91 
    92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    93 
    94 G4double G4eeTo3PiModel::PeakEnergy() const
    95 {
    96   G4double e = massOm;
    97   if(HighEnergy() > massPhi) e = massPhi;
    98   return e;
    99 }
    100 
    101 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    102 
    103 G4double G4eeTo3PiModel::ComputeCrossSection(G4double e) const
    104 {
    105   G4double ee = std::min(HighEnergy(),e);
    106   return cross->CrossSection3pi(ee);
    10783}
    10884
  • trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadrons.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeToHadrons.cc,v 1.9 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeToHadrons.cc,v 1.8 2008/10/16 14:29:48 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7575//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    7676
    77 G4bool G4eeToHadrons::IsApplicable(const G4ParticleDefinition& p)
    78 {
    79   return (&p == G4Positron::Positron());
    80 }
    81 
    82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    83 
    8477void G4eeToHadrons::InitialiseProcess(const G4ParticleDefinition*)
    8578{
  • trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadronsModel.cc

    r961 r991  
    2525//
    2626// $Id: G4eeToHadronsModel.cc,v 1.9 2008/07/10 18:06:39 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc

    r961 r991  
    2525//
    2626// $Id: G4eeToHadronsMultiModel.cc,v 1.6 2008/07/11 17:49:11 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/src/G4eeToPGammaModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeToPGammaModel.cc,v 1.2 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeToPGammaModel.cc,v 1.1 2008/07/10 18:07:27 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8383//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    8484
    85 G4double G4eeToPGammaModel::ThresholdEnergy() const
    86 {
    87   return LowEnergy();
    88 }
    89 
    90 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    91 
    92 G4double G4eeToPGammaModel::PeakEnergy() const
    93 {
    94   return massR;
    95 }
    96 
    97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    98 
    99 G4double G4eeToPGammaModel::ComputeCrossSection(G4double e) const
    100 {
    101   G4double ee = std::min(HighEnergy(),e);
    102   G4double xs;
    103   if(particle == pi0) xs = cross->CrossSectionPi0G(ee);
    104   else                xs = cross->CrossSectionEtaG(ee);
    105   return xs;
    106 }
    107 
    108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    109 
    11085G4PhysicsVector* G4eeToPGammaModel::PhysicsVector(G4double emin,
    11186                                                  G4double emax) const
  • trunk/source/processes/electromagnetic/highenergy/src/G4eeToTwoPiModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeToTwoPiModel.cc,v 1.7 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eeToTwoPiModel.cc,v 1.6 2008/07/10 18:06:39 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7575//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    7676
    77 G4double G4eeToTwoPiModel::ThresholdEnergy() const
    78 {
    79   return 2.0*massPi;
    80 }
    81 
    82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    83 
    84 G4double G4eeToTwoPiModel::PeakEnergy() const
    85 {
    86   return massRho;
    87 }
    88 
    89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    90 
    91 G4double G4eeToTwoPiModel::ComputeCrossSection(G4double e) const
    92 {
    93   G4double ee = std::min(HighEnergy(),e);
    94   return cross->CrossSection2pi(ee);
    95 }
    96 
    97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    98 
    9977G4PhysicsVector* G4eeToTwoPiModel::PhysicsVector(G4double emin,
    10078                                                 G4double emax) const
  • trunk/source/processes/electromagnetic/highenergy/src/G4hBremsstrahlung.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hBremsstrahlung.cc,v 1.4 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4hBremsstrahlung.cc,v 1.3 2008/10/16 14:29:48 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7272//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    7373
    74 G4bool G4hBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)
    75 {
    76   return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV);
    77 }
    78 
    79 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    80 
    81 G4double G4hBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,
    82                                              const G4Material*,
    83                                              G4double)
    84 {
    85   return lowestKinEnergy;
    86 }
    87 
    88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    89 
    9074void G4hBremsstrahlung::InitialiseEnergyLossProcess(
    9175                                 const G4ParticleDefinition* part,
  • trunk/source/processes/electromagnetic/highenergy/src/G4hBremsstrahlungModel.cc

    r969 r991  
    2525//
    2626// $Id: G4hBremsstrahlungModel.cc,v 1.3 2008/07/22 16:15:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/src/G4hPairProduction.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hPairProduction.cc,v 1.4 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4hPairProduction.cc,v 1.3 2008/10/16 14:29:48 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7373//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    7474
    75 G4bool G4hPairProduction::IsApplicable(const G4ParticleDefinition& p)
    76 {
    77   return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV);
    78 }
    79 
    80 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    81 
    82 G4double G4hPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,
    83                                              const G4Material*,
    84                                              G4double)
    85 {
    86   return lowestKinEnergy;
    87 }
    88 
    89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    90 
    9175void G4hPairProduction::InitialiseEnergyLossProcess(
    9276                         const G4ParticleDefinition* part,
  • trunk/source/processes/electromagnetic/highenergy/src/G4hPairProductionModel.cc

    r968 r991  
    2525//
    2626// $Id: G4hPairProductionModel.cc,v 1.1 2008/03/06 11:47:11 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/highenergy/src/G4hhIonisation.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hhIonisation.cc,v 1.9 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4hhIonisation.cc,v 1.8 2008/10/16 14:29:48 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7575G4hhIonisation::~G4hhIonisation()
    7676{}
    77 
    78 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    79 
    80 G4bool G4hhIonisation::IsApplicable(const G4ParticleDefinition& p)
    81 {
    82   return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 100.0*MeV &&
    83          !p.IsShortLived());
    84 }
    85 
    86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    87 
    88 G4double G4hhIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
    89                                           const G4Material*,
    90                                           G4double cut)
    91 {
    92   G4double x = 0.5*cut/electron_mass_c2;
    93   G4double y = electron_mass_c2/mass;
    94   G4double g = x*y + std::sqrt((1. + x)*(1. + x*y*y));
    95   return mass*(g - 1.0);
    96 }
    9777
    9878//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
  • trunk/source/processes/electromagnetic/highenergy/src/G4mplIonisation.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4mplIonisation.cc,v 1.8 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4mplIonisation.cc,v 1.7 2008/10/16 14:29:48 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7575//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    7676
    77 G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition& p)
    78 {
    79   return (p.GetParticleName() == "monopole");
    80 }
    81 
    82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    83 
    8477void G4mplIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition*,
    8578                                                  const G4ParticleDefinition*)
  • trunk/source/processes/electromagnetic/highenergy/src/G4mplIonisationModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4mplIonisationModel.cc,v 1.6 2009/02/20 16:38:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4mplIonisationModel.cc,v 1.5 2007/11/13 18:36:29 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    139139//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    140140
    141 G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material,
    142                                                 G4double bg2)
     141G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material, G4double bg2)
    143142{
    144143  G4double eDensity = material->GetElectronDensity();
     
    177176  return dedx;
    178177}
    179 
    180 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    181 
    182 void G4mplIonisationModel::SampleSecondaries(std::vector<G4DynamicParticle*>*,
    183                                              const G4MaterialCutsCouple*,
    184                                              const G4DynamicParticle*,
    185                                              G4double,
    186                                              G4double)
    187 {}
    188178
    189179//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     
    214204  return loss;
    215205}
    216 
    217 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    218 
    219 G4double G4mplIonisationModel::Dispersion(const G4Material* material,
    220                                           const G4DynamicParticle* dp,
    221                                           G4double& tmax,
    222                                           G4double& length)
    223 {
    224   G4double siga = 0.0;
    225   G4double tau   = dp->GetKineticEnergy()/mass;
    226   if(tau > 0.0) {
    227     G4double electronDensity = material->GetElectronDensity();
    228     G4double gam   = tau + 1.0;
    229     G4double invbeta2 = (gam*gam)/(tau * (tau+2.0));
    230     siga  = (invbeta2 - 0.5) * twopi_mc2_rcl2 * tmax * length
    231       * electronDensity * chargeSquare;
    232   }
    233   return siga;
    234 }
    235 
    236 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
  • trunk/source/processes/electromagnetic/lowenergy/History

    r961 r991  
    1 $Id: History,v 1.346 2009/02/20 10:49:54 sincerti Exp $
     1$Id: History,v 1.329 2008/12/12 08:50:59 sincerti Exp $
    22-------------------------------------------------------------------
    33
     
    1818     ----------------------------------------------------------
    1919
    20 16.02.2009, S. Incerti, tag emlowen-V09-02-15
    21             - added protections against FPE in G4hLowEnergyLoss.cc (see EM forum
    22               item 893)
    23 
    24 16.02.2009, S. Incerti, tag emlowen-V09-02-14
    25             - removed compilation warning in G4DNAEmfietzoglouExcitationModel.cc
    26 
    27 16.02.2009, S. Incerti, tag emlowen-V09-02-13
    28             - improved energy limit display in Geant4-DNA model classes
    29             - commented InitialiseElementSelectors call.
    30 
    31 16.02.2009, S. Incerti, tag emlowen-V09-02-12
    32             Made compatible with tag emutils-V09-02-00 the following files
    33             - G4DNAElastic.cc
    34             - G4DNAExcitation.cc
    35             - G4DNAIonisation.cc
    36             - G4DNAChargeDecrease.cc
    37             - G4DNAChargeIncrease.cc
    38 
    39 14.02.2009, S. Incerti, tag emlowen-V09-02-11
    40             Added several corrections to migrated Geant4-DNA processes:
    41             - G4DNABornIonisationModel.cc
    42             - G4DNAEmfietzoglouExcitationModel.cc
    43             - G4DNARuddIonisationModel.cc
    44             - G4DNAIonisation.hh
    45 
    46 10.02.2009, L. Pandola, tag emlowen-V09-02-10
    47             - Added G4LivermoreIonisationModel, namely first implementation of
    48               LowEnergyIonisation in the new design
    49 
    50 29.01.2009, L. Pandola, tag emlowen-V09-02-09
    51             - Updated public interface of G4eIonisationCrossSectionHandler.cc in order to
    52               facilitate the migration from G4LowEnergyIonisation to G4LivermoreIonisationModel
    53 
    54 22.01.2009, S. Incerti, tag emlowen-V09-02-08
    55             - Fixed compilation error problem & code syntax in DNA model classes
    56 
    57 21.01.2009, S. Incerti, tag emlowen-V09-02-07
    58             - Updated Livermore photon processes classes for handling of compound materials
    59             - Added pointer removal protections
    60             - Involved classes are :
    61               G4LivermoreRayleighModel.cc
    62               G4LivermorePolarizedRayleighModel.cc
    63               G4LivermorePolarizedComptonModel.cc
    64               G4LivermorePhotoElectricModel.cc
    65               G4LivermoreGammaconversionModel.cc
    66               G4LivermoreComptonModel.cc
    67 
    68 20.01.2009, S. Incerti, tag emlowen-V09-02-06
    69             Added 'kill particle without total energy deposit' feature for DNA charge change processes
    70             Involved files are :
    71             - G4DNAProcess.icc,
    72             - G4FinalStateProduct.hh,.cc,
    73             - G4FinalStateChargeDecrease.cc
    74             - G4FinalStateChargeIncrease.cc
    75 
    76 20.01.2009, S. Incerti, tag emlowen-V09-02-05
    77             - Corrected energy limits in G4CrossSectionIonisationBornPartial.cc
    78             - Added proton case in G4CrossSectionExcitationMillerGreenPartial.cc
    79             - Added protection (waterExcitation.ExcitationEnergy) in G4CrossSectionExcitationMillerGreenPartial.cc
    80 
    81 19.01.2009, S. Incerti, tag emlowen-V09-02-04
    82             Added angle initialisation in G4DNAScreenedRutherfordElasticModel
    83 
    84 12.01.2009, S. Incerti, tag emlowen-V09-02-03
    85             Added preliminary migrated Geant4-DNA processes and models.
    86 
    87 08.01.2009  L. Pandola, tag emlowen-V09-02-02
    88             Edited G4PenelopePhotoElectric.cc and G4PenelopePhotoElectricModel.cc
    89             to suppress a warning message from G4AtomicTransitionManager appearing
    90             for some elements (Oxygen ,Fluorine). This is due to the fact that
    91             Penelope and G4AtomicTransitionManager databases may contain a different number
    92             of shells. Physics results are unchanged.
    93 
    94 19.12.2008  L. Pandola, tag emlowen-V09-02-01
    95             Added G4RayleighScattering process (G4VEmProcess) to
    96             describe Rayleigh scattering. This was not available within
    97             the Std package
    98 
    99 15.12.2008  L. Pandola, tag emlowen-V09-02-00
    100             Same as the previous one (emlowen-V09-01-46). I arrived too late.
    101 
    102 15.12.2008  L. Pandola, tag emlowen-V09-01-46
    103             Added G4PenelopeBremsstrahlungModel, namely bremsstrahlung according to Penelope
    104             model, migrated to the Std-design (inheriting from G4VEmModel). A few minor
    105             cleaning of G4PenelopeBremsstrahlungContinuous.cc and G4PenelopeIonisation.cc.
    106             From this tag, ALL Penelope processes have been migrated.
    107 
    1082012.12.2008   S. Incerti, tag emlowen-V09-01-45
    10921             Upgrade to G4LogLogInterpolation_revision1c.cc
    11022
    111 09.12.2008  S. Incerti, tag emlowen-V09-01-44
    112             Added protection to G4FinalStateElasticChampion.cc for angular treatment of XS
    113             at 180*deg
     23009.12.2008  S. Incerti, tag emlowen-V09-01-44
     24             Added protection to G4FinalStateElasticChampion.cc for angular treatment of XS at 180*deg
    11425
    1152609.12.2008   S. Incerti, tag emlowen-V09-01-43
  • trunk/source/processes/electromagnetic/lowenergy/include/G4AtomicDeexcitation.hh

    r961 r991  
    2626//
    2727// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh

    r961 r991  
    2626//
    2727// $Id: G4AtomicShell.hh,v 1.2 ????
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh

    r961 r991  
    2626//
    2727// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4AugerData.hh

    r961 r991  
    2525//
    2626// $Id: G4AugerData.hh
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh

    r961 r991  
    2626//
    2727// $Id: G4BremsstrahlungParameters.hh,v 1.10 2006/06/29 19:33:06 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh

    r961 r991  
    2626//
    2727// $Id: G4CompositeEMDataSet.hh,v 1.12 2008/03/17 13:45:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecrease.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionChargeDecrease.hh,v 1.2 2008/07/14 20:47:32 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONCHARGEDECREASE_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecreasePartial.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionChargeDecreasePartial.hh,v 1.2 2008/07/14 20:47:32 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONCHARGEDECREASEPARTIAL_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncrease.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionChargeIncrease.hh,v 1.2 2008/07/14 20:47:33 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONCHARGEIncrease_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncreasePartial.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionChargeIncreasePartial.hh,v 1.2 2008/07/14 20:47:33 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONCHARGEIncreasePARTIAL_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeTransferCH.hh

    r966 r991  
    2626//
    2727// $Id: G4CrossSectionChargeTransferCH.hh,v 1.3 2008/03/25 16:00:20 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeTransferExp.hh

    r966 r991  
    2626//
    2727// $Id: G4CrossSectionChargeTransferExp.hh,v 1.2 2008/03/25 16:00:20 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticChampion.hh

    r966 r991  
    2525//
    2626// $Id: G4CrossSectionElasticChampion.hh,v 1.1 2008/07/15 19:56:50 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherford.hh

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionElasticScreenedRutherford.hh,v 1.1 2007/10/12 23:07:10 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherfordHE.hh

    r966 r991  
    2525//
    2626// $Id: G4CrossSectionElasticScreenedRutherfordHE.hh,v 1.1 2008/06/27 20:09:54 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONELASTICSCREENEDRUTHERFORDHE_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherfordLE.hh

    r966 r991  
    2525//
    2626// $Id: G4CrossSectionElasticScreenedRutherfordLE.hh,v 1.2 2008/07/14 20:47:33 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONELASTICSCREENEDRUTHERFORDLE_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBorn.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationBorn.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONEXCITATIONBORN_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBornPartial.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationBornPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONEXCITATIONBORNPARTIAL_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglou.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationEmfietzoglou.hh,v 1.3 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOU_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglouPartial.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationEmfietzoglouPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOUPARTIAL_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationMillerGreenPartial.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationMillerGreenPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONEXCITATIONMILLERGREENPARTIAL_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionHandler.hh,v 1.9 2006/06/29 19:33:10 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBorn.hh

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionIonisationBorn.hh,v 1.3 2008/12/18 13:01:22 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929
    3030#ifndef G4CROSSSECTIONIONISATIONBORN_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornElectron.hh

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionIonisationBornElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartial.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionIonisationBornPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONIONISATIONBORNPARTIAL_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartialElectron.hh

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionIonisationBornPartialElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRudd.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionIonisationRudd.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONIONISATIONRUDD_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRuddPartial.hh

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionIonisationRuddPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4CROSSSECTIONIONISATIONRuddPARTIAL_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionKill.hh

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionKill.hh,v 1.1 2007/11/09 20:26:47 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionPsCreationChampion.hh

    r966 r991  
    2525//
    2626// $Id: G4CrossSectionPsCreationChampion.hh,v 1.1 2008/07/16 19:01:07 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionPsCreationChampionPartial.hh

    r966 r991  
    2525//
    2626// $Id: G4CrossSectionPsCreationChampionPartial.hh,v 1.1 2008/07/16 19:01:07 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4DNACrossSectionDataSet.hh

    r961 r991  
    2626//
    2727// $Id: G4DNACrossSectionDataSet.hh,v 1.6 2008/03/17 13:45:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Riccardo Capra <capra@ge.infn.it>
  • trunk/source/processes/electromagnetic/lowenergy/include/G4DNAGenericIonsManager.hh

    r961 r991  
    2626//
    2727// $Id: G4DNAGenericIonsManager.hh,v 1.3 2006/06/29 19:34:16 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929
    3030#ifndef   G4DNAGENERICIONSMANAGER_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.hh

    r961 r991  
    2626//
    2727// $Id: G4DNAProcess.hh,v 1.5 2007/11/09 16:20:04 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author:  Maria Grazia Pia (Maria.Grazia.Pia@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc

    r961 r991  
    2525//
    2626//
    27 // $Id: G4DNAProcess.icc,v 1.12 2009/01/20 07:50:28 sincerti Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4DNAProcess.icc,v 1.11 2007/12/10 16:31:19 gunter Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
     
    111111      aParticleChange.ProposeEnergy(0.);
    112112      aParticleChange.ProposeMomentumDirection( 0., 0., 0. );
    113      
    114       if (product.PrimaryParticleIsKilledAndDoNotDepositEnergy())
    115       {
    116         aParticleChange.ProposeLocalEnergyDeposit(deposit);
    117       }
    118       else
    119       {
    120         aParticleChange.ProposeLocalEnergyDeposit(track.GetKineticEnergy() + deposit);
    121       }
    122      
     113      aParticleChange.ProposeLocalEnergyDeposit(track.GetKineticEnergy() + deposit);
     114       
    123115    }
    124116  else
  • trunk/source/processes/electromagnetic/lowenergy/include/G4DopplerProfile.hh

    r966 r991  
    2626//
    2727// $Id: G4DopplerProfile.hh,v 1.2 2008/03/17 13:45:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4DummyFinalState.hh

    r961 r991  
    2626//
    2727// $Id: G4DummyFinalState.hh,v 1.2 2007/10/07 12:52:18 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh

    r961 r991  
    2626//
    2727// $Id: G4EMDataSet.hh,v 1.12 2008/03/17 13:45:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeDecrease.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateChargeDecrease.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4FINALSTATECHARGEDECREASE_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeIncrease.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateChargeIncrease.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4FINALSTATECHARGEIncrease_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeTransferProton.hh

    r966 r991  
    2626//
    2727// $Id: G4FinalStateChargeTransferProton.hh,v 1.2 2008/03/25 16:00:20 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticBrennerZaider.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateElasticBrennerZaider.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4FINALSTATEELASTICBRENNERZAIDER_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticChampion.hh

    r966 r991  
    2525//
    2626// $Id: G4FinalStateElasticChampion.hh,v 1.1 2008/07/15 19:56:50 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticScreenedRutherford.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateElasticScreenedRutherford.hh,v 1.3 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4FINALSTATEELASTICSCREENEDRUTHERFORD_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationBorn.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateExcitationBorn.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4FINALSTATEEXCITATIONBORN_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationEmfietzoglou.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateExcitationEmfietzoglou.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4FINALSTATEEXCITATIONEMFIETZOGLOU_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationMillerGreen.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateExcitationMillerGreen.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4FINALSTATEEXCITATIONMILLERGREEN_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationBorn.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateIonisationBorn.hh,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4FINALSTATEIONISATIONBORN_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationRudd.hh

    r961 r991  
    2525//
    2626// $Id: G4FinalStateIonisationRudd.hh,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateKill.hh

    r961 r991  
    2626//
    2727// $Id: G4FinalStateKill.hh,v 1.1 2007/11/09 20:26:47 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh

    r961 r991  
    2525//
    2626//
    27 // $Id: G4FinalStateProduct.hh,v 1.5 2009/01/20 07:50:28 sincerti Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4FinalStateProduct.hh,v 1.4 2007/10/15 08:31:49 pia Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
     
    7272  void ModifyPrimaryParticle(const G4ThreeVector& direction, G4double energy);
    7373 
    74   void DoNotDepositEnergy();
    7574  void KillPrimaryParticle();
    76 
     75 
    7776  G4bool PrimaryParticleIsKilled() const { return killStatus; }
    78  
    79   G4bool PrimaryParticleIsKilledAndDoNotDepositEnergy() const { return doNotDepositStatus; }
    8077 
    8178  G4bool PrimaryParticleIsModified() const { return isModified; }
     
    9996 
    10097  G4bool killStatus;
    101   G4bool doNotDepositStatus;
    10298  G4bool isModified;
    10399  G4double localEnergyDeposit;
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStatePsCreationChampion.hh

    r966 r991  
    2525//
    2626// $Id: G4FinalStatePsCreationChampion.hh,v 1.1 2008/07/16 19:01:07 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4FluoTransition.hh

    r961 r991  
    2626//
    2727// $Id: G4FluoTransition.hh,v 1.2 ????
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4IonParametrisedLossModel.hh

    r966 r991  
    3737// First implementation: 10. 11. 2008
    3838//
    39 // Modifications: 03. 02. 2009 - Bug fix iterators (AL)
     39// Modifications:
    4040//
    4141//
  • trunk/source/processes/electromagnetic/lowenergy/include/G4IonParametrisedLossModel.icc

    r968 r991  
    3737// First implementation: 10. 11. 2008
    3838//
    39 // Modifications: 03. 02. 2009 - Bug fix iterators (AL)
     39// Modifications:
    4040//
    4141//
     
    186186                    const G4Material* material) {          // Target material
    187187
    188   LossTableList::iterator iter = lossTableList.end();
     188  LossTableList::iterator iter = lossTableList.begin();
    189189  LossTableList::iterator iterTables = lossTableList.begin();
    190190  LossTableList::iterator iterTables_end = lossTableList.end();
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh

    r961 r991  
    2626//
    2727// $Id: G4LinInterpolation.hh,v 1.3 2006/06/29 19:35:45 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LivermoreComptonModel.hh

    r966 r991  
    2525//
    2626// $Id: G4LivermoreComptonModel.hh,v 1.1 2008/10/30 14:16:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LivermoreGammaConversionModel.hh

    r966 r991  
    2525//
    2626// $Id: G4LivermoreGammaConversionModel.hh,v 1.1 2008/10/30 14:16:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LivermorePhotoElectricModel.hh

    r966 r991  
    2525//
    2626// $Id: G4LivermorePhotoElectricModel.hh,v 1.1 2008/10/30 14:16:35 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LivermorePolarizedComptonModel.hh

    r966 r991  
    2525//
    2626// $Id: G4LivermorePolarizedComptonModel.hh,v 1.1 2008/10/30 14:16:35 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LivermorePolarizedRayleighModel.hh

    r966 r991  
    2525//
    2626// $Id: G4LivermorePolarizedRayleighModel.hh,v 1.1 2008/10/30 14:16:35 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LivermoreRayleighModel.hh

    r966 r991  
    2525//
    2626// $Id: G4LivermoreRayleighModel.hh,v 1.1 2008/10/30 14:16:35 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh

    r961 r991  
    2626//
    2727// $Id: G4LogLogInterpolation.hh,v 1.6 2008/12/09 13:28:02 sincerti Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh

    r961 r991  
    2727// -------------------------------------------------------------------
    2828// $Id: G4LowEnergyBremsstrahlung.hh,v 1.37 2006/06/29 19:35:55 gunter Exp $
    29 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     29// GEANT4 tag $Name: geant4-09-02 $
    3030//
    3131// Author: A. Forti
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh

    r961 r991  
    2525//
    2626// $Id: G4LowEnergyCompton.hh,v 1.24 2008/11/04 10:14:00 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: A. Forti
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh

    r961 r991  
    2626//
    2727// $Id: G4LowEnergyGammaConversion.hh,v 1.15 2006/06/29 19:35:59 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: A. Forti
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh

    r961 r991  
    2626// -------------------------------------------------------------------
    2727// $Id: G4LowEnergyIonisation.hh,v 1.41 2006/06/29 19:36:01 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: A. Forti
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh

    r961 r991  
    2626//
    2727// $Id: G4LowEnergyPhotoElectric.hh,v 1.28 2006/06/29 19:36:03 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: A. Forti
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh

    r961 r991  
    2626//
    2727// $Id: G4LowEnergyPolarizedCompton.hh,v 1.10 2008/05/02 13:04:41 flongo Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// ------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedRayleigh.hh

    r961 r991  
    2525//
    2626// $Id: G4LowEnergyPolarizedRayleigh.hh,v 1.5 2006/06/29 19:36:07 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh

    r961 r991  
    2626//
    2727// $Id: G4LowEnergyRayleigh.hh,v 1.16 2006/06/29 19:36:09 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/lowenergy/include/G4OrlicLCrossSection.hh

    r966 r991  
    2525//
    2626// $Id: G4OrlicLCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Haifa Ben Abdelouahed
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeAnnihilationModel.hh

    r966 r991  
    2525//
    2626// $Id: G4PenelopeAnnihilationModel.hh,v 1.1 2008/11/04 10:14:56 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlung.hh

    r961 r991  
    2727// -------------------------------------------------------------------
    2828// $Id: G4PenelopeBremsstrahlung.hh,v 1.8 2006/06/29 19:36:15 gunter Exp $
    29 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     29// GEANT4 tag $Name: geant4-09-02 $
    3030//
    3131// Author: L.Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungAngular.hh

    r961 r991  
    2727// -------------------------------------------------------------------
    2828// $Id: G4PenelopeBremsstrahlungAngular.hh,v 1.3 2006/06/29 19:36:17 gunter Exp $
    29 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     29// GEANT4 tag $Name: geant4-09-02 $
    3030//
    3131// Author: L.Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungContinuous.hh

    r961 r991  
    2727// -------------------------------------------------------------------
    2828// $Id: G4PenelopeBremsstrahlungContinuous.hh,v 1.4 2008/12/09 15:04:05 pandola Exp $
    29 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     29// GEANT4 tag $Name: geant4-09-02 $
    3030//
    3131// Author: L.Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeCompton.hh

    r961 r991  
    2525//
    2626// $Id: G4PenelopeCompton.hh,v 1.11 2008/03/26 15:30:19 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeComptonModel.hh

    r966 r991  
    2525//
    2626// $Id: G4PenelopeComptonModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeGammaConversion.hh

    r961 r991  
    2626//
    2727// $Id: G4PenelopeGammaConversion.hh,v 1.2 2006/06/29 19:36:25 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: L. Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeGammaConversionModel.hh

    r966 r991  
    2525//
    2626// $Id: G4PenelopeGammaConversionModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeIonisation.hh

    r961 r991  
    2626// -------------------------------------------------------------------
    2727// $Id: G4PenelopeIonisation.hh,v 1.5 2006/06/29 19:36:33 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: L. Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeIonisationModel.hh

    r966 r991  
    2525//
    2626// $Id: G4PenelopeIonisationModel.hh,v 1.1 2008/12/04 14:12:09 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopePhotoElectric.hh

    r961 r991  
    2626//
    2727// $Id: G4PenelopePhotoElectric.hh,v 1.4 2006/06/29 19:36:35 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: L.Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopePhotoElectricModel.hh

    r966 r991  
    2525//
    2626// $Id: G4PenelopePhotoElectricModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeRayleigh.hh

    r961 r991  
    2626//
    2727// $Id: G4PenelopeRayleigh.hh,v 1.5 2006/06/29 19:36:37 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeRayleighModel.hh

    r966 r991  
    2525//
    2626// $Id: G4PenelopeRayleighModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh

    r961 r991  
    2626//
    2727// $Id: G4RangeNoTest.hh,v 1.4 2006/06/29 19:36:47 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh

    r961 r991  
    2626//
    2727// $Id: G4RangeTest.hh,v 1.4 2006/06/29 19:36:49 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh

    r961 r991  
    2626//
    2727// $Id: G4SemiLogInterpolation.hh,v 1.4 2006/06/29 19:36:51 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh

    r961 r991  
    2626//
    2727// $Id: G4ShellData.hh,v 1.7 2008/03/17 13:45:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh

    r961 r991  
    2626//
    2727// $Id: G4ShellEMDataSet.hh,v 1.12 2008/03/17 13:45:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh

    r961 r991  
    2626//
    2727// $Id: G4VCrossSectionHandler.hh,v 1.14 2006/06/29 19:37:01 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh

    r961 r991  
    2626//
    2727// $Id: G4VDataSetAlgorithm.hh,v 1.7 2006/06/29 19:37:07 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh

    r961 r991  
    2626//
    2727// $Id: G4VEMDataSet.hh,v 1.12 2008/03/17 13:45:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyDiscretePhotonProcess.hh

    r961 r991  
    2525//
    2626// $Id: G4VLowEnergyDiscretePhotonProcess.hh,v 1.4 2006/06/29 19:37:13 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyTestableDiscreteProcess.hh

    r961 r991  
    2626//
    2727// $Id: G4VLowEnergyTestableDiscreteProcess.hh,v 1.3 2006/06/29 19:37:17 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030
  • trunk/source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh

    r961 r991  
    2626//
    2727// $Id: G4VRangeTest.hh,v 1.3 2006/06/29 19:37:21 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh

    r961 r991  
    2626//
    2727// $Id: G4VeLowEnergyLoss.hh,v 1.9 2006/06/29 19:37:23 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// 3.4.2000 Veronique Lefebure:
  • trunk/source/processes/electromagnetic/lowenergy/include/G4WaterExcitationStructure.hh

    r961 r991  
    2626//
    2727// $Id: G4WaterExcitationStructure.hh,v 1.1 2007/10/15 08:33:25 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4WaterIonisationStructure.hh

    r961 r991  
    2626//
    2727// $Id: G4WaterIonisationStructure.hh,v 1.1 2007/11/08 20:38:40 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh

    r961 r991  
    2525//
    2626// $Id: G4eBremsstrahlungSpectrum.hh,v 1.8 2006/06/29 19:37:33 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionExcitationEmfietzoglou.hh

    r961 r991  
    2626//
    2727// $Id: G4eCrossSectionExcitationEmfietzoglou.hh,v 1.1 2007/05/02 17:18:48 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionScreenedRutherford.hh

    r961 r991  
    2626//
    2727// $Id: G4eCrossSectionScreenedRutherford.hh,v 1.2 2007/10/12 12:26:34 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eIonisationCrossSectionHandler.hh,v 1.7 2009/01/29 08:13:27 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eIonisationCrossSectionHandler.hh,v 1.6 2006/06/29 19:37:36 gunter Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    4040// Modified:
    4141// 10 Oct 2001  M.G. Pia        Revision to improve code quality and consistency with design
    42 // 28 Jan 2009  L.Pandola    Added public method to make a easier migration of
    43 //                           G4LowEnergyIonisation to G4LivermoreIonisationModel
     42//
    4443// -------------------------------------------------------------------
    4544
     
    7372
    7473  ~G4eIonisationCrossSectionHandler();
    75 
    76   G4double GetCrossSectionAboveThresholdForElement(G4double energy,
    77                                                    G4double cutEnergy,
    78                                                    G4int Z);
    7974 
    8075protected:
  • trunk/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh

    r961 r991  
    2626//
    2727// $Id: G4eIonisationParameters.hh,v 1.8 2006/06/29 19:37:38 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh

    r961 r991  
    2525//
    2626// $Id: G4eIonisationSpectrum.hh,v 1.7 2006/06/29 19:37:40 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh

    r961 r991  
    2626//
    2727// $Id: G4eLowEnergyLoss.hh,v 1.14 2006/06/29 19:37:42 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/include/G4ecpssrCrossSection.hh

    r966 r991  
    2525//
    2626// $Id: G4ecpssrCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Haifa Ben Abdelouahed
  • trunk/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh

    r961 r991  
    2626//
    2727// $Id: G4hLowEnergyLoss.hh,v 1.17 2006/06/29 19:37:58 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// $Id:
  • trunk/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExp.hh

    r961 r991  
    4545// -------------------------------------------------------------------
    4646// $Id: G4hShellCrossSectionDoubleExp.hh,v 1.3 2006/06/29 19:38:12 gunter Exp $
    47 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     47// GEANT4 tag $Name: geant4-09-02 $
    4848
    4949#ifndef G4HSHELLCROSSSECTIONDOUBLEEXP_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExpData.hh

    r961 r991  
    4040// -------------------------------------------------------------------
    4141// $Id: G4hShellCrossSectionDoubleExpData.hh,v 1.3 2006/06/29 19:38:14 gunter Exp $
    42 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     42// GEANT4 tag $Name: geant4-09-02 $
    4343
    4444#ifndef G4hShellCrossSectionDoubleExpData_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExp.hh

    r961 r991  
    4545// -------------------------------------------------------------------
    4646// $Id: G4hShellCrossSectionExp.hh,v 1.3 2006/06/29 19:38:16 gunter Exp $
    47 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     47// GEANT4 tag $Name: geant4-09-02 $
    4848
    4949#ifndef G4HSHELLCROSSSECTIONEXP_HH
  • trunk/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExpData.hh

    r961 r991  
    3838// -------------------------------------------------------------------
    3939// $Id: G4hShellCrossSectionExpData.hh,v 1.3 2006/06/29 19:38:18 gunter Exp $
    40 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     40// GEANT4 tag $Name: geant4-09-02 $
    4141
    4242#ifndef G4hShellCrossSectionExpData_HH
  • trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc

    r961 r991  
    2626//
    2727// $Id: G4AtomicDeexcitation.cc,v 1.11
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc

    r961 r991  
    2626//
    2727// $Id: G4AtomicShell.cc,v 1.2 ????
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc

    r961 r991  
    2626//
    2727// $Id: G4AtomicTransitionManager.cc,v 1.2 ????
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc

    r961 r991  
    2525//
    2626// $Id: G4BremsstrahlungCrossSectionHandler.cc,v 1.9 2006/06/29 19:38:42 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc

    r961 r991  
    2626//
    2727// $Id: G4BremsstrahlungParameters.cc,v 1.19 2006/06/29 19:38:44 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc

    r961 r991  
    2626//
    2727// $Id: G4CompositeEMDataSet.cc,v 1.13 2008/03/17 13:40:53 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecrease.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionChargeDecrease.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionChargeDecrease.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecreasePartial.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionChargeDecreasePartial.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionChargeDecreasePartial.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncrease.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionChargeIncrease.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionChargeIncrease.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncreasePartial.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionChargeIncreasePartial.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionChargeIncreasePartial.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeTransferCH.cc

    r968 r991  
    2626//
    2727// $Id: G4CrossSectionChargeTransferCH.cc,v 1.3 2008/03/25 16:00:20 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeTransferExp.cc

    r968 r991  
    2626//
    2727// $Id: G4CrossSectionChargeTransferExp.cc,v 1.5 2008/06/27 12:22:25 sincerti Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticChampion.cc

    r968 r991  
    2525//
    2626// $Id: G4CrossSectionElasticChampion.cc,v 1.4 2008/12/05 11:58:16 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherford.cc

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionElasticScreenedRutherford.cc,v 1.1 2007/10/12 23:11:41 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherfordHE.cc

    r968 r991  
    2525//
    2626// $Id: G4CrossSectionElasticScreenedRutherfordHE.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionElasticScreenedRutherfordHE.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherfordLE.cc

    r968 r991  
    2525//
    2626// $Id: G4CrossSectionElasticScreenedRutherfordLE.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionElasticScreenedRutherfordLE.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBorn.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationBorn.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionExcitationBorn.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBornPartial.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationBornPartial.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionExcitationBornPartial.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglou.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationEmfietzoglou.cc,v 1.5 2008/12/05 11:58:16 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionExcitationEmfietzoglou.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglouPartial.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationEmfietzoglouPartial.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionExcitationEmfietzoglouPartial.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreen.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionExcitationMillerGreen.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionExcitationMillerGreen.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4CrossSectionExcitationMillerGreenPartial.cc,v 1.3 2009/01/20 07:40:53 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4CrossSectionExcitationMillerGreenPartial.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionExcitationMillerGreenPartial.hh"
     
    115115  tCorrected = k * kineticEnergyCorrection[particleTypeIndex];
    116116
    117   // SI - added protection
    118   if (tCorrected < waterExcitation.ExcitationEnergy(excitationLevel)) return 0;
    119   //
    120  
    121117  G4int z = 10;
    122118
     
    162158  // ELECTRON CORRECTION
    163159 
    164   if ( particle == instance->GetIon("alpha++")||
    165        particle == G4Proton::ProtonDefinition())
    166        
     160  if ( particle == instance->GetIon("alpha++"))
    167161  {  while (i > 0)
    168162     {
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionHandler.cc

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionHandler.cc,v 1.18 2006/06/29 19:38:48 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBorn.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionIonisationBorn.cc,v 1.4 2008/08/20 14:51:48 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionIonisationBorn.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornElectron.cc

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionIonisationBornElectron.cc,v 1.2 2007/11/08 18:51:34 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4CrossSectionIonisationBornPartial.cc,v 1.5 2009/01/20 07:40:53 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4CrossSectionIonisationBornPartial.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionIonisationBornPartial.hh"
     
    3333G4CrossSectionIonisationBornPartial::G4CrossSectionIonisationBornPartial()
    3434{
    35   lowEnergyLimitDefault = 12.61 * eV;
     35  lowEnergyLimitDefault = 25 * eV;
    3636  highEnergyLimitDefault = 30 * keV;
    3737
     
    5252    tableFile[electron] = fileElectron;
    5353
    54     lowEnergyLimit[electron] = 12.61 * eV;
     54    lowEnergyLimit[electron] = 25. * eV;
    5555    highEnergyLimit[electron] = 30. * keV;
    5656
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartialElectron.cc

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionIonisationBornPartialElectron.cc,v 1.1 2007/10/15 08:57:54 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRudd.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionIonisationRudd.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionIonisationRudd.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRuddPartial.cc

    r961 r991  
    2525//
    2626// $Id: G4CrossSectionIonisationRuddPartial.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4CrossSectionIonisationRuddPartial.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionKill.cc

    r961 r991  
    2626//
    2727// $Id: G4CrossSectionKill.cc,v 1.1 2007/11/09 20:26:12 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionPsCreationChampion.cc

    r968 r991  
    2525//
    2626// $Id: G4CrossSectionPsCreationChampion.cc,v 1.1 2008/07/16 19:01:07 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionPsCreationChampionPartial.cc

    r968 r991  
    2525//
    2626// $Id: G4CrossSectionPsCreationChampionPartial.cc,v 1.1 2008/07/16 19:01:07 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/src/G4DNACrossSectionDataSet.cc

    r961 r991  
    2727
    2828// $Id: G4DNACrossSectionDataSet.cc,v 1.7 2007/11/09 18:06:26 pia Exp $
    29 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     29// GEANT4 tag $Name: geant4-09-02 $
    3030//
    3131// Author: Riccardo Capra <capra@ge.infn.it>
  • trunk/source/processes/electromagnetic/lowenergy/src/G4DNAGenericIonsManager.cc

    r961 r991  
    2525//
    2626// $Id: G4DNAGenericIonsManager.cc,v 1.5 2008/07/16 19:01:07 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4DNAGenericIonsManager.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4DopplerProfile.cc

    r968 r991  
    2626//
    2727// $Id: G4DopplerProfile.cc,v 1.2 2008/03/17 13:40:53 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4DummyFinalState.cc

    r961 r991  
    2626//
    2727// $Id: G4DummyFinalState.cc,v 1.2 2007/10/15 08:36:35 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc

    r961 r991  
    2626//
    2727// $Id: G4EMDataSet.cc,v 1.18 2008/03/17 13:40:53 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4FinalStateChargeDecrease.cc,v 1.4 2009/01/20 07:50:28 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4FinalStateChargeDecrease.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateChargeDecrease.hh"
     
    7070  }
    7171 
    72   //SI - Added protection against total energy deposit
    73   product.DoNotDepositEnergy();
    74   //
    7572  product.KillPrimaryParticle();
    76 
    7773  product.AddEnergyDeposit(waterBindingEnergy);
    78 
     74 
    7975  G4DynamicParticle* aSecondary = new G4DynamicParticle(OutgoingParticleDefinition(definition, finalStateIndex),
    8076                                                        track.GetDynamicParticle()->GetMomentumDirection(),
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4FinalStateChargeIncrease.cc,v 1.4 2009/01/20 07:50:28 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4FinalStateChargeIncrease.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateChargeIncrease.hh"
     
    4848  product.Clear();
    4949
    50   //SI - Added protection against total energy deposit
    51   product.DoNotDepositEnergy();
    52   //
    5350  product.KillPrimaryParticle();
    5451  product.AddEnergyDeposit(0.);
    55 
    5652  G4ParticleDefinition* definition = track.GetDefinition();
    5753 
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeTransferProton.cc

    r968 r991  
    2626//
    2727// $Id: G4FinalStateChargeTransferProton.cc,v 1.1 2008/03/25 15:48:21 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticBrennerZaider.cc

    r961 r991  
    2525//
    2626// $Id: G4FinalStateElasticBrennerZaider.cc,v 1.8 2008/12/05 11:58:16 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateElasticBrennerZaider.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticChampion.cc

    r968 r991  
    2525//
    2626// $Id: G4FinalStateElasticChampion.cc,v 1.7 2008/12/10 18:25:28 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticScreenedRutherford.cc

    r961 r991  
    2525//
    2626// $Id: G4FinalStateElasticScreenedRutherford.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateElasticScreenedRutherford.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationBorn.cc

    r961 r991  
    2525//
    2626// $Id: G4FinalStateExcitationBorn.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateExcitationBorn.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationEmfietzoglou.cc

    r961 r991  
    2525//
    2626// $Id: G4FinalStateExcitationEmfietzoglou.cc,v 1.5 2008/12/05 11:58:16 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateExcitationEmfietzoglou.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationMillerGreen.cc

    r961 r991  
    2525//
    2626// $Id: G4FinalStateExcitationMillerGreen.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateExcitationMillerGreen.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationBorn.cc

    r961 r991  
    2525//
    2626// $Id: G4FinalStateIonisationBorn.cc,v 1.16 2008/12/06 13:47:12 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateIonisationBorn.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationRudd.cc

    r961 r991  
    2525//
    2626// $Id: G4FinalStateIonisationRudd.cc,v 1.8 2008/08/20 14:51:48 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#include "G4FinalStateIonisationRudd.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateKill.cc

    r961 r991  
    2626//
    2727// $Id: G4FinalStateKill.cc,v 1.1 2007/11/09 20:26:12 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc

    r961 r991  
    2525//
    2626//
    27 // $Id: G4FinalStateProduct.cc,v 1.6 2009/01/20 07:50:28 sincerti Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4FinalStateProduct.cc,v 1.5 2007/11/09 20:11:04 pia Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
     
    5353#include "G4ThreeVector.hh"
    5454
    55 G4FinalStateProduct::G4FinalStateProduct() : killStatus(false), doNotDepositStatus(false), isModified(false), localEnergyDeposit(0.), modifiedEnergy(0)
     55G4FinalStateProduct::G4FinalStateProduct() : killStatus(false), isModified(false), localEnergyDeposit(0.), modifiedEnergy(0)
    5656{
    5757  // empty
     
    6868  // Reset object status
    6969  killStatus = false;
    70   doNotDepositStatus = false;
    7170  isModified = false;
    7271  localEnergyDeposit = 0.;
     
    9998}
    10099 
    101 void G4FinalStateProduct::DoNotDepositEnergy()
    102 {
    103   doNotDepositStatus = true;
    104 }
    105 
    106100void G4FinalStateProduct::KillPrimaryParticle()
    107101{
    108  
    109102  // ---- MGP ---- To be added: Handle local energy deposit here
    110103  killStatus = true;
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStatePsCreationChampion.cc

    r968 r991  
    2525//
    2626// $Id: G4FinalStatePsCreationChampion.cc,v 1.1 2008/07/16 19:01:07 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828// -------------------------------------------------------------------
    2929
  • trunk/source/processes/electromagnetic/lowenergy/src/G4FluoTransition.cc

    r961 r991  
    2626//
    2727// $Id: G4FluoTransition.cc,v 1.2 ????
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4IonParametrisedLossModel.cc

    r968 r991  
    3737// First implementation: 10. 11. 2008
    3838//
    39 // Modifications: 03. 02. 2009 - Bug fix iterators (AL)
     39// Modifications:
    4040//
    4141//
     
    107107  dedxCacheMaterial = 0;
    108108  dedxCacheEnergyCut = 0;
    109   dedxCacheIter = lossTableList.end();
     109  dedxCacheIter = lossTableList.begin();
    110110  dedxCacheTransitionEnergy = 0.0; 
    111111  dedxCacheTransitionFactor = 0.0;
     
    166166  dedxCacheMaterial = 0;
    167167  dedxCacheEnergyCut = 0;
    168   dedxCacheIter = lossTableList.end();
     168  dedxCacheIter = lossTableList.begin();
    169169  dedxCacheTransitionEnergy = 0.0; 
    170170  dedxCacheTransitionFactor = 0.0;
     
    342342  LossTableList::iterator iter = dedxCacheIter;
    343343
    344   if(iter != lossTableList.end()) {
     344  if(iter != lossTableList.begin()) {
    345345
    346346     G4double transitionEnergy = dedxCacheTransitionEnergy;
     
    672672
    673673     // If any table is applicable, the transition factor is computed:
    674      if(iter != lossTableList.end()) {
     674     if(iter != lossTableList.begin()) {
    675675
    676676        // Retrieving the transition energy from the parameterisation table
     
    777777  // If parameterization for ions is available the electronic energy loss
    778778  // is overwritten
    779   if(iter != lossTableList.end()) {
     779  if(iter != lossTableList.begin()) {
    780780
    781781     // The energy loss is calculated using the ComputeDEDXPerVolume function
     
    854854  G4double transitionEnergy = dedxCacheTransitionEnergy;
    855855
    856   if(iter != lossTableList.end() && transitionEnergy < kineticEnergy) {
     856  if(iter != lossTableList.begin() && transitionEnergy < kineticEnergy) {
    857857     chargeSquareRatio *= corrections -> EffectiveChargeCorrection(particle,
    858858                                                                material,
     
    862862     eloss *= chargeSquareRatioCorr;
    863863  }
    864   else if (iter == lossTableList.end()) {
     864  else if (iter == lossTableList.begin()) {
    865865
    866866     chargeSquareRatio *= corrections -> EffectiveChargeCorrection(particle,
     
    875875  // overwrite the energy loss (i.e. when the effective charge approach is
    876876  // used)
    877   if(iter == lossTableList.end()) {
     877  if(iter == lossTableList.begin()) {
    878878
    879879     G4double scaledKineticEnergy = kineticEnergy * dedxCacheGenIonMassRatio;
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LinInterpolation.cc

    r961 r991  
    2626//
    2727// $Id: G4LinInterpolation.cc,v 1.3 2006/06/29 19:40:03 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreComptonModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4LivermoreComptonModel.cc,v 1.2 2009/01/21 10:58:13 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4LivermoreComptonModel.cc,v 1.1 2008/10/30 14:17:46 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
     
    3838G4LivermoreComptonModel::G4LivermoreComptonModel(const G4ParticleDefinition*,
    3939                                             const G4String& nam)
    40 :G4VEmModel(nam),isInitialised(false),meanFreePathTable(0),scatterFunctionData(0),crossSectionHandler(0)
     40:G4VEmModel(nam),isInitialised(false)
    4141{
    4242  lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ?
     
    4545  SetHighEnergyLimit(highEnergyLimit);
    4646
    47   verboseLevel=0 ;
     47  verboseLevel= 0;
    4848  // Verbosity scale:
    4949  // 0 = nothing
     
    6565G4LivermoreComptonModel::~G4LivermoreComptonModel()
    6666
    67 
    68   if (meanFreePathTable)   delete meanFreePathTable;
    69   if (crossSectionHandler) delete crossSectionHandler;
    70   if (scatterFunctionData) delete scatterFunctionData;
    71 
     67  delete meanFreePathTable;
     68  delete crossSectionHandler;
     69  delete scatterFunctionData;
    7270}
    7371
     
    7775                                       const G4DataVector& cuts)
    7876{
    79 
    8077  if (verboseLevel > 3)
    8178    G4cout << "Calling G4LivermoreComptonModel::Initialise()" << G4endl;
    8279
    83   if (crossSectionHandler)
    84   {
    85     crossSectionHandler->Clear();
    86     delete crossSectionHandler;
    87   }
    88  
     80  InitialiseElementSelectors(particle,cuts);
     81
    8982  // Energy limits
    9083 
     
    125118  if (verboseLevel > 2)
    126119    G4cout << "Loaded cross section files for Livermore Compton model" << G4endl;
    127 
    128   InitialiseElementSelectors(particle,cuts);
    129120
    130121  G4cout << "Livermore Compton model is initialized " << G4endl
     
    144135   
    145136  isInitialised = true;
    146 
    147137}
    148138
     
    155145                                             G4double, G4double)
    156146{
    157 
    158147  if (verboseLevel > 3)
    159148    G4cout << "Calling ComputeCrossSectionPerAtom() of G4LivermoreComptonModel" << G4endl;
    160149
    161150  G4double cs = crossSectionHandler->FindValue(G4int(Z), GammaEnergy);
    162  
    163151  return cs;
    164 
    165152}
    166153
     
    173160                                              G4double)
    174161{
    175 
    176162  // The scattered gamma energy is sampled according to Klein - Nishina formula.
    177163  // then accepted or rejected depending on the Scattering Function multiplied
     
    198184      fParticleChange->SetProposedKineticEnergy(0.);
    199185      fParticleChange->ProposeLocalEnergyDeposit(photonEnergy0);
     186      // SI - IS THE FOLLOWING RETURN NECESSARY ?
    200187      return ;
    201188  }
     
    348335  G4DynamicParticle* dp = new G4DynamicParticle (G4Electron::Electron(),eDirection,eKineticEnergy) ;
    349336  fvect->push_back(dp);
    350 
    351337}
    352338
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreGammaConversionModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4LivermoreGammaConversionModel.cc,v 1.2 2009/01/21 10:58:13 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4LivermoreGammaConversionModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
     
    3838G4LivermoreGammaConversionModel::G4LivermoreGammaConversionModel(const G4ParticleDefinition*,
    3939                                             const G4String& nam)
    40 :G4VEmModel(nam),smallEnergy(2.*MeV),isInitialised(false),crossSectionHandler(0),meanFreePathTable(0)
     40:G4VEmModel(nam),smallEnergy(2.*MeV),isInitialised(false)
    4141{
    4242  lowEnergyLimit = 1.022000 * MeV;
     
    6363G4LivermoreGammaConversionModel::~G4LivermoreGammaConversionModel()
    6464
    65   if (meanFreePathTable) delete meanFreePathTable;
    66   if (crossSectionHandler) delete crossSectionHandler;
     65  delete meanFreePathTable;
     66  delete crossSectionHandler;
    6767}
    6868
     
    7575    G4cout << "Calling G4LivermoreGammaConversionModel::Initialise()" << G4endl;
    7676
    77   if (crossSectionHandler)
    78   {
    79     crossSectionHandler->Clear();
    80     delete crossSectionHandler;
    81   }
     77  InitialiseElementSelectors(particle,cuts);
    8278
    8379  // Energy limits
     
    111107  if (verboseLevel > 2)
    112108    G4cout << "Loaded cross section files for PenelopeGammaConversion" << G4endl;
    113 
    114   InitialiseElementSelectors(particle,cuts);
    115109
    116110  G4cout << "Livermore Gamma Conversion model is initialized " << G4endl
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePhotoElectricModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4LivermorePhotoElectricModel.cc,v 1.2 2009/01/21 10:58:13 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4LivermorePhotoElectricModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
     
    3838G4LivermorePhotoElectricModel::G4LivermorePhotoElectricModel(const G4ParticleDefinition*,
    3939                                             const G4String& nam)
    40 :G4VEmModel(nam),isInitialised(false),meanFreePathTable(0),crossSectionHandler(0),shellCrossSectionHandler(0),ElectronAngularGenerator(0)
     40:G4VEmModel(nam),isInitialised(false)
    4141{
    4242  lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ?
     
    6464G4LivermorePhotoElectricModel::~G4LivermorePhotoElectricModel()
    6565
    66   if (meanFreePathTable) delete meanFreePathTable;
    67   if (crossSectionHandler) delete crossSectionHandler;
    68   if (shellCrossSectionHandler) delete shellCrossSectionHandler;
    69   if (ElectronAngularGenerator) delete ElectronAngularGenerator;
     66  delete meanFreePathTable;
     67  delete crossSectionHandler;
     68  delete shellCrossSectionHandler;
     69  delete ElectronAngularGenerator;
    7070}
    7171
     
    7878    G4cout << "Calling G4LivermorePhotoElectricModel::Initialise()" << G4endl;
    7979
    80   if (crossSectionHandler)
    81   {
    82     crossSectionHandler->Clear();
    83     delete crossSectionHandler;
    84   }
    85  
    86   if (shellCrossSectionHandler)
    87   {
    88     shellCrossSectionHandler->Clear();
    89     delete shellCrossSectionHandler;
    90   }
    91  
     80  InitialiseElementSelectors(particle,cuts);
     81
    9282  // Energy limits
    9383 
     
    132122    G4cout << "Loaded cross section files for Livermore PhotoElectric model" << G4endl;
    133123
    134   InitialiseElementSelectors(particle,cuts);
    135 
    136124  G4cout << "Livermore PhotoElectric model is initialized " << G4endl
    137125         << "Energy range: "
     
    189177      fParticleChange->SetProposedKineticEnergy(0.);
    190178      fParticleChange->ProposeLocalEnergyDeposit(photonEnergy);
     179      // SI - IS THE FOLLOWING RETURN NECESSARY ?
    191180      return ;
    192181    }
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePolarizedComptonModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4LivermorePolarizedComptonModel.cc,v 1.2 2009/01/21 10:58:13 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4LivermorePolarizedComptonModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
     
    3838G4LivermorePolarizedComptonModel::G4LivermorePolarizedComptonModel(const G4ParticleDefinition*,
    3939                                             const G4String& nam)
    40 :G4VEmModel(nam),isInitialised(false),meanFreePathTable(0),scatterFunctionData(0),crossSectionHandler(0)
     40:G4VEmModel(nam),isInitialised(false)
    4141{
    4242  lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ?
     
    6565G4LivermorePolarizedComptonModel::~G4LivermorePolarizedComptonModel()
    6666
    67   if (meanFreePathTable)   delete meanFreePathTable;
    68   if (crossSectionHandler) delete crossSectionHandler;
    69   if (scatterFunctionData) delete scatterFunctionData;
     67  delete meanFreePathTable;
     68  delete crossSectionHandler;
     69  delete scatterFunctionData;
    7070}
    7171
     
    7878    G4cout << "Calling G4LivermorePolarizedComptonModel::Initialise()" << G4endl;
    7979
    80   if (crossSectionHandler)
    81   {
    82     crossSectionHandler->Clear();
    83     delete crossSectionHandler;
    84   }
     80  InitialiseElementSelectors(particle,cuts);
    8581
    8682  // Energy limits
     
    123119  if (verboseLevel > 2)
    124120    G4cout << "Loaded cross section files for Livermore Polarized Compton model" << G4endl;
    125 
    126   InitialiseElementSelectors(particle,cuts);
    127121
    128122  G4cout << "Livermore Polarized Compton model is initialized " << G4endl
     
    209203      fParticleChange->SetProposedKineticEnergy(0.);
    210204      fParticleChange->ProposeLocalEnergyDeposit(gammaEnergy0);
     205      // SI - IS THE FOLLOWING RETURN NECESSARY ?
    211206      return;
    212207    }
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePolarizedRayleighModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4LivermorePolarizedRayleighModel.cc,v 1.2 2009/01/21 10:58:13 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4LivermorePolarizedRayleighModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
     
    3838G4LivermorePolarizedRayleighModel::G4LivermorePolarizedRayleighModel(const G4ParticleDefinition*,
    3939                                             const G4String& nam)
    40 :G4VEmModel(nam),isInitialised(false),crossSectionHandler(0),formFactorData(0)
     40:G4VEmModel(nam),isInitialised(false)
    4141{
    4242  lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ?
     
    6565G4LivermorePolarizedRayleighModel::~G4LivermorePolarizedRayleighModel()
    6666
    67   if (crossSectionHandler) delete crossSectionHandler;
    68   if (formFactorData) delete formFactorData;
     67  delete crossSectionHandler;
     68  delete formFactorData;
    6969}
    7070
     
    8484    G4cout << "Calling G4LivermorePolarizedRayleighModel::Initialise()" << G4endl;
    8585
    86   if (crossSectionHandler)
    87   {
    88     crossSectionHandler->Clear();
    89     delete crossSectionHandler;
    90   }
    91  
     86  InitialiseElementSelectors(particle,cuts);
     87
    9288  // Energy limits
    9389 
     
    120116  if (verboseLevel > 2)
    121117    G4cout << "Loaded cross section files for Livermore Polarized Rayleigh model" << G4endl;
    122 
    123   InitialiseElementSelectors(particle,cuts);
    124118
    125119  G4cout << "Livermore Polarized Rayleigh model is initialized " << G4endl
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreRayleighModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4LivermoreRayleighModel.cc,v 1.2 2009/01/21 10:58:13 sincerti Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4LivermoreRayleighModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929
     
    3838G4LivermoreRayleighModel::G4LivermoreRayleighModel(const G4ParticleDefinition*,
    3939                                             const G4String& nam)
    40 :G4VEmModel(nam),isInitialised(false),meanFreePathTable(0),formFactorData(0),crossSectionHandler(0)
     40:G4VEmModel(nam),isInitialised(false)
    4141{
    4242  lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ?
     
    6565G4LivermoreRayleighModel::~G4LivermoreRayleighModel()
    6666
    67   if (meanFreePathTable) delete meanFreePathTable;
    68   if (crossSectionHandler) delete crossSectionHandler;
    69   if (formFactorData) delete formFactorData;
     67  delete meanFreePathTable;
     68  delete crossSectionHandler;
     69  delete formFactorData;
    7070}
    7171
     
    7878    G4cout << "Calling G4LivermoreRayleighModel::Initialise()" << G4endl;
    7979
    80   if (crossSectionHandler)
    81   {
    82     crossSectionHandler->Clear();
    83     delete crossSectionHandler;
    84   }
    85  
     80  InitialiseElementSelectors(particle,cuts);
     81
    8682  // Energy limits
    8783 
     
    120116    G4cout << "Loaded cross section files for Livermore Rayleigh model" << G4endl;
    121117
    122   InitialiseElementSelectors(particle,cuts);
    123 
    124118  G4cout << "Livermore Rayleigh model is initialized " << G4endl
    125119         << "Energy range: "
     
    172166      fParticleChange->SetProposedKineticEnergy(0.);
    173167      fParticleChange->ProposeLocalEnergyDeposit(photonEnergy0);
     168      // SI - IS THE FOLLOWING RETURN NECESSARY ?
    174169      return ;
    175170  }
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LogLogInterpolation.cc

    r961 r991  
    2626//
    2727// $Id: G4LogLogInterpolation.cc,v 1.14 2008/12/12 08:50:59 sincerti Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyBremsstrahlung.cc

    r961 r991  
    2525//
    2626// $Id: G4LowEnergyBremsstrahlung.cc,v 1.71 2006/06/29 19:40:13 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyCompton.cc

    r961 r991  
    2525//
    2626// $Id: G4LowEnergyCompton.cc,v 1.47 2008/12/18 13:01:28 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: A. Forti
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc

    r961 r991  
    2727///
    2828// $Id: G4LowEnergyGammaConversion.cc,v 1.36 2006/06/29 19:40:17 gunter Exp $
    29 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     29// GEANT4 tag $Name: geant4-09-02 $
    3030//
    3131//
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc

    r961 r991  
    2525//
    2626// $Id: G4LowEnergyIonisation.cc,v 1.103 2008/05/02 19:23:38 pia Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPhotoElectric.cc

    r961 r991  
    2626//
    2727// $Id: G4LowEnergyPhotoElectric.cc,v 1.56 2006/06/29 19:40:23 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: A. Forti
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedCompton.cc

    r961 r991  
    2626//
    2727// $Id: G4LowEnergyPolarizedCompton.cc,v 1.25 2008/05/02 19:23:38 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// ------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedRayleigh.cc

    r961 r991  
    2525//
    2626// $Id: G4LowEnergyPolarizedRayleigh.cc,v 1.7 2006/06/29 19:40:27 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc

    r961 r991  
    2727//
    2828// $Id: G4LowEnergyRayleigh.cc,v 1.37 2006/06/29 19:40:29 gunter Exp $
    29 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     29// GEANT4 tag $Name: geant4-09-02 $
    3030//
    3131// Author: A. Forti
  • trunk/source/processes/electromagnetic/lowenergy/src/G4OrlicLCrossSection.cc

    r968 r991  
    2525//
    2626//$Id: G4OrlicLCrossSection.cc,v 1.5 2008/12/18 13:01:30 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Haifa Ben Abdelouahed
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeAnnihilationModel.cc

    r968 r991  
    2525//
    2626// $Id: G4PenelopeAnnihilationModel.cc,v 1.2 2008/12/04 14:09:36 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlung.cc

    r961 r991  
    2525//
    2626// $Id: G4PenelopeBremsstrahlung.cc,v 1.18 2006/06/29 19:40:35 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlungAngular.cc

    r961 r991  
    2525//
    2626// $Id: G4PenelopeBremsstrahlungAngular.cc,v 1.7 2006/06/29 19:40:37 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlungContinuous.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PenelopeBremsstrahlungContinuous.cc,v 1.11 2008/12/15 09:23:06 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4PenelopeBremsstrahlungContinuous.cc,v 1.10 2008/12/09 15:08:13 pandola Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
     
    9797 G4String dirFile = pathString + "/penelope/" + name;
    9898 std::ifstream file(dirFile);
    99  if (!file.is_open())
     99 std::filebuf* lsdp = file.rdbuf();
     100 if (!(lsdp->is_open()))
    100101     {
    101102      G4String excep = "G4PenelopeBremsstrahlungContinuous - data file " + name + " not found!";
     
    111112     for (size_t j=0;j<NumberofKPoints;j++){
    112113       file >> a1;
    113        ReducedCS[i][j]=a1*cm2;
     114       ReducedCS[i][j]=a1*cm2; //coversion present in Penelope source
    114115     }
    115116     //3) read the total cross section, in cm2
    116117     file >> a1;
    117      TotalCS[i]=a1*cm2;
     118     TotalCS[i]=a1*cm2; //conversion present in Penelope source
    118119     // Check closing item
    119120     file >> a1;
    120121     if (a1 != ((G4double) -1))
    121122       {
    122          G4String excep = "G4PenelopeBremsstrahlungContinuous - Check the bremms data file "
    123            + name;
     123         G4String excep = "G4PenelopeBremsstrahlungContinuous - Check the bremms data file " + name;
    124124         G4Exception(excep);
    125125       }
     
    229229 
    230230  //Global x-section factor
    231   G4double Fact=Zmat*Zmat*(energy+electron_mass_c2)*(energy+electron_mass_c2)/
    232     (energy*(energy+2.0*electron_mass_c2));
     231  G4double Fact=Zmat*Zmat*(energy+electron_mass_c2)*(energy+electron_mass_c2)/(energy*(energy+2.0*electron_mass_c2));
    233232  Fact *= PositronCorrection(energy);
    234233
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeCompton.cc

    r961 r991  
    2525//
    2626// $Id: G4PenelopeCompton.cc,v 1.33 2008/06/03 15:44:25 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeComptonModel.cc

    r968 r991  
    2525//
    2626// $Id: G4PenelopeComptonModel.cc,v 1.2 2008/12/04 14:11:21 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeGammaConversionModel.cc

    r968 r991  
    2525//
    2626// $Id: G4PenelopeGammaConversionModel.cc,v 1.2 2008/12/04 14:09:36 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeIonisation.cc

    r961 r991  
    2525//
    2626// $Id: G4PenelopeIonisation.cc,v 1.19 2006/06/29 19:40:49 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeIonisationModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PenelopeIonisationModel.cc,v 1.3 2008/12/15 09:23:06 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4PenelopeIonisationModel.cc,v 1.2 2008/12/05 09:15:43 pandola Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
     
    517517    //Penelope subtracted the fluorescence, but one has to match the databases
    518518    eKineticEnergy = energySecondary+ioniEnergy-bindingEnergy;
    519  
     519   
     520  //VERIFICA QUI LA STORIA DEL LOCAL ENERGY DEPOSIT!
     521
    520522  G4double localEnergyDeposit = ionEnergy;
    521523  G4double energyInFluorescence = 0.0*eV;
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectric.cc

    r961 r991  
    2525//
    2626//
    27 // $Id: G4PenelopePhotoElectric.cc,v 1.13 2009/01/08 09:42:54 pandola Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4PenelopePhotoElectric.cc,v 1.12 2006/06/29 19:40:51 gunter Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: L. Pandola
     
    3737// 31 May 2005  L. Pandola  Added Sauter formula for the sampling of
    3838//                          the electron direction
    39 // 08 Jan 2009  L. Pandola  Check shell index to avoid mismatch between
    40 //                          the Penelope cross section database and the
    41 //                          G4AtomicTransitionManager database. It suppresses
    42 //                          a warning from G4AtomicTransitionManager only.
    43 //                          Results are unchanged.
    4439// --------------------------------------------------------------
    4540
     
    151146  // Retrieve the corresponding identifier and binding energy of the selected shell
    152147  const G4AtomicTransitionManager* transitionManager = G4AtomicTransitionManager::Instance();
    153 
    154   //The number of shell cross section possibly reported in the Penelope database
    155   //might be different from the number of shells in the G4AtomicTransitionManager
    156   //(namely, Penelope may contain more shell, especially for very light elements).
    157   //In order to avoid a warning message from the G4AtomicTransitionManager, I
    158   //add this protection. Results are anyway changed, because when G4AtomicTransitionManager
    159   //has a shellID>maxID, it sets the shellID to the last valid shell.
    160   size_t numberOfShells = (size_t) transitionManager->NumberOfShells(Z);
    161   if (shellIndex >= numberOfShells)
    162     shellIndex = numberOfShells-1;
    163 
    164148  const G4AtomicShell* shell = transitionManager->Shell(Z,shellIndex);
    165149  G4double bindingEnergy = shell->BindingEnergy();
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectricModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PenelopePhotoElectricModel.cc,v 1.3 2009/01/08 09:42:54 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4PenelopePhotoElectricModel.cc,v 1.2 2008/12/04 14:09:36 pandola Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
     
    3131// History:
    3232// --------
    33 // 08 Oct 2008   L Pandola  Migration from process to model
    34 // 08 Jan 2009  L. Pandola  Check shell index to avoid mismatch between
    35 //                          the Penelope cross section database and the
    36 //                          G4AtomicTransitionManager database. It suppresses
    37 //                          a warning from G4AtomicTransitionManager only.
    38 //                          Results are unchanged.
     33// 08 Oct 2008   L Pandola    Migration from process to model
    3934//
    4035
     
    232227  // Retrieve the corresponding identifier and binding energy of the selected shell
    233228  const G4AtomicTransitionManager* transitionManager = G4AtomicTransitionManager::Instance();
    234 
    235   //The number of shell cross section possibly reported in the Penelope database
    236   //might be different from the number of shells in the G4AtomicTransitionManager
    237   //(namely, Penelope may contain more shell, especially for very light elements).
    238   //In order to avoid a warning message from the G4AtomicTransitionManager, I
    239   //add this protection. Results are anyway changed, because when G4AtomicTransitionManager
    240   //has a shellID>maxID, it sets the shellID to the last valid shell.
    241   size_t numberOfShells = (size_t) transitionManager->NumberOfShells(Z);
    242   if (shellIndex >= numberOfShells)
    243     shellIndex = numberOfShells-1;
    244 
    245229  const G4AtomicShell* shell = transitionManager->Shell(Z,shellIndex);
    246230  G4double bindingEnergy = shell->BindingEnergy();
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeRayleigh.cc

    r961 r991  
    2727//
    2828// $Id: G4PenelopeRayleigh.cc,v 1.15 2007/09/03 09:43:14 pandola Exp $
    29 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     29// GEANT4 tag $Name: geant4-09-02 $
    3030//
    3131// Author: L. Pandola (luciano.pandola@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeRayleighModel.cc

    r968 r991  
    2525//
    2626// $Id: G4PenelopeRayleighModel.cc,v 1.2 2008/12/04 14:09:36 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Luciano Pandola
  • trunk/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc

    r961 r991  
    2626//
    2727// $Id: G4RangeTest.cc,v 1.8 2006/06/29 19:41:03 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc

    r961 r991  
    2626//
    2727// $Id: G4SemiLogInterpolation.cc,v 1.6 2006/06/29 19:41:18 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc

    r961 r991  
    2626//
    2727// $Id: G4ShellData.cc,v 1.10 2008/03/17 13:40:53 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc

    r961 r991  
    2626//
    2727// $Id: G4ShellEMDataSet.cc,v 1.16 2008/03/10 15:07:41 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc

    r961 r991  
    2626//
    2727// $Id: G4VCrossSectionHandler.cc,v 1.17 2006/06/29 19:41:42 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4VLowEnergyDiscretePhotonProcess.cc

    r961 r991  
    2525//
    2626// $Id: G4VLowEnergyDiscretePhotonProcess.cc,v 1.5 2006/06/29 19:41:44 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// --------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc

    r961 r991  
    2626//
    2727// $Id: G4VeLowEnergyLoss.cc,v 1.25 2006/06/29 19:41:50 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/lowenergy/src/G4WaterExcitationStructure.cc

    r961 r991  
    2626//
    2727// $Id: G4WaterExcitationStructure.cc,v 1.1 2007/10/15 08:57:54 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4WaterIonisationStructure.cc

    r961 r991  
    2626//
    2727// $Id: G4WaterIonisationStructure.cc,v 1.1 2007/11/08 20:39:35 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc

    r961 r991  
    2525//
    2626// $Id: G4eBremsstrahlungSpectrum.cc,v 1.15 2006/06/29 19:41:58 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionExcitationEmfietzoglou.cc

    r961 r991  
    2626//
    2727// $Id: G4eCrossSectionExcitationEmfietzoglou.cc,v 1.1 2007/05/04 10:16:06 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030
    3131// $Id: G4eCrossSectionExcitationEmfietzoglou.cc,v 1.1 2007/05/04 10:16:06 pia Exp $
    32 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     32// GEANT4 tag $Name: geant4-09-02 $
    3333//
    3434// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionScreenedRutherford.cc

    r961 r991  
    2626//
    2727// $Id: G4eCrossSectionScreenedRutherford.cc,v 1.3 2007/10/12 12:27:19 pia Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eIonisationCrossSectionHandler.cc,v 1.12 2009/01/29 08:13:34 pandola Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eIonisationCrossSectionHandler.cc,v 1.11 2006/06/29 19:42:00 gunter Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    4242// 19 Jul 2002   VI          Create composite data set for material
    4343// 21 Jan 2003  V.Ivanchenko Cut per region
    44 // 28 Jan 2009  L.Pandola    Added public method to make a easier migration of
    45 //                           G4LowEnergyIonisation to G4LivermoreIonisationModel
    4644//
    4745// -------------------------------------------------------------------
     
    10098    G4int nElements = material->GetNumberOfElements();
    10199
    102     if(verbose > 0)
    103       {
    104         G4cout << "eIonisation CS for " << m << "th material "
    105                << material->GetName()
    106                << "  eEl= " << nElements << G4endl;
    107       }
     100    if(verbose > 0) {
     101      G4cout << "eIonisation CS for " << m << "th material "
     102             << material->GetName()
     103             << "  eEl= " << nElements << G4endl;
     104    }
    108105
    109106    G4double tcut  = (*energyCuts)[m];
     
    132129            value += cross * p * density;
    133130
    134             if(verbose>0 && m == 0 && e>=1. && e<=0.)
    135             {
     131            if(verbose>0 && m == 0 && e>=1. && e<=0.) {
    136132              G4cout << "G4eIonCrossSH: e(MeV)= " << e/MeV
    137133                     << " n= " << n
     
    143139                     << " Z= " << Z
    144140                     << G4endl;
    145               }
     141            }
    146142
    147143          }
     
    159155}
    160156
    161 G4double G4eIonisationCrossSectionHandler::GetCrossSectionAboveThresholdForElement(G4double energy,
    162                                                                                    G4double cutEnergy,
    163                                                                                    G4int Z)
    164 {
    165   G4int nShells = NumberOfComponents(Z);
    166   G4double value = 0.;
    167   if(energy > cutEnergy)
    168     {
    169       for (G4int n=0; n<nShells; n++) {
    170         G4double cross = FindValue(Z, energy, n);
    171         G4double p = theParam->Probability(Z, cutEnergy, energy, energy, n);
    172         value += cross * p;
    173       }
    174     }
    175   return value;
    176 }
     157
  • trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc

    r961 r991  
    2626//
    2727// $Id: G4eIonisationParameters.cc,v 1.23 2006/06/29 19:42:02 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
  • trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc

    r961 r991  
    2525//
    2626// $Id: G4eIonisationSpectrum.cc,v 1.25 2006/06/29 19:42:04 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc

    r961 r991  
    2626//
    2727// $Id: G4eLowEnergyLoss.cc,v 1.35 2006/06/29 19:42:06 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929// 
    3030// -----------------------------------------------------------
  • trunk/source/processes/electromagnetic/lowenergy/src/G4ecpssrCrossSection.cc

    r968 r991  
    2525//
    2626//$Id: G4ecpssrCrossSection.cc,v 1.5 2008/12/18 13:01:32 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// Author: Haifa Ben Abdelouahed
  • trunk/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc

    r961 r991  
    2525//
    2626//
    27 // $Id: G4hLowEnergyLoss.cc,v 1.28 2009/02/20 10:49:54 sincerti Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4hLowEnergyLoss.cc,v 1.27 2008/06/20 19:54:03 sincerti Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// -----------------------------------------------------------
     
    145145G4double G4hLowEnergyLoss::HighestKineticEnergy= 100.*GeV;
    146146G4int    G4hLowEnergyLoss::TotBin = 360;
    147 G4double G4hLowEnergyLoss::RTable =1.1;
    148 G4double G4hLowEnergyLoss::LOGRTable = 1.1;
     147G4double G4hLowEnergyLoss::RTable,G4hLowEnergyLoss::LOGRTable;
    149148
    150149//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     
    773772    theRangeTable = theRangepbarTable ;
    774773  }
     774 
    775775  G4double R2 = RTable*RTable ;
    776776  G4double R1 = RTable+1.;
     
    10621062{
    10631063  G4double LowEdgeRange,A,B,C,discr,KineticEnergy ;
    1064   G4double Tbin = 0;
    1065   if (RTable !=0.) Tbin = LowestKineticEnergy/RTable ;
     1064  G4double Tbin = LowestKineticEnergy/RTable ;
    10661065  G4double rangebin = 0.0 ;
    10671066  G4int binnumber = -1 ;
  • trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExp.cc

    r961 r991  
    4242// -------------------------------------------------------------------
    4343// $Id: G4hShellCrossSectionDoubleExp.cc,v 1.9 2008/06/26 18:19:10 sincerti Exp $
    44 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     44// GEANT4 tag $Name: geant4-09-02 $
    4545
    4646#include "globals.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExpData.cc

    r961 r991  
    3434// -------------------------------------------------------------------
    3535// $Id: G4hShellCrossSectionDoubleExpData.cc,v 1.4 2006/06/29 19:42:38 gunter Exp $
    36 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     36// GEANT4 tag $Name: geant4-09-02 $
    3737
    3838#include "G4hShellCrossSectionDoubleExpData.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExp.cc

    r961 r991  
    4242// -------------------------------------------------------------------
    4343// $Id: G4hShellCrossSectionExp.cc,v 1.6 2008/05/02 19:23:38 pia Exp $
    44 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     44// GEANT4 tag $Name: geant4-09-02 $
    4545
    4646#include "globals.hh"
  • trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExpData.cc

    r961 r991  
    3434// -------------------------------------------------------------------
    3535// $Id: G4hShellCrossSectionExpData.cc,v 1.3 2006/06/29 19:42:42 gunter Exp $
    36 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     36// GEANT4 tag $Name: geant4-09-02 $
    3737
    3838#include "G4hShellCrossSectionExpData.hh"
  • trunk/source/processes/electromagnetic/muons/History

    r961 r991  
    1 $Id: History,v 1.126 2009/02/26 11:04:20 vnivanch Exp $
     1$Id: History,v 1.124 2008/11/13 14:14:07 vnivanch Exp $
    22-------------------------------------------------------------------
    33
     
    1717     * Reverse chronological order (last date on top), please *
    1818     ----------------------------------------------------------
    19 
    20 26 February 09: V.Ivant (emmuons-V09-02-01)
    21 G4MuIonisation - fixed initialisation alowing to configure external model
    22                  of fluctuations
    23 
    24 20 February 09: V.Ivant (emmuons-V09-02-00)
    25 - Cleanup: improved comments, move virtual methods from .hh to .cc
    2619
    272012 November 08: V.Ivant (emmuons-V09-01-15)
  • trunk/source/processes/electromagnetic/muons/include/G4EnergyLossForExtrapolator.hh

    r961 r991  
    2525//
    2626// $Id: G4EnergyLossForExtrapolator.hh,v 1.12 2008/11/13 14:14:07 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929//---------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/muons/include/G4MuBetheBlochModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBetheBlochModel.hh,v 1.18 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuBetheBlochModel.hh,v 1.17 2007/05/22 17:35:58 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7676  virtual ~G4MuBetheBlochModel();
    7777
    78   virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
     78  void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7979
    80   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    81                                 const G4MaterialCutsCouple*);
     80  G4double MinEnergyCut(const G4ParticleDefinition*,
     81                        const G4MaterialCutsCouple*);
    8282                       
    8383  virtual G4double ComputeCrossSectionPerElectron(
     
    113113protected:
    114114
    115   virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    116                                       G4double kinEnergy);
     115  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     116                                    G4double kinEnergy);
    117117
    118118private:
    119119
    120   inline void SetParticle(const G4ParticleDefinition* p);
     120  void SetParticle(const G4ParticleDefinition* p);
    121121
    122122  // hide assignment operator
     
    141141};
    142142
    143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     143//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
    144144
    145 inline void G4MuBetheBlochModel::SetParticle(const G4ParticleDefinition* p)
     145inline G4double G4MuBetheBlochModel::MaxSecondaryEnergy(
     146          const G4ParticleDefinition*,
     147                G4double kinEnergy)
    146148{
    147   if(!particle) {
    148     particle = p;
    149     mass = particle->GetPDGMass();
    150     massSquare = mass*mass;
    151     ratio = electron_mass_c2/mass;
    152   }
     149  G4double tau  = kinEnergy/mass;
     150  G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
     151                  (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
     152  return tmax;
    153153}
    154154
  • trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlung.hh,v 1.31 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuBremsstrahlung.hh,v 1.30 2008/02/29 17:50:05 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8686  virtual ~G4MuBremsstrahlung();
    8787
    88   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     88  G4bool IsApplicable(const G4ParticleDefinition& p);
    8989
    90   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    91                                     const G4Material*,
    92                                     G4double cut);
     90  G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     91                            const G4Material*,
     92                            G4double cut);
    9393
    9494  // Print out of the class parameters
    95   virtual void PrintInfo();
     95  void PrintInfo();
    9696
    9797protected:
    9898
    99   virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
    100                                            const G4ParticleDefinition*);
     99  void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
     100                                   const G4ParticleDefinition*);
    101101
    102102private:
     
    114114
    115115//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     116//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     117
     118inline
     119G4bool G4MuBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)
     120{
     121  return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
     122}
     123
     124//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     125
     126inline
     127G4double G4MuBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,
     128                                              const G4Material*,
     129                                              G4double)
     130{
     131  return lowestKinEnergy;
     132}
     133
     134//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    116135
    117136#endif
  • trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlungModel.hh,v 1.22 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuBremsstrahlungModel.hh,v 1.21 2008/07/22 16:11:34 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7878  virtual ~G4MuBremsstrahlungModel();
    7979
    80   virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    81 
    82   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    83                                 const G4MaterialCutsCouple*);
     80  void SetParticle(const G4ParticleDefinition*);
     81
     82  void Initialise(const G4ParticleDefinition*, const G4DataVector&);
     83
     84  G4double MinEnergyCut(const G4ParticleDefinition*,
     85                        const G4MaterialCutsCouple*);
    8486                             
    8587  virtual G4double ComputeCrossSectionPerAtom(
     
    9597                                G4double cutEnergy);
    9698                             
    97   virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
    98                                 const G4MaterialCutsCouple*,
    99                                 const G4DynamicParticle*,
    100                                 G4double tmin,
    101                                 G4double maxEnergy);
     99  void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     100                        const G4MaterialCutsCouple*,
     101                        const G4DynamicParticle*,
     102                        G4double tmin,
     103                        G4double maxEnergy);
    102104
    103105  inline void SetLowestKineticEnergy(G4double e);
     
    115117                                                   G4double gammaEnergy);
    116118
    117   inline void SetParticle(const G4ParticleDefinition*);
     119  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     120                              G4double kineticEnergy);
    118121
    119122private:
     
    157160//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    158161
     162inline
     163G4double G4MuBremsstrahlungModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
     164                                                     G4double kineticEnergy)
     165{
     166  return kineticEnergy;
     167}
     168
     169//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     170
    159171inline void G4MuBremsstrahlungModel::SetLowestKineticEnergy(G4double e)
    160172{
    161173  lowestKinEnergy = e;
     174}
     175
     176//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     177
     178inline
     179G4double G4MuBremsstrahlungModel::MinEnergyCut(const G4ParticleDefinition*,
     180                                               const G4MaterialCutsCouple*)
     181{
     182  return minThreshold;
    162183}
    163184
  • trunk/source/processes/electromagnetic/muons/include/G4MuIonisation.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuIonisation.hh,v 1.31 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuIonisation.hh,v 1.30 2007/05/23 08:49:32 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    9595  virtual ~G4MuIonisation();
    9696
    97   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     97  G4bool IsApplicable(const G4ParticleDefinition& p);
    9898
    99   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    100                                     const G4Material*, G4double cut);
     99  G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     100                            const G4Material*, G4double cut);
    101101
    102102  // Print out of the class parameters
    103   virtual void PrintInfo();
     103  void PrintInfo();
    104104
    105105protected:
     
    127127
    128128//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     129//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     130
     131inline G4bool G4MuIonisation::IsApplicable(const G4ParticleDefinition& p)
     132{
     133  return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
     134}
     135
     136//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     137
     138inline G4double G4MuIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
     139                                                 const G4Material*,
     140                                                 G4double cut)
     141{
     142  G4double x = 0.5*cut/electron_mass_c2;
     143  G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));
     144  return mass*(g - 1.0);
     145}
     146
     147//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    129148
    130149#endif
  • trunk/source/processes/electromagnetic/muons/include/G4MuMultipleScattering.hh

    r961 r991  
    2525//
    2626// $Id: G4MuMultipleScattering.hh,v 1.2 2008/04/13 17:19:13 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuPairProduction.hh,v 1.31 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuPairProduction.hh,v 1.30 2008/02/29 17:50:05 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8484  virtual ~G4MuPairProduction();
    8585
    86   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     86  G4bool IsApplicable(const G4ParticleDefinition& p);
    8787
    88   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    89                                     const G4Material*, G4double cut);
     88  G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     89                            const G4Material*, G4double cut);
    9090
    9191  // Print out of the class parameters
    92   virtual void PrintInfo();
     92  void PrintInfo();
    9393
    9494protected:
    9595
    96   virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
    97                                            const G4ParticleDefinition*);
     96  void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
     97                                   const G4ParticleDefinition*);
    9898
    9999private:
     
    113113
    114114//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     115//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     116
     117inline
     118G4bool G4MuPairProduction::IsApplicable(const G4ParticleDefinition& p)
     119{
     120  return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
     121}
     122
     123//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     124
     125inline
     126G4double G4MuPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,
     127                                              const G4Material*,
     128                                              G4double)
     129{
     130  return lowestKinEnergy;
     131}
     132
     133//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    115134
    116135#endif
  • trunk/source/processes/electromagnetic/muons/include/G4MuPairProductionModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuPairProductionModel.hh,v 1.28 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuPairProductionModel.hh,v 1.27 2008/07/22 16:11:34 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7979  virtual ~G4MuPairProductionModel();
    8080
    81   virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
     81  void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    8282
    8383                       
     
    100100                                 G4double maxEnergy);
    101101
    102   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
     102  inline void SetLowestKineticEnergy(G4double e);
     103
     104  inline G4double MinEnergyCut(const G4ParticleDefinition*,
    103105                               const G4MaterialCutsCouple*);
    104 
    105   inline void SetLowestKineticEnergy(G4double e);
    106106
    107107  inline void SetParticle(const G4ParticleDefinition*);
     
    120120                                                   G4double pairEnergy);
    121121
    122   virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    123                                       G4double kineticEnergy);
     122  inline G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     123                                     G4double kineticEnergy);
    124124
    125125  inline void SetCurrentElement(G4double Z);
     
    193193
    194194inline
     195G4double G4MuPairProductionModel::MinEnergyCut(const G4ParticleDefinition*,
     196                                               const G4MaterialCutsCouple* )
     197{
     198  return minPairEnergy;
     199}
     200
     201//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     202
     203inline
    195204void G4MuPairProductionModel::SetParticle(const G4ParticleDefinition* p)
    196205{
     
    199208    particleMass = particle->GetPDGMass();
    200209  }
     210}
     211
     212//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     213
     214inline G4double G4MuPairProductionModel::MaxSecondaryEnergy(
     215                                 const G4ParticleDefinition*,
     216                                       G4double kineticEnergy)
     217{
     218  G4double maxPairEnergy = kineticEnergy + particleMass*(1.0 - 0.75*sqrte*z13);
     219  return maxPairEnergy;
    201220}
    202221
  • trunk/source/processes/electromagnetic/muons/src/G4EnergyLossForExtrapolator.cc

    r961 r991  
    2525//
    2626// $Id: G4EnergyLossForExtrapolator.cc,v 1.18 2008/11/13 14:14:07 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929//---------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/muons/src/G4MuBetheBlochModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBetheBlochModel.cc,v 1.25 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuBetheBlochModel.cc,v 1.24 2008/03/25 12:31:04 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8888  theElectron = G4Electron::Electron();
    8989  corr = G4LossTableManager::Instance()->EmCorrections();
    90   fParticleChange = 0;
    9190
    9291  if(p) SetParticle(p);
     
    10099//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    101100
     101void G4MuBetheBlochModel::SetParticle(const G4ParticleDefinition* p)
     102{
     103  if(!particle) {
     104    particle = p;
     105    mass = particle->GetPDGMass();
     106    massSquare = mass*mass;
     107    ratio = electron_mass_c2/mass;
     108  }
     109}
     110
     111//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     112
    102113G4double G4MuBetheBlochModel::MinEnergyCut(const G4ParticleDefinition*,
    103114                                           const G4MaterialCutsCouple* couple)
     
    106117}
    107118
    108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
    109 
    110 G4double G4MuBetheBlochModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
    111                                                  G4double kinEnergy)
    112 {
    113   G4double tau  = kinEnergy/mass;
    114   G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
    115                   (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
    116   return tmax;
    117 }
    118 
    119119//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    120120
     
    124124  if(p) SetParticle(p);
    125125
    126   if(!fParticleChange) {
    127     if(pParticleChange) {
    128       fParticleChange =
    129         reinterpret_cast<G4ParticleChangeForLoss*>(pParticleChange);
    130     } else {
    131       fParticleChange = new G4ParticleChangeForLoss();
    132     }
    133   }
     126  if(pParticleChange)
     127    fParticleChange = reinterpret_cast<G4ParticleChangeForLoss*>
     128                                                             (pParticleChange);
     129  else
     130    fParticleChange = new G4ParticleChangeForLoss();
    134131}
    135132
  • trunk/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlung.cc,v 1.42 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuBremsstrahlung.cc,v 1.41 2008/10/16 13:37:04 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    9393//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    9494
    95 G4bool G4MuBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)
    96 {
    97   return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
    98 }
    99 
    100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    101 
    102 G4double G4MuBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,
    103                                               const G4Material*,
    104                                               G4double)
    105 {
    106   return lowestKinEnergy;
    107 }
    108 
    109 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    110 
    11195void G4MuBremsstrahlung::InitialiseEnergyLossProcess(
    11296                                 const G4ParticleDefinition* part,
  • trunk/source/processes/electromagnetic/muons/src/G4MuBremsstrahlungModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlungModel.cc,v 1.33 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuBremsstrahlungModel.cc,v 1.32 2008/07/22 16:11:34 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    111111//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    112112
    113 G4double G4MuBremsstrahlungModel::MinEnergyCut(const G4ParticleDefinition*,
    114                                                const G4MaterialCutsCouple*)
    115 {
    116   return minThreshold;
    117 }
    118 
    119 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    120 
    121113void G4MuBremsstrahlungModel::Initialise(const G4ParticleDefinition* p,
    122114                                         const G4DataVector& cuts)
     
    139131    if(nn > 0) {
    140132      for (G4int ii=0; ii<nn; ii++){
    141         G4DataVector* a = partialSumSigma[ii];
     133        G4DataVector* a=partialSumSigma[ii];
    142134        if ( a )  delete a;   
    143135      }
  • trunk/source/processes/electromagnetic/muons/src/G4MuIonisation.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuIonisation.cc,v 1.59 2009/02/26 11:04:20 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuIonisation.cc,v 1.57 2008/10/27 10:55:07 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8686#include "G4MuBetheBlochModel.hh"
    8787#include "G4UniversalFluctuation.hh"
    88 #include "G4IonFluctuations.hh"
    8988#include "G4BohrFluctuations.hh"
    9089#include "G4UnitsTable.hh"
     
    113112//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    114113
    115 G4bool G4MuIonisation::IsApplicable(const G4ParticleDefinition& p)
    116 {
    117   return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
    118 }
    119 
    120 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    121 
    122 G4double G4MuIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
    123                                           const G4Material*,
    124                                           G4double cut)
    125 {
    126   G4double x = 0.5*cut/electron_mass_c2;
    127   G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));
    128   return mass*(g - 1.0);
    129 }
    130 
    131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    132 
    133114void G4MuIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* part,
    134115                                                 const G4ParticleDefinition* bpart)
     
    142123    SetSecondaryParticle(G4Electron::Electron());
    143124
    144     // Bragg peak model
    145     if (!EmModel(1)) SetEmModel(new G4BraggModel(),1);
    146     EmModel(1)->SetLowEnergyLimit(MinKinEnergy());
    147     EmModel(1)->SetHighEnergyLimit(0.2*MeV);
    148     AddEmModel(1, EmModel(1), new G4IonFluctuations());
     125    flucModel = new G4UniversalFluctuation();
    149126
    150     // high energy fluctuation model
    151     if (!FluctModel()) SetFluctModel(new G4UniversalFluctuation());
    152 
    153     // moderate energy model
    154     if (!EmModel(2)) SetEmModel(new G4BetheBlochModel(),2);
    155     EmModel(2)->SetLowEnergyLimit(0.2*MeV);
    156     EmModel(2)->SetHighEnergyLimit(1.0*GeV);
    157     AddEmModel(2, EmModel(2), FluctModel());
    158 
    159     // high energy model
    160     if (!EmModel(3)) SetEmModel(new G4MuBetheBlochModel(),3);
    161     EmModel(3)->SetLowEnergyLimit(1.0*GeV);
    162     EmModel(3)->SetHighEnergyLimit(MaxKinEnergy());
    163     AddEmModel(3, EmModel(3), FluctModel());
     127    G4VEmModel* em = new G4BraggModel();
     128    em->SetLowEnergyLimit(MinKinEnergy());
     129    em->SetHighEnergyLimit(0.2*MeV);
     130    AddEmModel(1, em, flucModel);
     131    G4VEmModel* em1 = new G4BetheBlochModel();
     132    em1->SetLowEnergyLimit(0.2*MeV);
     133    em1->SetHighEnergyLimit(1.0*GeV);
     134    AddEmModel(2, em1, flucModel);
     135    G4VEmModel* em2 = new G4MuBetheBlochModel();
     136    em2->SetLowEnergyLimit(1.0*GeV);
     137    em2->SetHighEnergyLimit(MaxKinEnergy());
     138    AddEmModel(3, em2, flucModel);
    164139
    165140    ratio = electron_mass_c2/mass;
  • trunk/source/processes/electromagnetic/muons/src/G4MuMultipleScattering.cc

    r961 r991  
    2525//
    2626// $Id: G4MuMultipleScattering.cc,v 1.12 2008/10/16 13:37:04 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuPairProduction.cc,v 1.52 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuPairProduction.cc,v 1.51 2008/10/16 13:37:04 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    100100//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    101101
    102 G4bool G4MuPairProduction::IsApplicable(const G4ParticleDefinition& p)
    103 {
    104   return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);
    105 }
    106 
    107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    108 
    109 G4double G4MuPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,
    110                                               const G4Material*,
    111                                               G4double)
    112 {
    113   return lowestKinEnergy;
    114 }
    115 
    116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    117 
    118102void G4MuPairProduction::InitialiseEnergyLossProcess(
    119103                         const G4ParticleDefinition* part,
  • trunk/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuPairProductionModel.cc,v 1.40 2009/02/20 14:48:16 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MuPairProductionModel.cc,v 1.39 2008/07/22 16:11:34 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    137137//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    138138
    139 G4double G4MuPairProductionModel::MinEnergyCut(const G4ParticleDefinition*,
    140                                                const G4MaterialCutsCouple* )
    141 {
    142   return minPairEnergy;
    143 }
    144 
    145 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    146 
    147 G4double G4MuPairProductionModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
    148                                                      G4double kineticEnergy)
    149 {
    150   G4double maxPairEnergy = kineticEnergy + particleMass*(1.0 - 0.75*sqrte*z13);
    151   return maxPairEnergy;
    152 }
    153 
    154 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    155 
    156139void G4MuPairProductionModel::Initialise(const G4ParticleDefinition* p,
    157140                                         const G4DataVector&)
  • trunk/source/processes/electromagnetic/standard/History

    r961 r991  
    1 $Id: History,v 1.432 2009/02/20 12:11:37 vnivanch Exp $
     1$Id: History,v 1.430 2008/11/24 18:28:09 vnivanch Exp $
    22-------------------------------------------------------------------
    33
     
    1717     * Reverse chronological order (last date on top), please *
    1818     ----------------------------------------------------------
    19 
    20 20 February 09: V.Ivant (emstand-V09-02-00)
    21 - Move all virtual methods from inline to source
    22 G4PEEffectModel - substitute ComputeMeanFreePath by CrossSectionPerVolume
    23                   (minor CPU speadup for compound materials)
    24 G4PAIModel, G4PAIPhotonModel - remove usage of random numbers at
    25                    initialisation (potential non-reproducibility)
    26 G4WentzelVIModel - use generic methods of G4VMscModel to access safety
    27                    and other geometry information
    2819
    292024 November 08: V.Ivant (emstand-V09-01-45)
  • trunk/source/processes/electromagnetic/standard/include/G4ASTARStopping.hh

    r961 r991  
    2525//
    2626// $Id: G4ASTARStopping.hh,v 1.6 2008/11/13 12:04:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4ASTARStopping_h
  • trunk/source/processes/electromagnetic/standard/include/G4BetheBlochModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BetheBlochModel.hh,v 1.17 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BetheBlochModel.hh,v 1.16 2008/10/22 16:00:57 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8282  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    8383
    84   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    85                                 const G4MaterialCutsCouple*);
     84  G4double MinEnergyCut(const G4ParticleDefinition*,
     85                        const G4MaterialCutsCouple*);
    8686                       
    8787  virtual G4double ComputeCrossSectionPerElectron(
     
    131131protected:
    132132
    133   virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    134                                       G4double kinEnergy);
     133  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     134                              G4double kinEnergy);
    135135
    136136private:
     
    166166//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    167167
     168inline G4double G4BetheBlochModel::MaxSecondaryEnergy(
     169          const G4ParticleDefinition* pd,
     170                G4double kinEnergy)
     171{
     172  if(isIon) SetParticle(pd);
     173  G4double tau  = kinEnergy/mass;
     174  G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
     175                  (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
     176  return std::min(tmax,tlimit);
     177}
     178
     179//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     180
    168181#endif
  • trunk/source/processes/electromagnetic/standard/include/G4BetheHeitlerModel.hh

    r961 r991  
    2525//
    2626// $Id: G4BetheHeitlerModel.hh,v 1.6 2007/05/22 17:34:36 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4BohrFluctuations.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BohrFluctuations.hh,v 1.4 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BohrFluctuations.hh,v 1.3 2007/09/27 13:53:11 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7979  void InitialiseMe(const G4ParticleDefinition*);
    8080
     81protected:
     82
    8183private:
    8284
     
    101103//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    102104
     105
     106inline G4double G4BohrFluctuations::Dispersion(
     107                          const G4Material* material,
     108                          const G4DynamicParticle* dp,
     109                                G4double& tmax,
     110                                G4double& length)
     111{
     112  if(!particle) InitialiseMe(dp->GetDefinition());
     113
     114  G4double electronDensity = material->GetElectronDensity();
     115  kineticEnergy = dp->GetKineticEnergy();
     116  G4double etot = kineticEnergy + particleMass;
     117  beta2 = kineticEnergy*(kineticEnergy + 2.0*particleMass)/(etot*etot);
     118  G4double siga  = (1.0/beta2 - 0.5) * twopi_mc2_rcl2 * tmax * length
     119                 * electronDensity * chargeSquare;
     120
     121  return siga;
     122}
     123
     124//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     125
    103126#endif
    104127
  • trunk/source/processes/electromagnetic/standard/include/G4BraggIonModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BraggIonModel.hh,v 1.12 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BraggIonModel.hh,v 1.11 2008/10/22 16:00:57 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7777  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7878
    79   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    80                                 const G4MaterialCutsCouple*);
     79  G4double MinEnergyCut(const G4ParticleDefinition*,
     80                        const G4MaterialCutsCouple*);
    8181                       
    8282  virtual G4double ComputeCrossSectionPerElectron(
     
    128128protected:
    129129
    130   virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    131                                       G4double kinEnergy);
     130  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     131                              G4double kinEnergy);
    132132
    133133private:
     
    180180//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    181181
     182inline G4double G4BraggIonModel::MaxSecondaryEnergy(
     183          const G4ParticleDefinition* pd,
     184                G4double kinEnergy)
     185{
     186  if(pd != particle) SetParticle(pd);
     187  G4double tau  = kinEnergy/mass;
     188  G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
     189                  (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
     190  return tmax;
     191}
     192
     193//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     194
    182195inline void G4BraggIonModel::SetParticle(const G4ParticleDefinition* p)
    183196{
  • trunk/source/processes/electromagnetic/standard/include/G4BraggModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BraggModel.hh,v 1.13 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BraggModel.hh,v 1.12 2008/09/14 17:11:48 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8080  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    8181
    82   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    83                                 const G4MaterialCutsCouple*);
     82  G4double MinEnergyCut(const G4ParticleDefinition*,
     83                        const G4MaterialCutsCouple*);
    8484                       
    8585  virtual G4double ComputeCrossSectionPerElectron(
     
    131131protected:
    132132
    133   virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    134                                       G4double kinEnergy);
     133  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     134                              G4double kinEnergy);
    135135
    136136private:
    137137
    138   inline void SetParticle(const G4ParticleDefinition* p);
     138  void SetParticle(const G4ParticleDefinition* p);
    139139
    140140  G4bool HasMaterial(const G4Material* material);
     
    182182  G4bool   isInitialised;
    183183};
     184
     185//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     186
     187inline G4double G4BraggModel::MaxSecondaryEnergy(
     188                                            const G4ParticleDefinition* pd,
     189                                                  G4double kinEnergy)
     190{
     191  if(pd != particle) SetParticle(pd);
     192  G4double tau  = kinEnergy/mass;
     193  G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
     194                  (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
     195  return tmax;
     196}
    184197
    185198//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
  • trunk/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh

    r961 r991  
    2525//
    2626//
    27 // $Id: G4ComptonScattering.hh,v 1.21 2009/02/20 12:06:37 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4ComptonScattering.hh,v 1.20 2007/05/23 08:47:34 vnivanch Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//------------------ G4ComptonScattering physics process -----------------------
     
    8282
    8383  // true for Gamma only. 
    84   virtual G4bool IsApplicable(const G4ParticleDefinition&);
     84  G4bool IsApplicable(const G4ParticleDefinition&);
    8585 
    8686  // Print few lines of informations about the process: validity range,
    8787  virtual void PrintInfo();
     88
    8889
    8990protected:
     
    9697};
    9798
     99//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     100//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     101
     102inline
     103G4bool G4ComptonScattering::IsApplicable(const G4ParticleDefinition& p)
     104{
     105  return (&p == G4Gamma::Gamma());
     106}
     107
    98108//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    99109 
  • trunk/source/processes/electromagnetic/standard/include/G4ComptonScattering52.hh

    r961 r991  
    2626//
    2727// $Id: G4ComptonScattering52.hh,v 1.4 2007/05/16 14:00:56 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//------------------ G4ComptonScattering52 physics process -----------------------
  • trunk/source/processes/electromagnetic/standard/include/G4CoulombScattering.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4CoulombScattering.hh,v 1.12 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4CoulombScattering.hh,v 1.11 2008/06/13 08:19:43 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    104104//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    105105
     106inline G4bool G4CoulombScattering::IsApplicable(const G4ParticleDefinition& p)
     107{
     108  return (p.GetPDGCharge() != 0.0 && !p.IsShortLived());
     109}
     110
     111//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     112
    106113inline void G4CoulombScattering::SetThetaMin(G4double val)
    107114{
  • trunk/source/processes/electromagnetic/standard/include/G4CoulombScatteringModel.hh

    r961 r991  
    2525//
    2626// $Id: G4CoulombScatteringModel.hh,v 1.15 2008/07/31 13:11:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4GammaConversion.hh

    r961 r991  
    2525//
    2626//
    27 // $Id: G4GammaConversion.hh,v 1.23 2009/02/20 12:06:37 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4GammaConversion.hh,v 1.22 2007/05/23 08:47:34 vnivanch Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
     
    8585
    8686  // true for Gamma only.
    87   virtual G4bool IsApplicable(const G4ParticleDefinition&);
     87  G4bool IsApplicable(const G4ParticleDefinition&);
    8888
    8989  // Print few lines of informations about the process: validity range,
     
    9999};
    100100
     101//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     102//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     103
     104inline G4bool G4GammaConversion::IsApplicable(const G4ParticleDefinition& p)
     105{
     106  return (&p == G4Gamma::Gamma());
     107}
     108
    101109//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    102110 
  • trunk/source/processes/electromagnetic/standard/include/G4InitXscPAI.hh

    r961 r991  
    2626//
    2727// $Id: G4InitXscPAI.hh,v 1.8 2006/06/29 19:50:22 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/standard/include/G4IonFluctuations.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4IonFluctuations.hh,v 1.9 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4IonFluctuations.hh,v 1.8 2008/10/22 16:04:33 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8484
    8585  // Initialisation prestep
    86   void SetParticleAndCharge(const G4ParticleDefinition*, G4double q2);
     86  inline void SetParticleAndCharge(const G4ParticleDefinition*, G4double q2);
    8787
    8888private:
     
    117117//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    118118
     119inline
     120void G4IonFluctuations::SetParticleAndCharge(const G4ParticleDefinition* part,
     121                                             G4double q2)
     122{
     123  if(part != particle) {
     124    particle       = part;
     125    particleMass   = part->GetPDGMass();
     126    charge         = part->GetPDGCharge()/eplus;
     127    chargeSquare   = charge*charge;
     128  }
     129  effChargeSquare  = q2;
     130  uniFluct.SetParticleAndCharge(part, q2);
     131}
     132
     133//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     134
    119135#endif
    120136
  • trunk/source/processes/electromagnetic/standard/include/G4KleinNishinaCompton.hh

    r961 r991  
    2525//
    2626// $Id: G4KleinNishinaCompton.hh,v 1.9 2007/05/22 17:34:36 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4MollerBhabhaModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MollerBhabhaModel.hh,v 1.20 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MollerBhabhaModel.hh,v 1.19 2007/05/22 17:34:36 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7474  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7575
    76   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    77                                 const G4MaterialCutsCouple*);
     76  G4double MinEnergyCut(const G4ParticleDefinition*,
     77                        const G4MaterialCutsCouple*);
    7878                               
    7979  virtual G4double ComputeCrossSectionPerElectron(
     
    109109protected:
    110110
    111   virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    112                                       G4double kinEnergy);
     111  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     112                              G4double kinEnergy);
    113113                             
    114   inline void SetParticle(const G4ParticleDefinition* p);                             
     114  void SetParticle(const G4ParticleDefinition* p);                           
    115115
    116116  const G4ParticleDefinition* particle;
     
    127127  G4MollerBhabhaModel & operator=(const  G4MollerBhabhaModel &right);
    128128  G4MollerBhabhaModel(const  G4MollerBhabhaModel&);
    129 
    130   G4bool   isInitialised;
    131 
    132129};
    133130
    134131//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    135132
    136 inline void G4MollerBhabhaModel::SetParticle(const G4ParticleDefinition* p)
     133inline G4double G4MollerBhabhaModel::MaxSecondaryEnergy(
     134                                                   const G4ParticleDefinition*,
     135                                                         G4double kinEnergy)
    137136{
    138   particle = p;
    139   if(p != theElectron) isElectron = false;
     137  G4double tmax = kinEnergy;
     138  if(isElectron) tmax *= 0.5;
     139  return tmax;
    140140}
    141141
  • trunk/source/processes/electromagnetic/standard/include/G4MscModel71.hh

    r961 r991  
    2525//
    2626// $Id: G4MscModel71.hh,v 1.5 2007/05/22 17:34:36 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4MultipleScattering.hh

    r961 r991  
    2525//
    2626// $Id: G4MultipleScattering.hh,v 1.36 2008/03/10 10:39:21 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4MultipleScattering71.hh

    r961 r991  
    2525//
    2626// $Id: G4MultipleScattering71.hh,v 1.6 2008/07/16 11:27:41 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929//
     
    5959//
    6060// $Id: G4MultipleScattering71.hh,v 1.6 2008/07/16 11:27:41 vnivanch Exp $
    61 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     61// GEANT4 tag $Name: geant4-09-02 $
    6262
    6363// class description
  • trunk/source/processes/electromagnetic/standard/include/G4PAIModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PAIModel.hh,v 1.22 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
    2826//
    2927// -------------------------------------------------------------------
     
    7775  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7876
    79   virtual void InitialiseMe(const G4ParticleDefinition*);
    80 
    81   virtual G4double ComputeDEDXPerVolume(const G4Material*,
     77  virtual void InitialiseMe(const G4ParticleDefinition*) {};
     78
     79  virtual G4double ComputeDEDX(const G4MaterialCutsCouple*,
    8280                               const G4ParticleDefinition*,
    8381                               G4double kineticEnergy,
    8482                               G4double cutEnergy);
    8583
    86   virtual G4double CrossSectionPerVolume(const G4Material*,
     84  virtual G4double CrossSection(const G4MaterialCutsCouple*,
    8785                                const G4ParticleDefinition*,
    8886                                G4double kineticEnergy,
     
    120118
    121119  void SetVerboseLevel(G4int verbose){fVerbose=verbose;};
     120
     121
    122122
    123123protected:
     
    192192};
    193193
     194/////////////////////////////////////////////////////////////////////
     195
     196inline G4double G4PAIModel::MaxSecondaryEnergy( const G4ParticleDefinition* p,
     197                                                      G4double kinEnergy)
     198{
     199  G4double tmax = kinEnergy;
     200  if(p == fElectron) tmax *= 0.5;
     201  else if(p != fPositron) {
     202    G4double mass = p->GetPDGMass();
     203    G4double ratio= electron_mass_c2/mass;
     204    G4double gamma= kinEnergy/mass + 1.0;
     205    tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) /
     206                  (1. + 2.0*gamma*ratio + ratio*ratio);
     207  }
     208  return tmax;
     209}
     210
     211///////////////////////////////////////////////////////////////
     212
     213inline  void G4PAIModel::DefineForRegion(const G4Region* r)
     214{
     215  fPAIRegionVector.push_back(r);
     216}
     217
    194218#endif
    195219
  • trunk/source/processes/electromagnetic/standard/include/G4PAIPhotonModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PAIPhotonModel.hh,v 1.12 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
    2826//
    2927// -------------------------------------------------------------------
     
    7674  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7775 
    78   virtual void InitialiseMe(const G4ParticleDefinition*);
    79 
    80   virtual G4double ComputeDEDXPerVolume(const G4Material*,
    81                                         const G4ParticleDefinition*,
    82                                         G4double kineticEnergy,
    83                                         G4double cutEnergy);
    84 
    85   virtual G4double CrossSectionPerVolume(const G4Material*,
    86                                          const G4ParticleDefinition*,
    87                                          G4double kineticEnergy,
    88                                          G4double cutEnergy,
    89                                          G4double maxEnergy);
     76  virtual void InitialiseMe(const G4ParticleDefinition*) {};
     77
     78  virtual G4double ComputeDEDX(const G4MaterialCutsCouple*,
     79                               const G4ParticleDefinition*,
     80                               G4double kineticEnergy,
     81                               G4double cutEnergy);
     82
     83  virtual G4double CrossSection(const G4MaterialCutsCouple*,
     84                                const G4ParticleDefinition*,
     85                                G4double kineticEnergy,
     86                                G4double cutEnergy,
     87                                G4double maxEnergy);
    9088
    9189  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     
    124122                             G4double position, G4int iTransfer );
    125123
     124
     125
    126126protected:
    127127
    128128  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    129                               G4double kinEnergy);
     129                                    G4double kinEnergy);
    130130
    131131private:
     
    145145  G4int                fVerbose;
    146146  G4PhysicsLogVector*  fProtonEnergyVector ;
     147
     148
    147149
    148150  // vectors
     
    202204};
    203205
     206/////////////////////////////////////////////////////////////////////
     207
     208inline G4double G4PAIPhotonModel::MaxSecondaryEnergy( const G4ParticleDefinition* p,
     209                                                      G4double kinEnergy)
     210{
     211  G4double tmax = kinEnergy;
     212  if(p == fElectron) tmax *= 0.5;
     213  else if(p != fPositron) {
     214    G4double mass = p->GetPDGMass();
     215    G4double ratio= electron_mass_c2/mass;
     216    G4double gamma= kinEnergy/mass + 1.0;
     217    tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) /
     218                  (1. + 2.0*gamma*ratio + ratio*ratio);
     219  }
     220  return tmax;
     221}
     222
     223///////////////////////////////////////////////////////////////
     224
     225inline  void G4PAIPhotonModel::DefineForRegion(const G4Region* r)
     226{
     227  fPAIRegionVector.push_back(r);
     228}
     229
    204230#endif
    205231
  • trunk/source/processes/electromagnetic/standard/include/G4PAIxSection.hh

    r961 r991  
    2626//
    2727// $Id: G4PAIxSection.hh,v 1.15 2008/05/30 16:04:40 grichine Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/standard/include/G4PAIySection.hh

    r961 r991  
    2626//
    2727// $Id: G4PAIySection.hh,v 1.1 2007/10/01 17:45:14 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/standard/include/G4PEEffectModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PEEffectModel.hh,v 1.7 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4PEEffectModel.hh,v 1.6 2007/05/22 17:34:36 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    4141//
    4242// 06.02.2006 : added ComputeMeanFreePath()  (mma)
    43 // 20.02.2009 : move virtual inline to .cc, substitute
    44 //              ComputeMeanFreePath() by CrossSectionPerVolume (VI)
    4543//
    4644// Class Description:
     
    7270  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7371
    74   virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
    75                                               G4double kinEnergy,
    76                                               G4double Z,
    77                                               G4double A,
    78                                               G4double, G4double);
     72  G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
     73                                      G4double kinEnergy,
     74                                      G4double Z,
     75                                      G4double A,
     76                                      G4double, G4double);
    7977                                     
    80   virtual G4double CrossSectionPerVolume(const G4Material*,
    81                                          const G4ParticleDefinition*,
    82                                          G4double kineticEnergy,
    83                                          G4double cutEnergy,
    84                                          G4double maxEnergy);
     78  G4double ComputeMeanFreePath( const G4ParticleDefinition*,
     79                                      G4double kinEnergy,
     80                                const G4Material* material,     
     81                                      G4double, G4double);
    8582
    8683  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     
    103100};
    104101
     102//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
     103
     104inline G4double G4PEEffectModel::ComputeCrossSectionPerAtom(
     105                                       const G4ParticleDefinition*,
     106                                             G4double energy,
     107                                             G4double Z, G4double,
     108                                             G4double, G4double)
     109{
     110 G4double* SandiaCof = G4SandiaTable::GetSandiaCofPerAtom((G4int)Z, energy);
     111
     112 G4double energy2 = energy*energy, energy3 = energy*energy2,
     113          energy4 = energy2*energy2;
     114
     115 return SandiaCof[0]/energy  + SandiaCof[1]/energy2 +
     116        SandiaCof[2]/energy3 + SandiaCof[3]/energy4;
     117}
     118
     119//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     120
     121inline G4double G4PEEffectModel::ComputeMeanFreePath(
     122                                       const G4ParticleDefinition*,
     123                                             G4double energy,
     124                                       const G4Material* material,
     125                                             G4double, G4double)
     126{
     127 G4double* SandiaCof = material->GetSandiaTable()
     128                                ->GetSandiaCofForMaterial(energy);
     129                               
     130 G4double energy2 = energy*energy, energy3 = energy*energy2,
     131          energy4 = energy2*energy2;
     132         
     133 G4double cross = SandiaCof[0]/energy  + SandiaCof[1]/energy2 +
     134                  SandiaCof[2]/energy3 + SandiaCof[3]/energy4;
     135 
     136 G4double mfp = DBL_MAX;
     137 if (cross > 0.) mfp = 1./cross;
     138 return mfp;
     139}
     140
    105141//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    106142
  • trunk/source/processes/electromagnetic/standard/include/G4PSTARStopping.hh

    r961 r991  
    2525//
    2626// $Id: G4PSTARStopping.hh,v 1.5 2008/11/13 12:04:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4PSTARStopping_h
  • trunk/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh

    r961 r991  
    2525//
    2626//
    27 // $Id: G4PhotoElectricEffect.hh,v 1.25 2009/02/20 12:06:37 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4PhotoElectricEffect.hh,v 1.24 2007/05/23 08:47:34 vnivanch Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
     
    9191
    9292  // true for Gamma only.
    93   virtual G4bool IsApplicable(const G4ParticleDefinition&);
     93  G4bool IsApplicable(const G4ParticleDefinition&);
    9494
    9595  // Print few lines of informations about the process: validity range,
    96   virtual void PrintInfo();
     96  void PrintInfo();
    9797
    9898protected:
    9999
    100   virtual void InitialiseProcess(const G4ParticleDefinition*);
     100  void InitialiseProcess(const G4ParticleDefinition*);
    101101
    102102private:
     
    105105};
    106106
     107//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     108//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     109
     110inline
     111G4bool G4PhotoElectricEffect::IsApplicable(const G4ParticleDefinition& p)
     112{
     113  return (&p == G4Gamma::Gamma());
     114}
     115
    107116//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    108117
  • trunk/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh

    r961 r991  
    2626//
    2727// $Id: G4PolarizedComptonScattering.hh,v 1.9 2006/06/29 19:51:14 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// --------- G4PolarizedComptonScattering physics process ----------------------
  • trunk/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4UniversalFluctuation.hh,v 1.8 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4UniversalFluctuation.hh,v 1.6 2008/10/22 16:04:33 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7070  virtual ~G4UniversalFluctuation();
    7171
    72   virtual G4double SampleFluctuations(const G4Material*,
    73                                       const G4DynamicParticle*,
    74                                       G4double&,
    75                                       G4double&,
    76                                       G4double&);
     72  G4double SampleFluctuations(const G4Material*,
     73                          const G4DynamicParticle*,
     74                                G4double&,
     75                                G4double&,
     76                                G4double&);
    7777
    78   virtual G4double Dispersion(    const G4Material*,
    79                                   const G4DynamicParticle*,
    80                                   G4double&,
    81                                   G4double&);
     78  G4double Dispersion(    const G4Material*,
     79                          const G4DynamicParticle*,
     80                                G4double&,
     81                                G4double&);
    8282
    83   // Initialisation before the run
    84   virtual void InitialiseMe(const G4ParticleDefinition*);
     83  void InitialiseMe(const G4ParticleDefinition*);
    8584
    8685  // Initialisation prestep
    87   virtual void SetParticleAndCharge(const G4ParticleDefinition*, G4double q2);
     86  inline void SetParticleAndCharge(const G4ParticleDefinition*, G4double q2);
     87
     88protected:
    8889
    8990private:
     
    125126};
    126127
     128//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     129
     130inline void
     131G4UniversalFluctuation::SetParticleAndCharge(const G4ParticleDefinition* part,
     132                                             G4double q2)
     133{
     134  if(part != particle) {
     135    particle       = part;
     136    particleMass   = part->GetPDGMass();
     137  }
     138  chargeSquare = q2;
     139}
     140
    127141//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    128142
  • trunk/source/processes/electromagnetic/standard/include/G4UrbanMscModel.hh

    r961 r991  
    2525//
    2626// $Id: G4UrbanMscModel.hh,v 1.33 2008/03/10 10:39:21 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4UrbanMscModel2.hh

    r966 r991  
    2525//
    2626// $Id: G4UrbanMscModel2.hh,v 1.11 2008/12/18 13:01:34 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4UrbanMscModel90.hh

    r961 r991  
    2525//
    2626// $Id: G4UrbanMscModel90.hh,v 1.4 2008/10/29 14:15:30 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4WaterStopping.hh

    r961 r991  
    2525//
    2626// $Id: G4WaterStopping.hh,v 1.6 2008/09/09 09:30:58 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929#ifndef G4WaterStopping_h
  • trunk/source/processes/electromagnetic/standard/include/G4WentzelVIModel.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4WentzelVIModel.hh,v 1.8 2009/02/19 19:17:15 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4WentzelVIModel.hh,v 1.7 2008/08/04 08:49:09 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6666class G4LossTableManager;
    6767class G4ParticleChangeForMSC;
    68 //class G4SafetyHelper;
     68class G4SafetyHelper;
    6969class G4ParticleDefinition;
    7070
     
    133133  G4ParticleChangeForMSC*   fParticleChange;
    134134
    135   //  G4SafetyHelper*           safetyHelper;
     135  G4SafetyHelper*           safetyHelper;
    136136  G4PhysicsTable*           theLambdaTable;
    137137  G4PhysicsTable*           theLambda2Table;
  • trunk/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eBremsstrahlung.hh,v 1.37 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eBremsstrahlung.hh,v 1.36 2007/05/23 08:47:34 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8989  virtual ~G4eBremsstrahlung();
    9090
    91   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     91  G4bool IsApplicable(const G4ParticleDefinition& p);
    9292
    9393  // Print out of the class parameters
     
    111111
    112112//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     113//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     114
     115inline G4bool G4eBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)
     116{
     117  return (&p == G4Electron::Electron() || &p == G4Positron::Positron());
     118}
     119
     120//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    113121
    114122#endif
  • trunk/source/processes/electromagnetic/standard/include/G4eBremsstrahlungModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eBremsstrahlungModel.hh,v 1.26 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eBremsstrahlungModel.hh,v 1.25 2008/11/13 19:28:58 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7575  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7676
    77   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    78                                 const G4MaterialCutsCouple*);
     77  G4double MinEnergyCut(const G4ParticleDefinition*,
     78                        const G4MaterialCutsCouple*);
    7979
    8080  virtual G4double ComputeDEDXPerVolume(const G4Material*,
     
    103103protected:
    104104
     105  inline G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     106                                     G4double kineticEnergy);
     107
    105108  const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple);
    106109
     
    188191//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    189192
     193inline
     194G4double G4eBremsstrahlungModel::MaxSecondaryEnergy(
     195                                 const G4ParticleDefinition*,
     196                                       G4double kineticEnergy)
     197{
     198  return kineticEnergy;
     199}
     200
     201//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     202
    190203#endif
  • trunk/source/processes/electromagnetic/standard/include/G4eBremsstrahlungRelModel.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eBremsstrahlungRelModel.hh,v 1.11 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eBremsstrahlungRelModel.hh,v 1.10 2008/11/14 09:25:19 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7171  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7272
    73   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
    74                                 const G4MaterialCutsCouple*);
     73  G4double MinEnergyCut(const G4ParticleDefinition*,
     74                        const G4MaterialCutsCouple*);
    7575
    7676  virtual G4double ComputeDEDXPerVolume(const G4Material*,
     
    9797  inline G4double LPMconstant() const;
    9898
     99protected:
     100
     101  inline G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     102                                     G4double kineticEnergy);
     103
    99104private:
    100105
     
    202207//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    203208
     209inline G4double
     210G4eBremsstrahlungRelModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
     211                                              G4double kineticEnergy)
     212{
     213  return kineticEnergy;
     214}
     215
     216//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     217
    204218
    205219inline G4double G4eBremsstrahlungRelModel::Phi1(G4double gg, G4double)
  • trunk/source/processes/electromagnetic/standard/include/G4eCoulombScatteringModel.hh

    r961 r991  
    2525//
    2626// $Id: G4eCoulombScatteringModel.hh,v 1.36 2008/08/04 08:49:09 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4eIonisation.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eIonisation.hh,v 1.36 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eIonisation.hh,v 1.35 2007/05/23 08:47:34 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8888  virtual ~G4eIonisation();
    8989
    90   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     90  G4bool IsApplicable(const G4ParticleDefinition& p);
    9191
    9292  // Print out of the class parameters
     
    9898                                           const G4ParticleDefinition*);
    9999
    100   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*,
    101                                     const G4Material*, G4double cut);
     100  G4double MinPrimaryEnergy(const G4ParticleDefinition*,
     101                            const G4Material*, G4double cut);
    102102
    103103private:
     
    114114};
    115115
     116//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     117//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     118
     119inline G4double G4eIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
     120                                                const G4Material*,
     121                                                G4double cut)
     122{
     123  G4double x = cut;
     124  if(isElectron) x += cut;
     125  return x;
     126}
     127
     128//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     129
     130inline G4bool G4eIonisation::IsApplicable(const G4ParticleDefinition& p)
     131{
     132  return (&p == G4Electron::Electron() || &p == G4Positron::Positron());
     133}
     134
    116135//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    117136
  • trunk/source/processes/electromagnetic/standard/include/G4eMultipleScattering.hh

    r966 r991  
    2525//
    2626// $Id: G4eMultipleScattering.hh,v 1.2 2008/03/11 12:03:43 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4eeToTwoGammaModel.hh

    r961 r991  
    2525//
    2626// $Id: G4eeToTwoGammaModel.hh,v 1.14 2007/05/23 08:47:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eplusAnnihilation.hh,v 1.24 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eplusAnnihilation.hh,v 1.23 2007/05/23 08:47:34 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7373  virtual ~G4eplusAnnihilation();
    7474
    75   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     75  G4bool IsApplicable(const G4ParticleDefinition& p);
    7676
    7777  virtual G4VParticleChange* AtRestDoIt(
     
    7979                             const G4Step& stepData);
    8080
    81   virtual G4double AtRestGetPhysicalInteractionLength(
     81  G4double AtRestGetPhysicalInteractionLength(
    8282                             const G4Track& track,
    8383                             G4ForceCondition* condition
     
    9696};
    9797
     98//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     99//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     100
     101inline G4bool G4eplusAnnihilation::IsApplicable(const G4ParticleDefinition& p)
     102{
     103  return (&p == G4Positron::Positron());
     104}
     105
     106//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     107
     108inline
     109G4double G4eplusAnnihilation::AtRestGetPhysicalInteractionLength(
     110                              const G4Track&, G4ForceCondition* condition)
     111{
     112  *condition = NotForced;
     113  return 0.0;
     114}
     115
    98116//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    99117
  • trunk/source/processes/electromagnetic/standard/include/G4hIonisation.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hIonisation.hh,v 1.42 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4hIonisation.hh,v 1.41 2008/09/14 17:11:48 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    9393  virtual ~G4hIonisation();
    9494
    95   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     95  G4bool IsApplicable(const G4ParticleDefinition& p);
    9696
    97   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    98                                     const G4Material*, G4double cut);
     97  G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     98                            const G4Material*, G4double cut);
    9999
    100100  // Print out of the class parameters
     
    123123
    124124//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     125//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     126
     127inline G4bool G4hIonisation::IsApplicable(const G4ParticleDefinition& p)
     128{
     129  return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV &&
     130         !p.IsShortLived());
     131}
     132
     133//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     134
     135inline G4double G4hIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
     136                                                const G4Material*,
     137                                                G4double cut)
     138{
     139  G4double x = 0.5*cut/electron_mass_c2;
     140  G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));
     141  return mass*(g - 1.0);
     142}
     143
     144//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    125145
    126146inline void G4hIonisation::ActivateNuclearStopping(G4bool val)
  • trunk/source/processes/electromagnetic/standard/include/G4hMultipleScattering.hh

    r961 r991  
    2525//
    2626// $Id: G4hMultipleScattering.hh,v 1.6 2008/05/09 08:23:44 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4ionGasIonisation.hh

    r961 r991  
    2525//
    2626// $Id: G4ionGasIonisation.hh,v 1.4 2008/09/12 16:26:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/include/G4ionIonisation.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4ionIonisation.hh,v 1.57 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4ionIonisation.hh,v 1.56 2008/09/14 17:11:48 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    8585  virtual ~G4ionIonisation();
    8686
    87   virtual G4bool IsApplicable(const G4ParticleDefinition& p);
     87  inline G4bool IsApplicable(const G4ParticleDefinition& p);
    8888
    8989  // Print out of the class parameters
     
    102102                                           const G4ParticleDefinition*);
    103103
    104   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     104  inline G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    105105                                   const G4Material*, G4double cut);
    106106
     
    127127
    128128//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     129//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     130
     131inline G4bool G4ionIonisation::IsApplicable(const G4ParticleDefinition& p)
     132{
     133  return (p.GetPDGCharge() != 0.0 && !p.IsShortLived() &&
     134          p.GetParticleType() == "nucleus");
     135}
     136
     137//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     138
     139inline G4double G4ionIonisation::MinPrimaryEnergy(
     140          const G4ParticleDefinition* p, const G4Material*, G4double cut)
     141{
     142  return
     143    p->GetPDGMass()*(std::sqrt(1. + 0.5*cut/CLHEP::electron_mass_c2) - 1.0);
     144}
     145
    129146//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    130147
  • trunk/source/processes/electromagnetic/standard/src/G4ASTARStopping.cc

    r961 r991  
    2525//
    2626// $Id: G4ASTARStopping.cc,v 1.8 2008/11/24 18:28:09 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929//---------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4BetheBlochModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BetheBlochModel.cc,v 1.25 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BetheBlochModel.cc,v 1.24 2008/10/22 16:00:57 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    111111
    112112  corrFactor = chargeSquare;
    113   // always false before the run
    114   SetDeexcitationFlag(false);
    115113
    116114  if(!isInitialised) {
     
    455453}
    456454
    457 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    458 
    459 G4double G4BetheBlochModel::MaxSecondaryEnergy(const G4ParticleDefinition* pd,
    460                                                G4double kinEnergy)
    461 {
    462   if(isIon) SetParticle(pd);
    463   G4double tau  = kinEnergy/mass;
    464   G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
    465                   (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
    466   return std::min(tmax,tlimit);
    467 }
    468 
    469 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     455//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
  • trunk/source/processes/electromagnetic/standard/src/G4BetheHeitlerModel.cc

    r961 r991  
    2525//
    2626// $Id: G4BetheHeitlerModel.cc,v 1.12 2008/10/15 15:54:57 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4BohrFluctuations.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BohrFluctuations.cc,v 1.7 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BohrFluctuations.cc,v 1.6 2007/09/27 14:02:41 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    137137//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    138138
    139 G4double G4BohrFluctuations::Dispersion(const G4Material* material,
    140                                         const G4DynamicParticle* dp,
    141                                         G4double& tmax,
    142                                         G4double& length)
    143 {
    144   if(!particle) InitialiseMe(dp->GetDefinition());
    145139
    146   G4double electronDensity = material->GetElectronDensity();
    147   kineticEnergy = dp->GetKineticEnergy();
    148   G4double etot = kineticEnergy + particleMass;
    149   beta2 = kineticEnergy*(kineticEnergy + 2.0*particleMass)/(etot*etot);
    150   G4double siga  = (1.0/beta2 - 0.5) * twopi_mc2_rcl2 * tmax * length
    151                  * electronDensity * chargeSquare;
    152 
    153   return siga;
    154 }
    155 
    156 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    157 
    158 
  • trunk/source/processes/electromagnetic/standard/src/G4BraggIonModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BraggIonModel.cc,v 1.23 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BraggIonModel.cc,v 1.22 2008/10/22 16:00:57 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    113113
    114114  corrFactor = chargeSquare;
    115 
    116   // always false before the run
    117   SetDeexcitationFlag(false);
    118115
    119116  if(!isInitialised) {
     
    355352  fParticleChange->SetProposedKineticEnergy(kineticEnergy);
    356353  fParticleChange->SetProposedMomentumDirection(finalP);
    357 }
    358 
    359 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    360 
    361 G4double G4BraggIonModel::MaxSecondaryEnergy(const G4ParticleDefinition* pd,
    362                                              G4double kinEnergy)
    363 {
    364   if(pd != particle) SetParticle(pd);
    365   G4double tau  = kinEnergy/mass;
    366   G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
    367                   (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
    368   return tmax;
    369354}
    370355
  • trunk/source/processes/electromagnetic/standard/src/G4BraggModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4BraggModel.cc,v 1.21 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4BraggModel.cc,v 1.20 2008/10/22 16:01:46 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    111111{
    112112  if(p != particle) SetParticle(p);
    113 
    114   // always false before the run
    115   SetDeexcitationFlag(false);
    116113
    117114  if(!isInitialised) {
     
    340337
    341338  vdp->push_back(delta);
    342 }
    343 
    344 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    345 
    346 G4double G4BraggModel::MaxSecondaryEnergy(const G4ParticleDefinition* pd,
    347                                           G4double kinEnergy)
    348 {
    349   if(pd != particle) SetParticle(pd);
    350   G4double tau  = kinEnergy/mass;
    351   G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
    352                   (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
    353   return tmax;
    354339}
    355340
  • trunk/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4ComptonScattering.cc,v 1.31 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4ComptonScattering.cc,v 1.30 2008/10/15 17:53:44 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929//
     
    8484//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    8585
    86 G4bool G4ComptonScattering::IsApplicable(const G4ParticleDefinition& p)
    87 {
    88   return (&p == G4Gamma::Gamma());
    89 }
    90 
    91 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    92 
    9386void G4ComptonScattering::InitialiseProcess(const G4ParticleDefinition*)
    9487{
  • trunk/source/processes/electromagnetic/standard/src/G4ComptonScattering52.cc

    r961 r991  
    2525//
    2626// $Id: G4ComptonScattering52.cc,v 1.7 2008/10/15 17:53:44 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929//
  • trunk/source/processes/electromagnetic/standard/src/G4CoulombScattering.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4CoulombScattering.cc,v 1.20 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4CoulombScattering.cc,v 1.19 2008/10/15 17:53:44 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7979G4CoulombScattering::~G4CoulombScattering()
    8080{}
    81 
    82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    83 
    84 G4bool G4CoulombScattering::IsApplicable(const G4ParticleDefinition& p)
    85 {
    86   return (p.GetPDGCharge() != 0.0 && !p.IsShortLived());
    87 }
    8881
    8982//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
  • trunk/source/processes/electromagnetic/standard/src/G4CoulombScatteringModel.cc

    r961 r991  
    2525//
    2626// $Id: G4CoulombScatteringModel.cc,v 1.37 2008/07/31 13:11:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4GammaConversion.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4GammaConversion.cc,v 1.31 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4GammaConversion.cc,v 1.30 2008/10/15 17:53:44 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929//
     
    9090//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    9191
    92 G4bool G4GammaConversion::IsApplicable(const G4ParticleDefinition& p)
    93 {
    94   return (&p == G4Gamma::Gamma());
    95 }
    96 
    97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    98 
    9992void G4GammaConversion::InitialiseProcess(const G4ParticleDefinition*)
    10093{
  • trunk/source/processes/electromagnetic/standard/src/G4InitXscPAI.cc

    r961 r991  
    2626//
    2727// $Id: G4InitXscPAI.cc,v 1.9 2006/06/29 19:53:00 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/standard/src/G4IonFluctuations.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4IonFluctuations.cc,v 1.25 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4IonFluctuations.cc,v 1.24 2008/10/22 16:25:21 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    420420
    421421//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    422 
    423 void G4IonFluctuations::SetParticleAndCharge(const G4ParticleDefinition* part,
    424                                              G4double q2)
    425 {
    426   if(part != particle) {
    427     particle       = part;
    428     particleMass   = part->GetPDGMass();
    429     charge         = part->GetPDGCharge()/eplus;
    430     chargeSquare   = charge*charge;
    431   }
    432   effChargeSquare  = q2;
    433   uniFluct.SetParticleAndCharge(part, q2);
    434 }
    435 
    436 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
  • trunk/source/processes/electromagnetic/standard/src/G4KleinNishinaCompton.cc

    r961 r991  
    2525//
    2626// $Id: G4KleinNishinaCompton.cc,v 1.9 2007/05/22 17:34:36 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4MollerBhabhaModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MollerBhabhaModel.cc,v 1.31 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4MollerBhabhaModel.cc,v 1.30 2007/05/22 17:34:36 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7474                                         const G4String& nam)
    7575  : G4VEmModel(nam),
    76     particle(0),
    77     isElectron(true),
    78     twoln10(2.0*log(10.0)),
    79     lowLimit(0.2*keV),
    80     isInitialised(false)
     76  particle(0),
     77  isElectron(true),
     78  twoln10(2.0*log(10.0)),
     79  lowLimit(0.2*keV)
    8180{
    8281  theElectron = G4Electron::Electron();
     
    8887G4MollerBhabhaModel::~G4MollerBhabhaModel()
    8988{}
     89
     90//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     91
     92void G4MollerBhabhaModel::SetParticle(const G4ParticleDefinition* p)
     93{
     94  particle = p;
     95  if(p != theElectron) isElectron = false;
     96}
    9097
    9198//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     
    101108//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    102109
    103 G4double G4MollerBhabhaModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
    104                                                  G4double kinEnergy)
    105 {
    106   G4double tmax = kinEnergy;
    107   if(isElectron) tmax *= 0.5;
    108   return tmax;
    109 }
    110 
    111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    112 
    113110void G4MollerBhabhaModel::Initialise(const G4ParticleDefinition* p,
    114111                                     const G4DataVector&)
    115112{
    116113  if(!particle) SetParticle(p);
    117   SetDeexcitationFlag(false);
    118 
    119   if(isInitialised) return;
    120 
    121   isInitialised = true;
    122   if(pParticleChange) {
     114  if(pParticleChange)
    123115    fParticleChange = reinterpret_cast<G4ParticleChangeForLoss*>
    124116                                                     (pParticleChange);
    125   } else {
     117  else
    126118    fParticleChange = new G4ParticleChangeForLoss();
    127   }
    128119}
    129120
  • trunk/source/processes/electromagnetic/standard/src/G4MscModel71.cc

    r961 r991  
    2525//
    2626// $Id: G4MscModel71.cc,v 1.6 2008/03/13 17:20:07 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4MultipleScattering.cc

    r961 r991  
    2525//
    2626// $Id: G4MultipleScattering.cc,v 1.75 2008/10/15 17:53:44 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4MultipleScattering71.cc

    r961 r991  
    2525//
    2626// $Id: G4MultipleScattering71.cc,v 1.5 2008/07/16 11:27:41 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4PAIModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PAIModel.cc,v 1.46 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
    28 //
    29 // -------------------------------------------------------------------
    30 //
    31 // GEANT4 Class
    3226// File name:     G4PAIModel.cc
    3327//
     
    183177      fCutCouple = theCoupleTable->GetMaterialCutsCouple( fMaterial,
    184178                                          curReg->GetProductionCuts() );
    185       //G4cout << "Reg <" <<curReg->GetName() << ">  mat <"
    186       //             << fMaterial->GetName() << ">  fCouple= "
    187       //             << fCutCouple<<G4endl;
    188179      if( fCutCouple ) {
    189180        fMaterialCutsCoupleVector.push_back(fCutCouple);
     
    206197  }
    207198}
    208 
    209 //////////////////////////////////////////////////////////////////
    210 
    211 void G4PAIModel::InitialiseMe(const G4ParticleDefinition*)
    212 {}
    213199
    214200//////////////////////////////////////////////////////////////////
     
    407393  {
    408394    //  if ( x1 == x2  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    409     //    if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    410     if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*0.5 ;
     395    if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    411396    else             dNdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ;     
    412397  }
     
    450435  {
    451436    //  if ( x1 == x2  ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    452     //    if ( std::abs(x1-x2) <= eV  ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    453     if ( std::abs(x1-x2) <= eV  ) dEdxCut = y1 + (y2 - y1)*0.5 ;
     437    if ( std::abs(x1-x2) <= eV  ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    454438    else             dEdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ;     
    455439  }
     
    460444//////////////////////////////////////////////////////////////////////////////
    461445
    462 G4double G4PAIModel::ComputeDEDXPerVolume(const G4Material*,
    463                                           const G4ParticleDefinition* p,
    464                                           G4double kineticEnergy,
    465                                           G4double cutEnergy)
     446G4double G4PAIModel::ComputeDEDX(const G4MaterialCutsCouple* matCC,
     447                                 const G4ParticleDefinition* p,
     448                                       G4double kineticEnergy,
     449                                       G4double cutEnergy)
    466450{
    467451  G4int iTkin,iPlace;
    468452  size_t jMat;
    469  
    470   //G4double cut = std::min(MaxSecondaryEnergy(p, kineticEnergy), cutEnergy);
    471   G4double cut = cutEnergy;
    472 
    473453  G4double massRatio  = fMass/p->GetPDGMass();
    474454  G4double scaledTkin = kineticEnergy*massRatio;
    475455  G4double charge     = p->GetPDGCharge();
    476   G4double charge2    = charge*charge;
    477   const G4MaterialCutsCouple* matCC = CurrentCouple();
     456  G4double charge2    = charge*charge, dEdx;
    478457
    479458  for( jMat = 0 ;jMat < fMaterialCutsCoupleVector.size() ; ++jMat )
     
    491470  iPlace = iTkin - 1;
    492471  if(iPlace < 0) iPlace = 0;
    493   G4double dEdx = charge2*( (*fdEdxVector)(iPlace) - GetdEdxCut(iPlace,cut) );
     472  dEdx = charge2*( (*fdEdxVector)(iPlace) - GetdEdxCut(iPlace,cutEnergy) ) ; 
     473
    494474  if( dEdx < 0.) dEdx = 0.;
    495475  return dEdx;
     
    498478/////////////////////////////////////////////////////////////////////////
    499479
    500 G4double G4PAIModel::CrossSectionPerVolume( const G4Material*,
    501                                             const G4ParticleDefinition* p,
    502                                             G4double kineticEnergy,
    503                                             G4double cutEnergy,
    504                                             G4double maxEnergy  )
     480G4double G4PAIModel::CrossSection( const G4MaterialCutsCouple* matCC,
     481                                   const G4ParticleDefinition* p,
     482                                         G4double kineticEnergy,
     483                                         G4double cutEnergy,
     484                                         G4double maxEnergy  )
    505485{
    506486  G4int iTkin,iPlace;
    507487  size_t jMat;
    508   G4double tmax = std::min(MaxSecondaryEnergy(p, kineticEnergy), maxEnergy);
    509   if(tmax <= cutEnergy) return 0.0;
     488  G4double tmax = min(MaxSecondaryEnergy(p, kineticEnergy), maxEnergy);
    510489  G4double massRatio  = fMass/p->GetPDGMass();
    511490  G4double scaledTkin = kineticEnergy*massRatio;
    512491  G4double charge     = p->GetPDGCharge();
    513492  G4double charge2    = charge*charge, cross, cross1, cross2;
    514   const G4MaterialCutsCouple* matCC = CurrentCouple();
    515493
    516494  for( jMat = 0 ;jMat < fMaterialCutsCoupleVector.size() ; ++jMat )
     
    957935}
    958936
    959 /////////////////////////////////////////////////////////////////////
    960 
    961 G4double G4PAIModel::MaxSecondaryEnergy( const G4ParticleDefinition* p,
    962                                          G4double kinEnergy)
    963 {
    964   G4double tmax = kinEnergy;
    965   if(p == fElectron) tmax *= 0.5;
    966   else if(p != fPositron) {
    967     G4double mass = p->GetPDGMass();
    968     G4double ratio= electron_mass_c2/mass;
    969     G4double gamma= kinEnergy/mass + 1.0;
    970     tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) /
    971                   (1. + 2.0*gamma*ratio + ratio*ratio);
    972   }
    973   return tmax;
    974 }
    975 
    976 ///////////////////////////////////////////////////////////////
    977 
    978 void G4PAIModel::DefineForRegion(const G4Region* r)
    979 {
    980   fPAIRegionVector.push_back(r);
    981 }
    982937
    983938//
  • trunk/source/processes/electromagnetic/standard/src/G4PAIPhotonModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PAIPhotonModel.cc,v 1.21 2009/02/19 19:17:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
    28 //
    29 // -------------------------------------------------------------------
    30 //
    31 // GEANT4 Class
    3226// File name:     G4PAIPhotonModel.cc
    3327//
     
    223217//////////////////////////////////////////////////////////////////
    224218
    225 void G4PAIPhotonModel::InitialiseMe(const G4ParticleDefinition*)
    226 {}
    227 
    228 //////////////////////////////////////////////////////////////////
    229 
    230219void G4PAIPhotonModel::ComputeSandiaPhotoAbsCof()
    231220{
     
    498487  {
    499488    //  if ( x1 == x2  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    500     //    if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    501     if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*0.5 ;
     489    if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    502490    else             dNdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ;     
    503491  }
     
    542530  {
    543531    //  if ( x1 == x2  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    544     //    if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    545     if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*0.5 ;
     532    if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    546533    else             dNdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ;     
    547534  }
     
    587574  {
    588575    //  if ( x1 == x2  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    589     //    if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    590     if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*0.5 ;
     576    if ( std::abs(x1-x2) <= eV  ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    591577    else             dNdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ;     
    592578  }
     
    631617  {
    632618    //  if ( x1 == x2  ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    633     //    if ( std::abs(x1-x2) <= eV  ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    634     if ( std::abs(x1-x2) <= eV  ) dEdxCut = y1 + (y2 - y1)*0.5 ;
     619    if ( std::abs(x1-x2) <= eV  ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ;
    635620    else             dEdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ;     
    636621  }
     
    641626//////////////////////////////////////////////////////////////////////////////
    642627
    643 G4double G4PAIPhotonModel::ComputeDEDXPerVolume(const G4Material*,
    644                                                 const G4ParticleDefinition* p,
    645                                                 G4double kineticEnergy,
    646                                                 G4double cutEnergy)
     628G4double G4PAIPhotonModel::ComputeDEDX(const G4MaterialCutsCouple* matCC,
     629                                 const G4ParticleDefinition* p,
     630                                       G4double kineticEnergy,
     631                                       G4double cutEnergy)
    647632{
    648633  G4int iTkin,iPlace;
    649634  size_t jMat;
    650 
    651   //G4double cut = std::min(MaxSecondaryEnergy(p, kineticEnergy), cutEnergy);
    652   G4double cut = cutEnergy;
    653 
    654635  G4double particleMass = p->GetPDGMass();
    655636  G4double scaledTkin   = kineticEnergy*proton_mass_c2/particleMass;
     
    657638  G4double charge2      = charge*charge;
    658639  G4double dEdx         = 0.;
    659   const G4MaterialCutsCouple* matCC = CurrentCouple();
    660640
    661641  for( jMat = 0 ;jMat < fMaterialCutsCoupleVector.size() ; ++jMat )
     
    673653  iPlace = iTkin - 1;
    674654  if(iPlace < 0) iPlace = 0;
    675   dEdx = charge2*( (*fdEdxVector)(iPlace) - GetdEdxCut(iPlace,cut) ) ; 
     655  dEdx = charge2*( (*fdEdxVector)(iPlace) - GetdEdxCut(iPlace,cutEnergy) ) ; 
    676656
    677657  if( dEdx < 0.) dEdx = 0.;
     
    681661/////////////////////////////////////////////////////////////////////////
    682662
    683 G4double G4PAIPhotonModel::CrossSectionPerVolume( const G4Material*,
    684                                                   const G4ParticleDefinition* p,
    685                                                   G4double kineticEnergy,
    686                                                   G4double cutEnergy,
    687                                                   G4double maxEnergy  )
     663G4double G4PAIPhotonModel::CrossSection( const G4MaterialCutsCouple* matCC,
     664                                   const G4ParticleDefinition* p,
     665                                         G4double kineticEnergy,
     666                                         G4double cutEnergy,
     667                                         G4double maxEnergy  )
    688668{
    689669  G4int iTkin,iPlace;
    690670  size_t jMat, jMatCC;
    691   G4double tmax = std::min(MaxSecondaryEnergy(p, kineticEnergy), maxEnergy);
    692   if(cutEnergy >= tmax) return 0.0;
     671  G4double tmax = min(MaxSecondaryEnergy(p, kineticEnergy), maxEnergy);
    693672  G4double particleMass = p->GetPDGMass();
    694673  G4double scaledTkin   = kineticEnergy*proton_mass_c2/particleMass;
     
    696675  G4double charge2      = charge*charge, cross, cross1, cross2;
    697676  G4double photon1, photon2, plasmon1, plasmon2;
    698 
    699   const G4MaterialCutsCouple* matCC = CurrentCouple();
    700677
    701678  const G4ProductionCutsTable* theCoupleTable=
     
    12481225}
    12491226
    1250 /////////////////////////////////////////////////////////////////////
    1251 
    1252 G4double G4PAIPhotonModel::MaxSecondaryEnergy( const G4ParticleDefinition* p,
    1253                                                       G4double kinEnergy)
    1254 {
    1255   G4double tmax = kinEnergy;
    1256   if(p == fElectron) tmax *= 0.5;
    1257   else if(p != fPositron) {
    1258     G4double mass = p->GetPDGMass();
    1259     G4double ratio= electron_mass_c2/mass;
    1260     G4double gamma= kinEnergy/mass + 1.0;
    1261     tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) /
    1262                   (1. + 2.0*gamma*ratio + ratio*ratio);
    1263   }
    1264   return tmax;
    1265 }
    1266 
    1267 ///////////////////////////////////////////////////////////////
    1268 
    1269 void G4PAIPhotonModel::DefineForRegion(const G4Region* r)
    1270 {
    1271   fPAIRegionVector.push_back(r);
    1272 }
    1273 
    12741227
    12751228//
  • trunk/source/processes/electromagnetic/standard/src/G4PAIxSection.cc

    r961 r991  
    2626//
    2727// $Id: G4PAIxSection.cc,v 1.24 2008/05/30 16:04:40 grichine Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/standard/src/G4PAIySection.cc

    r961 r991  
    2626//
    2727// $Id: G4PAIySection.cc,v 1.3 2007/10/01 18:38:10 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/standard/src/G4PEEffectModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PEEffectModel.cc,v 1.7 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4PEEffectModel.cc,v 1.6 2007/05/22 17:34:36 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    4141//
    4242// 04.12.05 : SetProposedKineticEnergy(0.) for the killed photon (mma)
    43 // 20.02.09 : Added initialisation of deexcitation flag and method
    44 //            CrossSectionPerVolume instead of mfp (V.Ivanchenko)
    4543//
    4644// Class Description:
     
    6866  theGamma    = G4Gamma::Gamma();
    6967  theElectron = G4Electron::Electron();
    70   fminimalEnergy = 1.0*eV;
    7168}
    7269
     
    7471
    7572G4PEEffectModel::~G4PEEffectModel()
    76 {}
     73{
     74}
    7775
    7876//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     
    8179                                 const G4DataVector&)
    8280{
    83   // always false before the run
    84   SetDeexcitationFlag(false);
     81 if (isInitialized) return;
     82 if (pParticleChange)
     83   fParticleChange =
     84                  reinterpret_cast<G4ParticleChangeForGamma*>(pParticleChange);
     85  else
     86   fParticleChange = new G4ParticleChangeForGamma();
    8587
    86   if (isInitialized) return;
    87   if (pParticleChange) {
    88     fParticleChange = reinterpret_cast<G4ParticleChangeForGamma*>(pParticleChange);
    89   } else {
    90     fParticleChange = new G4ParticleChangeForGamma();
    91   }
    92   isInitialized = true;
    93 }
    94 
    95 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
    96 
    97 G4double G4PEEffectModel::ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
    98                                                      G4double energy,
    99                                                      G4double Z, G4double,
    100                                                      G4double, G4double)
    101 {
    102   G4double* SandiaCof = G4SandiaTable::GetSandiaCofPerAtom((G4int)Z, energy);
    103 
    104   G4double energy2 = energy*energy;
    105   G4double energy3 = energy*energy2;
    106   G4double energy4 = energy2*energy2;
    107 
    108   return SandiaCof[0]/energy  + SandiaCof[1]/energy2 +
    109     SandiaCof[2]/energy3 + SandiaCof[3]/energy4;
    110 }
    111 
    112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    113 
    114 G4double G4PEEffectModel::CrossSectionPerVolume(const G4Material* material,
    115                                                 const G4ParticleDefinition*,
    116                                                 G4double energy,
    117                                                 G4double, G4double)
    118 {
    119   G4double* SandiaCof =
    120     material->GetSandiaTable()->GetSandiaCofForMaterial(energy);
    121                                
    122   G4double energy2 = energy*energy;
    123   G4double energy3 = energy*energy2;
    124   G4double energy4 = energy2*energy2;
    125          
    126   return SandiaCof[0]/energy  + SandiaCof[1]/energy2 +
    127     SandiaCof[2]/energy3 + SandiaCof[3]/energy4;
     88 fminimalEnergy = 1.0*eV;
    12889}
    12990
  • trunk/source/processes/electromagnetic/standard/src/G4PSTARStopping.cc

    r961 r991  
    2525//
    2626// $Id: G4PSTARStopping.cc,v 1.8 2008/11/24 18:28:09 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929//---------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4PhotoElectricEffect.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4PhotoElectricEffect.cc,v 1.42 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4PhotoElectricEffect.cc,v 1.41 2008/10/16 14:12:32 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929//
     
    8989{}
    9090
    91 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    92 
    93 G4bool G4PhotoElectricEffect::IsApplicable(const G4ParticleDefinition& p)
    94 {
    95   return (&p == G4Gamma::Gamma());
    96 }
    97 
    9891//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    9992
  • trunk/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc

    r961 r991  
    2626//
    2727// $Id: G4PolarizedComptonScattering.cc,v 1.18 2008/10/15 17:53:44 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030//
  • trunk/source/processes/electromagnetic/standard/src/G4UniversalFluctuation.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4UniversalFluctuation.cc,v 1.17 2009/02/19 11:26:01 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4UniversalFluctuation.cc,v 1.16 2008/10/22 16:04:33 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    305305}
    306306
    307 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    308 
    309 void
    310 G4UniversalFluctuation::SetParticleAndCharge(const G4ParticleDefinition* part,
    311                                              G4double q2)
    312 {
    313   if(part != particle) {
    314     particle       = part;
    315     particleMass   = part->GetPDGMass();
    316   }
    317   chargeSquare = q2;
    318 }
    319 
    320 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     307//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
  • trunk/source/processes/electromagnetic/standard/src/G4UrbanMscModel.cc

    r961 r991  
    2525//
    2626// $Id: G4UrbanMscModel.cc,v 1.86 2008/10/29 14:15:30 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4UrbanMscModel2.cc

    r968 r991  
    2626//
    2727// $Id: G4UrbanMscModel2.cc,v 1.18 2008/12/18 13:01:36 gunter Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4UrbanMscModel90.cc

    r961 r991  
    2525//
    2626// $Id: G4UrbanMscModel90.cc,v 1.10 2008/10/29 14:15:30 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4WaterStopping.cc

    r961 r991  
    2525//
    2626// $Id: G4WaterStopping.cc,v 1.11 2008/12/18 13:01:38 gunter Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828
    2929//---------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4WentzelVIModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4WentzelVIModel.cc,v 1.17 2009/02/19 19:17:15 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4WentzelVIModel.cc,v 1.16 2008/11/19 11:47:50 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6060#include "G4LossTableManager.hh"
    6161#include "G4ParticleChangeForMSC.hh"
    62 //#include "G4TransportationManager.hh"
    63 //#include "G4SafetyHelper.hh"
     62#include "G4TransportationManager.hh"
     63#include "G4SafetyHelper.hh"
    6464#include "G4PhysicsTableHelper.hh"
    6565#include "G4ElementVector.hh"
     
    138138      fParticleChange = new G4ParticleChangeForMSC();
    139139
    140     InitialiseSafetyHelper();
     140    safetyHelper = G4TransportationManager::GetTransportationManager()
     141      ->GetSafetyHelper();
     142    safetyHelper->InitialiseHelper();
    141143  }
    142144}
     
    275277  // i.e. when it is needed for optimization purposes
    276278  if(stepStatus != fGeomBoundary && presafety < tlimitminfix)
    277     presafety = ComputeSafety(sp->GetPosition(), tlimit);
     279    presafety = safetyHelper->ComputeSafety(sp->GetPosition());
    278280  /*
    279281  G4cout << "G4WentzelVIModel::ComputeTruePathLengthLimit tlimit= "
     
    568570
    569571    if(r > tlimitminfix) {
    570       pos /= r;
    571       ComputeDisplacement(fParticleChange, pos, r, safety);
     572      G4ThreeVector Position = *(fParticleChange->GetProposedPosition());
     573      G4double fac= 1.;
     574      if(r >= safety) {
     575        //  ******* so safety is computed at boundary too ************
     576        G4double newsafety =
     577          safetyHelper->ComputeSafety(Position) - tlimitminfix;
     578        if(newsafety <= 0.0) fac = 0.0;
     579        else if(r > newsafety) fac = newsafety/r ;
     580        //G4cout << "NewSafety= " << newsafety << " fac= " << fac
     581        // << " r= " << r << " sint= " << sint << " pos " << Position << G4endl;
     582      } 
     583
     584      if(fac > 0.) {
     585        // compute new endpoint of the Step
     586        G4ThreeVector newPosition = Position + fac*pos;
     587
     588        // check safety after displacement
     589        G4double postsafety = safetyHelper->ComputeSafety(newPosition);
     590
     591        // displacement to boundary
     592        if(postsafety <= 0.0) {
     593          safetyHelper->Locate(newPosition, newDirection);
     594
     595          // not on the boundary
     596        } else {
     597          safetyHelper->ReLocateWithinVolume(newPosition);
     598          // if(fac < 1.0) G4cout << "NewPosition " << newPosition << G4endl;
     599        }
     600     
     601        fParticleChange->ProposePosition(newPosition);
     602      }
    572603    }
    573604  }
  • trunk/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eBremsstrahlung.cc,v 1.56 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eBremsstrahlung.cc,v 1.55 2008/11/14 19:23:07 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    104104//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    105105
    106 G4bool G4eBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)
    107 {
    108   return (&p == G4Electron::Electron() || &p == G4Positron::Positron());
    109 }
    110 
    111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    112 
    113106void G4eBremsstrahlung::InitialiseEnergyLossProcess(
    114107                                                const G4ParticleDefinition* p,
  • trunk/source/processes/electromagnetic/standard/src/G4eBremsstrahlungModel.cc

    r961 r991  
    2525//
    2626// $Id: G4eBremsstrahlungModel.cc,v 1.43 2008/11/13 19:28:58 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4eBremsstrahlungRelModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eBremsstrahlungRelModel.cc,v 1.13 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eBremsstrahlungRelModel.cc,v 1.12 2008/11/13 23:28:27 schaelic Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4eCoulombScatteringModel.cc

    r961 r991  
    2525//
    2626// $Id: G4eCoulombScatteringModel.cc,v 1.59 2008/10/22 18:39:29 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4eIonisation.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eIonisation.cc,v 1.57 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eIonisation.cc,v 1.56 2008/10/20 08:56:41 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    103103//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    104104
    105 G4double G4eIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
    106                                          const G4Material*,
    107                                          G4double cut)
    108 {
    109   G4double x = cut;
    110   if(isElectron) x += cut;
    111   return x;
    112 }
    113 
    114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    115 
    116 G4bool G4eIonisation::IsApplicable(const G4ParticleDefinition& p)
    117 {
    118   return (&p == G4Electron::Electron() || &p == G4Positron::Positron());
    119 }
    120 
    121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    122 
    123105void G4eIonisation::InitialiseEnergyLossProcess(
    124106                    const G4ParticleDefinition* part,
  • trunk/source/processes/electromagnetic/standard/src/G4eMultipleScattering.cc

    r968 r991  
    2525//
    2626// $Id: G4eMultipleScattering.cc,v 1.7 2008/10/23 17:55:20 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4eeToTwoGammaModel.cc

    r961 r991  
    2525//
    2626// $Id: G4eeToTwoGammaModel.cc,v 1.14 2007/05/23 08:47:35 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eplusAnnihilation.cc,v 1.30 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4eplusAnnihilation.cc,v 1.29 2008/10/15 17:53:44 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    7979//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    8080
    81 G4bool G4eplusAnnihilation::IsApplicable(const G4ParticleDefinition& p)
    82 {
    83   return (&p == G4Positron::Positron());
    84 }
    85 
    86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    87 
    88 G4double G4eplusAnnihilation::AtRestGetPhysicalInteractionLength(
    89                               const G4Track&, G4ForceCondition* condition)
    90 {
    91   *condition = NotForced;
    92   return 0.0;
    93 }
    94 
    95 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    96 
    9781void G4eplusAnnihilation::InitialiseProcess(const G4ParticleDefinition*)
    9882{
  • trunk/source/processes/electromagnetic/standard/src/G4hIonisation.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4hIonisation.cc,v 1.82 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4hIonisation.cc,v 1.81 2008/10/22 16:02:20 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    122122{}
    123123
    124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    125 
    126 G4bool G4hIonisation::IsApplicable(const G4ParticleDefinition& p)
    127 {
    128   return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV &&
    129          !p.IsShortLived());
    130 }
    131 
    132 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    133 
    134 G4double G4hIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
    135                                          const G4Material*,
    136                                          G4double cut)
    137 {
    138   G4double x = 0.5*cut/electron_mass_c2;
    139   G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));
    140   return mass*(g - 1.0);
    141 }
    142 
    143124//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 
    144125
  • trunk/source/processes/electromagnetic/standard/src/G4hMultipleScattering.cc

    r961 r991  
    2525//
    2626// $Id: G4hMultipleScattering.cc,v 1.13 2008/10/15 17:53:44 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -----------------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4ionGasIonisation.cc

    r961 r991  
    2525//
    2626// $Id: G4ionGasIonisation.cc,v 1.14 2008/09/12 16:26:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
  • trunk/source/processes/electromagnetic/standard/src/G4ionIonisation.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4ionIonisation.cc,v 1.66 2009/02/20 12:06:37 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4ionIonisation.cc,v 1.65 2008/10/15 17:53:44 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    104104//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    105105
    106 G4bool G4ionIonisation::IsApplicable(const G4ParticleDefinition& p)
    107 {
    108   return (p.GetPDGCharge() != 0.0 && !p.IsShortLived() &&
    109           p.GetParticleType() == "nucleus");
    110 }
    111 
    112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    113 
    114 G4double G4ionIonisation::MinPrimaryEnergy(const G4ParticleDefinition* p,
    115                                            const G4Material*,
    116                                            G4double cut)
    117 {
    118   return
    119     p->GetPDGMass()*(std::sqrt(1. + 0.5*cut/CLHEP::electron_mass_c2) - 1.0);
    120 }
    121 
    122 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    123 
    124106void G4ionIonisation::InitialiseEnergyLossProcess(
    125107                      const G4ParticleDefinition* part,
  • trunk/source/processes/electromagnetic/utils/History

    r961 r991  
    1 $Id: History,v 1.372 2009/02/26 11:33:33 vnivanch Exp $
     1$Id: History,v 1.364 2008/11/20 20:32:40 vnivanch Exp $
    22-------------------------------------------------------------------
    33
     
    1717     * Reverse chronological order (last date on top), please *
    1818     ----------------------------------------------------------
    19 
    20 26 February 09: V.Ivant (emutils-V09-02-03)
    21 G4EmConfigurator - fixed for the case if only fluctuation model is set
    22                    and main model is default
    23 
    24 22 February 09: V.Ivant (emutils-V09-02-02)
    25 - G4VEmModel - make methods to access geometry protected, added new
    26                method SetSampleZ, added geommax private member
    27 - G4EmCalculator - added possibility to be used by DNA processes:
    28                    take into account special DNA particles
    29 
    30 18 February 09: V.Ivant (emutils-V09-02-01)
    31 G4VEmModel, G4VEmFluctuationModel, G4VEnegryLossProcess, G4VEmProcess,
    32 G4VMultipleScattering - move all virtual methods to source, update comments
    33 G4VEmModel - added flagDeexcitation and Get/Set methods
    34 G4VEnegryLossProcess, G4VEmProcess - added calls to deexcitation PostStep
    35 G4EmProcessOptions - added ActivateDeexcitation method
    36 G4EnergyLossMessenger - added /process/em/deexcitation UI command
    37 G4LossTableBuilder - added protection in BuildRangeTable against zero dedx
    38 
    39 27 January 09: V.Ivant (emutils-V09-02-00)
    40 G4VEmModel - added method SampleDeexcitationAlongStep
    41 G4VEnegryLossProcess - added deexcitation AlongStep per region
    42 G4VMscModel - added methdos: InitialiseSafetyHelper, ComputeSafety,
    43               ComputeGeomLimit, ComputeDisplacement
    44 G4VEmProcess - added possibility to set more than 1 model
    4519
    462020 November 08: V.Ivant (emutils-V09-01-37)
  • trunk/source/processes/electromagnetic/utils/include/G4EmProcessOptions.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4EmProcessOptions.hh,v 1.15 2009/02/18 14:40:10 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4EmProcessOptions.hh,v 1.14 2008/04/17 10:33:26 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929//
     
    107107  void SetLinearLossLimit(G4double val);
    108108
    109   void ActivateDeexcitation(const G4String& proc, G4bool val,
    110                             const G4String& reg = "");
     109  void ActivateDeexcitation(G4bool val, const G4Region* r = 0);
    111110
    112111  void SetMscStepLimitation(G4MscStepLimitType val);
  • trunk/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh

    r961 r991  
    2525//
    2626//
    27 // $Id: G4EnergyLossMessenger.hh,v 1.23 2009/02/18 14:40:10 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4EnergyLossMessenger.hh,v 1.22 2008/10/20 13:27:45 vnivanch Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// -------------------------------------------------------------------
     
    107107  G4UIcmdWithADouble*        MinSubSecCmd;
    108108  G4UIcommand*               StepFuncCmd;
    109   G4UIcommand*               deexCmd;
    110109  G4UIcmdWithAString*        mscCmd;
    111110  G4UIcmdWithADoubleAndUnit* MinEnCmd;
  • trunk/source/processes/electromagnetic/utils/include/G4VEmFluctuationModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEmFluctuationModel.hh,v 1.12 2009/02/19 11:25:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VEmFluctuationModel.hh,v 1.11 2008/09/12 14:47:38 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    101101  //------------------------------------------------------------------------
    102102
    103   inline G4String GetName() const;
     103  G4String GetName() const;
    104104
    105105private:
     
    115115//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    116116
     117inline void G4VEmFluctuationModel::InitialiseMe(const G4ParticleDefinition*)
     118{}
     119
     120inline
     121void G4VEmFluctuationModel::SetParticleAndCharge(const G4ParticleDefinition*,
     122                                                 G4double)
     123{}
     124
    117125inline G4String G4VEmFluctuationModel::GetName() const
    118126{
  • trunk/source/processes/electromagnetic/utils/include/G4VEmModel.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEmModel.hh,v 1.66 2009/02/19 09:57:36 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VEmModel.hh,v 1.59 2008/11/13 19:29:41 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6565// 12-09-08 Added methods GetParticleCharge, GetChargeSquareRatio,
    6666//          CorrectionsAlongStep, ActivateNuclearStopping (VI)
    67 // 16-02-09 Move implementations of virtual methods to source (VI)
    6867//
    6968// Class Description:
     
    121120  //------------------------------------------------------------------------
    122121
     122  // dEdx per unit length
     123  virtual G4double ComputeDEDX(const G4MaterialCutsCouple*,
     124                               const G4ParticleDefinition*,
     125                               G4double kineticEnergy,
     126                               G4double cutEnergy = DBL_MAX);
     127
    123128  // main method to compute dEdx
    124129  virtual G4double ComputeDEDXPerVolume(const G4Material*,
     
    126131                                        G4double kineticEnergy,
    127132                                        G4double cutEnergy = DBL_MAX);
     133
     134  // cross section per volume
     135  virtual G4double CrossSection(const G4MaterialCutsCouple*,
     136                                const G4ParticleDefinition*,
     137                                G4double kineticEnergy,
     138                                G4double cutEnergy = 0.0,
     139                                G4double maxEnergy = DBL_MAX);
    128140
    129141  // main method to compute cross section per Volume
     
    163175                                    G4double length);
    164176
    165   // sample PIXE deexcitation
    166   virtual void SampleDeexcitationAlongStep(const G4Material*,
    167                                            const G4Track&,
    168                                            G4double& eloss);
    169 
    170177protected:
    171178
     
    205212                                  const G4DataVector&);
    206213
    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 
    220214  // 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);
     215  G4double ComputeMeanFreePath(const G4ParticleDefinition*,
     216                               G4double kineticEnergy,
     217                               const G4Material*,   
     218                               G4double cutEnergy = 0.0,
     219                               G4double maxEnergy = DBL_MAX);
    226220
    227221  // generic cross section per element
     
    239233                                           G4double maxEnergy = DBL_MAX);
    240234
    241   // to select atom cross section per volume is recomputed for each element
     235  // this method can be used only in the case if generic method to compute
     236  // cross section per volume is used and not overwritten in derived class
    242237  inline const G4Element* SelectRandomAtom(const G4Material*,
    243238                                           const G4ParticleDefinition*,
     
    265260  inline G4bool LPMFlag() const;
    266261
    267   inline G4bool DeexcitationFlag() const;
    268 
    269262  inline void SetHighEnergyLimit(G4double);
    270263
     
    277270  inline void SetLPMFlag(G4bool val);
    278271
    279   inline void SetDeexcitationFlag(G4bool val);
    280 
    281272  inline void ActivateNuclearStopping(G4bool);
    282273
     
    287278  inline void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel*);
    288279
    289   inline void SetCurrentCouple(const G4MaterialCutsCouple*);
    290 
    291280protected:
    292281
    293   inline const G4MaterialCutsCouple* CurrentCouple() const;
     282  inline const G4Element* GetCurrentElement() const;
    294283
    295284  inline void SetCurrentElement(const G4Element*);
    296 
    297   inline const G4Element* GetCurrentElement() const;
    298285
    299286private:
     
    328315private:
    329316
    330   const G4MaterialCutsCouple* currentCouple;
    331   const G4Element*            currentElement;
    332 
     317  const G4Element* currentElement;
    333318  G4int                  nsec;
    334   G4bool                 flagDeexcitation;
    335319  std::vector<G4double>  xsec;
    336320
     
    340324//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    341325
    342 inline G4double G4VEmModel::ComputeDEDX(const G4MaterialCutsCouple* c,
    343                                         const G4ParticleDefinition* p,
    344                                         G4double kinEnergy,
    345                                         G4double cutEnergy)
    346 {
    347   currentCouple = c;
    348   return ComputeDEDXPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy);
    349 }
    350 
    351 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    352 
    353 inline G4double G4VEmModel::CrossSection(const G4MaterialCutsCouple* c,
    354                                          const G4ParticleDefinition* p,
    355                                          G4double kinEnergy,
    356                                          G4double cutEnergy,
    357                                          G4double maxEnergy)
    358 {
    359   currentCouple = c;
    360   return CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy);
    361 }
    362 
    363 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    364 
    365 inline 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;
     326inline G4double G4VEmModel::HighEnergyLimit() const
     327{
     328  return highLimit;
     329}
     330
     331//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     332
     333inline G4double G4VEmModel::LowEnergyLimit() const
     334{
     335  return lowLimit;
     336}
     337
     338//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     339
     340inline G4double G4VEmModel::PolarAngleLimit() const
     341{
     342  return polarAngleLimit;
     343}
     344
     345//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     346
     347inline G4double G4VEmModel::SecondaryThreshold() const
     348{
     349  return secondaryThreshold;
     350}
     351
     352//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     353
     354inline G4bool G4VEmModel::LPMFlag() const
     355{
     356  return theLPMflag;
     357}
     358
     359//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     360
     361inline void G4VEmModel::SetHighEnergyLimit(G4double val)
     362{
     363  highLimit = val;
     364}
     365
     366//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     367
     368inline void G4VEmModel::SetLowEnergyLimit(G4double val)
     369{
     370  lowLimit = val;
     371}
     372
     373//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     374
     375inline void G4VEmModel::SetPolarAngleLimit(G4double val)
     376{
     377  polarAngleLimit = val;
     378}
     379
     380//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     381
     382inline void G4VEmModel::SetSecondaryThreshold(G4double val)
     383{
     384  secondaryThreshold = val;
     385}
     386
     387//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     388
     389inline void G4VEmModel::SetLPMFlag(G4bool val)
     390{
     391  theLPMflag = val;
     392}
     393
     394//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     395
     396inline void G4VEmModel::ActivateNuclearStopping(G4bool val)
     397{
     398  nuclearStopping = val;
    375399}
    376400
     
    391415//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    392416
     417inline void G4VEmModel::SetParticleChange(G4VParticleChange* p, 
     418                                          G4VEmFluctuationModel* f = 0)
     419{
     420  if(p && pParticleChange != p) pParticleChange = p;
     421  fluc = f;
     422}
     423
     424//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     425
     426
     427inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations()
     428{
     429  return fluc;
     430}
     431
     432//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     433
     434inline G4double G4VEmModel::MinEnergyCut(const G4ParticleDefinition*,
     435                                         const G4MaterialCutsCouple*)
     436{
     437  return 0.0;
     438}
     439
     440//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     441
     442inline G4double G4VEmModel::GetChargeSquareRatio(const G4ParticleDefinition* p,
     443                                                 const G4Material*, G4double)
     444{
     445  G4double q = p->GetPDGCharge()/CLHEP::eplus;
     446  return q*q;
     447}
     448
     449//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     450
     451inline G4double G4VEmModel::GetParticleCharge(const G4ParticleDefinition* p,
     452                                              const G4Material*, G4double)
     453{
     454  return p->GetPDGCharge();
     455}
     456
     457//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     458
     459inline void G4VEmModel::CorrectionsAlongStep(const G4MaterialCutsCouple*,
     460                                             const G4DynamicParticle*,
     461                                             G4double&,G4double&,G4double)
     462{}
     463
     464//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     465
     466inline G4double G4VEmModel::ComputeDEDXPerVolume(const G4Material*,
     467                                                 const G4ParticleDefinition*,
     468                                                 G4double,G4double)
     469{
     470  return 0.0;
     471}
     472
     473//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     474
     475inline G4double G4VEmModel::ComputeDEDX(const G4MaterialCutsCouple* c,
     476                                        const G4ParticleDefinition* p,
     477                                        G4double kinEnergy,
     478                                        G4double cutEnergy)
     479{
     480  return ComputeDEDXPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy);
     481}
     482
     483//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     484
     485inline G4double G4VEmModel::CrossSection(const G4MaterialCutsCouple* c,
     486                                         const G4ParticleDefinition* p,
     487                                         G4double kinEnergy,
     488                                         G4double cutEnergy,
     489                                         G4double maxEnergy)
     490{
     491  return CrossSectionPerVolume(c->GetMaterial(),p,
     492                               kinEnergy,cutEnergy,maxEnergy);
     493}
     494
     495//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     496
     497inline G4double G4VEmModel::ComputeCrossSectionPerAtom(
     498                                         const G4ParticleDefinition*,
     499                                         G4double, G4double, G4double,
     500                                         G4double, G4double)
     501{
     502  return 0.0;
     503}
     504
     505//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     506
    393507inline
    394508const G4Element* G4VEmModel::SelectRandomAtom(const G4MaterialCutsCouple* couple,
     
    398512                                              G4double maxEnergy)
    399513{
    400   currentCouple = couple;
    401514  if(nSelectors > 0) {
    402515    currentElement =
     
    458571//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    459572
    460 inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations()
    461 {
    462   return fluc;
    463 }
    464 
    465 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    466 
    467 inline G4double G4VEmModel::HighEnergyLimit() const
    468 {
    469   return highLimit;
    470 }
    471 
    472 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    473 
    474 inline G4double G4VEmModel::LowEnergyLimit() const
    475 {
    476   return lowLimit;
    477 }
    478 
    479 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    480 
    481 inline G4double G4VEmModel::PolarAngleLimit() const
    482 {
    483   return polarAngleLimit;
    484 }
    485 
    486 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    487 
    488 inline G4double G4VEmModel::SecondaryThreshold() const
    489 {
    490   return secondaryThreshold;
    491 }
    492 
    493 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    494 
    495 inline G4bool G4VEmModel::LPMFlag() const
    496 {
    497   return theLPMflag;
    498 }
    499 
    500 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    501 
    502 inline G4bool G4VEmModel::DeexcitationFlag() const
    503 {
    504   return flagDeexcitation;
    505 }
    506 
    507 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    508 
    509 inline void G4VEmModel::SetHighEnergyLimit(G4double val)
    510 {
    511   highLimit = val;
    512 }
    513 
    514 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    515 
    516 inline void G4VEmModel::SetLowEnergyLimit(G4double val)
    517 {
    518   lowLimit = val;
    519 }
    520 
    521 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    522 
    523 inline void G4VEmModel::SetPolarAngleLimit(G4double val)
    524 {
    525   polarAngleLimit = val;
    526 }
    527 
    528 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    529 
    530 inline void G4VEmModel::SetSecondaryThreshold(G4double val)
    531 {
    532   secondaryThreshold = val;
    533 }
    534 
    535 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    536 
    537 inline void G4VEmModel::SetLPMFlag(G4bool val)
    538 {
    539   theLPMflag = val;
    540 }
    541 
    542 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    543 
    544 inline void G4VEmModel::SetDeexcitationFlag(G4bool val)
    545 {
    546   flagDeexcitation = val;
    547 }
    548 
    549 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    550 
    551 inline void G4VEmModel::ActivateNuclearStopping(G4bool val)
    552 {
    553   nuclearStopping = val;
     573inline const G4Element* G4VEmModel::GetCurrentElement() const
     574{
     575  return currentElement;
     576}
     577
     578//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     579
     580inline void G4VEmModel::SetCurrentElement(const G4Element* elm)
     581{
     582  currentElement = elm;
    554583}
    555584
     
    565594//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    566595
     596inline G4double G4VEmModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
     597                                               G4double kineticEnergy)
     598{
     599  return kineticEnergy;
     600}
     601
     602//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     603
    567604inline const G4String& G4VEmModel::GetName() const
    568605{
     
    571608
    572609//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    573 
    574 inline 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 
    583 inline void G4VEmModel::SetCurrentCouple(const G4MaterialCutsCouple* p)
    584 {
    585   currentCouple = p;
    586 }
    587 
    588 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    589 
    590 inline const G4MaterialCutsCouple* G4VEmModel::CurrentCouple() const
    591 {
    592   return currentCouple;
    593 }
    594 
    595 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    596 
    597 inline void G4VEmModel::SetCurrentElement(const G4Element* elm)
    598 {
    599   currentElement = elm;
    600 }
    601 
    602 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    603 
    604 inline const G4Element* G4VEmModel::GetCurrentElement() const
    605 {
    606   return currentElement;
    607 }
     610// Methods for msc simulation
     611//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     612
     613inline void G4VEmModel::SampleScattering(const G4DynamicParticle*, G4double)
     614{}
     615
     616//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     617
     618inline G4double G4VEmModel::ComputeTruePathLengthLimit(
     619                                const G4Track&,
     620                                G4PhysicsTable*,
     621                                G4double)
     622{
     623  return DBL_MAX;
     624}
     625
     626//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     627
     628inline G4double G4VEmModel::ComputeGeomPathLength(G4double truePathLength)
     629{
     630  return truePathLength;
     631}
     632
     633//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     634
     635inline G4double G4VEmModel::ComputeTrueStepLength(G4double geomPathLength)
     636{
     637  return geomPathLength;
     638}
     639
     640//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     641
     642inline void G4VEmModel::DefineForRegion(const G4Region*)
     643{}
     644
     645//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     646
     647inline void G4VEmModel::SetupForMaterial(const G4ParticleDefinition*,
     648                                         const G4Material*, G4double)
     649{}
    608650
    609651//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
  • trunk/source/processes/electromagnetic/utils/include/G4VEmProcess.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEmProcess.hh,v 1.50 2009/02/19 09:57:36 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VEmProcess.hh,v 1.47 2008/07/31 13:01:26 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    108108
    109109  //------------------------------------------------------------------------
    110   // Implementation of virtual methods common to all Discrete processes
     110  // Methods with standard implementation; may be overwritten if needed
     111  //------------------------------------------------------------------------
     112
     113  inline G4double RecalculateLambda(G4double kinEnergy,
     114                                    const G4MaterialCutsCouple* couple);
     115
     116  //------------------------------------------------------------------------
     117  // Generic methods common to all Discrete processes
    111118  //------------------------------------------------------------------------
    112119
    113120public:
     121
     122  void PrintInfoDefinition();
     123
     124  G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
    114125
    115126  // Initialise for build of tables
     
    118129  // Build physics table during initialisation
    119130  void BuildPhysicsTable(const G4ParticleDefinition&);
    120 
    121   void PrintInfoDefinition();
    122 
    123   // implementation of virtual method, specific for G4VEmProcess
    124   G4double PostStepGetPhysicalInteractionLength(
    125                              const G4Track& track,
    126                              G4double   previousStepSize,
    127                              G4ForceCondition* condition
    128                             );
    129 
    130   // implementation of virtual method, specific for G4VEmProcess
    131   G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
    132131
    133132  // Store PhysicsTable in a file.
     
    146145                              G4bool ascii);
    147146
    148   // deexcitation activated per G4Region
    149   void ActivateDeexcitation(G4bool, const G4Region* r = 0);
    150 
    151147  //------------------------------------------------------------------------
    152148  // Specific methods for Discrete EM post step simulation
     
    156152  G4double CrossSectionPerVolume(G4double kineticEnergy,
    157153                                 const G4MaterialCutsCouple* couple);
     154
     155  // implementation of virtual method
     156  virtual G4double PostStepGetPhysicalInteractionLength(
     157                             const G4Track& track,
     158                             G4double   previousStepSize,
     159                             G4ForceCondition* condition
     160                            );
    158161
    159162  // It returns the cross section of the process per atom
     
    164167  inline G4double MeanFreePath(const G4Track& track);
    165168
     169  inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy,
     170                                            size_t& idxRegion) const;
     171
    166172  // It returns cross section per volume
    167173  inline G4double GetLambda(G4double& kinEnergy,
     
    197203
    198204  //------------------------------------------------------------------------
    199   // Specific methods to set, access, modify models and basic parameters
    200   //------------------------------------------------------------------------
    201 
    202 protected:
    203   // Select model in run time
    204   inline void SelectModel(G4double& kinEnergy);
    205 
    206 public:
    207   // Select model by energy and region index
    208   inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy,
    209                                             size_t& idxRegion) const;
     205  // Specific methods to set, access, modify models
     206  //------------------------------------------------------------------------
     207
     208  // Add EM model coupled for the region
     209  inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0);
    210210   
    211   // Add model for region, smaller value of order defines which
    212   // model will be selected for a given energy interval 
    213   inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0);
    214 
    215211  // Assign a model to a process
    216   inline void SetModel(G4VEmModel*, G4int index = 1);
     212  inline void SetModel(G4VEmModel*);
    217213 
    218214  // return the assigned model
    219   inline G4VEmModel* Model(G4int index = 1);
     215  inline G4VEmModel* Model();
    220216   
    221217  // Define new energy range for the model identified by the name
     
    225221  inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false);
    226222
     223  //------------------------------------------------------------------------
     224  // Get/set parameters used for simulation of energy loss
     225  //------------------------------------------------------------------------
     226
     227  inline void ActivateDeexcitation(G4bool, const G4Region* r = 0);
     228
    227229  inline void SetLambdaFactor(G4double val);
    228230
     
    231233
    232234  inline void SetApplyCuts(G4bool val);
    233 
    234   //------------------------------------------------------------------------
    235   // Other generic methods
    236   //------------------------------------------------------------------------
    237235 
    238236protected:
     
    244242  G4PhysicsVector* LambdaPhysicsVector(const G4MaterialCutsCouple*);
    245243
    246   inline G4double RecalculateLambda(G4double kinEnergy,
    247                                     const G4MaterialCutsCouple* couple);
    248 
    249244  inline G4ParticleChangeForGamma* GetParticleChange();
    250245
     
    253248  inline void SetSecondaryParticle(const G4ParticleDefinition* p);
    254249
     250  inline G4VEmModel* SelectModel(G4double& kinEnergy);
     251
    255252  inline size_t CurrentMaterialCutsCoupleIndex() const;
    256253
     
    283280  inline G4double ComputeCurrentLambda(G4double kinEnergy);
    284281
    285   // copy constructor and hide assignment operator
     282  // hide  assignment operator
     283
    286284  G4VEmProcess(G4VEmProcess &);
    287285  G4VEmProcess & operator=(const G4VEmProcess &right);
     
    299297  // ======== Parameters of the class fixed at initialisation =======
    300298
    301   std::vector<G4VEmModel*>     emModels;
    302 
    303299  // tables and vectors
    304300  G4PhysicsTable*              theLambdaTable;
     
    321317  G4bool                       applyCuts;
    322318  G4bool                       startFromNull;
    323   G4bool                       useDeexcitation;
    324 
    325   G4int                        nDERegions;
    326   std::vector<const G4Region*> deRegions;
    327   G4bool*                      idxDERegions;
     319
     320  G4int                        nRegions;
     321  std::vector<G4Region*>       regions;
     322  std::vector<G4bool>          flagsDeexcitation;
    328323
    329324  // ======== Cashed values - may be state dependent ================
     
    337332  std::vector<G4DynamicParticle*> secParticles;
    338333
    339   G4VEmModel*                  currentModel; 
     334  G4VEmModel*                  selectedModel; 
    340335
    341336  const G4ParticleDefinition*  particle;
     
    353348
    354349//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    355 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    356 
    357 inline G4double G4VEmProcess::ComputeCrossSectionPerAtom(
    358                  G4double kineticEnergy, G4double Z, G4double A, G4double cut)
    359 {
    360   SelectModel(kineticEnergy);
    361   G4double x = 0.0;
    362   if(currentModel) {
    363    x = currentModel->ComputeCrossSectionPerAtom(particle,kineticEnergy,
    364                                                  Z,A,cut);
    365   }
    366   return x;
    367 }
    368 
    369 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    370 
    371 inline G4double G4VEmProcess::MeanFreePath(const G4Track& track)
    372 {
    373   DefineMaterial(track.GetMaterialCutsCouple());
    374   preStepLambda = GetCurrentLambda(track.GetKineticEnergy());
    375   G4double x = DBL_MAX;
    376   if(DBL_MIN < preStepLambda) x = 1.0/preStepLambda;
    377   return x;
    378 }
    379 
    380 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    381 
    382 inline G4double G4VEmProcess::GetLambda(G4double& kineticEnergy,
    383                                         const G4MaterialCutsCouple* couple)
    384 {
    385   DefineMaterial(couple);
    386   return GetCurrentLambda(kineticEnergy);
    387 }
    388 
    389 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    390 
    391 inline void G4VEmProcess::SetLambdaBinning(G4int nbins)
    392 {
    393   nLambdaBins = nbins;
    394 }
    395 
    396 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    397 
    398 inline G4int G4VEmProcess::LambdaBinning() const
    399 {
    400   return nLambdaBins;
    401 }
    402 
    403 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    404 
    405 inline void G4VEmProcess::SetMinKinEnergy(G4double e)
    406 {
    407   minKinEnergy = e;
    408 }
    409 
    410 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    411 
    412 inline G4double G4VEmProcess::MinKinEnergy() const
    413 {
    414   return minKinEnergy;
    415 }
    416 
    417 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    418 
    419 inline void G4VEmProcess::SetMaxKinEnergy(G4double e)
    420 {
    421   maxKinEnergy = e;
    422 }
    423 
    424 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    425 
    426 inline G4double G4VEmProcess::MaxKinEnergy() const
    427 {
    428   return maxKinEnergy;
    429 }
    430 
    431 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    432 
    433 inline void G4VEmProcess::SetPolarAngleLimit(G4double val)
    434 {
    435   if(val < 0.0)     polarAngleLimit = 0.0;
    436   else if(val > pi) polarAngleLimit = pi;
    437   else              polarAngleLimit = val;
    438 }
    439 
    440 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    441 
    442 inline G4double G4VEmProcess::PolarAngleLimit() const
    443 {
    444   return polarAngleLimit;
    445 }
    446 
    447 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    448 
    449 inline const G4PhysicsTable* G4VEmProcess::LambdaTable() const
    450 {
    451   return theLambdaTable;
    452 }
    453 
    454 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    455 
    456 inline const G4ParticleDefinition* G4VEmProcess::Particle() const
    457 {
    458   return particle;
    459 }
    460 
    461 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    462 
    463 inline const G4ParticleDefinition* G4VEmProcess::SecondaryParticle() const
    464 {
    465   return secondaryParticle;
    466 }
    467 
    468 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    469 
    470 inline void G4VEmProcess::SelectModel(G4double& kinEnergy)
    471 {
    472   currentModel = modelManager->SelectModel(kinEnergy, currentMaterialIndex);
    473   currentModel->SetCurrentCouple(currentCouple);
    474 }
    475 
    476 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    477 
    478 inline G4VEmModel* G4VEmProcess::SelectModelForMaterial(
    479                                    G4double kinEnergy, size_t& idxRegion) const
    480 {
    481   return modelManager->SelectModel(kinEnergy, idxRegion);
    482 }
    483 
    484 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    485 
    486 inline void G4VEmProcess::AddEmModel(G4int order, G4VEmModel* p,
    487                                      const G4Region* region)
    488 {
    489   G4VEmFluctuationModel* fm = 0;
    490   modelManager->AddEmModel(order, p, fm, region);
    491   if(p) p->SetParticleChange(pParticleChange);
    492 }
    493 
    494 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    495 
    496 inline void G4VEmProcess::SetModel(G4VEmModel* p, G4int index)
    497 {
    498   G4int n = emModels.size();
    499   if(index >= n) for(G4int i=n; i<index+1; i++) {emModels.push_back(0);}
    500   emModels[index] = p;
    501 }
    502 
    503 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    504 
    505 inline G4VEmModel* G4VEmProcess::Model(G4int index)
    506 {
    507   G4VEmModel* p = 0;
    508   if(index >= 0 && index <  G4int(emModels.size())) p = emModels[index];
    509   return p;
    510 }
    511 
    512 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    513 
    514 inline void G4VEmProcess::UpdateEmModel(const G4String& nam,
    515                                         G4double emin, G4double emax)
    516 {
    517   modelManager->UpdateEmModel(nam, emin, emax);
    518 }
    519 
    520 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    521 
    522 inline G4VEmModel* G4VEmProcess::GetModelByIndex(G4int idx, G4bool ver)
    523 {
    524   return modelManager->GetModel(idx, ver);
    525 }
    526 
    527 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    528 
    529 inline void G4VEmProcess::SetLambdaFactor(G4double val)
    530 {
    531   if(val > 0.0 && val <= 1.0) lambdaFactor = val;
    532 }
    533 
    534 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    535 
    536 inline void G4VEmProcess::SetIntegral(G4bool val)
    537 {
    538   if(particle && particle != theGamma) integral = val;
    539   if(integral) buildLambdaTable = true;
    540 }
    541 
    542 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    543 
    544 inline G4bool G4VEmProcess::IsIntegral() const
    545 {
    546   return integral;
    547 }
    548 
    549 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    550 
    551 inline void G4VEmProcess::SetApplyCuts(G4bool val)
    552 {
    553   applyCuts = val;
    554 }
    555 
    556 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    557 
    558 inline G4double G4VEmProcess::RecalculateLambda(G4double e,
    559                                                 const G4MaterialCutsCouple* couple)
    560 {
    561   DefineMaterial(couple);
    562   return ComputeCurrentLambda(e);
    563 }
    564 
    565 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    566 
    567 inline G4ParticleChangeForGamma* G4VEmProcess::GetParticleChange()
    568 {
    569   return &fParticleChange;
    570 }
    571 
    572 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    573 
    574 inline void G4VEmProcess::SetParticle(const G4ParticleDefinition* p)
    575 {
    576   particle = p;
    577 }
    578 
    579 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    580 
    581 inline void G4VEmProcess::SetSecondaryParticle(const G4ParticleDefinition* p)
    582 {
    583   secondaryParticle = p;
    584 }
    585 
    586 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    587 
    588 inline size_t G4VEmProcess::CurrentMaterialCutsCoupleIndex() const
    589 {
    590   return currentMaterialIndex;
    591 }
    592 
    593 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    594 
    595 inline G4double G4VEmProcess::GetGammaEnergyCut()
    596 {
    597   return (*theCutsGamma)[currentMaterialIndex];
    598 }
    599 
    600 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    601 
    602 inline G4double G4VEmProcess::GetElectronEnergyCut()
    603 {
    604   return (*theCutsElectron)[currentMaterialIndex];
    605 }
    606 
    607 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    608 
    609 inline void G4VEmProcess::SetBuildTableFlag(G4bool val)
    610 {
    611   buildLambdaTable = val;
    612   if(!val) integral = false;
    613 }
    614 
    615 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    616 
    617 inline void G4VEmProcess::SetStartFromNullFlag(G4bool val)
    618 {
    619   startFromNull = val;
    620 }
    621 
    622 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    623 
    624 inline void G4VEmProcess::InitialiseStep(const G4Track& track)
    625 {
    626   preStepKinEnergy = track.GetKineticEnergy();
    627   DefineMaterial(track.GetMaterialCutsCouple());
    628   if (theNumberOfInteractionLengthLeft < 0.0) mfpKinEnergy = DBL_MAX;
    629 }
    630 
    631350//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    632351
     
    639358    mfpKinEnergy = DBL_MAX;
    640359  }
     360}
     361
     362//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     363
     364inline void G4VEmProcess::InitialiseStep(const G4Track& track)
     365{
     366  preStepKinEnergy = track.GetKineticEnergy();
     367  DefineMaterial(track.GetMaterialCutsCouple());
     368  if (theNumberOfInteractionLengthLeft < 0.0) mfpKinEnergy = DBL_MAX;
     369}
     370
     371//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     372
     373inline G4double G4VEmProcess::GetLambda(G4double& kineticEnergy,
     374                                        const G4MaterialCutsCouple* couple)
     375{
     376  DefineMaterial(couple);
     377  return GetCurrentLambda(kineticEnergy);
     378}
     379
     380//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     381
     382inline G4double G4VEmProcess::GetCurrentLambda(G4double e)
     383{
     384  G4double x = 0.0;
     385  if(theLambdaTable) x = GetLambdaFromTable(e);
     386  else               x = ComputeCurrentLambda(e);
     387  return x;
     388}
     389
     390//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     391
     392inline G4double G4VEmProcess::RecalculateLambda(G4double e,
     393                                                const G4MaterialCutsCouple* couple)
     394{
     395  DefineMaterial(couple);
     396  return ComputeCurrentLambda(e);
     397}
     398
     399//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     400
     401inline G4double G4VEmProcess::ComputeCurrentLambda(G4double e)
     402{
     403  G4VEmModel* currentModel = SelectModel(e);
     404  G4double x = 0.0;
     405  if(currentModel)
     406    x = currentModel->CrossSectionPerVolume(currentMaterial,particle,
     407                                            e,(*theCuts)[currentMaterialIndex]);
     408  return x;
     409}
     410
     411//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     412
     413inline G4double G4VEmProcess::GetLambdaFromTable(G4double e)
     414{
     415  G4bool b;
     416  return (((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b));
    641417}
    642418
     
    666442//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    667443
    668 inline G4double G4VEmProcess::GetLambdaFromTable(G4double e)
    669 {
    670   G4bool b;
    671   return (((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b));
    672 }
    673 
    674 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    675 
    676 inline G4double G4VEmProcess::GetCurrentLambda(G4double e)
    677 {
    678   G4double x = 0.0;
    679   if(theLambdaTable) x = GetLambdaFromTable(e);
    680   else               x = ComputeCurrentLambda(e);
     444inline G4double G4VEmProcess::MeanFreePath(const G4Track& track)
     445{
     446  DefineMaterial(track.GetMaterialCutsCouple());
     447  preStepLambda = GetCurrentLambda(track.GetKineticEnergy());
     448  G4double x = DBL_MAX;
     449  if(DBL_MIN < preStepLambda) x = 1.0/preStepLambda;
    681450  return x;
    682451}
     
    684453//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    685454
    686 inline G4double G4VEmProcess::ComputeCurrentLambda(G4double e)
    687 {
    688   SelectModel(e);
    689   G4double x = 0.0;
    690   if(currentModel) {
    691     x = currentModel->CrossSectionPerVolume(currentMaterial,particle,
    692                                             e,(*theCuts)[currentMaterialIndex]);
    693   }
    694   return x;
     455inline G4VEmModel* G4VEmProcess::SelectModel(G4double& kinEnergy)
     456{
     457  return modelManager->SelectModel(kinEnergy, currentMaterialIndex);
     458}
     459
     460//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     461
     462inline G4VEmModel* G4VEmProcess::SelectModelForMaterial(
     463                                   G4double kinEnergy, size_t& idxRegion) const
     464{
     465  return modelManager->SelectModel(kinEnergy, idxRegion);
     466}
     467
     468//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     469
     470inline const G4ParticleDefinition* G4VEmProcess::Particle() const
     471{
     472  return particle;
     473}
     474
     475//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     476
     477inline const G4ParticleDefinition* G4VEmProcess::SecondaryParticle() const
     478{
     479  return secondaryParticle;
     480}
     481
     482//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     483
     484inline G4double G4VEmProcess::GetGammaEnergyCut()
     485{
     486  return (*theCutsGamma)[currentMaterialIndex];
     487}
     488
     489//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     490
     491inline G4double G4VEmProcess::GetElectronEnergyCut()
     492{
     493  return (*theCutsElectron)[currentMaterialIndex];
     494}
     495
     496//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     497
     498inline void G4VEmProcess::SetLambdaFactor(G4double val)
     499{
     500  if(val > 0.0 && val <= 1.0) lambdaFactor = val;
     501}
     502
     503//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     504
     505inline G4VEmModel* G4VEmProcess::GetModelByIndex(G4int idx, G4bool ver)
     506{
     507  return modelManager->GetModel(idx, ver);
     508}
     509
     510//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     511
     512inline G4ParticleChangeForGamma* G4VEmProcess::GetParticleChange()
     513{
     514  return &fParticleChange;
     515}
     516
     517//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     518
     519inline void G4VEmProcess::SetParticle(const G4ParticleDefinition* p)
     520{
     521  particle = p;
     522}
     523
     524//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     525
     526inline void G4VEmProcess::SetSecondaryParticle(const G4ParticleDefinition* p)
     527{
     528  secondaryParticle = p;
     529}
     530
     531//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     532
     533inline void G4VEmProcess::AddEmModel(G4int order, G4VEmModel* p,
     534                                     const G4Region* region)
     535{
     536  G4VEmFluctuationModel* fm = 0;
     537  modelManager->AddEmModel(order, p, fm, region);
     538  if(p) p->SetParticleChange(pParticleChange);
     539}
     540
     541//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     542
     543inline void G4VEmProcess::SetModel(G4VEmModel* model)
     544{
     545  selectedModel = model;
     546}
     547
     548//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     549
     550inline G4VEmModel* G4VEmProcess::Model()
     551{
     552  return selectedModel;
     553}
     554
     555//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     556
     557inline void G4VEmProcess::UpdateEmModel(const G4String& nam,
     558                                        G4double emin, G4double emax)
     559{
     560  modelManager->UpdateEmModel(nam, emin, emax);
     561}
     562
     563//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     564
     565inline G4double G4VEmProcess::ComputeCrossSectionPerAtom(
     566                 G4double kineticEnergy, G4double Z, G4double A, G4double cut)
     567{
     568  G4VEmModel* model = SelectModel(kineticEnergy);
     569  return model->ComputeCrossSectionPerAtom(particle,kineticEnergy,Z,A,cut);
     570}
     571
     572//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     573
     574inline void G4VEmProcess::SetLambdaBinning(G4int nbins)
     575{
     576  nLambdaBins = nbins;
     577}
     578
     579//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     580
     581inline G4int G4VEmProcess::LambdaBinning() const
     582{
     583  return nLambdaBins;
     584}
     585
     586//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     587
     588inline void G4VEmProcess::SetMinKinEnergy(G4double e)
     589{
     590  minKinEnergy = e;
     591}
     592
     593//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     594
     595inline G4double G4VEmProcess::MinKinEnergy() const
     596{
     597  return minKinEnergy;
     598}
     599
     600//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     601
     602inline void G4VEmProcess::SetMaxKinEnergy(G4double e)
     603{
     604  maxKinEnergy = e;
     605}
     606
     607//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     608
     609inline G4double G4VEmProcess::MaxKinEnergy() const
     610{
     611  return maxKinEnergy;
     612}
     613
     614//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     615
     616inline void G4VEmProcess::SetPolarAngleLimit(G4double val)
     617{
     618  if(val < 0.0)     polarAngleLimit = 0.0;
     619  else if(val > pi) polarAngleLimit = pi;
     620  else              polarAngleLimit = val;
     621}
     622
     623//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     624
     625inline G4double G4VEmProcess::PolarAngleLimit() const
     626{
     627  return polarAngleLimit;
     628}
     629
     630//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     631
     632inline void G4VEmProcess::ActivateDeexcitation(G4bool, const G4Region*)
     633{}
     634
     635//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     636
     637inline const G4PhysicsTable* G4VEmProcess::LambdaTable() const
     638{
     639  return theLambdaTable;
     640}
     641
     642//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     643
     644inline void G4VEmProcess::SetIntegral(G4bool val)
     645{
     646  if(particle && particle != theGamma) integral = val;
     647  if(integral) buildLambdaTable = true;
     648}
     649
     650//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     651
     652inline G4bool G4VEmProcess::IsIntegral() const
     653{
     654  return integral;
     655}
     656
     657//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     658
     659inline void G4VEmProcess::SetBuildTableFlag(G4bool val)
     660{
     661  buildLambdaTable = val;
     662  if(!val) integral = false;
     663}
     664
     665//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     666
     667inline void G4VEmProcess::SetStartFromNullFlag(G4bool val)
     668{
     669  startFromNull = val;
     670}
     671
     672//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     673
     674inline void G4VEmProcess::SetApplyCuts(G4bool val)
     675{
     676  applyCuts = val;
     677}
     678
     679//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     680
     681inline size_t G4VEmProcess::CurrentMaterialCutsCoupleIndex() const
     682{
     683  return currentMaterialIndex;
    695684}
    696685
  • trunk/source/processes/electromagnetic/utils/include/G4VEnergyLossProcess.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEnergyLossProcess.hh,v 1.86 2009/02/19 09:57:36 vnivanch Exp $
     26// $Id: G4VEnergyLossProcess.hh,v 1.83 2008/09/12 16:19:01 vnivanch Exp $
    2727// GEANT4 tag $Name:
    2828//
     
    126126  virtual ~G4VEnergyLossProcess();
    127127
    128 private:
    129   // clean vectors and arrays
    130   void Clean();
    131 
    132128  //------------------------------------------------------------------------
    133129  // Virtual methods to be implemented in concrete processes
    134130  //------------------------------------------------------------------------
    135131
    136 public:
    137132  virtual G4bool IsApplicable(const G4ParticleDefinition& p) = 0;
    138133 
     
    148143  //------------------------------------------------------------------------
    149144
     145protected:
     146
    150147  virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*,
    151148                                    const G4Material*, G4double cut);
    152149
    153150  //------------------------------------------------------------------------
    154   // Virtual methods implementation common to all EM ContinuousDiscrete
    155   // processes. Further inheritance is not assumed
     151  // Virtual methods common to all EM ContinuousDiscrete processes
     152  // Further inheritance is not assumed
    156153  //------------------------------------------------------------------------
    157154
    158155public:
    159156
    160   // prepare all tables
     157  void PrintInfoDefinition();
     158
    161159  void PreparePhysicsTable(const G4ParticleDefinition&);
    162160
    163   // build all tables
    164161  void BuildPhysicsTable(const G4ParticleDefinition&);
    165162
    166   // build a table
    167   G4PhysicsTable* BuildDEDXTable(G4EmTableType tType = fRestricted);
    168 
    169   // build a table
    170   G4PhysicsTable* BuildLambdaTable(G4EmTableType tType = fRestricted);
    171 
    172   // summary printout after initialisation
    173   void PrintInfoDefinition();
    174 
    175   // Add subcutoff option for the region
    176   void ActivateSubCutoff(G4bool val, const G4Region* region = 0);
    177 
    178   // Activate deexcitation code for region
    179   void ActivateDeexcitation(G4bool, const G4Region* region = 0);
    180 
    181   // Step limit from AlongStep
    182163  G4double AlongStepGetPhysicalInteractionLength(const G4Track&,
    183164                                                 G4double  previousStepSize,
     
    186167                                                 G4GPILSelection* selection);
    187168
    188   // Step limit from cross section
    189169  G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
    190170                                                G4double   previousStepSize,
    191171                                                G4ForceCondition* condition);
    192172
    193   // AlongStep computations
    194173  G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&);
    195174
    196   // Sampling of secondaries in vicinity of geometrical boundary
    197   void SampleSubCutSecondaries(std::vector<G4Track*>&, const G4Step&,
    198                                G4VEmModel* model, G4int matIdx,
    199                                G4double& extraEdep);
    200 
    201   // PostStep sampling of secondaries
    202175  G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
    203176
    204   // Store all PhysicsTable in files.
    205   // Return false in case of any fatal failure at I/O 
     177  // Store PhysicsTable in a file.
     178  // Return false in case of failure at I/O
    206179  G4bool StorePhysicsTable(const G4ParticleDefinition*,
    207180                           const G4String& directory,
    208181                           G4bool ascii = false);
    209182
    210   // Retrieve all Physics from a files.
    211   // Return true if all the Physics Table are built.
    212   // Return false if any fatal failure.
     183  // Retrieve Physics from a file.
     184  // (return true if the Physics Table can be build by using file)
     185  // (return false if the process has no functionality or in case of failure)
     186  // File name should is constructed as processName+particleName and the
     187  // should be placed under the directory specifed by the argument.
    213188  G4bool RetrievePhysicsTable(const G4ParticleDefinition*,
    214189                              const G4String& directory,
    215190                              G4bool ascii);
    216191
    217 private:
    218   // store a table
    219   G4bool StoreTable(const G4ParticleDefinition* p,
    220                     G4PhysicsTable*, G4bool ascii,
    221                     const G4String& directory,
    222                     const G4String& tname);
    223 
    224   // retrieve a table
    225   G4bool RetrieveTable(const G4ParticleDefinition* p,
    226                        G4PhysicsTable*, G4bool ascii,
    227                        const G4String& directory,
    228                        const G4String& tname,
    229                        G4bool mandatory);
    230 
    231   //------------------------------------------------------------------------
    232   // Public interface to cross section, mfp and sampling of fluctuations
    233   // These methods are not used in run time
    234   //------------------------------------------------------------------------
    235 
    236 public:
    237   // access to dispersion of restricted energy loss
    238   G4double GetDEDXDispersion(const G4MaterialCutsCouple *couple,
    239                              const G4DynamicParticle* dp,
    240                              G4double length);
    241 
    242   // Access to cross section table
    243   G4double CrossSectionPerVolume(G4double kineticEnergy,
    244                                  const G4MaterialCutsCouple* couple);
    245 
    246   // access to cross section
    247   G4double MeanFreePath(const G4Track& track);
    248 
    249   // access to step limit
    250   G4double ContinuousStepLimit(const G4Track& track,
    251                                G4double previousStepSize,
    252                                G4double currentMinimumStep,
    253                                G4double& currentSafety);
    254 
    255192protected:
    256193
    257   // implementation of the pure virtual method
    258194  G4double GetMeanFreePath(const G4Track& track,
    259195                           G4double previousStepSize,
    260196                           G4ForceCondition* condition);
    261197
    262   // implementation of the pure virtual method
    263198  G4double GetContinuousStepLimit(const G4Track& track,
    264199                                  G4double previousStepSize,
     
    267202
    268203  //------------------------------------------------------------------------
    269   // Run time method which may be also used by derived processes
    270   //------------------------------------------------------------------------
    271 
    272   // creeation of an empty vector for cross section
    273   G4PhysicsVector* LambdaPhysicsVector(const G4MaterialCutsCouple*,
    274                                        G4double cut);
    275 
    276   inline G4ParticleChangeForLoss* GetParticleChange();
    277 
    278   inline size_t CurrentMaterialCutsCoupleIndex() const;
    279 
    280   inline G4double GetCurrentRange() const;
    281 
    282   //------------------------------------------------------------------------
    283   // Specific methods to set, access, modify models
    284   //------------------------------------------------------------------------
    285 
    286   // Select model in run time
    287   inline void SelectModel(G4double kinEnergy);
     204  // Specific methods for along/post step EM processes
     205  //------------------------------------------------------------------------
    288206
    289207public:
    290   // Select model by energy and region index
    291   inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy,
    292                                             size_t& idx) const;
    293 
    294   // Add EM model coupled with fluctuation model for region, smaller value
    295   // of order defines which pair of models will be selected for a given
    296   // energy interval 
    297   inline void AddEmModel(G4int, G4VEmModel*,
    298                          G4VEmFluctuationModel* fluc = 0,
    299                          const G4Region* region = 0);
    300 
    301   // Define new energy range for the model identified by the name
    302   inline void UpdateEmModel(const G4String&, G4double, G4double);
    303 
    304   // Assign a model to a process
    305   inline void SetEmModel(G4VEmModel*, G4int index=1);
    306  
    307   // return the assigned model
    308   inline G4VEmModel* EmModel(G4int index=1);
    309  
    310   // Access to models
    311   inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false);
    312 
    313   inline G4int NumberOfModels();
    314 
    315   // Assign a fluctuation model to a process
    316   inline void SetFluctModel(G4VEmFluctuationModel*);
    317  
    318   // return the assigned fluctuation model
    319   inline G4VEmFluctuationModel* FluctModel();
    320    
    321   //------------------------------------------------------------------------
    322   // Define and access particle type
    323   //------------------------------------------------------------------------
    324 
    325 protected:
    326   inline void SetParticle(const G4ParticleDefinition* p);
    327   inline void SetSecondaryParticle(const G4ParticleDefinition* p);
    328 
    329 public:
    330   inline void SetBaseParticle(const G4ParticleDefinition* p);
    331   inline const G4ParticleDefinition* Particle() const;
    332   inline const G4ParticleDefinition* BaseParticle() const;
    333   inline const G4ParticleDefinition* SecondaryParticle() const;
    334 
    335   //------------------------------------------------------------------------
    336   // Get/set parameters to configure the process at initialisation time
    337   //------------------------------------------------------------------------
    338 
    339   // Add subcutoff process (bremsstrahlung) to sample secondary
    340   // particle production in vicinity of the geometry boundary
     208
    341209  void AddCollaborativeProcess(G4VEnergyLossProcess*);
    342210
    343   inline void SetLossFluctuations(G4bool val);
    344   inline void SetRandomStep(G4bool val);
    345 
    346   inline void SetIntegral(G4bool val);
    347   inline G4bool IsIntegral() const;
    348 
    349   // Set/Get flag "isIonisation"
    350   inline void SetIonisation(G4bool val);
    351   inline G4bool IsIonisationProcess() const;
    352 
    353   // Redefine parameteters for stepping control
    354   //
    355   inline void SetLinearLossLimit(G4double val);
    356   inline void SetMinSubRange(G4double val);
    357   inline void SetLambdaFactor(G4double val);
    358   inline void SetStepFunction(G4double v1, G4double v2);
    359 
    360   inline G4int NumberOfSubCutoffRegions() const;
    361   inline G4int NumberOfDERegions() const;
    362 
    363   //------------------------------------------------------------------------
    364   // Specific methods to path Physics Tables to the process
    365   //------------------------------------------------------------------------
     211  void SampleSubCutSecondaries(std::vector<G4Track*>&, const G4Step&,
     212                               G4VEmModel* model, G4int matIdx,
     213                               G4double& extraEdep);
     214
     215  G4double GetDEDXDispersion(const G4MaterialCutsCouple *couple,
     216                             const G4DynamicParticle* dp,
     217                             G4double length);
     218
     219  //------------------------------------------------------------------------
     220  // Specific methods to build and access Physics Tables
     221  //------------------------------------------------------------------------
     222
     223  G4PhysicsTable* BuildDEDXTable(G4EmTableType tType = fRestricted);
     224
     225  G4PhysicsTable* BuildLambdaTable(G4EmTableType tType = fRestricted);
    366226
    367227  void SetDEDXTable(G4PhysicsTable* p, G4EmTableType tType);
    368228  void SetCSDARangeTable(G4PhysicsTable* pRange);
    369229  void SetRangeTableForLoss(G4PhysicsTable* p);
     230  void SetInverseRangeTable(G4PhysicsTable* p);
    370231  void SetSecondaryRangeTable(G4PhysicsTable* p);
    371   void SetInverseRangeTable(G4PhysicsTable* p);
    372232
    373233  void SetLambdaTable(G4PhysicsTable* p);
     
    391251  // Max kinetic energy for tables
    392252  inline void SetMaxKinEnergyForCSDARange(G4double e);
    393 
    394   // Return values for given G4MaterialCutsCouple
    395   inline G4double GetDEDX(G4double& kineticEnergy, const G4MaterialCutsCouple*);
    396   inline G4double GetDEDXForSubsec(G4double& kineticEnergy,
    397                                    const G4MaterialCutsCouple*);
    398   inline G4double GetRange(G4double& kineticEnergy, const G4MaterialCutsCouple*);
    399   inline G4double GetCSDARange(G4double& kineticEnergy, const G4MaterialCutsCouple*);
    400   inline G4double GetRangeForLoss(G4double& kineticEnergy, const G4MaterialCutsCouple*);
    401   inline G4double GetKineticEnergy(G4double& range, const G4MaterialCutsCouple*);
    402   inline G4double GetLambda(G4double& kineticEnergy, const G4MaterialCutsCouple*);
    403 
    404   inline G4bool TablesAreBuilt() const;
    405253
    406254  // Access to specific tables
     
    416264  inline G4PhysicsTable* SubLambdaTable();
    417265
     266  // Return values for given G4MaterialCutsCouple
     267  inline G4double GetDEDX(G4double& kineticEnergy, const G4MaterialCutsCouple*);
     268  inline G4double GetDEDXForSubsec(G4double& kineticEnergy,
     269                                   const G4MaterialCutsCouple*);
     270  inline G4double GetRange(G4double& kineticEnergy, const G4MaterialCutsCouple*);
     271  inline G4double GetCSDARange(G4double& kineticEnergy, const G4MaterialCutsCouple*);
     272  inline G4double GetRangeForLoss(G4double& kineticEnergy, const G4MaterialCutsCouple*);
     273  inline G4double GetKineticEnergy(G4double& range, const G4MaterialCutsCouple*);
     274  inline G4double GetLambda(G4double& kineticEnergy, const G4MaterialCutsCouple*);
     275
     276  inline G4bool TablesAreBuilt() const;
     277
     278  //------------------------------------------------------------------------
     279  // Define and access particle type
     280  //------------------------------------------------------------------------
     281
     282  inline void SetBaseParticle(const G4ParticleDefinition* p);
     283  inline const G4ParticleDefinition* Particle() const;
     284  inline const G4ParticleDefinition* BaseParticle() const;
     285  inline const G4ParticleDefinition* SecondaryParticle() const;
     286
     287  //------------------------------------------------------------------------
     288  // Specific methods to set, access, modify models
     289  //------------------------------------------------------------------------
     290
     291  // Add EM model coupled with fluctuation model for the region
     292  inline void AddEmModel(G4int, G4VEmModel*,
     293                         G4VEmFluctuationModel* fluc = 0,
     294                         const G4Region* region = 0);
     295
     296  // Assign a model to a process
     297  inline void SetEmModel(G4VEmModel*, G4int index=1);
     298 
     299  // return the assigned model
     300  inline G4VEmModel* EmModel(G4int index=1);
     301 
     302  // Assign a fluctuation model to a process
     303  inline void SetFluctModel(G4VEmFluctuationModel*);
     304 
     305  // return the assigned fluctuation model
     306  inline G4VEmFluctuationModel* FluctModel();
     307   
     308  // Define new energy range for the model identified by the name
     309  inline void UpdateEmModel(const G4String&, G4double, G4double);
     310
     311  // Access to models
     312  inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false);
     313
     314  inline G4int NumberOfModels();
     315
     316  //------------------------------------------------------------------------
     317  // Get/set parameters used for simulation of energy loss
     318  //------------------------------------------------------------------------
     319
     320  inline void SetLossFluctuations(G4bool val);
     321  inline void SetRandomStep(G4bool val);
     322  inline void SetIntegral(G4bool val);
     323  inline G4bool IsIntegral() const;
     324
     325  // Set/Get flag "isIonisation"
     326  inline void SetIonisation(G4bool val);
     327  inline G4bool IsIonisationProcess() const;
     328
     329  // Redefine parameteters for stepping control
     330  //
     331  inline void SetLinearLossLimit(G4double val);
     332  inline void SetMinSubRange(G4double val);
     333  inline void SetStepFunction(G4double v1, G4double v2);
     334  inline void SetLambdaFactor(G4double val);
     335
     336
     337  // Add subcutoff option for the region
     338  void ActivateSubCutoff(G4bool val, const G4Region* region = 0);
     339
     340  inline G4int NumberOfSubCutoffRegions() const;
     341
     342  // Activate deexcitation code
     343  virtual void ActivateDeexcitation(G4bool, const G4Region* region = 0);
     344
     345  //------------------------------------------------------------------------
     346  // Public interface to helper functions
     347  //------------------------------------------------------------------------
     348
     349  inline
     350  G4VEmModel* SelectModelForMaterial(G4double kinEnergy, size_t& idx) const;
     351
     352  inline G4double MeanFreePath(const G4Track& track);
     353
     354  inline G4double ContinuousStepLimit(const G4Track& track,
     355                                      G4double previousStepSize,
     356                                      G4double currentMinimumStep,
     357                                      G4double& currentSafety);
     358
    418359  //------------------------------------------------------------------------
    419360  // Run time method for simulation of ionisation
     
    426367  inline void SetDynamicMassCharge(G4double massratio, G4double charge2ratio);
    427368
     369  // Access to cross section table
     370  G4double CrossSectionPerVolume(G4double kineticEnergy,
     371                                 const G4MaterialCutsCouple* couple);
     372
     373protected:
     374
     375  G4PhysicsVector* LambdaPhysicsVector(const G4MaterialCutsCouple*,
     376                                       G4double cut);
     377
     378  inline G4ParticleChangeForLoss* GetParticleChange();
     379
     380  inline void SetParticle(const G4ParticleDefinition* p);
     381
     382  inline void SetSecondaryParticle(const G4ParticleDefinition* p);
     383
     384  inline void SelectModel(G4double kinEnergy);
     385
     386  inline size_t CurrentMaterialCutsCoupleIndex() const;
     387
     388  inline G4double GetCurrentRange() const;
     389
    428390private:
     391
     392  //------------------------------------------------------------------------
     393  // Management of tables
     394  //------------------------------------------------------------------------
     395
     396  void Clear();
     397
     398  G4bool StoreTable(const G4ParticleDefinition* p,
     399                    G4PhysicsTable*, G4bool ascii,
     400                    const G4String& directory,
     401                    const G4String& tname);
     402
     403  G4bool RetrieveTable(const G4ParticleDefinition* p,
     404                       G4PhysicsTable*, G4bool ascii,
     405                       const G4String& directory,
     406                       const G4String& tname,
     407                       G4bool mandatory);
    429408
    430409  // define material and indexes
    431410  inline void DefineMaterial(const G4MaterialCutsCouple* couple);
    432411
    433   //------------------------------------------------------------------------
    434   // Compute values using scaling relation, mass and charge of based particle
    435   //------------------------------------------------------------------------
    436 
     412  // Returnd values for scaled energy using mass of the base particle
     413  //
    437414  inline G4double GetDEDXForScaledEnergy(G4double scaledKinEnergy);
    438415  inline G4double GetSubDEDXForScaledEnergy(G4double scaledKinEnergy);
     
    441418  inline G4double GetScaledRangeForScaledEnergy(G4double scaledKinEnergy);
    442419  inline G4double GetLimitScaledRangeForScaledEnergy(G4double scaledKinEnergy);
     420  inline G4double GetLambdaForScaledEnergy(G4double scaledKinEnergy);
    443421  inline G4double ScaledKinEnergyForLoss(G4double range);
    444   inline G4double GetLambdaForScaledEnergy(G4double scaledKinEnergy);
    445422  inline void ComputeLambdaForScaledEnergy(G4double scaledKinEnergy);
    446423
    447424  // hide  assignment operator
     425
    448426  G4VEnergyLossProcess(G4VEnergyLossProcess &);
    449427  G4VEnergyLossProcess & operator=(const G4VEnergyLossProcess &right);
     
    466444  G4VEmFluctuationModel*                fluctModel;
    467445  std::vector<const G4Region*>          scoffRegions;
    468   std::vector<const G4Region*>          deRegions;
    469446  G4int                                 nSCoffRegions;
    470   G4int                                 nDERegions;
    471   G4bool*                               idxSCoffRegions;
    472   G4bool*                               idxDERegions;
     447  G4int*                                idxSCoffRegions;
    473448
    474449  std::vector<G4VEnergyLossProcess*>    scProcesses;
     
    518493  G4bool   isIonisation;
    519494  G4bool   useSubCutoff;
    520   G4bool   useDeexcitation;
    521495
    522496protected:
     
    557531//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    558532
    559 inline G4ParticleChangeForLoss* G4VEnergyLossProcess::GetParticleChange()
    560 {
    561   return &fParticleChange;
    562 }
    563 
    564 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    565 
    566 inline size_t G4VEnergyLossProcess::CurrentMaterialCutsCoupleIndex() const
    567 {
    568   return currentMaterialIndex;
    569 }
    570 
    571 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    572  
    573 inline G4double G4VEnergyLossProcess::GetCurrentRange() const
    574 {
    575   return fRange;
    576 }
    577 
    578 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    579 
    580 inline void G4VEnergyLossProcess::SelectModel(G4double kinEnergy)
    581 {
    582   currentModel = modelManager->SelectModel(kinEnergy, currentMaterialIndex);
    583   currentModel->SetCurrentCouple(currentCouple);
    584 }
    585 
    586 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    587 
    588 inline G4VEmModel* G4VEnergyLossProcess::SelectModelForMaterial(
    589                    G4double kinEnergy, size_t& idx) const
    590 {
    591   return modelManager->SelectModel(kinEnergy, idx);
    592 }
    593 
    594 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    595 
    596 inline
    597 void G4VEnergyLossProcess::AddEmModel(G4int order, G4VEmModel* p,
    598                                       G4VEmFluctuationModel* fluc,
    599                                       const G4Region* region)
    600 {
    601   modelManager->AddEmModel(order, p, fluc, region);
    602   if(p) p->SetParticleChange(pParticleChange, fluc);
    603 }
    604 
    605 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    606 
    607 inline void G4VEnergyLossProcess::UpdateEmModel(const G4String& nam,
    608                                                 G4double emin, G4double emax)
    609 {
    610   modelManager->UpdateEmModel(nam, emin, emax);
    611 }
    612 
    613 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    614 
    615 inline void G4VEnergyLossProcess::SetEmModel(G4VEmModel* p, G4int index)
    616 {
    617   G4int n = emModels.size();
    618   if(index >= n) for(G4int i=n; i<index+1; i++) {emModels.push_back(0);}
    619   emModels[index] = p;
    620 }
    621 
    622 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    623 
    624 inline G4VEmModel* G4VEnergyLossProcess::EmModel(G4int index)
    625 {
    626   G4VEmModel* p = 0;
    627   if(index >= 0 && index <  G4int(emModels.size())) p = emModels[index];
    628   return p;
    629 }
    630 
    631 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    632 
    633 inline
    634 G4VEmModel* G4VEnergyLossProcess::GetModelByIndex(G4int idx, G4bool ver)
    635 {
    636   return modelManager->GetModel(idx, ver);
    637 }
    638 
    639 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    640 
    641 inline G4int G4VEnergyLossProcess::NumberOfModels()
    642 {
    643   return modelManager->NumberOfModels();
    644 }
    645 
    646 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    647 
    648 inline void G4VEnergyLossProcess::SetFluctModel(G4VEmFluctuationModel* p)
    649 {
    650   fluctModel = p;
    651 }
    652 
    653 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    654 
    655 inline G4VEmFluctuationModel* G4VEnergyLossProcess::FluctModel()
    656 {
    657   return fluctModel;
    658 }
    659 
    660 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    661 
    662 inline void G4VEnergyLossProcess::SetParticle(const G4ParticleDefinition* p)
    663 {
    664   particle = p;
    665 }
    666 
    667 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    668 
    669 inline void G4VEnergyLossProcess::SetSecondaryParticle(const G4ParticleDefinition* p)
    670 {
    671   secondaryParticle = p;
    672 }
    673 
    674 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    675 
    676 inline void G4VEnergyLossProcess::SetBaseParticle(const G4ParticleDefinition* p)
    677 {
    678   baseParticle = p;
    679 }
    680 
    681 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    682 
    683 inline const G4ParticleDefinition* G4VEnergyLossProcess::Particle() const
    684 {
    685   return particle;
    686 }
    687 
    688 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    689 
    690 inline const G4ParticleDefinition* G4VEnergyLossProcess::BaseParticle() const
    691 {
    692   return baseParticle;
    693 }
    694 
    695 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    696 
    697 inline const G4ParticleDefinition* G4VEnergyLossProcess::SecondaryParticle() const
    698 {
    699   return secondaryParticle;
    700 }
    701 
    702 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    703 
    704 inline void G4VEnergyLossProcess::SetLossFluctuations(G4bool val)
    705 {
    706   lossFluctuationFlag = val;
    707 }
    708 
    709 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    710 
    711 inline void G4VEnergyLossProcess::SetRandomStep(G4bool val)
    712 {
    713   rndmStepFlag = val;
    714 }
    715 
    716 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    717 
    718 inline void G4VEnergyLossProcess::SetIntegral(G4bool val)
    719 {
    720   integral = val;
    721 }
    722 
    723 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    724  
    725 inline G4bool G4VEnergyLossProcess::IsIntegral() const
    726 {
    727   return integral;
    728 }
    729 
    730 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    731 
    732 inline void G4VEnergyLossProcess::SetIonisation(G4bool val)
    733 {
    734   isIonisation = val;
    735   if(val) aGPILSelection = CandidateForSelection;
    736   else    aGPILSelection = NotCandidateForSelection;
    737 }
    738 
    739 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    740 
    741 inline G4bool G4VEnergyLossProcess::IsIonisationProcess() const
    742 {
    743   return isIonisation;
    744 }
    745 
    746 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    747 
    748 inline void G4VEnergyLossProcess::SetLinearLossLimit(G4double val)
    749 {
    750   linLossLimit = val;
    751 }
    752 
    753 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    754 
    755 inline void G4VEnergyLossProcess::SetMinSubRange(G4double val)
    756 {
    757   minSubRange = val;
    758 }
    759 
    760 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    761 
    762 inline void G4VEnergyLossProcess::SetLambdaFactor(G4double val)
    763 {
    764   if(val > 0.0 && val <= 1.0) lambdaFactor = val;
    765 }
    766 
    767 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    768 
    769 void G4VEnergyLossProcess::SetStepFunction(G4double v1, G4double v2)
    770 {
    771   dRoverRange = v1;
    772   finalRange = v2;
    773   if (dRoverRange > 0.999) dRoverRange = 1.0;
    774   currentCouple = 0;
    775   mfpKinEnergy  = DBL_MAX;
    776 }
    777 
    778 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    779 
    780 inline G4int G4VEnergyLossProcess::NumberOfSubCutoffRegions() const
    781 {
    782   return nSCoffRegions;
    783 }
    784 
    785 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    786 
    787 inline G4int G4VEnergyLossProcess::NumberOfDERegions() const
    788 {
    789   return nDERegions;
    790 }
    791 
    792 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    793 
    794 inline void G4VEnergyLossProcess::SetDEDXBinning(G4int nbins)
    795 {
    796   nBins = nbins;
    797 }
    798 
    799 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    800 
    801 inline void G4VEnergyLossProcess::SetLambdaBinning(G4int nbins)
    802 {
    803   nBins = nbins;
    804 }
    805 
    806 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    807 
    808 inline void G4VEnergyLossProcess::SetDEDXBinningForCSDARange(G4int nbins)
    809 {
    810   nBinsCSDA = nbins;
    811 }
    812 
    813 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    814 
    815 inline void G4VEnergyLossProcess::SetMinKinEnergy(G4double e)
    816 {
    817   minKinEnergy = e;
    818 }
    819 
    820 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    821 
    822 inline G4double G4VEnergyLossProcess::MinKinEnergy() const
    823 {
    824   return minKinEnergy;
    825 }
    826 
    827 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    828 
    829 inline void G4VEnergyLossProcess::SetMaxKinEnergy(G4double e)
    830 {
    831   maxKinEnergy = e;
    832   if(e < maxKinEnergyCSDA) maxKinEnergyCSDA = e;
    833 }
    834 
    835 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    836 
    837 inline G4double G4VEnergyLossProcess::MaxKinEnergy() const
    838 {
    839   return maxKinEnergy;
    840 }
    841 
    842 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    843 
    844 inline void G4VEnergyLossProcess::SetMaxKinEnergyForCSDARange(G4double e)
    845 {
    846   maxKinEnergyCSDA = e;
     533inline void G4VEnergyLossProcess::DefineMaterial(
     534            const G4MaterialCutsCouple* couple)
     535{
     536  if(couple != currentCouple) {
     537    currentCouple   = couple;
     538    currentMaterial = couple->GetMaterial();
     539    currentMaterialIndex = couple->GetIndex();
     540    mfpKinEnergy = DBL_MAX;
     541  }
    847542}
    848543
     
    863558  DefineMaterial(couple);
    864559  return GetSubDEDXForScaledEnergy(kineticEnergy*massRatio);
     560}
     561
     562//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     563
     564inline G4double G4VEnergyLossProcess::GetDEDXForScaledEnergy(G4double e)
     565{
     566  G4bool b;
     567  G4double x =
     568    ((*theDEDXTable)[currentMaterialIndex]->GetValue(e, b))*chargeSqRatio;
     569  if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
     570  return x;
     571}
     572
     573//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     574
     575inline G4double G4VEnergyLossProcess::GetSubDEDXForScaledEnergy(G4double e)
     576{
     577  G4bool b;
     578  G4double x =
     579    ((*theDEDXSubTable)[currentMaterialIndex]->GetValue(e, b))*chargeSqRatio;
     580  if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
     581  return x;
     582}
     583
     584//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     585
     586inline G4double G4VEnergyLossProcess::GetIonisationForScaledEnergy(G4double e)
     587{
     588  G4bool b;
     589  G4double x = 0.0;
     590  //  if(theIonisationTable) {
     591  x = ((*theIonisationTable)[currentMaterialIndex]->GetValue(e, b))
     592    *chargeSqRatio;
     593  if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
     594  //}
     595  return x;
     596}
     597
     598//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     599
     600inline
     601G4double G4VEnergyLossProcess::GetSubIonisationForScaledEnergy(G4double e)
     602{
     603  G4bool b;
     604  G4double x = 0.0;
     605  //if(theIonisationSubTable) {
     606  x = ((*theIonisationSubTable)[currentMaterialIndex]->GetValue(e, b))
     607    *chargeSqRatio;
     608  if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
     609  //}
     610  return x;
    865611}
    866612
     
    897643//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    898644
    899 inline G4double G4VEnergyLossProcess::GetRangeForLoss(
    900                 G4double& kineticEnergy,
    901                 const G4MaterialCutsCouple* couple)
    902 {
    903   DefineMaterial(couple);
    904   G4double x = DBL_MAX;
    905   if(theRangeTableForLoss)
    906     x = GetScaledRangeForScaledEnergy(kineticEnergy*massRatio)*reduceFactor;
    907   //  G4cout << "Range from " << GetProcessName()
    908   //         << "  e= " << kineticEnergy << " r= " << x << G4endl;
    909   return x;
    910 }
    911 
    912 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    913 
    914 inline G4double G4VEnergyLossProcess::GetKineticEnergy(
    915                 G4double& range,
    916                 const G4MaterialCutsCouple* couple)
    917 {
    918   DefineMaterial(couple);
    919   G4double r = range/reduceFactor;
    920   G4double e = ScaledKinEnergyForLoss(r)/massRatio;
    921   return e;
    922 }
    923 
    924 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    925 
    926 inline G4double G4VEnergyLossProcess::GetLambda(G4double& kineticEnergy,
    927                                           const G4MaterialCutsCouple* couple)
    928 {
    929   DefineMaterial(couple);
    930   G4double x = 0.0;
    931   if(theLambdaTable) x = GetLambdaForScaledEnergy(kineticEnergy*massRatio);
    932   return x;
    933 }
    934 
    935 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    936 
    937 inline G4bool G4VEnergyLossProcess::TablesAreBuilt() const
    938 {
    939   return  tablesAreBuilt;
    940 }
    941 
    942 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    943 
    944 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTable() const
    945 {
    946   return theDEDXTable;
    947 }
    948 
    949 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    950 
    951 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTableForSubsec() const
    952 {
    953   return theDEDXSubTable;
    954 }
    955 
    956 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    957 
    958 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXunRestrictedTable() const
    959 {
    960   return theDEDXunRestrictedTable;
    961 }
    962 
    963 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    964 
    965 inline G4PhysicsTable* G4VEnergyLossProcess::IonisationTable() const
    966 {
    967   G4PhysicsTable* t = theDEDXTable;
    968   if(theIonisationTable) t = theIonisationTable;
    969   return t;
    970 }
    971 
    972 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    973 
    974 inline G4PhysicsTable* G4VEnergyLossProcess::IonisationTableForSubsec() const
    975 {
    976   G4PhysicsTable* t = theDEDXSubTable;
    977   if(theIonisationSubTable) t = theIonisationSubTable;
    978   return t;
    979 }
    980 
    981 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    982 
    983 inline G4PhysicsTable* G4VEnergyLossProcess::CSDARangeTable() const
    984 {
    985   return theCSDARangeTable;
    986 }
    987 
    988 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    989 
    990 inline G4PhysicsTable* G4VEnergyLossProcess::RangeTableForLoss() const
    991 {
    992   return theRangeTableForLoss;
    993 }
    994 
    995 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    996 
    997 inline G4PhysicsTable* G4VEnergyLossProcess::InverseRangeTable() const
    998 {
    999   return theInverseRangeTable;
    1000 }
    1001 
    1002 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1003 
    1004 inline G4PhysicsTable* G4VEnergyLossProcess::LambdaTable()
    1005 {
    1006   return theLambdaTable;
    1007 }
    1008 
    1009 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1010 
    1011 inline G4PhysicsTable* G4VEnergyLossProcess::SubLambdaTable()
    1012 {
    1013   return theSubLambdaTable;
    1014 }
    1015 
    1016 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1017 
    1018 inline G4double G4VEnergyLossProcess::SampleRange()
    1019 {
    1020   G4double e = amu_c2*preStepKinEnergy/particle->GetPDGMass();
    1021   G4bool b;
    1022   G4double s = fRange*std::pow(10.,vstrag->GetValue(e,b));
    1023   G4double x = fRange + G4RandGauss::shoot(0.0,s);
    1024   if(x > 0.0) fRange = x;
    1025   return fRange;
    1026 }
    1027 
    1028 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1029 
    1030 inline void G4VEnergyLossProcess::SetDynamicMassCharge(G4double massratio,
    1031                                                        G4double charge2ratio)
    1032 {
    1033   massRatio     = massratio;
    1034   chargeSqRatio = charge2ratio;
    1035   reduceFactor  = 1.0/(chargeSqRatio*massRatio);
    1036 }
    1037 
    1038 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1039 
    1040 inline void G4VEnergyLossProcess::DefineMaterial(
    1041             const G4MaterialCutsCouple* couple)
    1042 {
    1043   if(couple != currentCouple) {
    1044     currentCouple   = couple;
    1045     currentMaterial = couple->GetMaterial();
    1046     currentMaterialIndex = couple->GetIndex();
    1047     mfpKinEnergy = DBL_MAX;
    1048   }
    1049 }
    1050 
    1051 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1052 
    1053 inline G4double G4VEnergyLossProcess::GetDEDXForScaledEnergy(G4double e)
    1054 {
    1055   G4bool b;
    1056   G4double x =
    1057     ((*theDEDXTable)[currentMaterialIndex]->GetValue(e, b))*chargeSqRatio;
    1058   if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
    1059   return x;
    1060 }
    1061 
    1062 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1063 
    1064 inline G4double G4VEnergyLossProcess::GetSubDEDXForScaledEnergy(G4double e)
    1065 {
    1066   G4bool b;
    1067   G4double x =
    1068     ((*theDEDXSubTable)[currentMaterialIndex]->GetValue(e, b))*chargeSqRatio;
    1069   if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
    1070   return x;
    1071 }
    1072 
    1073 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1074 
    1075 inline G4double G4VEnergyLossProcess::GetIonisationForScaledEnergy(G4double e)
    1076 {
    1077   G4bool b;
    1078   G4double x = 0.0;
    1079   //  if(theIonisationTable) {
    1080   x = ((*theIonisationTable)[currentMaterialIndex]->GetValue(e, b))
    1081     *chargeSqRatio;
    1082   if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
    1083   //}
    1084   return x;
    1085 }
    1086 
    1087 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1088 
    1089 inline
    1090 G4double G4VEnergyLossProcess::GetSubIonisationForScaledEnergy(G4double e)
    1091 {
    1092   G4bool b;
    1093   G4double x = 0.0;
    1094   //if(theIonisationSubTable) {
    1095   x = ((*theIonisationSubTable)[currentMaterialIndex]->GetValue(e, b))
    1096     *chargeSqRatio;
    1097   if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
    1098   //}
    1099   return x;
    1100 }
    1101 
    1102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1103 
    1104 inline G4double G4VEnergyLossProcess::GetScaledRangeForScaledEnergy(G4double e)
    1105 {
    1106   G4bool b;
    1107   G4double x = ((*theRangeTableForLoss)[currentMaterialIndex])->GetValue(e, b);
    1108   if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
    1109   return x;
    1110 }
    1111 
    1112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1113 
    1114645inline G4double G4VEnergyLossProcess::GetLimitScaledRangeForScaledEnergy(
    1115646                G4double e)
     
    1126657  }
    1127658  return x;
     659}
     660
     661//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     662
     663inline G4double G4VEnergyLossProcess::GetRangeForLoss(
     664                G4double& kineticEnergy,
     665                const G4MaterialCutsCouple* couple)
     666{
     667  DefineMaterial(couple);
     668  G4double x = DBL_MAX;
     669  if(theRangeTableForLoss)
     670    x = GetScaledRangeForScaledEnergy(kineticEnergy*massRatio)*reduceFactor;
     671  //  G4cout << "Range from " << GetProcessName()
     672  //         << "  e= " << kineticEnergy << " r= " << x << G4endl;
     673  return x;
     674}
     675
     676//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     677
     678inline G4double G4VEnergyLossProcess::GetScaledRangeForScaledEnergy(G4double e)
     679{
     680  G4bool b;
     681  G4double x = ((*theRangeTableForLoss)[currentMaterialIndex])->GetValue(e, b);
     682  if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);
     683  return x;
     684}
     685
     686//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     687
     688inline G4double G4VEnergyLossProcess::GetKineticEnergy(
     689                G4double& range,
     690                const G4MaterialCutsCouple* couple)
     691{
     692  DefineMaterial(couple);
     693  G4double r = range/reduceFactor;
     694  G4double e = ScaledKinEnergyForLoss(r)/massRatio;
     695  return e;
    1128696}
    1129697
     
    1143711  }
    1144712  return e;
     713}
     714
     715//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     716
     717inline G4double G4VEnergyLossProcess::GetLambda(G4double& kineticEnergy,
     718                                          const G4MaterialCutsCouple* couple)
     719{
     720  DefineMaterial(couple);
     721  G4double x = 0.0;
     722  if(theLambdaTable) x = GetLambdaForScaledEnergy(kineticEnergy*massRatio);
     723  return x;
    1145724}
    1146725
     
    1179758//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1180759
     760inline G4double G4VEnergyLossProcess::ContinuousStepLimit(
     761         const G4Track& track, G4double x, G4double y, G4double& z)
     762{
     763  G4GPILSelection sel;
     764  return AlongStepGetPhysicalInteractionLength(track, x, y, z, &sel);
     765}
     766
     767//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     768
     769inline G4double G4VEnergyLossProcess::SampleRange()
     770{
     771  G4double e = amu_c2*preStepKinEnergy/particle->GetPDGMass();
     772  G4bool b;
     773  G4double s = fRange*std::pow(10.,vstrag->GetValue(e,b));
     774  G4double x = fRange + G4RandGauss::shoot(0.0,s);
     775  if(x > 0.0) fRange = x;
     776  return fRange;
     777}
     778
     779//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     780
     781inline G4double G4VEnergyLossProcess::MeanFreePath(const G4Track& track)
     782{
     783  DefineMaterial(track.GetMaterialCutsCouple());
     784  preStepLambda = GetLambdaForScaledEnergy(track.GetKineticEnergy()*massRatio);
     785  G4double x = DBL_MAX;
     786  if(DBL_MIN < preStepLambda) x = 1.0/preStepLambda;
     787  return x;
     788}
     789
     790//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     791
     792inline G4double G4VEnergyLossProcess::MinPrimaryEnergy(
     793                const G4ParticleDefinition*, const G4Material*, G4double cut)
     794{
     795  return cut;
     796}
     797
     798//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     799
     800inline void G4VEnergyLossProcess::SelectModel(G4double kinEnergy)
     801{
     802  currentModel = modelManager->SelectModel(kinEnergy, currentMaterialIndex);
     803}
     804
     805//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     806
     807inline G4VEmModel* G4VEnergyLossProcess::SelectModelForMaterial(
     808                   G4double kinEnergy, size_t& idx) const
     809{
     810  return modelManager->SelectModel(kinEnergy, idx);
     811}
     812
     813//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     814
     815inline G4ParticleChangeForLoss* G4VEnergyLossProcess::GetParticleChange()
     816{
     817  return &fParticleChange;
     818}
     819
     820//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     821
     822inline const G4ParticleDefinition* G4VEnergyLossProcess::Particle() const
     823{
     824  return particle;
     825}
     826
     827//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     828
     829inline const G4ParticleDefinition* G4VEnergyLossProcess::BaseParticle() const
     830{
     831  return baseParticle;
     832}
     833
     834//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     835
     836inline const G4ParticleDefinition* G4VEnergyLossProcess::SecondaryParticle() const
     837{
     838  return secondaryParticle;
     839}
     840
     841//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     842
     843inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTable() const
     844{
     845  return theDEDXTable;
     846}
     847
     848//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     849
     850inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTableForSubsec() const
     851{
     852  return theDEDXSubTable;
     853}
     854
     855//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     856
     857inline G4PhysicsTable* G4VEnergyLossProcess::DEDXunRestrictedTable() const
     858{
     859  return theDEDXunRestrictedTable;
     860}
     861
     862//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     863
     864inline G4PhysicsTable* G4VEnergyLossProcess::IonisationTable() const
     865{
     866  G4PhysicsTable* t = theDEDXTable;
     867  if(theIonisationTable) t = theIonisationTable;
     868  return t;
     869}
     870
     871//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     872
     873inline G4PhysicsTable* G4VEnergyLossProcess::IonisationTableForSubsec() const
     874{
     875  G4PhysicsTable* t = theDEDXSubTable;
     876  if(theIonisationSubTable) t = theIonisationSubTable;
     877  return t;
     878}
     879
     880//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     881
     882inline G4PhysicsTable* G4VEnergyLossProcess::CSDARangeTable() const
     883{
     884  return theCSDARangeTable;
     885}
     886
     887//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     888
     889inline G4PhysicsTable* G4VEnergyLossProcess::RangeTableForLoss() const
     890{
     891  return theRangeTableForLoss;
     892}
     893
     894//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     895
     896inline G4PhysicsTable* G4VEnergyLossProcess::InverseRangeTable() const
     897{
     898  return theInverseRangeTable;
     899}
     900
     901//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     902
     903inline G4PhysicsTable* G4VEnergyLossProcess::LambdaTable()
     904{
     905  return theLambdaTable;
     906}
     907
     908//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     909
     910inline G4PhysicsTable* G4VEnergyLossProcess::SubLambdaTable()
     911{
     912  return theSubLambdaTable;
     913}
     914
     915//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     916 
     917inline G4bool G4VEnergyLossProcess::IsIntegral() const
     918{
     919  return integral;
     920}
     921
     922//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     923
     924inline size_t G4VEnergyLossProcess::CurrentMaterialCutsCoupleIndex() const
     925{
     926  return currentMaterialIndex;
     927}
     928
     929//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     930
     931inline void G4VEnergyLossProcess::SetDynamicMassCharge(G4double massratio,
     932                                                       G4double charge2ratio)
     933{
     934  massRatio     = massratio;
     935  chargeSqRatio = charge2ratio;
     936  reduceFactor  = 1.0/(chargeSqRatio*massRatio);
     937}
     938
     939//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     940 
     941inline G4double G4VEnergyLossProcess::GetCurrentRange() const
     942{
     943  return fRange;
     944}
     945
     946//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     947
     948inline
     949void G4VEnergyLossProcess::AddEmModel(G4int order, G4VEmModel* p,
     950                                      G4VEmFluctuationModel* fluc,
     951                                      const G4Region* region)
     952{
     953  modelManager->AddEmModel(order, p, fluc, region);
     954  if(p) p->SetParticleChange(pParticleChange, fluc);
     955}
     956
     957//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     958
     959inline
     960G4VEmModel* G4VEnergyLossProcess::GetModelByIndex(G4int idx, G4bool ver)
     961{
     962  return modelManager->GetModel(idx, ver);
     963}
     964
     965//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     966
     967inline G4int G4VEnergyLossProcess::NumberOfModels()
     968{
     969  return modelManager->NumberOfModels();
     970}
     971
     972//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     973
     974inline void G4VEnergyLossProcess::SetEmModel(G4VEmModel* p, G4int index)
     975{
     976  G4int n = emModels.size();
     977  if(index >= n) for(G4int i=n; i<index+1; i++) {emModels.push_back(0);}
     978  emModels[index] = p;
     979}
     980
     981//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     982
     983inline G4VEmModel* G4VEnergyLossProcess::EmModel(G4int index)
     984{
     985  G4VEmModel* p = 0;
     986  if(index >= 0 && index <  G4int(emModels.size())) p = emModels[index];
     987  return p;
     988}
     989
     990//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     991
     992inline void G4VEnergyLossProcess::SetFluctModel(G4VEmFluctuationModel* p)
     993{
     994  fluctModel = p;
     995}
     996
     997//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     998
     999inline G4VEmFluctuationModel* G4VEnergyLossProcess::FluctModel()
     1000{
     1001  return fluctModel;
     1002}
     1003
     1004//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1005
     1006inline void G4VEnergyLossProcess::UpdateEmModel(const G4String& nam,
     1007                                                G4double emin, G4double emax)
     1008{
     1009  modelManager->UpdateEmModel(nam, emin, emax);
     1010}
     1011
     1012//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1013
     1014inline void G4VEnergyLossProcess::SetIntegral(G4bool val)
     1015{
     1016  integral = val;
     1017}
     1018
     1019//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1020
     1021inline void G4VEnergyLossProcess::SetParticle(const G4ParticleDefinition* p)
     1022{
     1023  particle = p;
     1024}
     1025
     1026//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1027
     1028inline void G4VEnergyLossProcess::SetBaseParticle(const G4ParticleDefinition* p)
     1029{
     1030  baseParticle = p;
     1031}
     1032
     1033//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1034
     1035inline void G4VEnergyLossProcess::SetSecondaryParticle(const G4ParticleDefinition* p)
     1036{
     1037  secondaryParticle = p;
     1038}
     1039
     1040//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1041
     1042inline void G4VEnergyLossProcess::SetLinearLossLimit(G4double val)
     1043{
     1044  linLossLimit = val;
     1045}
     1046
     1047//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1048
     1049inline void G4VEnergyLossProcess::SetLossFluctuations(G4bool val)
     1050{
     1051  lossFluctuationFlag = val;
     1052}
     1053
     1054//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1055
     1056inline void G4VEnergyLossProcess::SetRandomStep(G4bool val)
     1057{
     1058  rndmStepFlag = val;
     1059}
     1060
     1061//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1062
     1063inline void G4VEnergyLossProcess::SetMinSubRange(G4double val)
     1064{
     1065  minSubRange = val;
     1066}
     1067
     1068//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1069
     1070inline G4bool G4VEnergyLossProcess::TablesAreBuilt() const
     1071{
     1072  return  tablesAreBuilt;
     1073}
     1074
     1075//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1076
     1077inline G4int G4VEnergyLossProcess::NumberOfSubCutoffRegions() const
     1078{
     1079  return nSCoffRegions;
     1080}
     1081
     1082//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1083
     1084inline void G4VEnergyLossProcess::SetDEDXBinning(G4int nbins)
     1085{
     1086  nBins = nbins;
     1087}
     1088
     1089//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1090
     1091inline void G4VEnergyLossProcess::SetLambdaBinning(G4int nbins)
     1092{
     1093  nBins = nbins;
     1094}
     1095
     1096//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1097
     1098inline void G4VEnergyLossProcess::SetDEDXBinningForCSDARange(G4int nbins)
     1099{
     1100  nBinsCSDA = nbins;
     1101}
     1102
     1103//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1104
     1105inline G4double G4VEnergyLossProcess::MinKinEnergy() const
     1106{
     1107  return minKinEnergy;
     1108}
     1109
     1110//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1111
     1112inline void G4VEnergyLossProcess::SetMinKinEnergy(G4double e)
     1113{
     1114  minKinEnergy = e;
     1115}
     1116
     1117//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1118
     1119inline void G4VEnergyLossProcess::SetMaxKinEnergy(G4double e)
     1120{
     1121  maxKinEnergy = e;
     1122  if(e < maxKinEnergyCSDA) maxKinEnergyCSDA = e;
     1123}
     1124
     1125//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1126
     1127inline void G4VEnergyLossProcess::SetMaxKinEnergyForCSDARange(G4double e)
     1128{
     1129  maxKinEnergyCSDA = e;
     1130}
     1131
     1132//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1133
     1134inline G4double G4VEnergyLossProcess::MaxKinEnergy() const
     1135{
     1136  return maxKinEnergy;
     1137}
     1138
     1139//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1140
     1141inline void G4VEnergyLossProcess::SetLambdaFactor(G4double val)
     1142{
     1143  if(val > 0.0 && val <= 1.0) lambdaFactor = val;
     1144}
     1145
     1146//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1147
     1148inline void G4VEnergyLossProcess::SetIonisation(G4bool val)
     1149{
     1150  isIonisation = val;
     1151  if(val) aGPILSelection = CandidateForSelection;
     1152  else    aGPILSelection = NotCandidateForSelection;
     1153}
     1154
     1155//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1156
     1157inline G4bool G4VEnergyLossProcess::IsIonisationProcess() const
     1158{
     1159  return isIonisation;
     1160}
     1161
     1162//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1163
     1164void G4VEnergyLossProcess::SetStepFunction(G4double v1, G4double v2)
     1165{
     1166  dRoverRange = v1;
     1167  finalRange = v2;
     1168  if (dRoverRange > 0.999) dRoverRange = 1.0;
     1169  currentCouple = 0;
     1170  mfpKinEnergy  = DBL_MAX;
     1171}
     1172
     1173//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1174
    11811175#endif
  • trunk/source/processes/electromagnetic/utils/include/G4VMscModel.hh

    r966 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VMscModel.hh,v 1.8 2009/02/24 09:56:03 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VMscModel.hh,v 1.4 2008/03/10 10:39:28 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    5454#include "G4MscStepLimitType.hh"
    5555#include "globals.hh"
    56 #include "G4ThreeVector.hh"
    57 #include "G4Track.hh"
    58 #include "G4SafetyHelper.hh"
    59 
    60 class G4ParticleChangeForMSC;
    6156
    6257class G4VMscModel : public G4VEmModel
     
    6964  virtual ~G4VMscModel();
    7065
    71   // empty
    72   virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
    73                                  const G4MaterialCutsCouple*,
    74                                  const G4DynamicParticle*,
    75                                  G4double tmin,
    76                                  G4double tmax);
    77 
    78   //================================================================
    79   //  Set parameters of multiple scattering models
    80   //================================================================
    81  
    8266  inline void SetStepLimitType(G4MscStepLimitType);
    8367
     
    9074  inline void SetSkin(G4double);
    9175
    92   inline void SetSampleZ(G4bool);
    93 
    94 protected:
    95 
    96   // initialisation of interface with geometry
    97   void InitialiseSafetyHelper();
    98 
    99   // shift point of the track PostStep
    100   void ComputeDisplacement(G4ParticleChangeForMSC*, 
    101                            const G4ThreeVector& displDir,
    102                            G4double displacement,
    103                            G4double postsafety);
    104 
    105   // compute safety
    106   inline G4double ComputeSafety(const G4ThreeVector& position, G4double limit);
    107 
    108   // compute linear distance to a geometry boundary
    109   inline G4double ComputeGeomLimit(const G4Track& position, G4double& presafety,
    110                                    G4double limit);
    111 
    11276private:
    11377
     
    11579  G4VMscModel & operator=(const  G4VMscModel &right);
    11680  G4VMscModel(const  G4VMscModel&);
    117 
    118   G4SafetyHelper* safetyHelper;
    11981
    12082protected:
     
    12688  G4double dtrl;
    12789  G4double lambdalimit;
    128   G4double geommax;
    12990
    13091  G4MscStepLimitType steppingAlgorithm;
     
    173134//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    174135
    175 inline void G4VMscModel::SetSampleZ(G4bool val)
    176 {
    177   samplez = val;
    178 }
    179 
    180 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    181 
    182 inline G4double G4VMscModel::ComputeSafety(const G4ThreeVector& position,
    183                                            G4double)
    184 {
    185   return safetyHelper->ComputeSafety(position);
    186 }
    187 
    188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    189 
    190 inline G4double G4VMscModel::ComputeGeomLimit(const G4Track& track,
    191                                               G4double& presafety,
    192                                               G4double limit)
    193 {
    194   G4double res = geommax;
    195   if(track.GetVolume() != safetyHelper->GetWorldVolume()) {
    196     res = safetyHelper->CheckNextStep(
    197           track.GetStep()->GetPreStepPoint()->GetPosition(),
    198           track.GetMomentumDirection(),
    199           limit, presafety);
    200   }
    201   return res;
    202 }
    203 
    204 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    205 
    206136#endif
    207137
  • trunk/source/processes/electromagnetic/utils/include/G4VMultipleScattering.hh

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VMultipleScattering.hh,v 1.55 2009/02/18 12:19:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VMultipleScattering.hh,v 1.54 2008/07/31 13:01:26 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    145145                              G4bool ascii);
    146146
     147  //------------------------------------------------------------------------
     148  // Specific methods for msc processes
     149  //------------------------------------------------------------------------
     150
    147151  // The function overloads the corresponding function of the base
    148152  // class.It limits the step near to boundaries only
    149153  // and invokes the method GetMscContinuousStepLimit at every step.
    150   G4double AlongStepGetPhysicalInteractionLength(
     154  virtual G4double AlongStepGetPhysicalInteractionLength(
    151155                                            const G4Track&,
    152156                                            G4double  previousStepSize,
     
    188192  inline G4PhysicsTable* LambdaTable() const;
    189193
    190   // access particle type
     194  //------------------------------------------------------------------------
     195  // Define and access particle type
     196  //------------------------------------------------------------------------
     197
    191198  inline const G4ParticleDefinition* Particle() const;
     199  inline void SetParticle(const G4ParticleDefinition*);
    192200
    193201  //------------------------------------------------------------------------
     
    195203  //------------------------------------------------------------------------
    196204
    197 protected:
    198   // Select model in run time
    199   inline G4VEmModel* SelectModel(G4double kinEnergy);
    200 
    201 public:
    202   // Select model in run time
     205  inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0);
     206
    203207  inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy,
    204208                                            size_t& idxRegion) const;
    205209
    206   // Add model for region, smaller value of order defines which
    207   // model will be selected for a given energy interval 
    208   inline void AddEmModel(G4int order, G4VEmModel*, const G4Region* region = 0);
    209 
    210   // Access to models by index
     210  // Access to models
    211211  inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false);
    212212
    213213  //------------------------------------------------------------------------
    214   // Get/Set parameters for simulation of multiple scattering
    215   //------------------------------------------------------------------------
    216 
    217   inline G4bool LateralDisplasmentFlag() const;
     214  // Set parameters for simulation of multiple scattering
     215  //------------------------------------------------------------------------
     216
    218217  inline void SetLateralDisplasmentFlag(G4bool val);
    219218
    220   inline G4double Skin() const;
    221219  inline void SetSkin(G4double val);
    222220
    223   inline G4double RangeFactor() const;
    224221  inline void SetRangeFactor(G4double val);
    225222
    226   inline G4double GeomFactor() const;
    227223  inline void SetGeomFactor(G4double val);
    228224
    229   inline G4double PolarAngleLimit() const;
    230225  inline void SetPolarAngleLimit(G4double val);
    231226
    232   inline G4MscStepLimitType StepLimitType() const;
    233227  inline void SetStepLimitType(G4MscStepLimitType val);
    234 
    235   //------------------------------------------------------------------------
    236   // Run time methods
    237   //------------------------------------------------------------------------
    238228
    239229protected:
     
    243233                           G4double,
    244234                           G4ForceCondition* condition);
     235
     236  //------------------------------------------------------------------------
     237  // Run time methods
     238  //------------------------------------------------------------------------
    245239
    246240  // This method is not used for tracking, it returns step limit
     
    259253                                            G4double& currentSafety);
    260254
     255  inline G4VEmModel* SelectModel(G4double kinEnergy);
     256  // Select concrete model
     257
     258  inline const G4MaterialCutsCouple* CurrentMaterialCutsCouple() const;
     259
    261260  // define current material
    262261  inline void DefineMaterial(const G4MaterialCutsCouple* couple);
    263262
    264   inline const G4MaterialCutsCouple* CurrentMaterialCutsCouple() const;
     263  //------------------------------------------------------------------------
     264  // Access parameters of multiple scattering
     265  //------------------------------------------------------------------------
    265266
    266267  inline G4ParticleChangeForMSC* GetParticleChange();
    267268
     269  inline G4double Skin() const;
     270
     271  inline G4double RangeFactor() const;
     272
     273  inline G4double GeomFactor() const;
     274
     275  inline G4double PolarAngleLimit() const;
     276
     277  inline G4MscStepLimitType StepLimitType() const;
     278
     279  inline G4bool LateralDisplasmentFlag() const;
    268280
    269281private:
    270282
    271283  // hide  assignment operator
     284
    272285  G4VMultipleScattering(G4VMultipleScattering &);
    273286  G4VMultipleScattering & operator=(const G4VMultipleScattering &right);
     
    317330//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    318331
    319 inline G4double G4VMultipleScattering::ContinuousStepLimit(
    320                                        const G4Track& track,
    321                                        G4double previousStepSize,
    322                                        G4double currentMinimalStep,
    323                                        G4double& currentSafety)
    324 {
    325   return GetMscContinuousStepLimit(track,previousStepSize,currentMinimalStep,
    326                                    currentSafety);
    327 }
    328 
    329 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    330 
    331 inline void G4VMultipleScattering::SetBinning(G4int nbins)
    332 {
    333   nBins = nbins;
    334 }
    335 
    336 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    337 
    338 inline G4int G4VMultipleScattering::Binning() const
    339 {
    340   return nBins;
    341 }
    342 
    343 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    344 
    345 inline void G4VMultipleScattering::SetMinKinEnergy(G4double e)
    346 {
    347   minKinEnergy = e;
    348 }
    349 
    350 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    351 
    352 inline G4double G4VMultipleScattering::MinKinEnergy() const
    353 {
    354   return minKinEnergy;
    355 }
    356 
    357 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    358 
    359 inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e)
    360 {
    361   maxKinEnergy = e;
    362 }
    363 
    364 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    365 
    366 inline G4double G4VMultipleScattering::MaxKinEnergy() const
    367 {
    368   return maxKinEnergy;
    369 }
    370 
    371 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    372 
    373 inline  void G4VMultipleScattering::SetBuildLambdaTable(G4bool val)
    374 {
    375   buildLambdaTable = val;
    376 }
    377 
    378 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    379 
    380 inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const
    381 {
    382   return theLambdaTable;
    383 }
    384 
    385 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    386 
    387 inline  const G4ParticleDefinition* G4VMultipleScattering::Particle() const
    388 {
    389   return currentParticle;
    390 }
    391 
    392 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    393 
    394 inline void G4VMultipleScattering::AddEmModel(G4int order, G4VEmModel* p,
    395                                               const G4Region* region)
    396 {
    397   G4VEmFluctuationModel* fm = 0;
    398   modelManager->AddEmModel(order, p, fm, region);
    399   if(p) p->SetParticleChange(pParticleChange);
    400 }
    401 
    402 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    403 
    404 inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy)
    405 {
    406   return modelManager->SelectModel(kinEnergy, currentMaterialIndex);
    407 }
    408 
    409 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    410 
    411 inline G4VEmModel* G4VMultipleScattering::SelectModelForMaterial(
    412                    G4double kinEnergy, size_t& idxRegion) const
    413 {
    414   return modelManager->SelectModel(kinEnergy, idxRegion);
    415 }
    416 
    417 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    418 
    419332inline
    420 G4VEmModel* G4VMultipleScattering::GetModelByIndex(G4int idx, G4bool ver)
    421 {
    422   return modelManager->GetModel(idx, ver);
    423 }
    424 
    425 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    426 
    427 inline  G4bool G4VMultipleScattering::LateralDisplasmentFlag() const
    428 {
    429   return latDisplasment;
    430 }
    431 
    432 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    433 
    434 inline  void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val)
    435 {
    436   latDisplasment = val;
    437 }
    438 
    439 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    440 
    441 inline  G4double G4VMultipleScattering::Skin() const
    442 {
    443   return skin;
    444 }
    445 
    446 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    447 
    448 inline  void G4VMultipleScattering::SetSkin(G4double val)
    449 {
    450   if(val < 1.0) skin = 0.0;
    451   else          skin = val;
    452 }
    453 
    454 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    455 
    456 inline  G4double G4VMultipleScattering::RangeFactor() const
    457 {
    458   return facrange;
    459 }
    460 
    461 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    462 
    463 inline  void G4VMultipleScattering::SetRangeFactor(G4double val)
    464 {
    465   if(val > 0.0) facrange = val;
    466 }
    467 
    468 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    469 
    470 inline  G4double G4VMultipleScattering::GeomFactor() const
    471 {
    472   return facgeom;
    473 }
    474 
    475 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    476 
    477 inline  void G4VMultipleScattering::SetGeomFactor(G4double val)
    478 {
    479   if(val > 0.0) facgeom = val;
    480 }
    481 
    482 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    483 
    484 inline  G4double G4VMultipleScattering::PolarAngleLimit() const
    485 {
    486   return polarAngleLimit;
    487 }
    488 
    489 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    490 
    491 inline  void G4VMultipleScattering::SetPolarAngleLimit(G4double val)
    492 {
    493   if(val < 0.0)     polarAngleLimit = 0.0;
    494   else if(val > pi) polarAngleLimit = pi;
    495   else              polarAngleLimit = val;
    496 }
    497 
    498 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    499 
    500 inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const
    501 {
    502   return stepLimit;
    503 }
    504 
    505 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    506 
    507 inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val)
    508 {
    509   stepLimit = val;
    510   if(val == fMinimal) facrange = 0.2;
    511 }
    512 
    513 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    514 
    515 inline
    516 G4double G4VMultipleScattering::GetLambda(const G4ParticleDefinition* p,
    517                                           G4double& e)
    518 {
    519   G4double x;
    520   if(theLambdaTable) {
    521     G4bool b;
    522     x = ((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b);
    523   } else {
    524     x = currentModel->CrossSection(currentCouple,p,e);
     333void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple)
     334{
     335  if(couple != currentCouple) {
     336    currentCouple   = couple;
     337    currentMaterialIndex = couple->GetIndex();
    525338  }
    526   if(x > DBL_MIN) x = 1./x;
    527   else            x = DBL_MAX;
    528   return x;
    529339}
    530340
     
    554364//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    555365
     366inline G4double G4VMultipleScattering::ContinuousStepLimit(
     367                                       const G4Track& track,
     368                                       G4double previousStepSize,
     369                                       G4double currentMinimalStep,
     370                                       G4double& currentSafety)
     371{
     372  return GetMscContinuousStepLimit(track,previousStepSize,currentMinimalStep,
     373                                   currentSafety);
     374}
     375
     376//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     377
    556378inline
    557 void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple)
    558 {
    559   if(couple != currentCouple) {
    560     currentCouple   = couple;
    561     currentMaterialIndex = couple->GetIndex();
     379G4double G4VMultipleScattering::GetLambda(const G4ParticleDefinition* p,
     380                                          G4double& e)
     381{
     382  G4double x;
     383  if(theLambdaTable) {
     384    G4bool b;
     385    x = ((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b);
     386  } else {
     387    x = currentModel->CrossSection(currentCouple,p,e);
    562388  }
    563 }
    564 
    565 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    566 
    567 inline const G4MaterialCutsCouple*
    568 G4VMultipleScattering::CurrentMaterialCutsCouple() const
     389  if(x > DBL_MIN) x = 1./x;
     390  else            x = DBL_MAX;
     391  return x;
     392}
     393
     394//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     395
     396inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy)
     397{
     398  return modelManager->SelectModel(kinEnergy, currentMaterialIndex);
     399}
     400
     401//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     402
     403inline G4VEmModel* G4VMultipleScattering::SelectModelForMaterial(
     404                   G4double kinEnergy, size_t& idxRegion) const
     405{
     406  return modelManager->SelectModel(kinEnergy, idxRegion);
     407}
     408
     409//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     410
     411inline void G4VMultipleScattering::SetBinning(G4int nbins)
     412{
     413  nBins = nbins;
     414}
     415
     416//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     417
     418inline G4int G4VMultipleScattering::Binning() const
     419{
     420  return nBins;
     421}
     422
     423//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     424
     425inline void G4VMultipleScattering::SetMinKinEnergy(G4double e)
     426{
     427  minKinEnergy = e;
     428}
     429
     430//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     431
     432inline G4double G4VMultipleScattering::MinKinEnergy() const
     433{
     434  return minKinEnergy;
     435}
     436
     437//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     438
     439inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e)
     440{
     441  maxKinEnergy = e;
     442}
     443
     444//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     445
     446inline G4double G4VMultipleScattering::MaxKinEnergy() const
     447{
     448  return maxKinEnergy;
     449}
     450
     451//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     452
     453inline  G4bool G4VMultipleScattering::LateralDisplasmentFlag() const
     454{
     455  return latDisplasment;
     456}
     457
     458//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     459
     460inline  void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val)
     461{
     462  latDisplasment = val;
     463}
     464
     465//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     466
     467inline G4ParticleChangeForMSC* G4VMultipleScattering::GetParticleChange()
     468{
     469  return &fParticleChange;
     470}
     471
     472//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     473
     474inline  G4double G4VMultipleScattering::Skin() const
     475{
     476  return skin;
     477}
     478
     479//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     480
     481inline  void G4VMultipleScattering::SetSkin(G4double val)
     482{
     483  if(val < 1.0) skin = 0.0;
     484  else          skin = val;
     485}
     486
     487//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     488
     489inline  G4double G4VMultipleScattering::RangeFactor() const
     490{
     491  return facrange;
     492}
     493
     494//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     495
     496inline  void G4VMultipleScattering::SetRangeFactor(G4double val)
     497{
     498  if(val > 0.0) facrange = val;
     499}
     500
     501//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     502
     503inline  G4double G4VMultipleScattering::GeomFactor() const
     504{
     505  return facgeom;
     506}
     507
     508//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     509
     510inline  void G4VMultipleScattering::SetGeomFactor(G4double val)
     511{
     512  if(val > 0.0) facgeom = val;
     513}
     514
     515//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     516
     517inline  G4double G4VMultipleScattering::PolarAngleLimit() const
     518{
     519  return polarAngleLimit;
     520}
     521
     522//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     523
     524inline  void G4VMultipleScattering::SetPolarAngleLimit(G4double val)
     525{
     526  if(val < 0.0)     polarAngleLimit = 0.0;
     527  else if(val > pi) polarAngleLimit = pi;
     528  else              polarAngleLimit = val;
     529}
     530
     531//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     532
     533inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const
     534{
     535  return stepLimit;
     536}
     537
     538//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     539
     540inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val)
     541{
     542  stepLimit = val;
     543  if(val == fMinimal) facrange = 0.2;
     544}
     545
     546//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     547
     548inline  void G4VMultipleScattering::SetBuildLambdaTable(G4bool val)
     549{
     550  buildLambdaTable = val;
     551}
     552
     553//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     554
     555inline  const G4ParticleDefinition* G4VMultipleScattering::Particle() const
     556{
     557  return currentParticle;
     558}
     559
     560//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     561
     562inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const
     563{
     564  return theLambdaTable;
     565}
     566
     567//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     568
     569inline
     570const G4MaterialCutsCouple* G4VMultipleScattering::CurrentMaterialCutsCouple() const
    569571{
    570572  return currentCouple;
     
    573575//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    574576
    575 inline G4ParticleChangeForMSC* G4VMultipleScattering::GetParticleChange()
    576 {
    577   return &fParticleChange;
     577inline void G4VMultipleScattering::AddEmModel(G4int order, G4VEmModel* p,
     578                                              const G4Region* region)
     579{
     580  G4VEmFluctuationModel* fm = 0;
     581  modelManager->AddEmModel(order, p, fm, region);
     582  if(p) p->SetParticleChange(pParticleChange);
     583}
     584
     585//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     586
     587inline
     588G4VEmModel* G4VMultipleScattering::GetModelByIndex(G4int idx, G4bool ver)
     589{
     590  return modelManager->GetModel(idx, ver);
    578591}
    579592
  • trunk/source/processes/electromagnetic/utils/src/G4EmCalculator.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4EmCalculator.cc,v 1.46 2009/02/24 09:56:03 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4EmCalculator.cc,v 1.44 2008/08/03 18:47:15 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    755755    if(currentProcess) currentProcessName = currentProcess->GetProcessName();
    756756
    757     if(p->GetParticleType() == "nucleus"
    758        && currentParticleName != "deuteron" 
    759        && currentParticleName != "triton"
    760        && currentParticleName != "alpha+"
    761        && currentParticleName != "helium"
    762        && currentParticleName != "hydrogen"
    763       ) {
     757    if(p->GetParticleType() == "nucleus" &&
     758       currentParticleName  != "deuteron" && currentParticleName != "triton") {
    764759      baseParticle = theGenericIon;
    765760      massRatio = baseParticle->GetPDGMass()/p->GetPDGMass();
  • trunk/source/processes/electromagnetic/utils/src/G4EmConfigurator.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4EmConfigurator.cc,v 1.4 2009/02/26 11:33:33 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4EmConfigurator.cc,v 1.3 2008/11/21 12:30:29 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    117117  G4String fname = "";
    118118  if(fm) fname = fm->GetName();
    119   G4String mname = "";
    120   if(mod) mname = mod->GetName();
    121   AddModelForRegion(particleName, processName, mname, regionName,
     119  AddModelForRegion(particleName, processName, mod->GetName(), regionName,
    122120                    emin, emax, fname);
    123121}
     
    205203
    206204        for(G4int i=0; i<nm; i++) {
    207           G4String mname = "";
    208           if(modelList[i]) mname = modelList[i]->GetName();
    209           G4String fname = "";
    210           if(flucModelList[i]) fname = flucModelList[i]->GetName();
    211           if(modelName == mname && flucModelName == fname &&
     205          if(modelName == modelList[i]->GetName() &&
    212206             (particleList[i] == "" || particleList[i] == particleName) ) {
    213207            mod  = modelList[i];
     
    220214
    221215        if(!mod) {
    222 
    223           // set fluctuation model for ionisation processes
    224           if(fluc && ptype == eloss) {
    225             G4VEnergyLossProcess* p = reinterpret_cast<G4VEnergyLossProcess*>(proc);
    226             p->SetFluctModel(fluc);
    227          
    228           } else {
    229             G4cout << "### G4EmConfigurator WARNING: fails to find a model <"
    230                    << modelName << "> for process <"
    231                    << processName << "> and " << particleName
    232                    << G4endl;
    233             if(flucModelName != "") {
    234               G4cout << "                            fluctuation model <"
    235                      << flucModelName << G4endl;
    236             }
    237           }
     216          G4cout << "### G4EmConfigurator WARNING: fails to find a model <"
     217                 << modelName << "> for process <"
     218                 << processName << "> and " << particleName
     219                 << G4endl;
     220          if(flucModelName != "") 
     221            G4cout << "                            fluctuation model <"
     222                   << flucModelName << G4endl;
    238223        } else {
    239224
  • trunk/source/processes/electromagnetic/utils/src/G4EmProcessOptions.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4EmProcessOptions.cc,v 1.26 2009/02/18 14:43:27 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4EmProcessOptions.cc,v 1.24 2008/04/17 10:33:27 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    5959#include "G4VMultipleScattering.hh"
    6060#include "G4Region.hh"
    61 #include "G4RegionStore.hh"
    6261
    6362//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     
    393392//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    394393
    395 void G4EmProcessOptions::ActivateDeexcitation(const G4String& pname,
    396                                               G4bool val,
    397                                               const G4String& reg)
    398 {
    399   G4RegionStore* regionStore = G4RegionStore::GetInstance();
    400   const G4Region* r = 0;
    401   if(reg == "" || reg == "World") {
    402     r = regionStore->GetRegion("DefaultRegionForTheWorld", false);
    403   } else {
    404     r = regionStore->GetRegion(reg, false);
    405   }
    406   if(!r) {
    407     G4cout << "G4EmProcessOptions::ActivateDeexcitation ERROR: G4Region <"
    408            << reg << "> not found, the command ignored" << G4endl;
    409     return;
    410   }
    411 
    412   const std::vector<G4VEnergyLossProcess*>& v =
    413         theManager->GetEnergyLossProcessVector();
    414   std::vector<G4VEnergyLossProcess*>::const_iterator itr;
    415   for(itr = v.begin(); itr != v.end(); itr++) {
    416     G4VEnergyLossProcess* p = *itr;
    417     if(p) {
    418       if(pname == p->GetProcessName()) p->ActivateDeexcitation(val,r);
    419     }
    420   }
    421   const std::vector<G4VEmProcess*>& w =
    422         theManager->GetEmProcessVector();
    423   std::vector<G4VEmProcess*>::const_iterator itp;
    424   for(itp = w.begin(); itp != w.end(); itp++) {
    425     G4VEmProcess* q = *itp;
    426     if(q) {
    427       if(pname == q->GetProcessName()) q->ActivateDeexcitation(val,r);
    428     }
     394void G4EmProcessOptions::ActivateDeexcitation(G4bool val, const G4Region* r)
     395{
     396  const std::vector<G4VEnergyLossProcess*>& v =
     397        theManager->GetEnergyLossProcessVector();
     398  std::vector<G4VEnergyLossProcess*>::const_iterator itr;
     399  for(itr = v.begin(); itr != v.end(); itr++) {
     400    G4VEnergyLossProcess* p = *itr;
     401    if(p) p->ActivateDeexcitation(val,r);
     402  }
     403  const std::vector<G4VEmProcess*>& w =
     404        theManager->GetEmProcessVector();
     405  std::vector<G4VEmProcess*>::const_iterator itp;
     406  for(itp = w.begin(); itp != w.end(); itp++) {
     407    G4VEmProcess* q = *itp;
     408    if(q) q->ActivateDeexcitation(val,r);
    429409  }
    430410}
  • trunk/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc

    r961 r991  
    2525//
    2626//
    27 // $Id: G4EnergyLossMessenger.cc,v 1.37 2009/02/18 14:43:27 vnivanch Exp $
    28 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     27// $Id: G4EnergyLossMessenger.cc,v 1.35 2008/10/20 13:27:45 vnivanch Exp $
     28// GEANT4 tag $Name: geant4-09-02 $
    2929//
    3030// -------------------------------------------------------------------
     
    178178  aplCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
    179179
    180   deexCmd = new G4UIcommand("/process/em/deexcitation",this);
    181   deexCmd->SetGuidance("Set deexcitation flag per process and G4Region.");
    182   deexCmd->SetGuidance("  procName  : process name");
    183   deexCmd->SetGuidance("  flag      : flag");
    184   deexCmd->SetGuidance("  regName   : G4Region name");
    185 
    186   G4UIparameter* pName = new G4UIparameter("pName",'s',false);
    187   deexCmd->SetParameter(pName);
    188 
    189   G4UIparameter* flag = new G4UIparameter("flag",'s',false);
    190   deexCmd->SetParameter(flag);
    191 
    192   G4UIparameter* regName = new G4UIparameter("regName",'s',false);
    193   deexCmd->SetParameter(regName);
    194 
    195180  dedxCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsDEDX",this);
    196181  dedxCmd->SetGuidance("Set number of bins for DEDX tables");
     
    274259  delete MinSubSecCmd;
    275260  delete StepFuncCmd;
    276   delete deexCmd;
    277261  delete eLossDirectory;
    278262  delete mscDirectory;
     
    336320  }
    337321
    338   if (command == deexCmd) {
    339     G4String s1 (""), s2(""), s3("");
    340     G4bool b = false;
    341     std::istringstream is(newValue);
    342     is >> s1 >> s2 >> s3;
    343     if(s2 == "true") b = true;
    344     opt->ActivateDeexcitation(s1,b,s3);
    345   }
    346 
    347322  if (command == mscCmd) {
    348323    if(newValue == "Minimal")
  • trunk/source/processes/electromagnetic/utils/src/G4LossTableBuilder.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4LossTableBuilder.cc,v 1.28 2009/02/18 16:24:47 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4LossTableBuilder.cc,v 1.27 2008/07/22 15:55:15 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    132132      G4double dedx1  = pv->GetValue(elow, b);
    133133
    134       //G4cout << "nbins= " << nbins << " dedx1= " << dedx1 << G4endl;
    135 
    136134      // protection for specific cases dedx=0
    137135      if(dedx1 == 0.0) {
    138         for (size_t k=1; k<nbins-1; k++) {
     136        for (size_t k=1; k<nbins; k++) {
    139137          bin0++;
    140138          elow  = pv->GetLowEdgeEnergy(k);
     
    145143      }
    146144
    147       //G4cout << "nbins= " << nbins << " elow= " << elow << " ehigh= " << ehigh << G4endl;
    148145      // initialisation of a new vector
    149146      G4PhysicsLogVector* v = new G4PhysicsLogVector(elow, ehigh, nbins);
    150       // dedx is exect zero
    151       if(nbins <= 2) {
    152         v->PutValue(0,1000.);
    153         v->PutValue(1,2000.);
    154         G4PhysicsTableHelper::SetPhysicsVector(rangeTable, i, v);
    155         return;
    156       }
    157147      v->SetSpline(splineFlag);
    158148
  • trunk/source/processes/electromagnetic/utils/src/G4VEmFluctuationModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEmFluctuationModel.cc,v 1.4 2009/02/19 11:25:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VEmFluctuationModel.cc,v 1.3 2008/07/15 16:56:39 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6565}
    6666
    67 void G4VEmFluctuationModel::InitialiseMe(const G4ParticleDefinition*)
    68 {}
    6967
    70 void G4VEmFluctuationModel::SetParticleAndCharge(const G4ParticleDefinition*,
    71                                                  G4double)
    72 {}
    73 
    74 
  • trunk/source/processes/electromagnetic/utils/src/G4VEmModel.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEmModel.cc,v 1.25 2009/02/19 09:57:36 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VEmModel.cc,v 1.20 2008/11/13 23:13:18 schaelic Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    4141// 25.10.2005 Set default highLimit=100.TeV (V.Ivanchenko)
    4242// 06.02.2006 add method ComputeMeanFreePath() (mma)
    43 // 16.02.2009 Move implementations of virtual methods to source (VI)
    4443//
    4544//
     
    6160  fluc(0), name(nam), lowLimit(0.1*keV), highLimit(100.0*TeV),
    6261  polarAngleLimit(0.0),secondaryThreshold(DBL_MAX),theLPMflag(false),
    63   pParticleChange(0),nuclearStopping(false),
    64   currentCouple(0),currentElement(0),
    65   nsec(5),flagDeexcitation(false)
     62  pParticleChange(0),nuclearStopping(false),nsec(5)
    6663{
    6764  xsec.resize(nsec);
     
    8582//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    8683
     84G4double G4VEmModel::CrossSectionPerVolume(const G4Material* material,
     85                                           const G4ParticleDefinition* p,
     86                                           G4double ekin,
     87                                           G4double emin,
     88                                           G4double emax)
     89{
     90  SetupForMaterial(p, material, ekin);
     91  G4double cross = 0.0;
     92  const G4ElementVector* theElementVector = material->GetElementVector();
     93  const G4double* theAtomNumDensityVector = material->GetVecNbOfAtomsPerVolume();
     94  G4int nelm = material->GetNumberOfElements();
     95  if(nelm > nsec) {
     96    xsec.resize(nelm);
     97    nsec = nelm;
     98  }
     99  for (G4int i=0; i<nelm; i++) {
     100    cross += theAtomNumDensityVector[i]*
     101      ComputeCrossSectionPerAtom(p,(*theElementVector)[i],ekin,emin,emax);
     102    xsec[i] = cross;
     103  }
     104  return cross;
     105}
     106
     107//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     108
     109G4double G4VEmModel::ComputeMeanFreePath(const G4ParticleDefinition* p,
     110                                         G4double ekin,
     111                                         const G4Material* material,     
     112                                         G4double emin,
     113                                         G4double emax)
     114{
     115  G4double mfp = DBL_MAX;
     116  G4double cross = CrossSectionPerVolume(material,p,ekin,emin,emax);
     117  if (cross > DBL_MIN) mfp = 1./cross;
     118  return mfp;
     119}
     120
     121//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     122
    87123void G4VEmModel::InitialiseElementSelectors(const G4ParticleDefinition* p,
    88124                                            const G4DataVector& cuts)
    89125{
    90   // initialise before run
    91   flagDeexcitation = false;
    92 
    93126  G4int nbins = G4int(std::log10(highLimit/lowLimit) + 0.5);
    94127  if(nbins < 3) nbins = 3;
     
    129162//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    130163
    131 G4double G4VEmModel::ComputeDEDXPerVolume(const G4Material*,
    132                                           const G4ParticleDefinition*,
    133                                           G4double,G4double)
    134 {
    135   return 0.0;
    136 }
    137164
    138 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    139 
    140 G4double G4VEmModel::CrossSectionPerVolume(const G4Material* material,
    141                                            const G4ParticleDefinition* p,
    142                                            G4double ekin,
    143                                            G4double emin,
    144                                            G4double emax)
    145 {
    146   SetupForMaterial(p, material, ekin);
    147   G4double cross = 0.0;
    148   const G4ElementVector* theElementVector = material->GetElementVector();
    149   const G4double* theAtomNumDensityVector = material->GetVecNbOfAtomsPerVolume();
    150   G4int nelm = material->GetNumberOfElements();
    151   if(nelm > nsec) {
    152     xsec.resize(nelm);
    153     nsec = nelm;
    154   }
    155   for (G4int i=0; i<nelm; i++) {
    156     cross += theAtomNumDensityVector[i]*
    157       ComputeCrossSectionPerAtom(p,(*theElementVector)[i],ekin,emin,emax);
    158     xsec[i] = cross;
    159   }
    160   return cross;
    161 }
    162 
    163 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    164 
    165 G4double G4VEmModel::ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
    166                                                 G4double, G4double, G4double,
    167                                                 G4double, G4double)
    168 {
    169   return 0.0;
    170 }
    171 
    172 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    173 
    174 G4double G4VEmModel::MinEnergyCut(const G4ParticleDefinition*,
    175                                   const G4MaterialCutsCouple*)
    176 {
    177   return 0.0;
    178 }
    179 
    180 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    181 
    182 G4double G4VEmModel::GetChargeSquareRatio(const G4ParticleDefinition* p,
    183                                           const G4Material*, G4double)
    184 {
    185   G4double q = p->GetPDGCharge()/CLHEP::eplus;
    186   return q*q;
    187 }
    188 
    189 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    190 
    191 G4double G4VEmModel::GetParticleCharge(const G4ParticleDefinition* p,
    192                                        const G4Material*, G4double)
    193 {
    194   return p->GetPDGCharge();
    195 }
    196 
    197 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    198 
    199 void G4VEmModel::CorrectionsAlongStep(const G4MaterialCutsCouple*,
    200                                       const G4DynamicParticle*,
    201                                       G4double&,G4double&,G4double)
    202 {}
    203 
    204 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    205 
    206 void G4VEmModel::SampleDeexcitationAlongStep(const G4Material*,
    207                                              const G4Track&,
    208                                              G4double& )
    209 {}
    210 
    211 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    212 
    213 G4double G4VEmModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
    214                                         G4double kineticEnergy)
    215 {
    216   return kineticEnergy;
    217 }
    218 
    219 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    220 
    221 void G4VEmModel::SampleScattering(const G4DynamicParticle*, G4double)
    222 {}
    223 
    224 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    225 
    226 G4double G4VEmModel::ComputeTruePathLengthLimit(const G4Track&,
    227                                                 G4PhysicsTable*,
    228                                                 G4double)
    229 {
    230   return DBL_MAX;
    231 }
    232 
    233 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    234 
    235 G4double G4VEmModel::ComputeGeomPathLength(G4double truePathLength)
    236 {
    237   return truePathLength;
    238 }
    239 
    240 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    241 
    242 G4double G4VEmModel::ComputeTrueStepLength(G4double geomPathLength)
    243 {
    244   return geomPathLength;
    245 }
    246 
    247 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    248 
    249 void G4VEmModel::DefineForRegion(const G4Region*)
    250 {}
    251 
    252 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    253 
    254 void G4VEmModel::SetupForMaterial(const G4ParticleDefinition*,
    255                                   const G4Material*, G4double)
    256 {}
    257 
    258 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
  • trunk/source/processes/electromagnetic/utils/src/G4VEmProcess.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEmProcess.cc,v 1.62 2009/02/19 09:57:36 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VEmProcess.cc,v 1.60 2008/10/17 14:46:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    9191  applyCuts(false),
    9292  startFromNull(true),
    93   useDeexcitation(false),
    94   nDERegions(0),
    95   idxDERegions(0),
    96   currentModel(0),
     93  nRegions(0),
     94  selectedModel(0),
    9795  particle(0),
    9896  currentCouple(0)
     
    137135  delete modelManager;
    138136  (G4LossTableManager::Instance())->DeRegister(this);
    139 }
    140 
    141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    142 
    143 void G4VEmProcess::Clear()
    144 {
    145   delete [] theEnergyOfCrossSectionMax;
    146   delete [] theCrossSectionMax;
    147   delete [] idxDERegions;
    148   theEnergyOfCrossSectionMax = 0;
    149   theCrossSectionMax = 0;
    150   idxDERegions = 0;
    151   currentCouple = 0;
    152   preStepLambda = 0.0;
    153   mfpKinEnergy  = DBL_MAX;
    154   deRegions.clear();
    155   nDERegions = 0;
    156137}
    157138
     
    181162      theLambdaTable = G4PhysicsTableHelper::PreparePhysicsTable(theLambdaTable);
    182163  }
    183   // Sub Cutoff and Deexcitation
    184   if (nDERegions>0) {
    185 
    186     const G4ProductionCutsTable* theCoupleTable=
    187           G4ProductionCutsTable::GetProductionCutsTable();
    188     size_t numOfCouples = theCoupleTable->GetTableSize();
    189 
    190     idxDERegions = new G4bool[numOfCouples];
    191 
    192     for (size_t j=0; j<numOfCouples; j++) {
    193 
    194       const G4MaterialCutsCouple* couple =
    195         theCoupleTable->GetMaterialCutsCouple(j);
    196       const G4ProductionCuts* pcuts = couple->GetProductionCuts();
    197       G4bool reg = false;
    198       for(G4int i=0; i<nDERegions; i++) {
    199         if(deRegions[i]) {
    200           if(pcuts == deRegions[i]->GetProductionCuts()) reg = true;
    201         }
    202       }
    203       idxDERegions[j] = reg;
    204     }
    205   }
    206   if (1 < verboseLevel && nDERegions>0) {
    207     G4cout << " Deexcitation is activated for regions: " << G4endl;
    208     for (G4int i=0; i<nDERegions; i++) {
    209       const G4Region* r = deRegions[i];
    210       G4cout << "           " << r->GetName() << G4endl;
    211     }
    212   }
     164}
     165
     166//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     167
     168void G4VEmProcess::Clear()
     169{
     170  if(theEnergyOfCrossSectionMax) delete [] theEnergyOfCrossSectionMax;
     171  if(theCrossSectionMax) delete [] theCrossSectionMax;
     172  theEnergyOfCrossSectionMax = 0;
     173  theCrossSectionMax = 0;
     174  currentCouple = 0;
     175  preStepLambda = 0.0;
     176  mfpKinEnergy  = DBL_MAX;
    213177}
    214178
     
    273237      G4cout << *theLambdaTable << G4endl;
    274238    }
    275   }
    276 }
    277 
    278 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    279 
    280 void G4VEmProcess::PrintInfoDefinition()
    281 {
    282   if(verboseLevel > 0) {
    283     G4cout << G4endl << GetProcessName() << ":   for  "
    284            << particle->GetParticleName();
    285     if(integral) G4cout << ", integral: 1 ";
    286     if(applyCuts) G4cout << ", applyCuts: 1 ";
    287     G4cout << "    SubType= " << GetProcessSubType() << G4endl;
    288     if(buildLambdaTable) {
    289       G4cout << "      Lambda tables from "
    290              << G4BestUnit(minKinEnergy,"Energy")
    291              << " to "
    292              << G4BestUnit(maxKinEnergy,"Energy")
    293              << " in " << nLambdaBins << " bins, spline: "
    294              << (G4LossTableManager::Instance())->SplineFlag()
    295              << G4endl;
    296     }
    297     PrintInfo();
    298     modelManager->DumpModelList(verboseLevel);
    299   }
    300 
    301   if(verboseLevel > 2 && buildLambdaTable) {
    302     G4cout << "      LambdaTable address= " << theLambdaTable << G4endl;
    303     if(theLambdaTable) G4cout << (*theLambdaTable) << G4endl;
    304239  }
    305240}
     
    369304//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    370305
     306G4double G4VEmProcess::GetMeanFreePath(const G4Track& track,
     307                                       G4double,
     308                                       G4ForceCondition* condition)
     309{
     310  *condition = NotForced;
     311  return G4VEmProcess::MeanFreePath(track);
     312}
     313
     314//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     315
    371316G4VParticleChange* G4VEmProcess::PostStepDoIt(const G4Track& track,
    372317                                              const G4Step&)
     
    397342  }
    398343
    399   SelectModel(finalT);
    400   if(useDeexcitation) {
    401     currentModel->SetDeexcitationFlag(idxDERegions[currentMaterialIndex]);
    402   }
     344  G4VEmModel* currentModel = SelectModel(finalT);
     345
    403346  /* 
    404347  if(0 < verboseLevel) {
     
    461404//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    462405
     406void G4VEmProcess::PrintInfoDefinition()
     407{
     408  if(verboseLevel > 0) {
     409    G4cout << G4endl << GetProcessName() << ":   for  "
     410           << particle->GetParticleName();
     411    if(integral) G4cout << ", integral: 1 ";
     412    if(applyCuts) G4cout << ", applyCuts: 1 ";
     413    G4cout << "    SubType= " << GetProcessSubType() << G4endl;
     414    if(buildLambdaTable) {
     415      G4cout << "      Lambda tables from "
     416             << G4BestUnit(minKinEnergy,"Energy")
     417             << " to "
     418             << G4BestUnit(maxKinEnergy,"Energy")
     419             << " in " << nLambdaBins << " bins, spline: "
     420             << (G4LossTableManager::Instance())->SplineFlag()
     421             << G4endl;
     422    }
     423    PrintInfo();
     424    modelManager->DumpModelList(verboseLevel);
     425  }
     426
     427  if(verboseLevel > 2 && buildLambdaTable) {
     428    G4cout << "      LambdaTable address= " << theLambdaTable << G4endl;
     429    if(theLambdaTable) G4cout << (*theLambdaTable) << G4endl;
     430  }
     431}
     432
     433//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     434
     435G4double G4VEmProcess::CrossSectionPerVolume(G4double kineticEnergy,
     436                                             const G4MaterialCutsCouple* couple)
     437{
     438  // Cross section per atom is calculated
     439  DefineMaterial(couple);
     440  G4double cross = 0.0;
     441  G4bool b;
     442  if(theLambdaTable) {
     443    cross = (((*theLambdaTable)[currentMaterialIndex])->
     444                           GetValue(kineticEnergy, b));
     445  } else {
     446    G4VEmModel* model = SelectModel(kineticEnergy);
     447    cross =
     448      model->CrossSectionPerVolume(currentMaterial,particle,kineticEnergy);
     449  }
     450
     451  return cross;
     452}
     453
     454//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     455
    463456G4bool G4VEmProcess::StorePhysicsTable(const G4ParticleDefinition* part,
    464457                                       const G4String& directory,
     
    528521
    529522  return yes;
    530 }
    531 
    532 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    533 
    534 void G4VEmProcess::ActivateDeexcitation(G4bool val, const G4Region* r)
    535 {
    536   G4RegionStore* regionStore = G4RegionStore::GetInstance();
    537   const G4Region* reg = r;
    538   if (!reg) {reg = regionStore->GetRegion("DefaultRegionForTheWorld", false);}
    539 
    540   // the region is in the list
    541   if (nDERegions) {
    542     for (G4int i=0; i<nDERegions; i++) {
    543       if (reg == deRegions[i]) {
    544         if(!val) deRegions[i] = 0;
    545         return;
    546       }
    547     }
    548   }
    549 
    550   // new region
    551   if(val) {
    552     useDeexcitation = true;
    553     deRegions.push_back(reg);
    554     nDERegions++;
    555   } else {
    556     useDeexcitation = false;
    557   }
    558 }
    559 
    560 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    561 
    562 G4double G4VEmProcess::CrossSectionPerVolume(G4double kineticEnergy,
    563                                              const G4MaterialCutsCouple* couple)
    564 {
    565   // Cross section per atom is calculated
    566   DefineMaterial(couple);
    567   G4double cross = 0.0;
    568   G4bool b;
    569   if(theLambdaTable) {
    570     cross = (((*theLambdaTable)[currentMaterialIndex])->
    571                            GetValue(kineticEnergy, b));
    572   } else {
    573     SelectModel(kineticEnergy);
    574     cross = currentModel->CrossSectionPerVolume(currentMaterial,
    575                                                 particle,kineticEnergy);
    576   }
    577 
    578   return cross;
    579 }
    580 
    581 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    582 
    583 G4double G4VEmProcess::GetMeanFreePath(const G4Track& track,
    584                                        G4double,
    585                                        G4ForceCondition* condition)
    586 {
    587   *condition = NotForced;
    588   return G4VEmProcess::MeanFreePath(track);
    589523}
    590524
  • trunk/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc

    r961 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VEnergyLossProcess.cc,v 1.146 2009/02/19 11:25:50 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VEnergyLossProcess.cc,v 1.143 2008/10/17 14:46:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    150150  secondaryParticle(0),
    151151  nSCoffRegions(0),
    152   nDERegions(0),
    153152  idxSCoffRegions(0),
    154   idxDERegions(0),
    155153  nProcesses(0),
    156154  theDEDXTable(0),
     
    178176  isIonisation(true),
    179177  useSubCutoff(false),
    180   useDeexcitation(false),
    181178  particle(0),
    182179  currentCouple(0),
     
    240237           << G4endl;
    241238  delete vstrag;
    242   Clean();
     239  Clear();
    243240
    244241  if ( !baseParticle ) {
     
    294291//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    295292
    296 void G4VEnergyLossProcess::Clean()
     293void G4VEnergyLossProcess::Clear()
    297294{
    298295  if(1 < verboseLevel) {
     
    305302  delete [] theCrossSectionMax;
    306303  delete [] idxSCoffRegions;
    307   delete [] idxDERegions;
    308304
    309305  theDEDXAtMaxEnergy = 0;
     
    316312  scProcesses.clear();
    317313  nProcesses = 0;
    318 }
    319 
    320 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    321 
    322 G4double G4VEnergyLossProcess::MinPrimaryEnergy(const G4ParticleDefinition*,
    323                                                 const G4Material*,
    324                                                 G4double cut)
    325 {
    326   return cut;
    327314}
    328315
     
    377364  }
    378365
    379   Clean();
     366  Clear();
    380367
    381368  // Base particle and set of models can be defined here
     
    420407                                     minSubRange, verboseLevel);
    421408
    422   // Sub Cutoff and Deexcitation
    423   if (nSCoffRegions>0 || nDERegions>0) {
     409  // Sub Cutoff Regime
     410  if (nSCoffRegions>0) {
    424411    theSubCuts = modelManager->SubCutoff();
    425412
     
    427414          G4ProductionCutsTable::GetProductionCutsTable();
    428415    size_t numOfCouples = theCoupleTable->GetTableSize();
    429 
    430     if(nSCoffRegions>0) idxSCoffRegions = new G4bool[numOfCouples];
    431     if(nDERegions>0) idxDERegions = new G4bool[numOfCouples];
     416    idxSCoffRegions = new G4int[numOfCouples];
    432417 
    433418    for (size_t j=0; j<numOfCouples; j++) {
     
    436421        theCoupleTable->GetMaterialCutsCouple(j);
    437422      const G4ProductionCuts* pcuts = couple->GetProductionCuts();
    438      
    439       if(nSCoffRegions>0) {
    440         G4bool reg = false;
    441         for(G4int i=0; i<nSCoffRegions; i++) {
    442           if( pcuts == scoffRegions[i]->GetProductionCuts()) reg = true;
    443         }
    444         idxSCoffRegions[j] = reg;
    445       }
    446       if(nDERegions>0) {
    447         G4bool reg = false;
    448         for(G4int i=0; i<nDERegions; i++) {
    449           if( pcuts == deRegions[i]->GetProductionCuts()) reg = true;
    450         }
    451         idxDERegions[j] = reg;
    452       }
     423      G4int reg = 0;
     424      for(G4int i=0; i<nSCoffRegions; i++) {
     425        if( pcuts == scoffRegions[i]->GetProductionCuts()) reg = 1;
     426      }
     427      idxSCoffRegions[j] = reg;
    453428    }
    454429  }
     
    470445      }
    471446    }
    472     if (nDERegions) {
    473       G4cout << " Deexcitation is ON for regions: " << G4endl;
    474       for (G4int i=0; i<nDERegions; i++) {
    475         const G4Region* r = deRegions[i];
    476         G4cout << "           " << r->GetName() << G4endl;
    477       }
    478     }
    479447  }
    480448}
     
    511479    if(isIonisation) G4cout << "  isIonisation  flag = 1";
    512480    G4cout << G4endl;
     481  }
     482}
     483
     484//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     485
     486void G4VEnergyLossProcess::ActivateSubCutoff(G4bool val, const G4Region* r)
     487{
     488  G4RegionStore* regionStore = G4RegionStore::GetInstance();
     489  if(val) {
     490    useSubCutoff = true;
     491    if (!r) {r = regionStore->GetRegion("DefaultRegionForTheWorld", false);}
     492    if (nSCoffRegions) {
     493      for (G4int i=0; i<nSCoffRegions; i++) {
     494        if (r == scoffRegions[i]) return;
     495      }
     496    }
     497    scoffRegions.push_back(r);
     498    nSCoffRegions++;
     499  } else {
     500    useSubCutoff = false;
    513501  }
    514502}
     
    652640//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    653641
    654 void G4VEnergyLossProcess::PrintInfoDefinition()
    655 {
    656   if(0 < verboseLevel) {
    657     G4cout << G4endl << GetProcessName() << ":   for  "
    658            << particle->GetParticleName()
    659            << "    SubType= " << GetProcessSubType()
    660            << G4endl
    661            << "      dE/dx and range tables from "
    662            << G4BestUnit(minKinEnergy,"Energy")
    663            << " to " << G4BestUnit(maxKinEnergy,"Energy")
    664            << " in " << nBins << " bins" << G4endl
    665            << "      Lambda tables from threshold to "
    666            << G4BestUnit(maxKinEnergy,"Energy")
    667            << " in " << nBins << " bins, spline: "
    668            << (G4LossTableManager::Instance())->SplineFlag()
    669            << G4endl;
    670     if(theRangeTableForLoss && isIonisation) {
    671       G4cout << "      finalRange(mm)= " << finalRange/mm
    672              << ", dRoverRange= " << dRoverRange
    673              << ", integral: " << integral
    674              << ", fluct: " << lossFluctuationFlag
    675              << ", linLossLimit= " << linLossLimit
    676              << G4endl;
    677     }
    678     PrintInfo();
    679     modelManager->DumpModelList(verboseLevel);
    680     if(theCSDARangeTable && isIonisation) {
    681       G4cout << "      CSDA range table up"
    682              << " to " << G4BestUnit(maxKinEnergyCSDA,"Energy")
    683              << " in " << nBinsCSDA << " bins" << G4endl;
    684     }
    685     if(nSCoffRegions>0 && isIonisation) {
    686       G4cout << "      Subcutoff sampling in " << nSCoffRegions
    687              << " regions" << G4endl;
    688     }
    689     if(2 < verboseLevel) {
    690       G4cout << "      DEDXTable address= " << theDEDXTable << G4endl;
    691       if(theDEDXTable && isIonisation) G4cout << (*theDEDXTable) << G4endl;
    692       G4cout << "non restricted DEDXTable address= "
    693              << theDEDXunRestrictedTable << G4endl;
    694       if(theDEDXunRestrictedTable && isIonisation) {
    695            G4cout << (*theDEDXunRestrictedTable) << G4endl;
    696       }
    697       if(theDEDXSubTable && isIonisation) {
    698         G4cout << (*theDEDXSubTable) << G4endl;
    699       }
    700       G4cout << "      CSDARangeTable address= " << theCSDARangeTable
    701              << G4endl;
    702       if(theCSDARangeTable && isIonisation) {
    703         G4cout << (*theCSDARangeTable) << G4endl;
    704       }
    705       G4cout << "      RangeTableForLoss address= " << theRangeTableForLoss
    706              << G4endl;
    707       if(theRangeTableForLoss && isIonisation) {
    708              G4cout << (*theRangeTableForLoss) << G4endl;
    709       }
    710       G4cout << "      InverseRangeTable address= " << theInverseRangeTable
    711              << G4endl;
    712       if(theInverseRangeTable && isIonisation) {
    713              G4cout << (*theInverseRangeTable) << G4endl;
    714       }
    715       G4cout << "      LambdaTable address= " << theLambdaTable << G4endl;
    716       if(theLambdaTable && isIonisation) {
    717         G4cout << (*theLambdaTable) << G4endl;
    718       }
    719       G4cout << "      SubLambdaTable address= " << theSubLambdaTable << G4endl;
    720       if(theSubLambdaTable && isIonisation) {
    721         G4cout << (*theSubLambdaTable) << G4endl;
    722       }
    723     }
    724   }
    725 }
    726 
    727 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    728 
    729 void G4VEnergyLossProcess::ActivateSubCutoff(G4bool val, const G4Region* r)
    730 {
    731   G4RegionStore* regionStore = G4RegionStore::GetInstance();
    732   const G4Region* reg = r;
    733   if (!reg) {reg = regionStore->GetRegion("DefaultRegionForTheWorld", false);}
    734 
    735   // the region is in the list
    736   if (nSCoffRegions) {
    737     for (G4int i=0; i<nSCoffRegions; i++) {
    738       if (reg == scoffRegions[i]) {
    739         if(!val) deRegions[i] = 0;
    740         return;
    741       }
    742     }
    743   }
    744 
    745   // new region
    746   if(val) {
    747     useSubCutoff = true;
    748     scoffRegions.push_back(reg);
    749     nSCoffRegions++;
    750   } else {
    751     useSubCutoff = false;
    752   }
    753 }
    754 
    755 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    756 
    757 void G4VEnergyLossProcess::ActivateDeexcitation(G4bool val, const G4Region* r)
    758 {
    759   G4RegionStore* regionStore = G4RegionStore::GetInstance();
    760   const G4Region* reg = r;
    761   if (!reg) {reg = regionStore->GetRegion("DefaultRegionForTheWorld", false);}
    762 
    763   // the region is in the list
    764   if (nDERegions) {
    765     for (G4int i=0; i<nDERegions; i++) {
    766       if (reg == deRegions[i]) {
    767         if(!val) deRegions[i] = 0;
    768         return;
    769       }
    770     }
    771   }
    772 
    773   // new region
    774   if(val) {
    775     useDeexcitation = true;
    776     deRegions.push_back(reg);
    777     nDERegions++;
    778   } else {
    779     useDeexcitation = false;
    780   }
     642G4double G4VEnergyLossProcess::GetContinuousStepLimit(
     643                const G4Track&,
     644                G4double, G4double, G4double&)
     645{
     646  return DBL_MAX;
    781647}
    782648
     
    808674  //  <<" stepLimit= "<<x<<G4endl;
    809675  return x;
     676}
     677
     678//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     679
     680G4double G4VEnergyLossProcess::GetMeanFreePath(
     681                             const G4Track& track,
     682                             G4double,
     683                             G4ForceCondition* condition)
     684
     685{
     686  *condition = NotForced;
     687  return MeanFreePath(track);
    810688}
    811689
     
    928806  if (length >= fRange) {
    929807    eloss = preStepKinEnergy;
    930     if (useDeexcitation) {
    931       if(idxDERegions[currentMaterialIndex]) {
    932         currentModel->SampleDeexcitationAlongStep(currentMaterial, track, eloss);
    933         if(eloss < 0.0) eloss = 0.0;
    934       }
    935     }
     808    currentModel->CorrectionsAlongStep(currentCouple, dynParticle,
     809                                       eloss, esecdep, length);
    936810    fParticleChange.SetProposedKineticEnergy(0.0);
    937     fParticleChange.ProposeLocalEnergyDeposit(eloss);
     811    fParticleChange.ProposeLocalEnergyDeposit(preStepKinEnergy);
    938812    return &fParticleChange;
    939813  }
     
    1060934      G4double tmax =
    1061935        std::min(currentModel->MaxSecondaryKinEnergy(dynParticle),cut);
    1062       G4double emean = eloss;
    1063936      eloss = fluc->SampleFluctuations(currentMaterial,dynParticle,
    1064                                        tmax,length,emean);
     937                                       tmax,length,eloss);
    1065938      /*                           
    1066939      if(-1 < verboseLevel)
     
    1077950  eloss += esecdep;
    1078951  if(eloss < 0.0) eloss = 0.0;
    1079 
    1080   // deexcitation
    1081   else if (useDeexcitation) {
    1082     if(idxDERegions[currentMaterialIndex]) {
    1083       currentModel->SampleDeexcitationAlongStep(currentMaterial, track, eloss);
    1084       if(eloss < 0.0) eloss = 0.0;
    1085     }
    1086   }
    1087952
    1088953  // Energy balanse
     
    12411106
    12421107  SelectModel(postStepScaledEnergy);
    1243   if(useDeexcitation) {
    1244     currentModel->SetDeexcitationFlag(idxDERegions[currentMaterialIndex]);
    1245   }
    1246 
    12471108  const G4DynamicParticle* dynParticle = track.GetDynamicParticle();
    12481109  G4double tcut = (*theCuts)[currentMaterialIndex];
     
    12791140//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    12801141
    1281 G4bool G4VEnergyLossProcess::StorePhysicsTable(
    1282        const G4ParticleDefinition* part, const G4String& directory,
    1283        G4bool ascii)
    1284 {
    1285   G4bool res = true;
    1286   if ( baseParticle || part != particle ) return res;
    1287 
    1288   if(!StoreTable(part,theDEDXTable,ascii,directory,"DEDX"))
    1289     {res = false;}
    1290 
    1291   if(!StoreTable(part,theDEDXunRestrictedTable,ascii,directory,"DEDXnr"))
    1292     {res = false;}
    1293 
    1294   if(!StoreTable(part,theDEDXSubTable,ascii,directory,"SubDEDX"))
    1295     {res = false;}
    1296 
    1297   if(!StoreTable(part,theIonisationTable,ascii,directory,"Ionisation"))
    1298     {res = false;}
    1299 
    1300   if(!StoreTable(part,theIonisationSubTable,ascii,directory,"SubIonisation"))
    1301     {res = false;}
    1302 
    1303   if(isIonisation &&
    1304      !StoreTable(part,theCSDARangeTable,ascii,directory,"CSDARange"))
    1305     {res = false;}
    1306 
    1307   if(isIonisation &&
    1308      !StoreTable(part,theRangeTableForLoss,ascii,directory,"Range"))
    1309     {res = false;}
    1310  
    1311   if(isIonisation &&
    1312      !StoreTable(part,theInverseRangeTable,ascii,directory,"InverseRange"))
    1313     {res = false;}
    1314  
    1315   if(!StoreTable(part,theLambdaTable,ascii,directory,"Lambda"))
    1316     {res = false;}
    1317 
    1318   if(!StoreTable(part,theSubLambdaTable,ascii,directory,"SubLambda"))
    1319     {res = false;}
    1320 
    1321   if ( res ) {
    1322     if(0 < verboseLevel) {
    1323       G4cout << "Physics tables are stored for " << particle->GetParticleName()
    1324              << " and process " << GetProcessName()
    1325              << " in the directory <" << directory
    1326              << "> " << G4endl;
    1327     }
    1328   } else {
    1329     G4cout << "Fail to store Physics Tables for "
    1330            << particle->GetParticleName()
    1331            << " and process " << GetProcessName()
    1332            << " in the directory <" << directory
    1333            << "> " << G4endl;
    1334   }
    1335   return res;
    1336 }
    1337 
    1338 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
    1339 
    1340 G4bool G4VEnergyLossProcess::RetrievePhysicsTable(
    1341        const G4ParticleDefinition* part, const G4String& directory,
    1342        G4bool ascii)
    1343 {
    1344   G4bool res = true;
    1345   const G4String particleName = part->GetParticleName();
    1346 
    1347   if(1 < verboseLevel) {
    1348     G4cout << "G4VEnergyLossProcess::RetrievePhysicsTable() for "
    1349            << particleName << " and process " << GetProcessName()
    1350            << "; tables_are_built= " << tablesAreBuilt
     1142void G4VEnergyLossProcess::PrintInfoDefinition()
     1143{
     1144  if(0 < verboseLevel) {
     1145    G4cout << G4endl << GetProcessName() << ":   for  "
     1146           << particle->GetParticleName()
     1147           << "    SubType= " << GetProcessSubType()
     1148           << G4endl
     1149           << "      dE/dx and range tables from "
     1150           << G4BestUnit(minKinEnergy,"Energy")
     1151           << " to " << G4BestUnit(maxKinEnergy,"Energy")
     1152           << " in " << nBins << " bins" << G4endl
     1153           << "      Lambda tables from threshold to "
     1154           << G4BestUnit(maxKinEnergy,"Energy")
     1155           << " in " << nBins << " bins, spline: "
     1156           << (G4LossTableManager::Instance())->SplineFlag()
    13511157           << G4endl;
    1352   }
    1353   if(particle == part) {
    1354 
    1355     //    G4bool yes = true;
    1356     if ( !baseParticle ) {
    1357 
    1358       G4bool fpi = true;
    1359       if(!RetrieveTable(part,theDEDXTable,ascii,directory,"DEDX",fpi))
    1360         {fpi = false;}
    1361 
    1362       if(!RetrieveTable(part,theIonisationTable,ascii,directory,"Ionisation",false))
    1363         {fpi = false;}
    1364 
    1365       if(!RetrieveTable(part,theRangeTableForLoss,ascii,directory,"Range",fpi))
    1366         {res = false;}
    1367 
    1368       if(!RetrieveTable(part,theDEDXunRestrictedTable,ascii,directory,"DEDXnr",false))
    1369         {res = false;}
    1370 
    1371       if(!RetrieveTable(part,theCSDARangeTable,ascii,directory,"CSDARange",false))
    1372         {res = false;}
    1373 
    1374       if(!RetrieveTable(part,theInverseRangeTable,ascii,directory,"InverseRange",fpi))
    1375         {res = false;}
    1376 
    1377       if(!RetrieveTable(part,theLambdaTable,ascii,directory,"Lambda",true))
    1378         {res = false;}
    1379 
    1380       G4bool yes = false;
    1381       if(nSCoffRegions > 0) {yes = true;}
    1382 
    1383       if(!RetrieveTable(part,theDEDXSubTable,ascii,directory,"SubDEDX",yes))
    1384         {res = false;}
    1385 
    1386       if(!RetrieveTable(part,theSubLambdaTable,ascii,directory,"SubLambda",yes))
    1387         {res = false;}
    1388 
    1389       if(!fpi) yes = false;
    1390       if(!RetrieveTable(part,theIonisationSubTable,ascii,directory,"SubIonisation",yes))
    1391         {res = false;}
    1392     }
    1393   }
    1394 
    1395   return res;
    1396 }
    1397 
    1398 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
    1399 
    1400 G4bool G4VEnergyLossProcess::StoreTable(const G4ParticleDefinition* part,
    1401                                         G4PhysicsTable* aTable, G4bool ascii,
    1402                                         const G4String& directory,
    1403                                         const G4String& tname)
    1404 {
    1405   G4bool res = true;
    1406   if ( aTable ) {
    1407     const G4String name = GetPhysicsTableFileName(part,directory,tname,ascii);
    1408     if( !aTable->StorePhysicsTable(name,ascii)) res = false;
    1409   }
    1410   return res;
    1411 }
    1412 
    1413 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
    1414 
    1415 G4bool G4VEnergyLossProcess::RetrieveTable(const G4ParticleDefinition* part,
    1416                                            G4PhysicsTable* aTable, G4bool ascii,
    1417                                            const G4String& directory,
    1418                                            const G4String& tname,
    1419                                            G4bool mandatory)
    1420 {
    1421   G4bool res = true;
    1422   G4String filename = GetPhysicsTableFileName(part,directory,tname,ascii);
    1423   G4bool yes = aTable->ExistPhysicsTable(filename);
    1424   if(yes) {
    1425     yes = G4PhysicsTableHelper::RetrievePhysicsTable(aTable,filename,ascii);
    1426     if((G4LossTableManager::Instance())->SplineFlag()) {
    1427       size_t n = aTable->length();
    1428       for(size_t i=0; i<n; i++) {(*aTable)[i]->SetSpline(true);}
    1429     }
    1430   }
    1431   if(yes) {
    1432     if (0 < verboseLevel) {
    1433       G4cout << tname << " table for " << part->GetParticleName()
    1434              << " is Retrieved from <" << filename << ">"
     1158    if(theRangeTableForLoss && isIonisation) {
     1159      G4cout << "      finalRange(mm)= " << finalRange/mm
     1160             << ", dRoverRange= " << dRoverRange
     1161             << ", integral: " << integral
     1162             << ", fluct: " << lossFluctuationFlag
     1163             << ", linLossLimit= " << linLossLimit
     1164             << G4endl;
     1165    }
     1166    PrintInfo();
     1167    modelManager->DumpModelList(verboseLevel);
     1168    if(theCSDARangeTable && isIonisation) {
     1169      G4cout << "      CSDA range table up"
     1170             << " to " << G4BestUnit(maxKinEnergyCSDA,"Energy")
     1171             << " in " << nBinsCSDA << " bins" << G4endl;
     1172    }
     1173    if(nSCoffRegions>0 && isIonisation) {
     1174      G4cout << "      Subcutoff sampling in " << nSCoffRegions
     1175             << " regions" << G4endl;
     1176    }
     1177    if(2 < verboseLevel) {
     1178      G4cout << "      DEDXTable address= " << theDEDXTable << G4endl;
     1179      if(theDEDXTable && isIonisation) G4cout << (*theDEDXTable) << G4endl;
     1180      G4cout << "non restricted DEDXTable address= "
     1181             << theDEDXunRestrictedTable << G4endl;
     1182      if(theDEDXunRestrictedTable && isIonisation) {
     1183           G4cout << (*theDEDXunRestrictedTable) << G4endl;
     1184      }
     1185      if(theDEDXSubTable && isIonisation) {
     1186        G4cout << (*theDEDXSubTable) << G4endl;
     1187      }
     1188      G4cout << "      CSDARangeTable address= " << theCSDARangeTable
    14351189             << G4endl;
    1436     }
    1437   } else {
    1438     if(mandatory) res = false;
    1439     if(mandatory || 1 < verboseLevel) {
    1440       G4cout << tname << " table for " << part->GetParticleName()
    1441              << " from file <"
    1442              << filename << "> is not Retrieved"
     1190      if(theCSDARangeTable && isIonisation) {
     1191        G4cout << (*theCSDARangeTable) << G4endl;
     1192      }
     1193      G4cout << "      RangeTableForLoss address= " << theRangeTableForLoss
    14431194             << G4endl;
    1444     }
    1445   }
    1446   return res;
    1447 }
    1448 
    1449 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1450 
    1451 G4double G4VEnergyLossProcess::GetDEDXDispersion(
    1452                                   const G4MaterialCutsCouple *couple,
    1453                                   const G4DynamicParticle* dp,
    1454                                         G4double length)
    1455 {
    1456   DefineMaterial(couple);
    1457   G4double ekin = dp->GetKineticEnergy();
    1458   SelectModel(ekin*massRatio);
    1459   G4double tmax = currentModel->MaxSecondaryKinEnergy(dp);
    1460   tmax = std::min(tmax,(*theCuts)[currentMaterialIndex]);
    1461   G4double d = 0.0;
    1462   G4VEmFluctuationModel* fm = currentModel->GetModelOfFluctuations();
    1463   if(fm) d = fm->Dispersion(currentMaterial,dp,tmax,length);
    1464   return d;
    1465 }
    1466 
    1467 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1468 
    1469 G4double G4VEnergyLossProcess::CrossSectionPerVolume(
    1470          G4double kineticEnergy, const G4MaterialCutsCouple* couple)
    1471 {
    1472   // Cross section per volume is calculated
    1473   DefineMaterial(couple);
    1474   G4double cross = 0.0;
    1475   G4bool b;
    1476   if(theLambdaTable) {
    1477     cross =
    1478       ((*theLambdaTable)[currentMaterialIndex])->GetValue(kineticEnergy, b);
    1479   } else {
    1480     SelectModel(kineticEnergy);
    1481     cross =
    1482       currentModel->CrossSectionPerVolume(currentMaterial,
    1483                                           particle, kineticEnergy,
    1484                                           (*theCuts)[currentMaterialIndex]);
    1485   }
    1486 
    1487   return cross;
    1488 }
    1489 
    1490 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1491 
    1492 G4double G4VEnergyLossProcess::MeanFreePath(const G4Track& track)
    1493 {
    1494   DefineMaterial(track.GetMaterialCutsCouple());
    1495   preStepLambda = GetLambdaForScaledEnergy(track.GetKineticEnergy()*massRatio);
    1496   G4double x = DBL_MAX;
    1497   if(DBL_MIN < preStepLambda) x = 1.0/preStepLambda;
    1498   return x;
    1499 }
    1500 
    1501 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1502 
    1503 G4double G4VEnergyLossProcess::ContinuousStepLimit(const G4Track& track,
    1504                                                    G4double x, G4double y,
    1505                                                    G4double& z)
    1506 {
    1507   G4GPILSelection sel;
    1508   return AlongStepGetPhysicalInteractionLength(track, x, y, z, &sel);
    1509 }
    1510 
    1511 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1512 
    1513 G4double G4VEnergyLossProcess::GetMeanFreePath(
    1514                              const G4Track& track,
    1515                              G4double,
    1516                              G4ForceCondition* condition)
    1517 
    1518 {
    1519   *condition = NotForced;
    1520   return MeanFreePath(track);
    1521 }
    1522 
    1523 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1524 
    1525 G4double G4VEnergyLossProcess::GetContinuousStepLimit(
    1526                 const G4Track&,
    1527                 G4double, G4double, G4double&)
    1528 {
    1529   return DBL_MAX;
    1530 }
    1531 
    1532 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1533 
    1534 G4PhysicsVector* G4VEnergyLossProcess::LambdaPhysicsVector(
    1535                  const G4MaterialCutsCouple* couple, G4double cut)
    1536 {
    1537   //  G4double cut  = (*theCuts)[couple->GetIndex()];
    1538   //  G4int nbins = nLambdaBins;
    1539   G4double tmin =
    1540     std::max(MinPrimaryEnergy(particle, couple->GetMaterial(), cut),
    1541              minKinEnergy);
    1542   if(tmin >= maxKinEnergy) tmin = 0.5*maxKinEnergy;
    1543   G4PhysicsVector* v = new G4PhysicsLogVector(tmin, maxKinEnergy, nBins);
    1544   v->SetSpline((G4LossTableManager::Instance())->SplineFlag());
    1545 
    1546   return v;
    1547 }
    1548 
    1549 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    1550  
    1551 void G4VEnergyLossProcess::AddCollaborativeProcess(
    1552             G4VEnergyLossProcess* p)
    1553 {
    1554   G4bool add = true;
    1555   if(p->GetProcessName() != "eBrem") add = false;
    1556   if(add && nProcesses > 0) {
    1557     for(G4int i=0; i<nProcesses; i++) {
    1558       if(p == scProcesses[i]) {
    1559         add = false;
    1560         break;
    1561       }
    1562     }
    1563   }
    1564   if(add) {
    1565     scProcesses.push_back(p);
    1566     nProcesses++;
    1567     if (1 < verboseLevel) {
    1568       G4cout << "### The process " << p->GetProcessName()
    1569              << " is added to the list of collaborative processes of "
    1570              << GetProcessName() << G4endl;
     1195      if(theRangeTableForLoss && isIonisation) {
     1196             G4cout << (*theRangeTableForLoss) << G4endl;
     1197      }
     1198      G4cout << "      InverseRangeTable address= " << theInverseRangeTable
     1199             << G4endl;
     1200      if(theInverseRangeTable && isIonisation) {
     1201             G4cout << (*theInverseRangeTable) << G4endl;
     1202      }
     1203      G4cout << "      LambdaTable address= " << theLambdaTable << G4endl;
     1204      if(theLambdaTable && isIonisation) {
     1205        G4cout << (*theLambdaTable) << G4endl;
     1206      }
     1207      G4cout << "      SubLambdaTable address= " << theSubLambdaTable << G4endl;
     1208      if(theSubLambdaTable && isIonisation) {
     1209        G4cout << (*theSubLambdaTable) << G4endl;
     1210      }
    15711211    }
    15721212  }
     
    17371377//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    17381378
     1379G4PhysicsVector* G4VEnergyLossProcess::LambdaPhysicsVector(
     1380                 const G4MaterialCutsCouple* couple, G4double cut)
     1381{
     1382  //  G4double cut  = (*theCuts)[couple->GetIndex()];
     1383  //  G4int nbins = nLambdaBins;
     1384  G4double tmin =
     1385    std::max(MinPrimaryEnergy(particle, couple->GetMaterial(), cut),
     1386             minKinEnergy);
     1387  if(tmin >= maxKinEnergy) tmin = 0.5*maxKinEnergy;
     1388  G4PhysicsVector* v = new G4PhysicsLogVector(tmin, maxKinEnergy, nBins);
     1389  v->SetSpline((G4LossTableManager::Instance())->SplineFlag());
     1390
     1391  return v;
     1392}
     1393
     1394//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1395
     1396G4double G4VEnergyLossProcess::CrossSectionPerVolume(
     1397         G4double kineticEnergy, const G4MaterialCutsCouple* couple)
     1398{
     1399  // Cross section per volume is calculated
     1400  DefineMaterial(couple);
     1401  G4double cross = 0.0;
     1402  G4bool b;
     1403  if(theLambdaTable) {
     1404    cross =
     1405      ((*theLambdaTable)[currentMaterialIndex])->GetValue(kineticEnergy, b);
     1406  } else {
     1407    SelectModel(kineticEnergy);
     1408    cross =
     1409      currentModel->CrossSectionPerVolume(currentMaterial,
     1410                                          particle, kineticEnergy,
     1411                                          (*theCuts)[currentMaterialIndex]);
     1412  }
     1413
     1414  return cross;
     1415}
     1416
     1417//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1418
     1419G4bool G4VEnergyLossProcess::StorePhysicsTable(
     1420       const G4ParticleDefinition* part, const G4String& directory,
     1421       G4bool ascii)
     1422{
     1423  G4bool res = true;
     1424  if ( baseParticle || part != particle ) return res;
     1425
     1426  if(!StoreTable(part,theDEDXTable,ascii,directory,"DEDX"))
     1427    {res = false;}
     1428
     1429  if(!StoreTable(part,theDEDXunRestrictedTable,ascii,directory,"DEDXnr"))
     1430    {res = false;}
     1431
     1432  if(!StoreTable(part,theDEDXSubTable,ascii,directory,"SubDEDX"))
     1433    {res = false;}
     1434
     1435  if(!StoreTable(part,theIonisationTable,ascii,directory,"Ionisation"))
     1436    {res = false;}
     1437
     1438  if(!StoreTable(part,theIonisationSubTable,ascii,directory,"SubIonisation"))
     1439    {res = false;}
     1440
     1441  if(isIonisation &&
     1442     !StoreTable(part,theCSDARangeTable,ascii,directory,"CSDARange"))
     1443    {res = false;}
     1444
     1445  if(isIonisation &&
     1446     !StoreTable(part,theRangeTableForLoss,ascii,directory,"Range"))
     1447    {res = false;}
     1448 
     1449  if(isIonisation &&
     1450     !StoreTable(part,theInverseRangeTable,ascii,directory,"InverseRange"))
     1451    {res = false;}
     1452 
     1453  if(!StoreTable(part,theLambdaTable,ascii,directory,"Lambda"))
     1454    {res = false;}
     1455
     1456  if(!StoreTable(part,theSubLambdaTable,ascii,directory,"SubLambda"))
     1457    {res = false;}
     1458
     1459  if ( res ) {
     1460    if(0 < verboseLevel) {
     1461      G4cout << "Physics tables are stored for " << particle->GetParticleName()
     1462             << " and process " << GetProcessName()
     1463             << " in the directory <" << directory
     1464             << "> " << G4endl;
     1465    }
     1466  } else {
     1467    G4cout << "Fail to store Physics Tables for "
     1468           << particle->GetParticleName()
     1469           << " and process " << GetProcessName()
     1470           << " in the directory <" << directory
     1471           << "> " << G4endl;
     1472  }
     1473  return res;
     1474}
     1475
     1476//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
     1477
     1478G4bool G4VEnergyLossProcess::StoreTable(const G4ParticleDefinition* part,
     1479                                        G4PhysicsTable* aTable, G4bool ascii,
     1480                                        const G4String& directory,
     1481                                        const G4String& tname)
     1482{
     1483  G4bool res = true;
     1484  if ( aTable ) {
     1485    const G4String name = GetPhysicsTableFileName(part,directory,tname,ascii);
     1486    if( !aTable->StorePhysicsTable(name,ascii)) res = false;
     1487  }
     1488  return res;
     1489}
     1490
     1491//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
     1492
     1493G4bool G4VEnergyLossProcess::RetrievePhysicsTable(
     1494       const G4ParticleDefinition* part, const G4String& directory,
     1495       G4bool ascii)
     1496{
     1497  G4bool res = true;
     1498  const G4String particleName = part->GetParticleName();
     1499
     1500  if(1 < verboseLevel) {
     1501    G4cout << "G4VEnergyLossProcess::RetrievePhysicsTable() for "
     1502           << particleName << " and process " << GetProcessName()
     1503           << "; tables_are_built= " << tablesAreBuilt
     1504           << G4endl;
     1505  }
     1506  if(particle == part) {
     1507
     1508    //    G4bool yes = true;
     1509    if ( !baseParticle ) {
     1510
     1511      G4bool fpi = true;
     1512      if(!RetrieveTable(part,theDEDXTable,ascii,directory,"DEDX",fpi))
     1513        {fpi = false;}
     1514
     1515      if(!RetrieveTable(part,theIonisationTable,ascii,directory,"Ionisation",false))
     1516        {fpi = false;}
     1517
     1518      if(!RetrieveTable(part,theRangeTableForLoss,ascii,directory,"Range",fpi))
     1519        {res = false;}
     1520
     1521      if(!RetrieveTable(part,theDEDXunRestrictedTable,ascii,directory,"DEDXnr",false))
     1522        {res = false;}
     1523
     1524      if(!RetrieveTable(part,theCSDARangeTable,ascii,directory,"CSDARange",false))
     1525        {res = false;}
     1526
     1527      if(!RetrieveTable(part,theInverseRangeTable,ascii,directory,"InverseRange",fpi))
     1528        {res = false;}
     1529
     1530      if(!RetrieveTable(part,theLambdaTable,ascii,directory,"Lambda",true))
     1531        {res = false;}
     1532
     1533      G4bool yes = false;
     1534      if(nSCoffRegions > 0) {yes = true;}
     1535
     1536      if(!RetrieveTable(part,theDEDXSubTable,ascii,directory,"SubDEDX",yes))
     1537        {res = false;}
     1538
     1539      if(!RetrieveTable(part,theSubLambdaTable,ascii,directory,"SubLambda",yes))
     1540        {res = false;}
     1541
     1542      if(!fpi) yes = false;
     1543      if(!RetrieveTable(part,theIonisationSubTable,ascii,directory,"SubIonisation",yes))
     1544        {res = false;}
     1545    }
     1546  }
     1547
     1548  return res;
     1549}
     1550
     1551//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
     1552
     1553G4bool G4VEnergyLossProcess::RetrieveTable(const G4ParticleDefinition* part,
     1554                                           G4PhysicsTable* aTable, G4bool ascii,
     1555                                           const G4String& directory,
     1556                                           const G4String& tname,
     1557                                           G4bool mandatory)
     1558{
     1559  G4bool res = true;
     1560  G4String filename = GetPhysicsTableFileName(part,directory,tname,ascii);
     1561  G4bool yes = aTable->ExistPhysicsTable(filename);
     1562  if(yes) {
     1563    yes = G4PhysicsTableHelper::RetrievePhysicsTable(aTable,filename,ascii);
     1564    if((G4LossTableManager::Instance())->SplineFlag()) {
     1565      size_t n = aTable->length();
     1566      for(size_t i=0; i<n; i++) {(*aTable)[i]->SetSpline(true);}
     1567    }
     1568  }
     1569  if(yes) {
     1570    if (0 < verboseLevel) {
     1571      G4cout << tname << " table for " << part->GetParticleName()
     1572             << " is Retrieved from <" << filename << ">"
     1573             << G4endl;
     1574    }
     1575  } else {
     1576    if(mandatory) res = false;
     1577    if(mandatory || 1 < verboseLevel) {
     1578      G4cout << tname << " table for " << part->GetParticleName()
     1579             << " from file <"
     1580             << filename << "> is not Retrieved"
     1581             << G4endl;
     1582    }
     1583  }
     1584  return res;
     1585}
     1586
     1587//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1588 
     1589void G4VEnergyLossProcess::AddCollaborativeProcess(
     1590            G4VEnergyLossProcess* p)
     1591{
     1592  G4bool add = true;
     1593  if(p->GetProcessName() != "eBrem") add = false;
     1594  if(add && nProcesses > 0) {
     1595    for(G4int i=0; i<nProcesses; i++) {
     1596      if(p == scProcesses[i]) {
     1597        add = false;
     1598        break;
     1599      }
     1600    }
     1601  }
     1602  if(add) {
     1603    scProcesses.push_back(p);
     1604    nProcesses++;
     1605    if (1 < verboseLevel) {
     1606      G4cout << "### The process " << p->GetProcessName()
     1607             << " is added to the list of collaborative processes of "
     1608             << GetProcessName() << G4endl;
     1609    }
     1610  }
     1611}
     1612
     1613//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1614
     1615G4double G4VEnergyLossProcess::GetDEDXDispersion(
     1616                                  const G4MaterialCutsCouple *couple,
     1617                                  const G4DynamicParticle* dp,
     1618                                        G4double length)
     1619{
     1620  DefineMaterial(couple);
     1621  G4double ekin = dp->GetKineticEnergy();
     1622  SelectModel(ekin*massRatio);
     1623  G4double tmax = currentModel->MaxSecondaryKinEnergy(dp);
     1624  tmax = std::min(tmax,(*theCuts)[currentMaterialIndex]);
     1625  G4double d = 0.0;
     1626  G4VEmFluctuationModel* fm = currentModel->GetModelOfFluctuations();
     1627  if(fm) d = fm->Dispersion(currentMaterial,dp,tmax,length);
     1628  return d;
     1629}
     1630
     1631//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1632
     1633void G4VEnergyLossProcess::ActivateDeexcitation(G4bool, const G4Region*)
     1634{}
     1635
     1636//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     1637
  • trunk/source/processes/electromagnetic/utils/src/G4VMscModel.cc

    r968 r991  
    2424// ********************************************************************
    2525//
    26 // $Id: G4VMscModel.cc,v 1.10 2009/02/24 09:56:03 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02-ref-02 $
     26// $Id: G4VMscModel.cc,v 1.4 2008/03/10 18:39:45 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    4949
    5050#include "G4VMscModel.hh"
    51 #include "G4ParticleChangeForMSC.hh"
    52 #include "G4TransportationManager.hh"
    5351
    5452//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     
    5755G4VMscModel::G4VMscModel(const G4String& nam):
    5856  G4VEmModel(nam),
    59   safetyHelper(0),
    6057  facrange(0.02),
    6158  facgeom(2.5),
     
    6461  dtrl(0.05),
    6562  lambdalimit(mm),
    66   geommax(1.e50*mm),
    6763  steppingAlgorithm(fUseSafety),
    6864  samplez(false),
     
    7672
    7773//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    78 
    79 void G4VMscModel::InitialiseSafetyHelper()
    80 {
    81   if(!safetyHelper) {
    82     safetyHelper = G4TransportationManager::GetTransportationManager()
    83       ->GetSafetyHelper();
    84     safetyHelper->InitialiseHelper();
    85   }
    86 }
    87 
    88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    89 
    90 void G4VMscModel::ComputeDisplacement(G4ParticleChangeForMSC* fParticleChange, 
    91                                       const G4ThreeVector& dir,
    92                                       G4double displacement,
    93                                       G4double postsafety)
    94 {
    95   const G4ThreeVector* pos = fParticleChange->GetProposedPosition();
    96   G4double r = displacement;
    97   if(r >  postsafety) {
    98     G4double newsafety = safetyHelper->ComputeSafety(*pos);
    99     if(r > newsafety) r = newsafety;
    100   }
    101   if(r > 0.) {
    102 
    103     // compute new endpoint of the Step
    104     G4ThreeVector newPosition = *pos + r*dir;
    105 
    106     // definitely not on boundary
    107     if(displacement == r) {
    108       safetyHelper->ReLocateWithinVolume(newPosition);
    109 
    110     } else {
    111       // check safety after displacement
    112       G4double postsafety = safetyHelper->ComputeSafety(newPosition);
    113 
    114       // displacement to boundary
    115       if(postsafety <= 0.0) {
    116         safetyHelper->Locate(newPosition,
    117                              *fParticleChange->GetProposedMomentumDirection());
    118 
    119         // not on the boundary
    120       } else {
    121         safetyHelper->ReLocateWithinVolume(newPosition);
    122       }
    123     }
    124     fParticleChange->ProposePosition(newPosition);
    125   }
    126 }
    127 
    128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    129 
    130 void G4VMscModel::SampleSecondaries(std::vector<G4DynamicParticle*>*,
    131                                     const G4MaterialCutsCouple*,
    132                                     const G4DynamicParticle*,
    133                                     G4double, G4double)
    134 {}
    135 
    136 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Note: See TracChangeset for help on using the changeset viewer.