Ignore:
Timestamp:
May 28, 2009, 4:26:57 PM (15 years ago)
Author:
garnier
Message:

maj sur la beta de geant 4.9.3

Location:
trunk/source/processes/electromagnetic/muons
Files:
13 edited

Legend:

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

    r1007 r1055  
    1 $Id: History,v 1.124 2008/11/13 14:14:07 vnivanch Exp $
     1$Id: History,v 1.127 2009/04/12 17:19:01 vnivanch Exp $
    22-------------------------------------------------------------------
    33
     
    1717     * Reverse chronological order (last date on top), please *
    1818     ----------------------------------------------------------
     19
     2012 April 09: V.Ivant (emmuons-V09-02-02)
     21G4MuBetheBlochModel, G4MuBremsstrahlungModel, G4MuPairProductionModel
     22  - simplified initialisation
     23
     2426 February 09: V.Ivant (emmuons-V09-02-01)
     25G4MuIonisation - fixed initialisation alowing to configure external model
     26                 of fluctuations
     27
     2820 February 09: V.Ivant (emmuons-V09-02-00)
     29- Cleanup: improved comments, move virtual methods from .hh to .cc
    1930
    203112 November 08: V.Ivant (emmuons-V09-01-15)
  • trunk/source/processes/electromagnetic/muons/include/G4MuBetheBlochModel.hh

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBetheBlochModel.hh,v 1.17 2007/05/22 17:35:58 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuBetheBlochModel.hh,v 1.18 2009/02/20 14:48:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    7676  virtual ~G4MuBetheBlochModel();
    7777
    78   void Initialise(const G4ParticleDefinition*, const G4DataVector&);
     78  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7979
    80   G4double MinEnergyCut(const G4ParticleDefinition*,
    81                         const G4MaterialCutsCouple*);
     80  virtual G4double MinEnergyCut(const G4ParticleDefinition*,
     81                                const G4MaterialCutsCouple*);
    8282                       
    8383  virtual G4double ComputeCrossSectionPerElectron(
     
    113113protected:
    114114
    115   G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    116                                     G4double kinEnergy);
     115  virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
     116                                      G4double kinEnergy);
    117117
    118118private:
    119119
    120   void SetParticle(const G4ParticleDefinition* p);
     120  inline 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 G4double G4MuBetheBlochModel::MaxSecondaryEnergy(
    146           const G4ParticleDefinition*,
    147                 G4double kinEnergy)
     145inline void G4MuBetheBlochModel::SetParticle(const G4ParticleDefinition* p)
    148146{
    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;
     147  if(!particle) {
     148    particle = p;
     149    mass = particle->GetPDGMass();
     150    massSquare = mass*mass;
     151    ratio = electron_mass_c2/mass;
     152  }
    153153}
    154154
  • trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlung.hh,v 1.30 2008/02/29 17:50:05 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuBremsstrahlung.hh,v 1.31 2009/02/20 14:48:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    8686  virtual ~G4MuBremsstrahlung();
    8787
    88   G4bool IsApplicable(const G4ParticleDefinition& p);
     88  virtual G4bool IsApplicable(const G4ParticleDefinition& p);
    8989
    90   G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    91                             const G4Material*,
    92                             G4double cut);
     90  virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     91                                    const G4Material*,
     92                                    G4double cut);
    9393
    9494  // Print out of the class parameters
    95   void PrintInfo();
     95  virtual void PrintInfo();
    9696
    9797protected:
    9898
    99   void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
    100                                    const G4ParticleDefinition*);
     99  virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
     100                                           const G4ParticleDefinition*);
    101101
    102102private:
     
    114114
    115115//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    117 
    118 inline
    119 G4bool 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 
    126 inline
    127 G4double G4MuBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,
    128                                               const G4Material*,
    129                                               G4double)
    130 {
    131   return lowestKinEnergy;
    132 }
    133 
    134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    135116
    136117#endif
  • trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlungModel.hh,v 1.21 2008/07/22 16:11:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuBremsstrahlungModel.hh,v 1.22 2009/02/20 14:48:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    7878  virtual ~G4MuBremsstrahlungModel();
    7979
    80   void SetParticle(const G4ParticleDefinition*);
     80  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    8181
    82   void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    83 
    84   G4double MinEnergyCut(const G4ParticleDefinition*,
    85                         const G4MaterialCutsCouple*);
     82  virtual G4double MinEnergyCut(const G4ParticleDefinition*,
     83                                const G4MaterialCutsCouple*);
    8684                             
    8785  virtual G4double ComputeCrossSectionPerAtom(
     
    9795                                G4double cutEnergy);
    9896                             
    99   void SampleSecondaries(std::vector<G4DynamicParticle*>*,
    100                         const G4MaterialCutsCouple*,
    101                         const G4DynamicParticle*,
    102                         G4double tmin,
    103                         G4double maxEnergy);
     97  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     98                                const G4MaterialCutsCouple*,
     99                                const G4DynamicParticle*,
     100                                G4double tmin,
     101                                G4double maxEnergy);
    104102
    105103  inline void SetLowestKineticEnergy(G4double e);
     
    117115                                                   G4double gammaEnergy);
    118116
    119   G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    120                               G4double kineticEnergy);
     117  inline void SetParticle(const G4ParticleDefinition*);
    121118
    122119private:
     
    160157//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    161158
    162 inline
    163 G4double G4MuBremsstrahlungModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
    164                                                      G4double kineticEnergy)
    165 {
    166   return kineticEnergy;
    167 }
    168 
    169 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    170 
    171159inline void G4MuBremsstrahlungModel::SetLowestKineticEnergy(G4double e)
    172160{
    173161  lowestKinEnergy = e;
    174 }
    175 
    176 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    177 
    178 inline
    179 G4double G4MuBremsstrahlungModel::MinEnergyCut(const G4ParticleDefinition*,
    180                                                const G4MaterialCutsCouple*)
    181 {
    182   return minThreshold;
    183162}
    184163
  • trunk/source/processes/electromagnetic/muons/include/G4MuIonisation.hh

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuIonisation.hh,v 1.30 2007/05/23 08:49:32 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuIonisation.hh,v 1.31 2009/02/20 14:48:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    9595  virtual ~G4MuIonisation();
    9696
    97   G4bool IsApplicable(const G4ParticleDefinition& p);
     97  virtual G4bool IsApplicable(const G4ParticleDefinition& p);
    9898
    99   G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    100                             const G4Material*, G4double cut);
     99  virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     100                                    const G4Material*, G4double cut);
    101101
    102102  // Print out of the class parameters
    103   void PrintInfo();
     103  virtual void PrintInfo();
    104104
    105105protected:
     
    127127
    128128//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    129 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    130 
    131 inline 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 
    138 inline 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....
    148129
    149130#endif
  • trunk/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuPairProduction.hh,v 1.30 2008/02/29 17:50:05 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuPairProduction.hh,v 1.31 2009/02/20 14:48:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    8484  virtual ~G4MuPairProduction();
    8585
    86   G4bool IsApplicable(const G4ParticleDefinition& p);
     86  virtual G4bool IsApplicable(const G4ParticleDefinition& p);
    8787
    88   G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
    89                             const G4Material*, G4double cut);
     88  virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
     89                                    const G4Material*, G4double cut);
    9090
    9191  // Print out of the class parameters
    92   void PrintInfo();
     92  virtual void PrintInfo();
    9393
    9494protected:
    9595
    96   void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
    97                                    const G4ParticleDefinition*);
     96  virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
     97                                           const G4ParticleDefinition*);
    9898
    9999private:
     
    113113
    114114//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    116 
    117 inline
    118 G4bool 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 
    125 inline
    126 G4double G4MuPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,
    127                                               const G4Material*,
    128                                               G4double)
    129 {
    130   return lowestKinEnergy;
    131 }
    132 
    133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    134115
    135116#endif
  • trunk/source/processes/electromagnetic/muons/include/G4MuPairProductionModel.hh

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

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBetheBlochModel.cc,v 1.24 2008/03/25 12:31:04 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuBetheBlochModel.cc,v 1.26 2009/04/12 17:19:01 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    8888  theElectron = G4Electron::Electron();
    8989  corr = G4LossTableManager::Instance()->EmCorrections();
     90  fParticleChange = 0;
    9091
    9192  if(p) SetParticle(p);
     
    99100//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    100101
    101 void 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 
    113102G4double G4MuBetheBlochModel::MinEnergyCut(const G4ParticleDefinition*,
    114103                                           const G4MaterialCutsCouple* couple)
     
    117106}
    118107
     108//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
     109
     110G4double 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
     
    123123{
    124124  if(p) SetParticle(p);
    125 
    126   if(pParticleChange)
    127     fParticleChange = reinterpret_cast<G4ParticleChangeForLoss*>
    128                                                              (pParticleChange);
    129   else
    130     fParticleChange = new G4ParticleChangeForLoss();
     125  if(!fParticleChange) fParticleChange = GetParticleChangeForLoss();
    131126}
    132127
  • trunk/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlung.cc,v 1.41 2008/10/16 13:37:04 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuBremsstrahlung.cc,v 1.42 2009/02/20 14:48:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    9393//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    9494
     95G4bool 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
     102G4double G4MuBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,
     103                                              const G4Material*,
     104                                              G4double)
     105{
     106  return lowestKinEnergy;
     107}
     108
     109//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     110
    95111void G4MuBremsstrahlung::InitialiseEnergyLossProcess(
    96112                                 const G4ParticleDefinition* part,
  • trunk/source/processes/electromagnetic/muons/src/G4MuBremsstrahlungModel.cc

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlungModel.cc,v 1.32 2008/07/22 16:11:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuBremsstrahlungModel.cc,v 1.35 2009/04/12 17:48:45 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    111111//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    112112
     113G4double G4MuBremsstrahlungModel::MinEnergyCut(const G4ParticleDefinition*,
     114                                               const G4MaterialCutsCouple*)
     115{
     116  return minThreshold;
     117}
     118
     119//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     120
    113121void G4MuBremsstrahlungModel::Initialise(const G4ParticleDefinition* p,
    114122                                         const G4DataVector& cuts)
     
    131139    if(nn > 0) {
    132140      for (G4int ii=0; ii<nn; ii++){
    133         G4DataVector* a=partialSumSigma[ii];
     141        G4DataVector* a = partialSumSigma[ii];
    134142        if ( a )  delete a;   
    135143      }
     
    154162
    155163  // define pointer to G4ParticleChange
    156   if(!fParticleChange) {
    157     if(pParticleChange)
    158       fParticleChange =
    159         reinterpret_cast<G4ParticleChangeForLoss*>(pParticleChange);
    160     else
    161       fParticleChange = new G4ParticleChangeForLoss();
    162   }
     164  if(!fParticleChange) fParticleChange = GetParticleChangeForLoss();
    163165}
    164166
  • trunk/source/processes/electromagnetic/muons/src/G4MuIonisation.cc

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuIonisation.cc,v 1.57 2008/10/27 10:55:07 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuIonisation.cc,v 1.59 2009/02/26 11:04:20 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    8686#include "G4MuBetheBlochModel.hh"
    8787#include "G4UniversalFluctuation.hh"
     88#include "G4IonFluctuations.hh"
    8889#include "G4BohrFluctuations.hh"
    8990#include "G4UnitsTable.hh"
     
    112113//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    113114
     115G4bool 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
     122G4double 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
    114133void G4MuIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* part,
    115134                                                 const G4ParticleDefinition* bpart)
     
    123142    SetSecondaryParticle(G4Electron::Electron());
    124143
    125     flucModel = new G4UniversalFluctuation();
     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());
    126149
    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);
     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());
    139164
    140165    ratio = electron_mass_c2/mass;
  • trunk/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuPairProduction.cc,v 1.51 2008/10/16 13:37:04 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuPairProduction.cc,v 1.52 2009/02/20 14:48:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    100100//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
    101101
     102G4bool 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
     109G4double G4MuPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,
     110                                              const G4Material*,
     111                                              G4double)
     112{
     113  return lowestKinEnergy;
     114}
     115
     116//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     117
    102118void G4MuPairProduction::InitialiseEnergyLossProcess(
    103119                         const G4ParticleDefinition* part,
  • trunk/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc

    r1007 r1055  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuPairProductionModel.cc,v 1.39 2008/07/22 16:11:34 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-02 $
     26// $Id: G4MuPairProductionModel.cc,v 1.41 2009/04/12 17:19:01 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
    2828//
    2929// -------------------------------------------------------------------
     
    137137//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    138138
     139G4double G4MuPairProductionModel::MinEnergyCut(const G4ParticleDefinition*,
     140                                               const G4MaterialCutsCouple* )
     141{
     142  return minPairEnergy;
     143}
     144
     145//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     146
     147G4double 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
    139156void G4MuPairProductionModel::Initialise(const G4ParticleDefinition* p,
    140157                                         const G4DataVector&)
     
    144161    MakeSamplingTables();
    145162  }
    146   if(!fParticleChange) {
    147     if(pParticleChange)
    148       fParticleChange =
    149         reinterpret_cast<G4ParticleChangeForLoss*>(pParticleChange);
    150     else
    151       fParticleChange = new G4ParticleChangeForLoss();
    152   }
     163  if(!fParticleChange) fParticleChange = GetParticleChangeForLoss();
    153164}
    154165
Note: See TracChangeset for help on using the changeset viewer.