Changeset 1055 for trunk/source/processes/electromagnetic/muons
- Timestamp:
- May 28, 2009, 4:26:57 PM (15 years ago)
- 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.12 4 2008/11/13 14:14:07vnivanch Exp $1 $Id: History,v 1.127 2009/04/12 17:19:01 vnivanch Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 20 12 April 09: V.Ivant (emmuons-V09-02-02) 21 G4MuBetheBlochModel, G4MuBremsstrahlungModel, G4MuPairProductionModel 22 - simplified initialisation 23 24 26 February 09: V.Ivant (emmuons-V09-02-01) 25 G4MuIonisation - fixed initialisation alowing to configure external model 26 of fluctuations 27 28 20 February 09: V.Ivant (emmuons-V09-02-00) 29 - Cleanup: improved comments, move virtual methods from .hh to .cc 19 30 20 31 12 November 08: V.Ivant (emmuons-V09-01-15) -
trunk/source/processes/electromagnetic/muons/include/G4MuBetheBlochModel.hh
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBetheBlochModel.hh,v 1.1 7 2007/05/22 17:35:58vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 76 76 virtual ~G4MuBetheBlochModel(); 77 77 78 v oid Initialise(const G4ParticleDefinition*, const G4DataVector&);78 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 79 79 80 G4double MinEnergyCut(const G4ParticleDefinition*,81 80 virtual G4double MinEnergyCut(const G4ParticleDefinition*, 81 const G4MaterialCutsCouple*); 82 82 83 83 virtual G4double ComputeCrossSectionPerElectron( … … 113 113 protected: 114 114 115 G4double MaxSecondaryEnergy(const G4ParticleDefinition*,116 115 virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 116 G4double kinEnergy); 117 117 118 118 private: 119 119 120 void SetParticle(const G4ParticleDefinition* p);120 inline void SetParticle(const G4ParticleDefinition* p); 121 121 122 122 // hide assignment operator … … 141 141 }; 142 142 143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 144 144 145 inline G4double G4MuBetheBlochModel::MaxSecondaryEnergy( 146 const G4ParticleDefinition*, 147 G4double kinEnergy) 145 inline void G4MuBetheBlochModel::SetParticle(const G4ParticleDefinition* p) 148 146 { 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 } 153 153 } 154 154 -
trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlung.hh,v 1.3 0 2008/02/29 17:50:05vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 86 86 virtual ~G4MuBremsstrahlung(); 87 87 88 G4bool IsApplicable(const G4ParticleDefinition& p);88 virtual G4bool IsApplicable(const G4ParticleDefinition& p); 89 89 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); 93 93 94 94 // Print out of the class parameters 95 v oid PrintInfo();95 virtual void PrintInfo(); 96 96 97 97 protected: 98 98 99 v oid InitialiseEnergyLossProcess(const G4ParticleDefinition*,100 const G4ParticleDefinition*);99 virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*, 100 const G4ParticleDefinition*); 101 101 102 102 private: … … 114 114 115 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....117 118 inline119 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 inline127 G4double G4MuBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,128 const G4Material*,129 G4double)130 {131 return lowestKinEnergy;132 }133 134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....135 116 136 117 #endif -
trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlungModel.hh,v 1.2 1 2008/07/22 16:11:34vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 78 78 virtual ~G4MuBremsstrahlungModel(); 79 79 80 v oid SetParticle(const G4ParticleDefinition*);80 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 81 81 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*); 86 84 87 85 virtual G4double ComputeCrossSectionPerAtom( … … 97 95 G4double cutEnergy); 98 96 99 v oid 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); 104 102 105 103 inline void SetLowestKineticEnergy(G4double e); … … 117 115 G4double gammaEnergy); 118 116 119 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 120 G4double kineticEnergy); 117 inline void SetParticle(const G4ParticleDefinition*); 121 118 122 119 private: … … 160 157 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 161 158 162 inline163 G4double G4MuBremsstrahlungModel::MaxSecondaryEnergy(const G4ParticleDefinition*,164 G4double kineticEnergy)165 {166 return kineticEnergy;167 }168 169 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......170 171 159 inline void G4MuBremsstrahlungModel::SetLowestKineticEnergy(G4double e) 172 160 { 173 161 lowestKinEnergy = e; 174 }175 176 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......177 178 inline179 G4double G4MuBremsstrahlungModel::MinEnergyCut(const G4ParticleDefinition*,180 const G4MaterialCutsCouple*)181 {182 return minThreshold;183 162 } 184 163 -
trunk/source/processes/electromagnetic/muons/include/G4MuIonisation.hh
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuIonisation.hh,v 1.3 0 2007/05/23 08:49:32vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 95 95 virtual ~G4MuIonisation(); 96 96 97 G4bool IsApplicable(const G4ParticleDefinition& p);97 virtual G4bool IsApplicable(const G4ParticleDefinition& p); 98 98 99 G4double MinPrimaryEnergy(const G4ParticleDefinition* p,100 const G4Material*, G4double cut);99 virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 100 const G4Material*, G4double cut); 101 101 102 102 // Print out of the class parameters 103 v oid PrintInfo();103 virtual void PrintInfo(); 104 104 105 105 protected: … … 127 127 128 128 //....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....148 129 149 130 #endif -
trunk/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuPairProduction.hh,v 1.3 0 2008/02/29 17:50:05vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 84 84 virtual ~G4MuPairProduction(); 85 85 86 G4bool IsApplicable(const G4ParticleDefinition& p);86 virtual G4bool IsApplicable(const G4ParticleDefinition& p); 87 87 88 G4double MinPrimaryEnergy(const G4ParticleDefinition* p,89 const G4Material*, G4double cut);88 virtual G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 89 const G4Material*, G4double cut); 90 90 91 91 // Print out of the class parameters 92 v oid PrintInfo();92 virtual void PrintInfo(); 93 93 94 94 protected: 95 95 96 v oid InitialiseEnergyLossProcess(const G4ParticleDefinition*,97 const G4ParticleDefinition*);96 virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*, 97 const G4ParticleDefinition*); 98 98 99 99 private: … … 113 113 114 114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....116 117 inline118 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 inline126 G4double G4MuPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,127 const G4Material*,128 G4double)129 {130 return lowestKinEnergy;131 }132 133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....134 115 135 116 #endif -
trunk/source/processes/electromagnetic/muons/include/G4MuPairProductionModel.hh
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuPairProductionModel.hh,v 1.2 7 2008/07/22 16:11:34vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 79 79 virtual ~G4MuPairProductionModel(); 80 80 81 v oid Initialise(const G4ParticleDefinition*, const G4DataVector&);81 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 82 82 83 83 … … 100 100 G4double maxEnergy); 101 101 102 virtual G4double MinEnergyCut(const G4ParticleDefinition*, 103 const G4MaterialCutsCouple*); 104 102 105 inline void SetLowestKineticEnergy(G4double e); 103 104 inline G4double MinEnergyCut(const G4ParticleDefinition*,105 const G4MaterialCutsCouple*);106 106 107 107 inline void SetParticle(const G4ParticleDefinition*); … … 120 120 G4double pairEnergy); 121 121 122 inlineG4double MaxSecondaryEnergy(const G4ParticleDefinition*,123 G4double kineticEnergy);122 virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 123 G4double kineticEnergy); 124 124 125 125 inline void SetCurrentElement(G4double Z); … … 193 193 194 194 inline 195 G4double G4MuPairProductionModel::MinEnergyCut(const G4ParticleDefinition*,196 const G4MaterialCutsCouple* )197 {198 return minPairEnergy;199 }200 201 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......202 203 inline204 195 void G4MuPairProductionModel::SetParticle(const G4ParticleDefinition* p) 205 196 { … … 208 199 particleMass = particle->GetPDGMass(); 209 200 } 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;220 201 } 221 202 -
trunk/source/processes/electromagnetic/muons/src/G4MuBetheBlochModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBetheBlochModel.cc,v 1.2 4 2008/03/25 12:31:04vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 88 88 theElectron = G4Electron::Electron(); 89 89 corr = G4LossTableManager::Instance()->EmCorrections(); 90 fParticleChange = 0; 90 91 91 92 if(p) SetParticle(p); … … 99 100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 100 101 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 113 102 G4double G4MuBetheBlochModel::MinEnergyCut(const G4ParticleDefinition*, 114 103 const G4MaterialCutsCouple* couple) … … 117 106 } 118 107 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 119 119 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 120 120 … … 123 123 { 124 124 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(); 131 126 } 132 127 -
trunk/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlung.cc,v 1.4 1 2008/10/16 13:37:04vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 93 93 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 94 94 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 95 111 void G4MuBremsstrahlung::InitialiseEnergyLossProcess( 96 112 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/muons/src/G4MuBremsstrahlungModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlungModel.cc,v 1.3 2 2008/07/22 16:11:34vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 111 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 112 112 113 G4double G4MuBremsstrahlungModel::MinEnergyCut(const G4ParticleDefinition*, 114 const G4MaterialCutsCouple*) 115 { 116 return minThreshold; 117 } 118 119 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 120 113 121 void G4MuBremsstrahlungModel::Initialise(const G4ParticleDefinition* p, 114 122 const G4DataVector& cuts) … … 131 139 if(nn > 0) { 132 140 for (G4int ii=0; ii<nn; ii++){ 133 G4DataVector* a =partialSumSigma[ii];141 G4DataVector* a = partialSumSigma[ii]; 134 142 if ( a ) delete a; 135 143 } … … 154 162 155 163 // 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(); 163 165 } 164 166 -
trunk/source/processes/electromagnetic/muons/src/G4MuIonisation.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuIonisation.cc,v 1.5 7 2008/10/27 10:55:07vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 86 86 #include "G4MuBetheBlochModel.hh" 87 87 #include "G4UniversalFluctuation.hh" 88 #include "G4IonFluctuations.hh" 88 89 #include "G4BohrFluctuations.hh" 89 90 #include "G4UnitsTable.hh" … … 112 113 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 113 114 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 114 133 void G4MuIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* part, 115 134 const G4ParticleDefinition* bpart) … … 123 142 SetSecondaryParticle(G4Electron::Electron()); 124 143 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()); 126 149 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()); 139 164 140 165 ratio = electron_mass_c2/mass; -
trunk/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuPairProduction.cc,v 1.5 1 2008/10/16 13:37:04vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 100 100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 101 101 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 102 118 void G4MuPairProduction::InitialiseEnergyLossProcess( 103 119 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuPairProductionModel.cc,v 1. 39 2008/07/22 16:11:34vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$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 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 137 137 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 138 138 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 139 156 void G4MuPairProductionModel::Initialise(const G4ParticleDefinition* p, 140 157 const G4DataVector&) … … 144 161 MakeSamplingTables(); 145 162 } 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(); 153 164 } 154 165
Note: See TracChangeset
for help on using the changeset viewer.