- Timestamp:
- Apr 6, 2009, 12:21:12 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh
r819 r961 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlungModel.hh,v 1. 17 2007/10/11 09:25:31vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 1-patch-02 $26 // $Id: G4MuBremsstrahlungModel.hh,v 1.22 2009/02/20 14:48:16 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02-ref-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 45 45 // 10-02-04 Add lowestKinEnergy (V.Ivanchenko) 46 46 // 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko) 47 // 13-02-06 add ComputeCrossSectionPerAtom (mma)47 // 13-02-06 Add ComputeCrossSectionPerAtom (mma) 48 48 // 11-10-07 Add ignoreCut flag (V.Ivanchenko) 49 // 28-02-08 Reorganized protected methods and members (V.Ivanchenko) 50 // 06-03-08 Remove obsolete methods and members (V.Ivanchenko) 49 51 // 50 52 … … 52 54 // Class Description: 53 55 // 54 // Implementation of energy loss for gamma emissionby muons56 // Implementation of bremssrahlung by muons 55 57 56 58 // ------------------------------------------------------------------- … … 61 63 62 64 #include "G4VEmModel.hh" 65 #include "G4NistManager.hh" 63 66 64 67 class G4Element; … … 75 78 virtual ~G4MuBremsstrahlungModel(); 76 79 77 v oid SetParticle(const G4ParticleDefinition*);80 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 78 81 79 void Initialise(const G4ParticleDefinition*, const G4DataVector&); 80 81 void SetLowestKineticEnergy(G4double e) {lowestKinEnergy = e;}; 82 83 G4double MinEnergyCut(const G4ParticleDefinition*, 84 const G4MaterialCutsCouple*); 82 virtual G4double MinEnergyCut(const G4ParticleDefinition*, 83 const G4MaterialCutsCouple*); 85 84 86 85 virtual G4double ComputeCrossSectionPerAtom( … … 90 89 G4double cutEnergy, 91 90 G4double maxEnergy); 92 93 virtual G4double CrossSectionPerVolume(const G4Material*, 94 const G4ParticleDefinition*, 95 G4double kineticEnergy, 96 G4double cutEnergy, 97 G4double maxEnergy); 98 91 99 92 virtual G4double ComputeDEDXPerVolume(const G4Material*, 100 93 const G4ParticleDefinition*, … … 102 95 G4double cutEnergy); 103 96 104 void SampleSecondaries(std::vector<G4DynamicParticle*>*, 105 const G4MaterialCutsCouple*, 106 const G4DynamicParticle*, 107 G4double tmin, 108 G4double maxEnergy); 97 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, 98 const G4MaterialCutsCouple*, 99 const G4DynamicParticle*, 100 G4double tmin, 101 G4double maxEnergy); 102 103 inline void SetLowestKineticEnergy(G4double e); 109 104 110 105 protected: 111 106 112 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 113 G4double kineticEnergy); 107 G4double ComputMuBremLoss(G4double Z, G4double tkin, G4double cut); 108 109 G4double ComputeMicroscopicCrossSection(G4double tkin, 110 G4double Z, 111 G4double cut); 114 112 115 public: 113 virtual G4double ComputeDMicroscopicCrossSection(G4double tkin, 114 G4double Z, 115 G4double gammaEnergy); 116 116 117 G4double ComputMuBremLoss(G4double Z, G4double A, G4double tkin, G4double cut); 118 119 G4double ComputeMicroscopicCrossSection(G4double tkin, 120 G4double Z, 121 G4double A, 122 G4double cut); 123 124 G4double ComputeDMicroscopicCrossSection(G4double tkin, 125 G4double Z, 126 G4double A, 127 G4double gammaEnergy); 128 129 inline void SetIgnoreCutFlag(G4bool); 130 131 inline G4bool IgnoreCutFlag() const; 117 inline void SetParticle(const G4ParticleDefinition*); 132 118 133 119 private: 134 120 135 G4DataVector* ComputePartialSumSigma(const G4Material* material,136 G4double tkin, G4double cut);121 G4DataVector* ComputePartialSumSigma(const G4Material* material, 122 G4double tkin, G4double cut); 137 123 138 const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple) const; 139 140 void MakeSamplingTables(); 141 124 const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple) const; 142 125 143 126 // hide assignment operator … … 145 128 G4MuBremsstrahlungModel(const G4MuBremsstrahlungModel&); 146 129 130 protected: 131 132 const G4ParticleDefinition* particle; 133 G4NistManager* nist; 134 G4double mass; 135 G4double rmass; 136 G4double cc; 137 G4double coeff; 138 G4double sqrte; 139 G4double bh; 140 G4double bh1; 141 G4double btf; 142 G4double btf1; 143 144 private: 145 147 146 G4ParticleDefinition* theGamma; 148 const G4ParticleDefinition* particle;149 147 G4ParticleChangeForLoss* fParticleChange; 150 148 … … 153 151 G4double lowestKinEnergy; 154 152 G4double minThreshold; 155 G4double mass;156 157 // tables for sampling158 G4int nzdat,ntdat,NBIN;159 static G4double zdat[5],adat[5],tdat[8];160 G4double ya[1001], proba[5][8][1001];161 G4double cutFixed;162 163 G4bool ignoreCut;164 153 165 154 std::vector<G4DataVector*> partialSumSigma; 166 G4bool samplingTablesAreFilled;167 168 155 }; 169 156 170 157 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 171 158 172 inline G4double G4MuBremsstrahlungModel::MaxSecondaryEnergy( 173 const G4ParticleDefinition*, 174 G4double kineticEnergy) 159 inline void G4MuBremsstrahlungModel::SetLowestKineticEnergy(G4double e) 175 160 { 176 return kineticEnergy;161 lowestKinEnergy = e; 177 162 } 178 163 179 164 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 180 165 181 inline void G4MuBremsstrahlungModel::SetIgnoreCutFlag(G4bool val) 166 inline 167 void G4MuBremsstrahlungModel::SetParticle(const G4ParticleDefinition* p) 182 168 { 183 ignoreCut = val; 184 } 185 186 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 187 188 inline G4bool G4MuBremsstrahlungModel::IgnoreCutFlag() const 189 { 190 return ignoreCut; 169 if(!particle) { 170 particle = p; 171 mass = particle->GetPDGMass(); 172 rmass=mass/electron_mass_c2 ; 173 cc=classic_electr_radius/rmass ; 174 coeff= 16.*fine_structure_const*cc*cc/3. ; 175 } 191 176 } 192 177
Note: See TracChangeset
for help on using the changeset viewer.