00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef G4LIVERMOREBREMSSTRAHLUNGMODEL_HH
00044 #define G4LIVERMOREBREMSSTRAHLUNGMODEL_HH 1
00045
00046 #include "globals.hh"
00047 #include "G4VEmModel.hh"
00048 #include "G4ParticleChangeForLoss.hh"
00049
00050 class G4ParticleDefinition;
00051 class G4MaterialCutsCouple;
00052 class G4Material;
00053
00054 class G4BremsstrahlungCrossSectionHandler;
00055 class G4VEnergySpectrum;
00056
00057 class G4LivermoreBremsstrahlungModel : public G4VEmModel
00058 {
00059
00060 public:
00061
00062 G4LivermoreBremsstrahlungModel(const G4ParticleDefinition* p=0,
00063 const G4String& processName = "LowEnBrem");
00064
00065 virtual ~G4LivermoreBremsstrahlungModel();
00066
00067 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
00068
00069
00070 virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
00071 G4double kinEnergy,
00072 G4double Z,
00073 G4double A=0,
00074 G4double cut=0,
00075 G4double emax=DBL_MAX);
00076
00077 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
00078 const G4MaterialCutsCouple*,
00079 const G4DynamicParticle*,
00080 G4double tmin,
00081 G4double maxEnergy);
00082
00083 virtual G4double ComputeDEDXPerVolume(const G4Material*,
00084 const G4ParticleDefinition*,
00085 G4double kineticEnergy,
00086 G4double cutEnergy);
00087
00088
00089 virtual G4double MinEnergyCut(const G4ParticleDefinition*,
00090 const G4MaterialCutsCouple*);
00091
00092 void SetVerboseLevel(G4int vl) {verboseLevel = vl;};
00093
00094
00095
00096
00097 protected:
00098 G4ParticleChangeForLoss* fParticleChange;
00099
00100 private:
00101
00102 G4LivermoreBremsstrahlungModel & operator=(const G4LivermoreBremsstrahlungModel &right);
00103 G4LivermoreBremsstrahlungModel(const G4LivermoreBremsstrahlungModel&);
00104
00105
00106
00107 G4double fIntrinsicLowEnergyLimit;
00108 G4double fIntrinsicHighEnergyLimit;
00109 G4int fNBinEnergyLoss;
00110
00111 G4bool isInitialised;
00112
00113 G4int verboseLevel;
00114
00115 G4BremsstrahlungCrossSectionHandler* crossSectionHandler;
00116 G4VEnergySpectrum* energySpectrum;
00117 G4DataVector energyBins;
00118
00119
00120
00121
00122 };
00123
00124 #endif
00125