60#ifndef G4MuPairProductionModel_h
61#define G4MuPairProductionModel_h 1
133 void MakeSamplingTables();
135 inline G4double InterpolatedIntegralCrossSection(
172 static G4double zdat[5], adat[5], tdat[8];
173 G4double ya[1001], proba[5][8][1001];
179 G4bool samplingTablesAreFilled;
180 std::vector<G4double> partialSum;
216inline G4double G4MuPairProductionModel::InterpolatedIntegralCrossSection(
220 G4double fac = 1./(zdat[iz] *(zdat[iz] +1.));
221 G4double fac1 = 1./(zdat[iz-1]*(zdat[iz-1]+1.));
222 G4double f0 = fac1*proba[iz-1][it-1][iy] +
223 (fac*proba[iz][it-1][iy]-fac1*proba[iz-1][it-1][iy])*dz;
224 G4double f1 = fac1*proba[iz-1][it ][iy] +
225 (fac*proba[iz][it ][iy]-fac1*proba[iz-1][it ][iy])*dz;
226 return (f0 + (f1-f0)*dt)*z*(z+1.);
G4double ComputeMicroscopicCrossSection(G4double tkin, G4double Z, G4double cut)
void SetParticle(const G4ParticleDefinition *)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
G4double ComputMuPairLoss(G4double Z, G4double tkin, G4double cut, G4double tmax)
void SetCurrentElement(G4double Z)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
virtual G4double ComputeDMicroscopicCrossSection(G4double tkin, G4double Z, G4double pairEnergy)
virtual G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *)
const G4ParticleDefinition * particle
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy)
virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kineticEnergy)
virtual ~G4MuPairProductionModel()
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kineticEnergy, G4double Z, G4double A, G4double cutEnergy, G4double maxEnergy)
void SetLowestKineticEnergy(G4double e)
G4double GetZ13(G4double Z)
G4double GetLOGZ(G4int Z)
G4double GetPDGMass() const