56 std::vector<G4Material*>::const_iterator matite;
57 for( matite = materialTable->begin(); matite != materialTable->end(); matite++ ) {
59 theMassTarget[aMaterial] =
theMolecularMass[aMaterial] / (6.02214179e+23/CLHEP::mole) *CLHEP::c_light * CLHEP::c_light;
60 theMassProjectile[aMaterial] = CLHEP::electron_mass_c2;
63 <<
" MTarget: " << theMassTarget[aMaterial]/CLHEP::MeV <<
" MeV" <<
G4endl;
115 if(
verboseLevel >= 2 )
G4cout <<
" G4LEPTSElasticModel::SampleSecondaries( P1Dir " << P1Dir <<
" P0Dir " << P0Dir <<
" ang " << ang <<
G4endl;
120 G4double Energylost = EnergyTransfer(P0KinEn, ang, theMassTarget[aMaterial], theMassProjectile[aMaterial]);
121 if(
verboseLevel >= 3 )
G4cout <<
" ELASTIC Energylost "<< Energylost <<
" = " << P0KinEn <<
" " <<ang <<
" " << theMassTarget[aMaterial] <<
" " << theMassProjectile[aMaterial] <<
G4endl;
123 G4double P1KinEn = P0KinEn - Energylost;
126 if(
verboseLevel >= 2 )
G4cout <<
" G4LEPTSElasticModel::SampleSecondaries( SetProposedKineticEnergy " << P1KinEn <<
" " << P0KinEn <<
" - " << Energylost <<
G4endl;
144 G4double W = ( (E+MP)*si*si +
MT - co*std::sqrt(
MT*
MT-MP*MP*si*si) ) * E*(E+2*MP)
145 / ( std::pow((E+MP+
MT),2) - E*co*co*(E+2*MP) );
std::vector< G4Material * > G4MaterialTable
G4GLOB_DLL std::ostream G4cout
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin=0.0, G4double tmax=DBL_MAX)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
G4LEPTSElasticModel(const G4String &modelName="G4LEPTSElasticModel")
const G4Material * GetMaterial() const
static G4MaterialTable * GetMaterialTable()
const G4String & GetName() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
const G4ThreeVector & GetProposedMomentumDirection() const
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4ThreeVector SampleNewDirection(const G4Material *aMaterial, G4ThreeVector Dir, G4double e, G4double el)
std::map< const G4Material *, G4double > theMolecularMass
G4double GetMeanFreePath(const G4Material *mate, const G4ParticleDefinition *aParticle, G4double kineticEnergy)
void BuildPhysicsTable(const G4ParticleDefinition &aParticleType)
G4double theLowestEnergyLimit
G4double SampleAngle(const G4Material *aMaterial, G4double e, G4double el)
void ProposeTrackStatus(G4TrackStatus status)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)