Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // >> 26 // $Id$ 26 // 27 // 27 // ------------------------------------------- << 28 // Author: Luciano Pandola 28 // << 29 // on base of G4LowEnergyBremsstrahlung developed by A.Forti and V.Ivanchenko 29 // GEANT4 Class header file << 30 // << 31 // << 32 // File name: G4LivermoreBremsstrahlungMod << 33 // << 34 // Author: Andreas Schaelicke & Vladimi << 35 // << 36 // Creation date: 04.10.2011 << 37 // << 38 // Modifications: << 39 // 30 // >> 31 // History: >> 32 // ----------- >> 33 // 03 Mar 2009 L. Pandola 1st implementation. Migration from EM process >> 34 // to EM model. Physics is unchanged. 40 // 35 // 41 // Class Description: << 42 // << 43 // Implementation of the bremssrahlung energy << 44 // 1. S.M. Seltzer and M.J. Berger Nucl. Instr << 45 // 2. S.M. Seltzer and M.J. Berger Atomic data << 46 // Tables 35 (1986) 345 << 47 // Cross section computation in the base class << 48 << 49 // ------------------------------------------- 36 // ------------------------------------------------------------------- 50 // 37 // >> 38 // Class description: >> 39 // Low Energy Electromagnetic Physics, e- bremsstrahlung >> 40 // with Livermore Model >> 41 // ------------------------------------------------------------------- 51 42 52 #ifndef G4LivermoreBremsstrahlungModel_h << 43 #ifndef G4LIVERMOREBREMSSTRAHLUNGMODEL_HH 53 #define G4LivermoreBremsstrahlungModel_h 1 << 44 #define G4LIVERMOREBREMSSTRAHLUNGMODEL_HH 1 54 45 55 #include "G4eBremsstrahlungRelModel.hh" << 56 #include "globals.hh" 46 #include "globals.hh" >> 47 #include "G4VEmModel.hh" >> 48 #include "G4ParticleChangeForLoss.hh" 57 49 58 class G4Physics2DVector; << 50 class G4ParticleDefinition; >> 51 class G4MaterialCutsCouple; >> 52 class G4Material; >> 53 //class G4VBremAngularDistribution; >> 54 class G4BremsstrahlungCrossSectionHandler; >> 55 class G4VEnergySpectrum; 59 56 60 class G4LivermoreBremsstrahlungModel : public << 57 class G4LivermoreBremsstrahlungModel : public G4VEmModel 61 { 58 { >> 59 62 public: 60 public: 63 explicit G4LivermoreBremsstrahlungModel(cons << 64 const G4String& nam = "LowEnBrem") << 65 virtual ~G4LivermoreBremsstrahlungModel(); << 66 61 67 void Initialise(const G4ParticleDefinition*, << 62 G4LivermoreBremsstrahlungModel(const G4ParticleDefinition* p=0, 68 void InitialiseForElement(const G4ParticleDe << 63 const G4String& processName = "LowEnBrem"); >> 64 >> 65 virtual ~G4LivermoreBremsstrahlungModel(); >> 66 >> 67 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 69 68 70 void SampleSecondaries(std::vector<G4Dynamic << 69 >> 70 virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, >> 71 G4double kinEnergy, >> 72 G4double Z, >> 73 G4double A=0, >> 74 G4double cut=0, >> 75 G4double emax=DBL_MAX); >> 76 >> 77 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, 71 const G4MaterialCutsCouple*, 78 const G4MaterialCutsCouple*, 72 const G4DynamicParticle*, 79 const G4DynamicParticle*, 73 G4double cutEnergy, << 80 G4double tmin, 74 G4double maxEnergy) override; << 81 G4double maxEnergy); 75 << 82 76 inline void SetBicubicInterpolationFlag(G4bo << 83 virtual G4double ComputeDEDXPerVolume(const G4Material*, 77 << 84 const G4ParticleDefinition*, 78 G4LivermoreBremsstrahlungModel & operator=(c << 85 G4double kineticEnergy, 79 G4LivermoreBremsstrahlungModel(const G4Live << 86 G4double cutEnergy); 80 << 87 >> 88 // min cut in kinetic energy allowed by the model >> 89 virtual G4double MinEnergyCut(const G4ParticleDefinition*, >> 90 const G4MaterialCutsCouple*); >> 91 >> 92 void SetVerboseLevel(G4int vl) {verboseLevel = vl;}; >> 93 /* >> 94 void SetAngularGenerator(G4VBremAngularDistribution* distribution); >> 95 void SetAngularGenerator(const G4String& name); >> 96 */ 81 protected: 97 protected: 82 G4double ComputeDXSectionPerAtom(G4double ga << 98 G4ParticleChangeForLoss* fParticleChange; 83 G4String DirectoryPath() const; << 84 99 85 private: 100 private: 86 void ReadData(G4int Z, const char* path = 0) << 101 87 << 102 G4LivermoreBremsstrahlungModel & operator=(const G4LivermoreBremsstrahlungModel &right); 88 static G4Physics2DVector* dataSB[101]; << 103 G4LivermoreBremsstrahlungModel(const G4LivermoreBremsstrahlungModel&); 89 static G4double ylimit[101]; << 104 90 static G4double expnumlim; << 105 91 << 106 //Intrinsic energy limits of the model: cannot be extended by the parent process 92 G4int nwarn = 0; << 107 G4double fIntrinsicLowEnergyLimit; 93 size_t idx = 0; << 108 G4double fIntrinsicHighEnergyLimit; 94 size_t idy = 0; << 109 G4int fNBinEnergyLoss; 95 G4bool useBicubicInterpolation; << 110 >> 111 G4bool isInitialised; >> 112 >> 113 G4int verboseLevel; >> 114 >> 115 G4BremsstrahlungCrossSectionHandler* crossSectionHandler; >> 116 G4VEnergySpectrum* energySpectrum; >> 117 G4DataVector energyBins; >> 118 >> 119 //G4VBremAngularDistribution* angularDistribution; >> 120 // G4VBremAngularDistribution* TsaiAngularDistribution; >> 121 //G4String generatorName; 96 }; 122 }; 97 123 98 inline void G4LivermoreBremsstrahlungModel::Se << 99 { << 100 useBicubicInterpolation = val; << 101 } << 102 << 103 //....oooOO0OOooo........oooOO0OOooo........oo << 104 << 105 << 106 #endif 124 #endif >> 125 107 126