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 #ifndef G4LivermoreGammaConversionModelRC_h
00033 #define G4LivermoreGammaConversionModelRC_h 1
00034
00035 #include "G4VEmModel.hh"
00036 #include "G4Electron.hh"
00037 #include "G4Positron.hh"
00038 #include "G4ParticleChangeForGamma.hh"
00039 #include "G4CrossSectionHandler.hh"
00040 #include "G4ForceCondition.hh"
00041 #include "G4CompositeEMDataSet.hh"
00042 #include "G4Gamma.hh"
00043
00044 class G4LivermoreGammaConversionModelRC : public G4VEmModel
00045 {
00046
00047 public:
00048
00049 G4LivermoreGammaConversionModelRC(const G4ParticleDefinition* p = 0,
00050 const G4String& nam = "LivermoreConversion");
00051
00052 virtual ~G4LivermoreGammaConversionModelRC();
00053
00054 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
00055
00056 virtual G4double ComputeCrossSectionPerAtom(
00057 const G4ParticleDefinition*,
00058 G4double kinEnergy,
00059 G4double Z,
00060 G4double A=0,
00061 G4double cut=0,
00062 G4double emax=DBL_MAX);
00063
00064 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
00065 const G4MaterialCutsCouple*,
00066 const G4DynamicParticle*,
00067 G4double tmin,
00068 G4double maxEnergy);
00069
00070 protected:
00071
00072 G4ParticleChangeForGamma* fParticleChange;
00073
00074 G4double GetMeanFreePath(const G4Track& aTrack,
00075 G4double previousStepSize,
00076 G4ForceCondition* condition);
00077 private:
00078
00079 const G4double smallEnergy;
00080 G4double lowEnergyLimit;
00081 G4double highEnergyLimit;
00082
00083 G4int verboseLevel;
00084 G4bool isInitialised;
00085
00086 G4double ScreenFunction1(G4double screenVariable);
00087 G4double ScreenFunction2(G4double screenVariable);
00088 G4VCrossSectionHandler* crossSectionHandler;
00089 G4VEMDataSet* meanFreePathTable;
00090
00091 G4LivermoreGammaConversionModelRC & operator=(const G4LivermoreGammaConversionModelRC &right);
00092 G4LivermoreGammaConversionModelRC(const G4LivermoreGammaConversionModelRC&);
00093
00094
00095 };
00096
00097
00098
00099 #endif