File indexing completed on 2025-01-18 09:57:58
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifndef G4BoldyshevTripletModel_h
0029 #define G4BoldyshevTripletModel_h 1
0030
0031 #include "G4VEmModel.hh"
0032 #include "G4Electron.hh"
0033 #include "G4Positron.hh"
0034 #include "G4ParticleChangeForGamma.hh"
0035 #include "G4PhysicsFreeVector.hh"
0036 #include "G4ProductionCutsTable.hh"
0037 #include "G4Log.hh"
0038
0039 class G4BoldyshevTripletModel : public G4VEmModel
0040 {
0041 public:
0042 explicit G4BoldyshevTripletModel(const G4ParticleDefinition* p = nullptr,
0043 const G4String& nam = "BoldyshevTripletConversion");
0044
0045 virtual ~G4BoldyshevTripletModel();
0046
0047 virtual void Initialise(const G4ParticleDefinition*,
0048 const G4DataVector&);
0049
0050 virtual void InitialiseForElement(const G4ParticleDefinition*, G4int Z);
0051
0052 virtual G4double ComputeCrossSectionPerAtom(
0053 const G4ParticleDefinition*,
0054 G4double kinEnergy,
0055 G4double Z,
0056 G4double A=0.,
0057 G4double cut=0.,
0058 G4double emax=DBL_MAX);
0059
0060 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
0061 const G4MaterialCutsCouple*,
0062 const G4DynamicParticle*,
0063 G4double tmin,
0064 G4double maxEnergy);
0065
0066 virtual G4double MinPrimaryEnergy(const G4Material*,
0067 const G4ParticleDefinition*,
0068 G4double);
0069
0070 private:
0071 void ReadData(size_t Z, const char* path = nullptr);
0072
0073 G4double ScreenFunction1(G4double screenVariable);
0074 G4double ScreenFunction2(G4double screenVariable);
0075
0076 G4BoldyshevTripletModel & operator=(const G4BoldyshevTripletModel &right) = delete;
0077 G4BoldyshevTripletModel(const G4BoldyshevTripletModel&) = delete;
0078
0079 static const G4int maxZ = 99;
0080 static G4PhysicsFreeVector* data[maxZ+1];
0081
0082 G4ParticleChangeForGamma* fParticleChange;
0083
0084 G4double lowEnergyLimit;
0085 G4double smallEnergy;
0086 G4double energyThreshold;
0087 G4double momentumThreshold_c;
0088 G4double xb;
0089 G4double xn;
0090
0091 G4int verboseLevel;
0092
0093 };
0094
0095
0096
0097 #endif