- Timestamp:
- Apr 17, 2009, 12:17:14 PM (17 years ago)
- Location:
- trunk/source/processes/electromagnetic
- Files:
-
- 386 edited
-
highenergy/History (modified) (2 diffs)
-
highenergy/include/G4AnnihiToMuPair.hh (modified) (1 diff)
-
highenergy/include/G4BetheBlochNoDeltaModel.hh (modified) (3 diffs)
-
highenergy/include/G4BraggNoDeltaModel.hh (modified) (3 diffs)
-
highenergy/include/G4GammaConversionToMuons.hh (modified) (1 diff)
-
highenergy/include/G4Vee2hadrons.hh (modified) (1 diff)
-
highenergy/include/G4ee2KChargedModel.hh (modified) (3 diffs)
-
highenergy/include/G4ee2KNeutralModel.hh (modified) (3 diffs)
-
highenergy/include/G4eeCrossSections.hh (modified) (1 diff)
-
highenergy/include/G4eeTo3PiModel.hh (modified) (3 diffs)
-
highenergy/include/G4eeToHadrons.hh (modified) (4 diffs)
-
highenergy/include/G4eeToHadronsModel.hh (modified) (1 diff)
-
highenergy/include/G4eeToHadronsMultiModel.hh (modified) (3 diffs)
-
highenergy/include/G4eeToPGammaModel.hh (modified) (3 diffs)
-
highenergy/include/G4eeToTwoPiModel.hh (modified) (3 diffs)
-
highenergy/include/G4hBremsstrahlung.hh (modified) (3 diffs)
-
highenergy/include/G4hBremsstrahlungModel.hh (modified) (1 diff)
-
highenergy/include/G4hPairProduction.hh (modified) (3 diffs)
-
highenergy/include/G4hPairProductionModel.hh (modified) (1 diff)
-
highenergy/include/G4hhIonisation.hh (modified) (3 diffs)
-
highenergy/include/G4mplIonisation.hh (modified) (3 diffs)
-
highenergy/include/G4mplIonisationModel.hh (modified) (2 diffs)
-
highenergy/src/G4AnnihiToMuPair.cc (modified) (1 diff)
-
highenergy/src/G4BetheBlochNoDeltaModel.cc (modified) (3 diffs)
-
highenergy/src/G4BraggNoDeltaModel.cc (modified) (3 diffs)
-
highenergy/src/G4GammaConversionToMuons.cc (modified) (1 diff)
-
highenergy/src/G4ee2KChargedModel.cc (modified) (2 diffs)
-
highenergy/src/G4ee2KNeutralModel.cc (modified) (2 diffs)
-
highenergy/src/G4eeCrossSections.cc (modified) (1 diff)
-
highenergy/src/G4eeTo3PiModel.cc (modified) (2 diffs)
-
highenergy/src/G4eeToHadrons.cc (modified) (2 diffs)
-
highenergy/src/G4eeToHadronsModel.cc (modified) (1 diff)
-
highenergy/src/G4eeToHadronsMultiModel.cc (modified) (1 diff)
-
highenergy/src/G4eeToPGammaModel.cc (modified) (2 diffs)
-
highenergy/src/G4eeToTwoPiModel.cc (modified) (2 diffs)
-
highenergy/src/G4hBremsstrahlung.cc (modified) (2 diffs)
-
highenergy/src/G4hBremsstrahlungModel.cc (modified) (1 diff)
-
highenergy/src/G4hPairProduction.cc (modified) (2 diffs)
-
highenergy/src/G4hPairProductionModel.cc (modified) (1 diff)
-
highenergy/src/G4hhIonisation.cc (modified) (2 diffs)
-
highenergy/src/G4mplIonisation.cc (modified) (2 diffs)
-
highenergy/src/G4mplIonisationModel.cc (modified) (4 diffs)
-
lowenergy/History (modified) (2 diffs)
-
lowenergy/include/G4AtomicDeexcitation.hh (modified) (1 diff)
-
lowenergy/include/G4AtomicShell.hh (modified) (1 diff)
-
lowenergy/include/G4AtomicTransitionManager.hh (modified) (1 diff)
-
lowenergy/include/G4AugerData.hh (modified) (1 diff)
-
lowenergy/include/G4BremsstrahlungParameters.hh (modified) (1 diff)
-
lowenergy/include/G4CompositeEMDataSet.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionChargeDecrease.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionChargeDecreasePartial.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionChargeIncrease.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionChargeIncreasePartial.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionChargeTransferCH.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionChargeTransferExp.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionElasticChampion.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionElasticScreenedRutherford.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionElasticScreenedRutherfordHE.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionElasticScreenedRutherfordLE.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionExcitationBorn.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionExcitationBornPartial.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionExcitationEmfietzoglou.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionExcitationEmfietzoglouPartial.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionExcitationMillerGreenPartial.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionHandler.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionIonisationBorn.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionIonisationBornElectron.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionIonisationBornPartial.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionIonisationBornPartialElectron.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionIonisationRudd.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionIonisationRuddPartial.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionKill.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionPsCreationChampion.hh (modified) (1 diff)
-
lowenergy/include/G4CrossSectionPsCreationChampionPartial.hh (modified) (1 diff)
-
lowenergy/include/G4DNACrossSectionDataSet.hh (modified) (1 diff)
-
lowenergy/include/G4DNAGenericIonsManager.hh (modified) (1 diff)
-
lowenergy/include/G4DNAProcess.hh (modified) (1 diff)
-
lowenergy/include/G4DNAProcess.icc (modified) (2 diffs)
-
lowenergy/include/G4DopplerProfile.hh (modified) (1 diff)
-
lowenergy/include/G4DummyFinalState.hh (modified) (1 diff)
-
lowenergy/include/G4EMDataSet.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateChargeDecrease.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateChargeIncrease.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateChargeTransferProton.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateElasticBrennerZaider.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateElasticChampion.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateElasticScreenedRutherford.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateExcitationBorn.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateExcitationEmfietzoglou.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateExcitationMillerGreen.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateIonisationBorn.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateIonisationRudd.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateKill.hh (modified) (1 diff)
-
lowenergy/include/G4FinalStateProduct.hh (modified) (3 diffs)
-
lowenergy/include/G4FinalStatePsCreationChampion.hh (modified) (1 diff)
-
lowenergy/include/G4FluoTransition.hh (modified) (1 diff)
-
lowenergy/include/G4IonParametrisedLossModel.hh (modified) (1 diff)
-
lowenergy/include/G4IonParametrisedLossModel.icc (modified) (2 diffs)
-
lowenergy/include/G4LinInterpolation.hh (modified) (1 diff)
-
lowenergy/include/G4LivermoreComptonModel.hh (modified) (1 diff)
-
lowenergy/include/G4LivermoreGammaConversionModel.hh (modified) (1 diff)
-
lowenergy/include/G4LivermorePhotoElectricModel.hh (modified) (1 diff)
-
lowenergy/include/G4LivermorePolarizedComptonModel.hh (modified) (1 diff)
-
lowenergy/include/G4LivermorePolarizedRayleighModel.hh (modified) (1 diff)
-
lowenergy/include/G4LivermoreRayleighModel.hh (modified) (1 diff)
-
lowenergy/include/G4LogLogInterpolation.hh (modified) (1 diff)
-
lowenergy/include/G4LowEnergyBremsstrahlung.hh (modified) (1 diff)
-
lowenergy/include/G4LowEnergyCompton.hh (modified) (1 diff)
-
lowenergy/include/G4LowEnergyGammaConversion.hh (modified) (1 diff)
-
lowenergy/include/G4LowEnergyIonisation.hh (modified) (1 diff)
-
lowenergy/include/G4LowEnergyPhotoElectric.hh (modified) (1 diff)
-
lowenergy/include/G4LowEnergyPolarizedCompton.hh (modified) (1 diff)
-
lowenergy/include/G4LowEnergyPolarizedRayleigh.hh (modified) (1 diff)
-
lowenergy/include/G4LowEnergyRayleigh.hh (modified) (1 diff)
-
lowenergy/include/G4OrlicLCrossSection.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeAnnihilationModel.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeBremsstrahlung.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeBremsstrahlungAngular.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeBremsstrahlungContinuous.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeCompton.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeComptonModel.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeGammaConversion.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeGammaConversionModel.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeIonisation.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeIonisationModel.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopePhotoElectric.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopePhotoElectricModel.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeRayleigh.hh (modified) (1 diff)
-
lowenergy/include/G4PenelopeRayleighModel.hh (modified) (1 diff)
-
lowenergy/include/G4RangeNoTest.hh (modified) (1 diff)
-
lowenergy/include/G4RangeTest.hh (modified) (1 diff)
-
lowenergy/include/G4SemiLogInterpolation.hh (modified) (1 diff)
-
lowenergy/include/G4ShellData.hh (modified) (1 diff)
-
lowenergy/include/G4ShellEMDataSet.hh (modified) (1 diff)
-
lowenergy/include/G4VCrossSectionHandler.hh (modified) (1 diff)
-
lowenergy/include/G4VDataSetAlgorithm.hh (modified) (1 diff)
-
lowenergy/include/G4VEMDataSet.hh (modified) (1 diff)
-
lowenergy/include/G4VLowEnergyDiscretePhotonProcess.hh (modified) (1 diff)
-
lowenergy/include/G4VLowEnergyTestableDiscreteProcess.hh (modified) (1 diff)
-
lowenergy/include/G4VRangeTest.hh (modified) (1 diff)
-
lowenergy/include/G4VeLowEnergyLoss.hh (modified) (1 diff)
-
lowenergy/include/G4WaterExcitationStructure.hh (modified) (1 diff)
-
lowenergy/include/G4WaterIonisationStructure.hh (modified) (1 diff)
-
lowenergy/include/G4eBremsstrahlungSpectrum.hh (modified) (1 diff)
-
lowenergy/include/G4eCrossSectionExcitationEmfietzoglou.hh (modified) (1 diff)
-
lowenergy/include/G4eCrossSectionScreenedRutherford.hh (modified) (1 diff)
-
lowenergy/include/G4eIonisationCrossSectionHandler.hh (modified) (3 diffs)
-
lowenergy/include/G4eIonisationParameters.hh (modified) (1 diff)
-
lowenergy/include/G4eIonisationSpectrum.hh (modified) (1 diff)
-
lowenergy/include/G4eLowEnergyLoss.hh (modified) (1 diff)
-
lowenergy/include/G4ecpssrCrossSection.hh (modified) (1 diff)
-
lowenergy/include/G4hLowEnergyLoss.hh (modified) (1 diff)
-
lowenergy/include/G4hShellCrossSectionDoubleExp.hh (modified) (1 diff)
-
lowenergy/include/G4hShellCrossSectionDoubleExpData.hh (modified) (1 diff)
-
lowenergy/include/G4hShellCrossSectionExp.hh (modified) (1 diff)
-
lowenergy/include/G4hShellCrossSectionExpData.hh (modified) (1 diff)
-
lowenergy/src/G4AtomicDeexcitation.cc (modified) (1 diff)
-
lowenergy/src/G4AtomicShell.cc (modified) (1 diff)
-
lowenergy/src/G4AtomicTransitionManager.cc (modified) (1 diff)
-
lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc (modified) (1 diff)
-
lowenergy/src/G4BremsstrahlungParameters.cc (modified) (1 diff)
-
lowenergy/src/G4CompositeEMDataSet.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionChargeDecrease.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionChargeDecreasePartial.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionChargeIncrease.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionChargeIncreasePartial.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionChargeTransferCH.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionChargeTransferExp.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionElasticChampion.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionElasticScreenedRutherford.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionElasticScreenedRutherfordHE.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionElasticScreenedRutherfordLE.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionExcitationBorn.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionExcitationBornPartial.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionExcitationEmfietzoglou.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionExcitationEmfietzoglouPartial.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionExcitationMillerGreen.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc (modified) (3 diffs)
-
lowenergy/src/G4CrossSectionHandler.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionIonisationBorn.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionIonisationBornElectron.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionIonisationBornPartial.cc (modified) (3 diffs)
-
lowenergy/src/G4CrossSectionIonisationBornPartialElectron.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionIonisationRudd.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionIonisationRuddPartial.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionKill.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionPsCreationChampion.cc (modified) (1 diff)
-
lowenergy/src/G4CrossSectionPsCreationChampionPartial.cc (modified) (1 diff)
-
lowenergy/src/G4DNACrossSectionDataSet.cc (modified) (1 diff)
-
lowenergy/src/G4DNAGenericIonsManager.cc (modified) (1 diff)
-
lowenergy/src/G4DopplerProfile.cc (modified) (1 diff)
-
lowenergy/src/G4DummyFinalState.cc (modified) (1 diff)
-
lowenergy/src/G4EMDataSet.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateChargeDecrease.cc (modified) (2 diffs)
-
lowenergy/src/G4FinalStateChargeIncrease.cc (modified) (2 diffs)
-
lowenergy/src/G4FinalStateChargeTransferProton.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateElasticBrennerZaider.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateElasticChampion.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateElasticScreenedRutherford.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateExcitationBorn.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateExcitationEmfietzoglou.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateExcitationMillerGreen.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateIonisationBorn.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateIonisationRudd.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateKill.cc (modified) (1 diff)
-
lowenergy/src/G4FinalStateProduct.cc (modified) (4 diffs)
-
lowenergy/src/G4FinalStatePsCreationChampion.cc (modified) (1 diff)
-
lowenergy/src/G4FluoTransition.cc (modified) (1 diff)
-
lowenergy/src/G4IonParametrisedLossModel.cc (modified) (9 diffs)
-
lowenergy/src/G4LinInterpolation.cc (modified) (1 diff)
-
lowenergy/src/G4LivermoreComptonModel.cc (modified) (11 diffs)
-
lowenergy/src/G4LivermoreGammaConversionModel.cc (modified) (5 diffs)
-
lowenergy/src/G4LivermorePhotoElectricModel.cc (modified) (6 diffs)
-
lowenergy/src/G4LivermorePolarizedComptonModel.cc (modified) (6 diffs)
-
lowenergy/src/G4LivermorePolarizedRayleighModel.cc (modified) (5 diffs)
-
lowenergy/src/G4LivermoreRayleighModel.cc (modified) (6 diffs)
-
lowenergy/src/G4LogLogInterpolation.cc (modified) (1 diff)
-
lowenergy/src/G4LowEnergyBremsstrahlung.cc (modified) (1 diff)
-
lowenergy/src/G4LowEnergyCompton.cc (modified) (1 diff)
-
lowenergy/src/G4LowEnergyGammaConversion.cc (modified) (1 diff)
-
lowenergy/src/G4LowEnergyIonisation.cc (modified) (1 diff)
-
lowenergy/src/G4LowEnergyPhotoElectric.cc (modified) (1 diff)
-
lowenergy/src/G4LowEnergyPolarizedCompton.cc (modified) (1 diff)
-
lowenergy/src/G4LowEnergyPolarizedRayleigh.cc (modified) (1 diff)
-
lowenergy/src/G4LowEnergyRayleigh.cc (modified) (1 diff)
-
lowenergy/src/G4OrlicLCrossSection.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeAnnihilationModel.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeBremsstrahlung.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeBremsstrahlungAngular.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeBremsstrahlungContinuous.cc (modified) (4 diffs)
-
lowenergy/src/G4PenelopeCompton.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeComptonModel.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeGammaConversionModel.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeIonisation.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeIonisationModel.cc (modified) (2 diffs)
-
lowenergy/src/G4PenelopePhotoElectric.cc (modified) (3 diffs)
-
lowenergy/src/G4PenelopePhotoElectricModel.cc (modified) (3 diffs)
-
lowenergy/src/G4PenelopeRayleigh.cc (modified) (1 diff)
-
lowenergy/src/G4PenelopeRayleighModel.cc (modified) (1 diff)
-
lowenergy/src/G4RangeTest.cc (modified) (1 diff)
-
lowenergy/src/G4SemiLogInterpolation.cc (modified) (1 diff)
-
lowenergy/src/G4ShellData.cc (modified) (1 diff)
-
lowenergy/src/G4ShellEMDataSet.cc (modified) (1 diff)
-
lowenergy/src/G4VCrossSectionHandler.cc (modified) (1 diff)
-
lowenergy/src/G4VLowEnergyDiscretePhotonProcess.cc (modified) (1 diff)
-
lowenergy/src/G4VeLowEnergyLoss.cc (modified) (1 diff)
-
lowenergy/src/G4WaterExcitationStructure.cc (modified) (1 diff)
-
lowenergy/src/G4WaterIonisationStructure.cc (modified) (1 diff)
-
lowenergy/src/G4eBremsstrahlungSpectrum.cc (modified) (1 diff)
-
lowenergy/src/G4eCrossSectionExcitationEmfietzoglou.cc (modified) (1 diff)
-
lowenergy/src/G4eCrossSectionScreenedRutherford.cc (modified) (1 diff)
-
lowenergy/src/G4eIonisationCrossSectionHandler.cc (modified) (6 diffs)
-
lowenergy/src/G4eIonisationParameters.cc (modified) (1 diff)
-
lowenergy/src/G4eIonisationSpectrum.cc (modified) (1 diff)
-
lowenergy/src/G4eLowEnergyLoss.cc (modified) (1 diff)
-
lowenergy/src/G4ecpssrCrossSection.cc (modified) (1 diff)
-
lowenergy/src/G4hLowEnergyLoss.cc (modified) (4 diffs)
-
lowenergy/src/G4hShellCrossSectionDoubleExp.cc (modified) (1 diff)
-
lowenergy/src/G4hShellCrossSectionDoubleExpData.cc (modified) (1 diff)
-
lowenergy/src/G4hShellCrossSectionExp.cc (modified) (1 diff)
-
lowenergy/src/G4hShellCrossSectionExpData.cc (modified) (1 diff)
-
muons/History (modified) (2 diffs)
-
muons/include/G4EnergyLossForExtrapolator.hh (modified) (1 diff)
-
muons/include/G4MuBetheBlochModel.hh (modified) (4 diffs)
-
muons/include/G4MuBremsstrahlung.hh (modified) (3 diffs)
-
muons/include/G4MuBremsstrahlungModel.hh (modified) (5 diffs)
-
muons/include/G4MuIonisation.hh (modified) (3 diffs)
-
muons/include/G4MuMultipleScattering.hh (modified) (1 diff)
-
muons/include/G4MuPairProduction.hh (modified) (3 diffs)
-
muons/include/G4MuPairProductionModel.hh (modified) (6 diffs)
-
muons/src/G4EnergyLossForExtrapolator.cc (modified) (1 diff)
-
muons/src/G4MuBetheBlochModel.cc (modified) (5 diffs)
-
muons/src/G4MuBremsstrahlung.cc (modified) (2 diffs)
-
muons/src/G4MuBremsstrahlungModel.cc (modified) (3 diffs)
-
muons/src/G4MuIonisation.cc (modified) (4 diffs)
-
muons/src/G4MuMultipleScattering.cc (modified) (1 diff)
-
muons/src/G4MuPairProduction.cc (modified) (2 diffs)
-
muons/src/G4MuPairProductionModel.cc (modified) (2 diffs)
-
standard/History (modified) (2 diffs)
-
standard/include/G4ASTARStopping.hh (modified) (1 diff)
-
standard/include/G4BetheBlochModel.hh (modified) (4 diffs)
-
standard/include/G4BetheHeitlerModel.hh (modified) (1 diff)
-
standard/include/G4BohrFluctuations.hh (modified) (3 diffs)
-
standard/include/G4BraggIonModel.hh (modified) (4 diffs)
-
standard/include/G4BraggModel.hh (modified) (4 diffs)
-
standard/include/G4ComptonScattering.hh (modified) (3 diffs)
-
standard/include/G4ComptonScattering52.hh (modified) (1 diff)
-
standard/include/G4CoulombScattering.hh (modified) (2 diffs)
-
standard/include/G4CoulombScatteringModel.hh (modified) (1 diff)
-
standard/include/G4GammaConversion.hh (modified) (3 diffs)
-
standard/include/G4InitXscPAI.hh (modified) (1 diff)
-
standard/include/G4IonFluctuations.hh (modified) (3 diffs)
-
standard/include/G4KleinNishinaCompton.hh (modified) (1 diff)
-
standard/include/G4MollerBhabhaModel.hh (modified) (4 diffs)
-
standard/include/G4MscModel71.hh (modified) (1 diff)
-
standard/include/G4MultipleScattering.hh (modified) (1 diff)
-
standard/include/G4MultipleScattering71.hh (modified) (2 diffs)
-
standard/include/G4PAIModel.hh (modified) (4 diffs)
-
standard/include/G4PAIPhotonModel.hh (modified) (5 diffs)
-
standard/include/G4PAIxSection.hh (modified) (1 diff)
-
standard/include/G4PAIySection.hh (modified) (1 diff)
-
standard/include/G4PEEffectModel.hh (modified) (4 diffs)
-
standard/include/G4PSTARStopping.hh (modified) (1 diff)
-
standard/include/G4PhotoElectricEffect.hh (modified) (3 diffs)
-
standard/include/G4PolarizedComptonScattering.hh (modified) (1 diff)
-
standard/include/G4UniversalFluctuation.hh (modified) (3 diffs)
-
standard/include/G4UrbanMscModel.hh (modified) (1 diff)
-
standard/include/G4UrbanMscModel2.hh (modified) (1 diff)
-
standard/include/G4UrbanMscModel90.hh (modified) (1 diff)
-
standard/include/G4WaterStopping.hh (modified) (1 diff)
-
standard/include/G4WentzelVIModel.hh (modified) (3 diffs)
-
standard/include/G4eBremsstrahlung.hh (modified) (3 diffs)
-
standard/include/G4eBremsstrahlungModel.hh (modified) (4 diffs)
-
standard/include/G4eBremsstrahlungRelModel.hh (modified) (4 diffs)
-
standard/include/G4eCoulombScatteringModel.hh (modified) (1 diff)
-
standard/include/G4eIonisation.hh (modified) (4 diffs)
-
standard/include/G4eMultipleScattering.hh (modified) (1 diff)
-
standard/include/G4eeToTwoGammaModel.hh (modified) (1 diff)
-
standard/include/G4eplusAnnihilation.hh (modified) (4 diffs)
-
standard/include/G4hIonisation.hh (modified) (3 diffs)
-
standard/include/G4hMultipleScattering.hh (modified) (1 diff)
-
standard/include/G4ionGasIonisation.hh (modified) (1 diff)
-
standard/include/G4ionIonisation.hh (modified) (4 diffs)
-
standard/src/G4ASTARStopping.cc (modified) (1 diff)
-
standard/src/G4BetheBlochModel.cc (modified) (3 diffs)
-
standard/src/G4BetheHeitlerModel.cc (modified) (1 diff)
-
standard/src/G4BohrFluctuations.cc (modified) (2 diffs)
-
standard/src/G4BraggIonModel.cc (modified) (3 diffs)
-
standard/src/G4BraggModel.cc (modified) (3 diffs)
-
standard/src/G4ComptonScattering.cc (modified) (2 diffs)
-
standard/src/G4ComptonScattering52.cc (modified) (1 diff)
-
standard/src/G4CoulombScattering.cc (modified) (2 diffs)
-
standard/src/G4CoulombScatteringModel.cc (modified) (1 diff)
-
standard/src/G4GammaConversion.cc (modified) (2 diffs)
-
standard/src/G4InitXscPAI.cc (modified) (1 diff)
-
standard/src/G4IonFluctuations.cc (modified) (2 diffs)
-
standard/src/G4KleinNishinaCompton.cc (modified) (1 diff)
-
standard/src/G4MollerBhabhaModel.cc (modified) (4 diffs)
-
standard/src/G4MscModel71.cc (modified) (1 diff)
-
standard/src/G4MultipleScattering.cc (modified) (1 diff)
-
standard/src/G4MultipleScattering71.cc (modified) (1 diff)
-
standard/src/G4PAIModel.cc (modified) (9 diffs)
-
standard/src/G4PAIPhotonModel.cc (modified) (12 diffs)
-
standard/src/G4PAIxSection.cc (modified) (1 diff)
-
standard/src/G4PAIySection.cc (modified) (1 diff)
-
standard/src/G4PEEffectModel.cc (modified) (5 diffs)
-
standard/src/G4PSTARStopping.cc (modified) (1 diff)
-
standard/src/G4PhotoElectricEffect.cc (modified) (2 diffs)
-
standard/src/G4PolarizedComptonScattering.cc (modified) (1 diff)
-
standard/src/G4UniversalFluctuation.cc (modified) (2 diffs)
-
standard/src/G4UrbanMscModel.cc (modified) (1 diff)
-
standard/src/G4UrbanMscModel2.cc (modified) (1 diff)
-
standard/src/G4UrbanMscModel90.cc (modified) (1 diff)
-
standard/src/G4WaterStopping.cc (modified) (1 diff)
-
standard/src/G4WentzelVIModel.cc (modified) (5 diffs)
-
standard/src/G4eBremsstrahlung.cc (modified) (2 diffs)
-
standard/src/G4eBremsstrahlungModel.cc (modified) (1 diff)
-
standard/src/G4eBremsstrahlungRelModel.cc (modified) (1 diff)
-
standard/src/G4eCoulombScatteringModel.cc (modified) (1 diff)
-
standard/src/G4eIonisation.cc (modified) (2 diffs)
-
standard/src/G4eMultipleScattering.cc (modified) (1 diff)
-
standard/src/G4eeToTwoGammaModel.cc (modified) (1 diff)
-
standard/src/G4eplusAnnihilation.cc (modified) (2 diffs)
-
standard/src/G4hIonisation.cc (modified) (2 diffs)
-
standard/src/G4hMultipleScattering.cc (modified) (1 diff)
-
standard/src/G4ionGasIonisation.cc (modified) (1 diff)
-
standard/src/G4ionIonisation.cc (modified) (2 diffs)
-
utils/History (modified) (2 diffs)
-
utils/include/G4EmProcessOptions.hh (modified) (2 diffs)
-
utils/include/G4EnergyLossMessenger.hh (modified) (2 diffs)
-
utils/include/G4VEmFluctuationModel.hh (modified) (3 diffs)
-
utils/include/G4VEmModel.hh (modified) (17 diffs)
-
utils/include/G4VEmProcess.hh (modified) (19 diffs)
-
utils/include/G4VEnergyLossProcess.hh (modified) (17 diffs)
-
utils/include/G4VMscModel.hh (modified) (7 diffs)
-
utils/include/G4VMultipleScattering.hh (modified) (9 diffs)
-
utils/src/G4EmCalculator.cc (modified) (2 diffs)
-
utils/src/G4EmConfigurator.cc (modified) (4 diffs)
-
utils/src/G4EmProcessOptions.cc (modified) (3 diffs)
-
utils/src/G4EnergyLossMessenger.cc (modified) (4 diffs)
-
utils/src/G4LossTableBuilder.cc (modified) (3 diffs)
-
utils/src/G4VEmFluctuationModel.cc (modified) (2 diffs)
-
utils/src/G4VEmModel.cc (modified) (5 diffs)
-
utils/src/G4VEmProcess.cc (modified) (9 diffs)
-
utils/src/G4VEnergyLossProcess.cc (modified) (21 diffs)
-
utils/src/G4VMscModel.cc (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/highenergy/History
r961 r991 1 $Id: History,v 1.3 1 2009/02/20 16:38:33vnivanch Exp $1 $Id: History,v 1.30 2008/10/16 14:29:48 vnivanch Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 20 20 February 09: V.Ivanchenko (emhighenergy-V09-02-00)21 - Cleanup: improved comments, move virtual methods from .hh to .cc22 19 23 20 16 October 08: V.Ivanchenko (emhighenergy-V09-01-06) -
trunk/source/processes/electromagnetic/highenergy/include/G4AnnihiToMuPair.hh
r961 r991 26 26 // 27 27 // $Id: G4AnnihiToMuPair.hh,v 1.2 2006/06/29 19:32:12 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------ G4AnnihiToMuPair physics process ------ -
trunk/source/processes/electromagnetic/highenergy/include/G4BetheBlochNoDeltaModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BetheBlochNoDeltaModel.hh,v 1. 8 2009/02/20 16:38:33 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BetheBlochNoDeltaModel.hh,v 1.7 2006/06/29 19:32:14 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 68 68 G4double cutEnergy); 69 69 70 virtual G4double C rossSectionPerVolume(const G4Material*,71 const G4ParticleDefinition*,72 G4double kineticEnergy,73 G4double cutEnergy,74 G4double maxEnergy);70 virtual G4double ComputeCrossSectionPerElectron( 71 const G4ParticleDefinition*, 72 G4double kineticEnergy, 73 G4double cutEnergy, 74 G4double maxEnergy); 75 75 76 76 private: … … 84 84 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 85 85 86 inline G4double G4BetheBlochNoDeltaModel::ComputeDEDXPerVolume( 87 const G4Material* material, 88 const G4ParticleDefinition* pd, 89 G4double kinEnergy, G4double) 90 { 91 G4double dedx = G4BetheBlochModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX); 92 return dedx; 93 } 94 95 inline G4double G4BetheBlochNoDeltaModel::ComputeCrossSectionPerElectron( 96 const G4ParticleDefinition*, 97 G4double, G4double, G4double) 98 { 99 return 0.0; 100 } 101 102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 103 86 104 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4BraggNoDeltaModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BraggNoDeltaModel.hh,v 1. 7 2009/02/20 16:38:33 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BraggNoDeltaModel.hh,v 1.6 2006/06/29 19:32:16 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 68 68 G4double cutEnergy); 69 69 70 virtual G4double C rossSectionPerVolume(const G4Material*,70 virtual G4double ComputeCrossSectionPerElectron( 71 71 const G4ParticleDefinition*, 72 72 G4double kineticEnergy, 73 73 G4double cutEnergy, 74 74 G4double maxEnergy); 75 75 76 private: 76 77 … … 83 84 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 84 85 86 inline G4double G4BraggNoDeltaModel::ComputeDEDXPerVolume( 87 const G4Material* material, 88 const G4ParticleDefinition* pd, 89 G4double kinEnergy, G4double) 90 { 91 G4double dedx = G4BraggIonModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX); 92 return dedx; 93 } 94 95 inline G4double G4BraggNoDeltaModel::ComputeCrossSectionPerElectron( 96 const G4ParticleDefinition*, 97 G4double, G4double, G4double) 98 { 99 return 0.0; 100 } 101 102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 103 85 104 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4GammaConversionToMuons.hh
r961 r991 26 26 // 27 27 // $Id: G4GammaConversionToMuons.hh,v 1.2 2006/06/29 19:32:18 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------ G4GammaConversionToMuons physics process ------ -
trunk/source/processes/electromagnetic/highenergy/include/G4Vee2hadrons.hh
r961 r991 25 25 // 26 26 // $Id: G4Vee2hadrons.hh,v 1.4 2008/07/10 18:06:38 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/include/G4ee2KChargedModel.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ee2KChargedModel.hh,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4ee2KChargedModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 67 67 virtual ~G4ee2KChargedModel(); 68 68 69 virtualG4double ThresholdEnergy() const;69 G4double ThresholdEnergy() const; 70 70 71 virtualG4double PeakEnergy() const;71 G4double PeakEnergy() const; 72 72 73 virtualG4double ComputeCrossSection(G4double) const;73 G4double ComputeCrossSection(G4double) const; 74 74 75 virtualG4PhysicsVector* PhysicsVector(G4double, G4double) const;75 G4PhysicsVector* PhysicsVector(G4double, G4double) const; 76 76 77 77 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, … … 92 92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 93 93 94 inline G4double G4ee2KChargedModel::ThresholdEnergy() const 95 { 96 return 2.0*massK; 97 } 98 99 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 100 101 inline G4double G4ee2KChargedModel::PeakEnergy() const 102 { 103 return massPhi; 104 } 105 106 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 107 108 inline G4double G4ee2KChargedModel::ComputeCrossSection(G4double e) const 109 { 110 G4double ee = std::min(HighEnergy(),e); 111 return cross->CrossSection2Kcharged(ee); 112 } 113 114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 115 94 116 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4ee2KNeutralModel.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ee2KNeutralModel.hh,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4ee2KNeutralModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 67 67 virtual ~G4ee2KNeutralModel(); 68 68 69 virtualG4double ThresholdEnergy() const;69 G4double ThresholdEnergy() const; 70 70 71 virtualG4double PeakEnergy() const;71 G4double PeakEnergy() const; 72 72 73 virtualG4double ComputeCrossSection(G4double) const;73 G4double ComputeCrossSection(G4double) const; 74 74 75 virtualG4PhysicsVector* PhysicsVector(G4double, G4double) const;75 G4PhysicsVector* PhysicsVector(G4double, G4double) const; 76 76 77 77 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, … … 92 92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 93 93 94 inline G4double G4ee2KNeutralModel::ThresholdEnergy() const 95 { 96 return 2.0*massK; 97 } 98 99 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 100 101 inline G4double G4ee2KNeutralModel::PeakEnergy() const 102 { 103 return massPhi; 104 } 105 106 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 107 108 inline G4double G4ee2KNeutralModel::ComputeCrossSection(G4double e) const 109 { 110 G4double ee = std::min(HighEnergy(),e); 111 return cross->CrossSection2Kneutral(ee); 112 } 113 114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 115 94 116 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4eeCrossSections.hh
r961 r991 25 25 // 26 26 // $Id: G4eeCrossSections.hh,v 1.3 2008/07/10 18:06:38 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/include/G4eeTo3PiModel.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeTo3PiModel.hh,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeTo3PiModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 67 67 virtual ~G4eeTo3PiModel(); 68 68 69 virtualG4double ThresholdEnergy() const;69 G4double ThresholdEnergy() const; 70 70 71 virtualG4double PeakEnergy() const;71 G4double PeakEnergy() const; 72 72 73 virtualG4double ComputeCrossSection(G4double) const;73 G4double ComputeCrossSection(G4double) const; 74 74 75 virtualG4PhysicsVector* PhysicsVector(G4double, G4double) const;75 G4PhysicsVector* PhysicsVector(G4double, G4double) const; 76 76 77 77 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, … … 96 96 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 97 97 98 inline G4double G4eeTo3PiModel::ThresholdEnergy() const 99 { 100 return std::max(LowEnergy(),2.0*massPi + massPi0); 101 } 102 103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 104 105 inline G4double G4eeTo3PiModel::PeakEnergy() const 106 { 107 G4double e = massOm; 108 if(HighEnergy() > massPhi) e = massPhi; 109 return e; 110 } 111 112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 113 114 inline G4double G4eeTo3PiModel::ComputeCrossSection(G4double e) const 115 { 116 G4double ee = std::min(HighEnergy(),e); 117 return cross->CrossSection3pi(ee); 118 } 119 120 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 121 98 122 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4eeToHadrons.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToHadrons.hh,v 1. 9 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeToHadrons.hh,v 1.8 2007/05/23 08:50:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 70 70 71 71 // Print out of the class parameters 72 v irtual void PrintInfo();72 void PrintInfo(); 73 73 74 74 // Set the factor to artificially increase the crossSection (default 1) … … 77 77 protected: 78 78 79 v irtual void InitialiseProcess(const G4ParticleDefinition*);79 void InitialiseProcess(const G4ParticleDefinition*); 80 80 81 81 private: … … 92 92 }; 93 93 94 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 95 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 96 97 inline G4bool G4eeToHadrons::IsApplicable(const G4ParticleDefinition& p) 98 { 99 return (&p == G4Positron::Positron()); 100 } 101 94 102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 95 103 -
trunk/source/processes/electromagnetic/highenergy/include/G4eeToHadronsModel.hh
r961 r991 25 25 // 26 26 // $Id: G4eeToHadronsModel.hh,v 1.7 2008/07/10 18:06:38 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/include/G4eeToHadronsMultiModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToHadronsMultiModel.hh,v 1. 7 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeToHadronsMultiModel.hh,v 1.6 2008/07/10 18:06:38 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 91 91 G4double maxEnergy = DBL_MAX); 92 92 93 virtual void PrintInfo();94 95 // Set the factor to artificially increase the crossSection (default 1)96 void SetCrossSecFactor(G4double fac);97 98 93 inline G4double ComputeCrossSectionPerElectron( 99 94 const G4ParticleDefinition*, … … 101 96 G4double cutEnergy = 0.0, 102 97 G4double maxEnergy = DBL_MAX); 98 99 void PrintInfo(); 100 101 // Set the factor to artificially increase the crossSection (default 1) 102 void SetCrossSecFactor(G4double fac); 103 103 104 104 private: -
trunk/source/processes/electromagnetic/highenergy/include/G4eeToPGammaModel.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToPGammaModel.hh,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeToPGammaModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 68 68 virtual ~G4eeToPGammaModel(); 69 69 70 virtualG4double ThresholdEnergy() const;70 G4double ThresholdEnergy() const; 71 71 72 virtualG4double PeakEnergy() const;72 G4double PeakEnergy() const; 73 73 74 virtualG4double ComputeCrossSection(G4double) const;74 G4double ComputeCrossSection(G4double) const; 75 75 76 virtualG4PhysicsVector* PhysicsVector(G4double, G4double) const;76 G4PhysicsVector* PhysicsVector(G4double, G4double) const; 77 77 78 78 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, … … 97 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 98 98 99 inline G4double G4eeToPGammaModel::ThresholdEnergy() const 100 { 101 return LowEnergy(); 102 } 103 104 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 105 106 inline G4double G4eeToPGammaModel::PeakEnergy() const 107 { 108 return massR; 109 } 110 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 112 113 inline G4double G4eeToPGammaModel::ComputeCrossSection(G4double e) const 114 { 115 G4double ee = std::min(HighEnergy(),e); 116 G4double xs; 117 if(particle == pi0) xs = cross->CrossSectionPi0G(ee); 118 else xs = cross->CrossSectionEtaG(ee); 119 return xs; 120 } 121 122 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 123 99 124 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4eeToTwoPiModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToTwoPiModel.hh,v 1. 5 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeToTwoPiModel.hh,v 1.4 2008/07/10 18:06:39 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 67 67 virtual ~G4eeToTwoPiModel(); 68 68 69 virtualG4double ThresholdEnergy() const;69 G4double ThresholdEnergy() const; 70 70 71 virtualG4double PeakEnergy() const;71 G4double PeakEnergy() const; 72 72 73 virtualG4double ComputeCrossSection(G4double) const;73 G4double ComputeCrossSection(G4double) const; 74 74 75 virtualG4PhysicsVector* PhysicsVector(G4double, G4double) const;75 G4PhysicsVector* PhysicsVector(G4double, G4double) const; 76 76 77 77 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, … … 93 93 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 94 94 95 inline G4double G4eeToTwoPiModel::ThresholdEnergy() const 96 { 97 return 2.0*massPi; 98 } 99 100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 101 102 inline G4double G4eeToTwoPiModel::PeakEnergy() const 103 { 104 return massRho; 105 } 106 107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 108 109 inline G4double G4eeToTwoPiModel::ComputeCrossSection(G4double e) const 110 { 111 G4double ee = std::min(HighEnergy(),e); 112 return cross->CrossSection2pi(ee); 113 } 114 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 116 95 117 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4hBremsstrahlung.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hBremsstrahlung.hh,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4hBremsstrahlung.hh,v 1.1 2008/03/06 11:47:10 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 72 72 virtual ~G4hBremsstrahlung(); 73 73 74 virtualG4bool IsApplicable(const G4ParticleDefinition& p);74 G4bool IsApplicable(const G4ParticleDefinition& p); 75 75 76 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition* p,77 const G4Material*,78 G4double cut);76 G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 77 const G4Material*, 78 G4double cut); 79 79 80 80 // Print out of the class parameters 81 v irtual void PrintInfo();81 void PrintInfo(); 82 82 83 83 protected: 84 84 85 v irtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,86 const G4ParticleDefinition*);85 void InitialiseEnergyLossProcess(const G4ParticleDefinition*, 86 const G4ParticleDefinition*); 87 87 88 88 private: … … 100 100 101 101 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 103 104 inline 105 G4bool G4hBremsstrahlung::IsApplicable(const G4ParticleDefinition& p) 106 { 107 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV); 108 } 109 110 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 111 112 inline 113 G4double G4hBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*, 114 const G4Material*, 115 G4double) 116 { 117 return lowestKinEnergy; 118 } 119 120 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 102 121 103 122 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4hBremsstrahlungModel.hh
r966 r991 25 25 // 26 26 // $Id: G4hBremsstrahlungModel.hh,v 1.2 2008/07/22 16:15:16 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/include/G4hPairProduction.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hPairProduction.hh,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4hPairProduction.hh,v 1.1 2008/03/06 11:47:11 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 69 69 virtual ~G4hPairProduction(); 70 70 71 virtualG4bool IsApplicable(const G4ParticleDefinition& p);71 G4bool IsApplicable(const G4ParticleDefinition& p); 72 72 73 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition* p,74 const G4Material*, G4double cut);73 G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 74 const G4Material*, G4double cut); 75 75 76 76 // Print out of the class parameters 77 v irtual void PrintInfo();77 void PrintInfo(); 78 78 79 79 protected: 80 80 81 v irtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,82 const G4ParticleDefinition*);81 void InitialiseEnergyLossProcess(const G4ParticleDefinition*, 82 const G4ParticleDefinition*); 83 83 84 84 private: … … 98 98 99 99 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 101 102 inline 103 G4bool G4hPairProduction::IsApplicable(const G4ParticleDefinition& p) 104 { 105 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV); 106 } 107 108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 109 110 inline 111 G4double G4hPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*, 112 const G4Material*, 113 G4double) 114 { 115 return lowestKinEnergy; 116 } 117 118 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 100 119 101 120 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4hPairProductionModel.hh
r966 r991 25 25 // 26 26 // $Id: G4hPairProductionModel.hh,v 1.2 2008/07/22 16:15:16 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/include/G4hhIonisation.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hhIonisation.hh,v 1. 6 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4hhIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 69 69 virtual ~G4hhIonisation(); 70 70 71 virtualG4bool IsApplicable(const G4ParticleDefinition& p);71 G4bool IsApplicable(const G4ParticleDefinition& p); 72 72 73 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition* p,74 const G4Material*, G4double cut);73 G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 74 const G4Material*, G4double cut); 75 75 76 76 // Print out of the class parameters … … 104 104 105 105 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 106 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 107 108 inline G4bool G4hhIonisation::IsApplicable(const G4ParticleDefinition& p) 109 { 110 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 100.0*MeV && 111 !p.IsShortLived()); 112 } 113 114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 115 116 inline G4double G4hhIonisation::MinPrimaryEnergy(const G4ParticleDefinition*, 117 const G4Material*, 118 G4double cut) 119 { 120 G4double x = 0.5*cut/electron_mass_c2; 121 G4double y = electron_mass_c2/mass; 122 G4double g = x*y + std::sqrt((1. + x)*(1. + x*y*y)); 123 return mass*(g - 1.0); 124 } 125 126 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 106 127 107 128 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4mplIonisation.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4mplIonisation.hh,v 1. 6 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4mplIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 72 72 virtual ~G4mplIonisation(); 73 73 74 virtualG4bool IsApplicable(const G4ParticleDefinition& p);74 G4bool IsApplicable(const G4ParticleDefinition& p); 75 75 76 76 // Print out of the class parameters … … 94 94 95 95 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 96 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 97 98 inline G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition& p) 99 { 100 return (p.GetParticleName() == "monopole"); 101 } 102 103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 96 104 97 105 #endif -
trunk/source/processes/electromagnetic/highenergy/include/G4mplIonisationModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4mplIonisationModel.hh,v 1. 7 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4mplIonisationModel.hh,v 1.6 2007/11/13 18:36:29 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 120 120 121 121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 122 123 inline void G4mplIonisationModel::SampleSecondaries(std::vector<G4DynamicParticle*>*, 124 const G4MaterialCutsCouple*, 125 const G4DynamicParticle*, 126 G4double, 127 G4double) 128 {} 129 130 inline G4double G4mplIonisationModel::Dispersion( 131 const G4Material* material, 132 const G4DynamicParticle* dp, 133 G4double& tmax, 134 G4double& length) 135 { 136 G4double siga = 0.0; 137 G4double tau = dp->GetKineticEnergy()/mass; 138 if(tau > 0.0) { 139 G4double electronDensity = material->GetElectronDensity(); 140 G4double gam = tau + 1.0; 141 G4double invbeta2 = (gam*gam)/(tau * (tau+2.0)); 142 siga = (invbeta2 - 0.5) * twopi_mc2_rcl2 * tmax * length 143 * electronDensity * chargeSquare; 144 } 145 return siga; 146 } 147 148 149 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -
trunk/source/processes/electromagnetic/highenergy/src/G4AnnihiToMuPair.cc
r961 r991 26 26 // 27 27 // $Id: G4AnnihiToMuPair.cc,v 1.5 2008/10/16 14:29:48 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------ G4AnnihiToMuPair physics process ------ -
trunk/source/processes/electromagnetic/highenergy/src/G4BetheBlochNoDeltaModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BetheBlochNoDeltaModel.cc,v 1. 4 2009/02/20 16:38:33 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BetheBlochNoDeltaModel.cc,v 1.3 2006/06/29 19:32:36 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 58 58 {} 59 59 60 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....61 62 60 G4BetheBlochNoDeltaModel::~G4BetheBlochNoDeltaModel() 63 61 {} … … 65 63 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 66 64 67 G4double G4BetheBlochNoDeltaModel::ComputeDEDXPerVolume(68 const G4Material* material,69 const G4ParticleDefinition* pd,70 G4double kinEnergy, G4double)71 {72 return73 G4BetheBlochModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX);74 }75 65 76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....77 78 G4double G4BetheBlochNoDeltaModel::CrossSectionPerVolume(79 const G4Material*,const G4ParticleDefinition*,80 G4double, G4double, G4double)81 {82 return 0.0;83 }84 85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....86 87 -
trunk/source/processes/electromagnetic/highenergy/src/G4BraggNoDeltaModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BraggNoDeltaModel.cc,v 1. 4 2009/02/20 16:38:33 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BraggNoDeltaModel.cc,v 1.3 2006/06/29 19:32:38 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 53 53 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 54 54 55 55 56 G4BraggNoDeltaModel::G4BraggNoDeltaModel(const G4ParticleDefinition*p, 56 57 const G4String& nam) : 57 58 G4BraggIonModel(p, nam) 58 59 {} 59 60 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....61 60 62 61 G4BraggNoDeltaModel::~G4BraggNoDeltaModel() … … 65 64 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 66 65 67 G4double G4BraggNoDeltaModel::ComputeDEDXPerVolume(68 const G4Material* material,69 const G4ParticleDefinition* pd,70 G4double kinEnergy, G4double)71 {72 return73 G4BraggIonModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX);74 }75 66 76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....77 78 G4double G4BraggNoDeltaModel::CrossSectionPerVolume(79 const G4Material*,80 const G4ParticleDefinition*,81 G4double, G4double, G4double)82 {83 return 0.0;84 }85 86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....87 88 -
trunk/source/processes/electromagnetic/highenergy/src/G4GammaConversionToMuons.cc
r961 r991 26 26 // 27 27 // $Id: G4GammaConversionToMuons.cc,v 1.7 2008/10/16 14:29:48 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------ G4GammaConversionToMuons physics process ------ -
trunk/source/processes/electromagnetic/highenergy/src/G4ee2KChargedModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ee2KChargedModel.cc,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4ee2KChargedModel.cc,v 1.1 2008/07/10 18:07:27 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4double G4ee2KChargedModel::ThresholdEnergy() const78 {79 return 2.0*massK;80 }81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....83 84 G4double G4ee2KChargedModel::PeakEnergy() const85 {86 return massPhi;87 }88 89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....90 91 G4double G4ee2KChargedModel::ComputeCrossSection(G4double e) const92 {93 G4double ee = std::min(HighEnergy(),e);94 return cross->CrossSection2Kcharged(ee);95 }96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....98 99 77 G4PhysicsVector* G4ee2KChargedModel::PhysicsVector(G4double emin, 100 78 G4double emax) const -
trunk/source/processes/electromagnetic/highenergy/src/G4ee2KNeutralModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ee2KNeutralModel.cc,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4ee2KNeutralModel.cc,v 1.1 2008/07/10 18:07:27 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4double G4ee2KNeutralModel::ThresholdEnergy() const78 {79 return 2.0*massK;80 }81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....83 84 G4double G4ee2KNeutralModel::PeakEnergy() const85 {86 return massPhi;87 }88 89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....90 91 G4double G4ee2KNeutralModel::ComputeCrossSection(G4double e) const92 {93 G4double ee = std::min(HighEnergy(),e);94 return cross->CrossSection2Kneutral(ee);95 }96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....98 99 77 G4PhysicsVector* G4ee2KNeutralModel::PhysicsVector(G4double emin, 100 78 G4double emax) const -
trunk/source/processes/electromagnetic/highenergy/src/G4eeCrossSections.cc
r961 r991 25 25 // 26 26 // $Id: G4eeCrossSections.cc,v 1.7 2008/07/10 18:06:39 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/src/G4eeTo3PiModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeTo3PiModel.cc,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeTo3PiModel.cc,v 1.1 2008/07/10 18:07:27 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 81 81 G4cout << "### G4eeTo3PiModel::~G4eeTo3PiModel: gmax= " 82 82 << gmax << " gcash= " << gcash << G4endl; 83 }84 85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....86 87 G4double G4eeTo3PiModel::ThresholdEnergy() const88 {89 return std::max(LowEnergy(),2.0*massPi + massPi0);90 }91 92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....93 94 G4double G4eeTo3PiModel::PeakEnergy() const95 {96 G4double e = massOm;97 if(HighEnergy() > massPhi) e = massPhi;98 return e;99 }100 101 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....102 103 G4double G4eeTo3PiModel::ComputeCrossSection(G4double e) const104 {105 G4double ee = std::min(HighEnergy(),e);106 return cross->CrossSection3pi(ee);107 83 } 108 84 -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadrons.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToHadrons.cc,v 1. 9 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeToHadrons.cc,v 1.8 2008/10/16 14:29:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4bool G4eeToHadrons::IsApplicable(const G4ParticleDefinition& p)78 {79 return (&p == G4Positron::Positron());80 }81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....83 84 77 void G4eeToHadrons::InitialiseProcess(const G4ParticleDefinition*) 85 78 { -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadronsModel.cc
r961 r991 25 25 // 26 26 // $Id: G4eeToHadronsModel.cc,v 1.9 2008/07/10 18:06:39 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc
r961 r991 25 25 // 26 26 // $Id: G4eeToHadronsMultiModel.cc,v 1.6 2008/07/11 17:49:11 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToPGammaModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToPGammaModel.cc,v 1. 2 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeToPGammaModel.cc,v 1.1 2008/07/10 18:07:27 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 83 83 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 84 84 85 G4double G4eeToPGammaModel::ThresholdEnergy() const86 {87 return LowEnergy();88 }89 90 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....91 92 G4double G4eeToPGammaModel::PeakEnergy() const93 {94 return massR;95 }96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....98 99 G4double G4eeToPGammaModel::ComputeCrossSection(G4double e) const100 {101 G4double ee = std::min(HighEnergy(),e);102 G4double xs;103 if(particle == pi0) xs = cross->CrossSectionPi0G(ee);104 else xs = cross->CrossSectionEtaG(ee);105 return xs;106 }107 108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....109 110 85 G4PhysicsVector* G4eeToPGammaModel::PhysicsVector(G4double emin, 111 86 G4double emax) const -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToTwoPiModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToTwoPiModel.cc,v 1. 7 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eeToTwoPiModel.cc,v 1.6 2008/07/10 18:06:39 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4double G4eeToTwoPiModel::ThresholdEnergy() const78 {79 return 2.0*massPi;80 }81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....83 84 G4double G4eeToTwoPiModel::PeakEnergy() const85 {86 return massRho;87 }88 89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....90 91 G4double G4eeToTwoPiModel::ComputeCrossSection(G4double e) const92 {93 G4double ee = std::min(HighEnergy(),e);94 return cross->CrossSection2pi(ee);95 }96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....98 99 77 G4PhysicsVector* G4eeToTwoPiModel::PhysicsVector(G4double emin, 100 78 G4double emax) const -
trunk/source/processes/electromagnetic/highenergy/src/G4hBremsstrahlung.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hBremsstrahlung.cc,v 1. 4 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4hBremsstrahlung.cc,v 1.3 2008/10/16 14:29:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 72 72 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 73 73 74 G4bool G4hBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)75 {76 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV);77 }78 79 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....80 81 G4double G4hBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,82 const G4Material*,83 G4double)84 {85 return lowestKinEnergy;86 }87 88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....89 90 74 void G4hBremsstrahlung::InitialiseEnergyLossProcess( 91 75 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/highenergy/src/G4hBremsstrahlungModel.cc
r969 r991 25 25 // 26 26 // $Id: G4hBremsstrahlungModel.cc,v 1.3 2008/07/22 16:15:16 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/src/G4hPairProduction.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hPairProduction.cc,v 1. 4 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4hPairProduction.cc,v 1.3 2008/10/16 14:29:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 73 73 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 74 74 75 G4bool G4hPairProduction::IsApplicable(const G4ParticleDefinition& p)76 {77 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV);78 }79 80 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....81 82 G4double G4hPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,83 const G4Material*,84 G4double)85 {86 return lowestKinEnergy;87 }88 89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....90 91 75 void G4hPairProduction::InitialiseEnergyLossProcess( 92 76 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/highenergy/src/G4hPairProductionModel.cc
r968 r991 25 25 // 26 26 // $Id: G4hPairProductionModel.cc,v 1.1 2008/03/06 11:47:11 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/highenergy/src/G4hhIonisation.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hhIonisation.cc,v 1. 9 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4hhIonisation.cc,v 1.8 2008/10/16 14:29:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 G4hhIonisation::~G4hhIonisation() 76 76 {} 77 78 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....79 80 G4bool G4hhIonisation::IsApplicable(const G4ParticleDefinition& p)81 {82 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 100.0*MeV &&83 !p.IsShortLived());84 }85 86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....87 88 G4double G4hhIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,89 const G4Material*,90 G4double cut)91 {92 G4double x = 0.5*cut/electron_mass_c2;93 G4double y = electron_mass_c2/mass;94 G4double g = x*y + std::sqrt((1. + x)*(1. + x*y*y));95 return mass*(g - 1.0);96 }97 77 98 78 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -
trunk/source/processes/electromagnetic/highenergy/src/G4mplIonisation.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4mplIonisation.cc,v 1. 8 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4mplIonisation.cc,v 1.7 2008/10/16 14:29:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition& p)78 {79 return (p.GetParticleName() == "monopole");80 }81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....83 84 77 void G4mplIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition*, 85 78 const G4ParticleDefinition*) -
trunk/source/processes/electromagnetic/highenergy/src/G4mplIonisationModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4mplIonisationModel.cc,v 1. 6 2009/02/20 16:38:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4mplIonisationModel.cc,v 1.5 2007/11/13 18:36:29 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 139 139 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 140 140 141 G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material, 142 G4double bg2) 141 G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material, G4double bg2) 143 142 { 144 143 G4double eDensity = material->GetElectronDensity(); … … 177 176 return dedx; 178 177 } 179 180 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....181 182 void G4mplIonisationModel::SampleSecondaries(std::vector<G4DynamicParticle*>*,183 const G4MaterialCutsCouple*,184 const G4DynamicParticle*,185 G4double,186 G4double)187 {}188 178 189 179 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... … … 214 204 return loss; 215 205 } 216 217 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....218 219 G4double G4mplIonisationModel::Dispersion(const G4Material* material,220 const G4DynamicParticle* dp,221 G4double& tmax,222 G4double& length)223 {224 G4double siga = 0.0;225 G4double tau = dp->GetKineticEnergy()/mass;226 if(tau > 0.0) {227 G4double electronDensity = material->GetElectronDensity();228 G4double gam = tau + 1.0;229 G4double invbeta2 = (gam*gam)/(tau * (tau+2.0));230 siga = (invbeta2 - 0.5) * twopi_mc2_rcl2 * tmax * length231 * electronDensity * chargeSquare;232 }233 return siga;234 }235 236 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -
trunk/source/processes/electromagnetic/lowenergy/History
r961 r991 1 $Id: History,v 1.3 46 2009/02/20 10:49:54sincerti Exp $1 $Id: History,v 1.329 2008/12/12 08:50:59 sincerti Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 18 18 ---------------------------------------------------------- 19 19 20 16.02.2009, S. Incerti, tag emlowen-V09-02-1521 - added protections against FPE in G4hLowEnergyLoss.cc (see EM forum22 item 893)23 24 16.02.2009, S. Incerti, tag emlowen-V09-02-1425 - removed compilation warning in G4DNAEmfietzoglouExcitationModel.cc26 27 16.02.2009, S. Incerti, tag emlowen-V09-02-1328 - improved energy limit display in Geant4-DNA model classes29 - commented InitialiseElementSelectors call.30 31 16.02.2009, S. Incerti, tag emlowen-V09-02-1232 Made compatible with tag emutils-V09-02-00 the following files33 - G4DNAElastic.cc34 - G4DNAExcitation.cc35 - G4DNAIonisation.cc36 - G4DNAChargeDecrease.cc37 - G4DNAChargeIncrease.cc38 39 14.02.2009, S. Incerti, tag emlowen-V09-02-1140 Added several corrections to migrated Geant4-DNA processes:41 - G4DNABornIonisationModel.cc42 - G4DNAEmfietzoglouExcitationModel.cc43 - G4DNARuddIonisationModel.cc44 - G4DNAIonisation.hh45 46 10.02.2009, L. Pandola, tag emlowen-V09-02-1047 - Added G4LivermoreIonisationModel, namely first implementation of48 LowEnergyIonisation in the new design49 50 29.01.2009, L. Pandola, tag emlowen-V09-02-0951 - Updated public interface of G4eIonisationCrossSectionHandler.cc in order to52 facilitate the migration from G4LowEnergyIonisation to G4LivermoreIonisationModel53 54 22.01.2009, S. Incerti, tag emlowen-V09-02-0855 - Fixed compilation error problem & code syntax in DNA model classes56 57 21.01.2009, S. Incerti, tag emlowen-V09-02-0758 - Updated Livermore photon processes classes for handling of compound materials59 - Added pointer removal protections60 - Involved classes are :61 G4LivermoreRayleighModel.cc62 G4LivermorePolarizedRayleighModel.cc63 G4LivermorePolarizedComptonModel.cc64 G4LivermorePhotoElectricModel.cc65 G4LivermoreGammaconversionModel.cc66 G4LivermoreComptonModel.cc67 68 20.01.2009, S. Incerti, tag emlowen-V09-02-0669 Added 'kill particle without total energy deposit' feature for DNA charge change processes70 Involved files are :71 - G4DNAProcess.icc,72 - G4FinalStateProduct.hh,.cc,73 - G4FinalStateChargeDecrease.cc74 - G4FinalStateChargeIncrease.cc75 76 20.01.2009, S. Incerti, tag emlowen-V09-02-0577 - Corrected energy limits in G4CrossSectionIonisationBornPartial.cc78 - Added proton case in G4CrossSectionExcitationMillerGreenPartial.cc79 - Added protection (waterExcitation.ExcitationEnergy) in G4CrossSectionExcitationMillerGreenPartial.cc80 81 19.01.2009, S. Incerti, tag emlowen-V09-02-0482 Added angle initialisation in G4DNAScreenedRutherfordElasticModel83 84 12.01.2009, S. Incerti, tag emlowen-V09-02-0385 Added preliminary migrated Geant4-DNA processes and models.86 87 08.01.2009 L. Pandola, tag emlowen-V09-02-0288 Edited G4PenelopePhotoElectric.cc and G4PenelopePhotoElectricModel.cc89 to suppress a warning message from G4AtomicTransitionManager appearing90 for some elements (Oxygen ,Fluorine). This is due to the fact that91 Penelope and G4AtomicTransitionManager databases may contain a different number92 of shells. Physics results are unchanged.93 94 19.12.2008 L. Pandola, tag emlowen-V09-02-0195 Added G4RayleighScattering process (G4VEmProcess) to96 describe Rayleigh scattering. This was not available within97 the Std package98 99 15.12.2008 L. Pandola, tag emlowen-V09-02-00100 Same as the previous one (emlowen-V09-01-46). I arrived too late.101 102 15.12.2008 L. Pandola, tag emlowen-V09-01-46103 Added G4PenelopeBremsstrahlungModel, namely bremsstrahlung according to Penelope104 model, migrated to the Std-design (inheriting from G4VEmModel). A few minor105 cleaning of G4PenelopeBremsstrahlungContinuous.cc and G4PenelopeIonisation.cc.106 From this tag, ALL Penelope processes have been migrated.107 108 20 12.12.2008 S. Incerti, tag emlowen-V09-01-45 109 21 Upgrade to G4LogLogInterpolation_revision1c.cc 110 22 111 09.12.2008 S. Incerti, tag emlowen-V09-01-44 112 Added protection to G4FinalStateElasticChampion.cc for angular treatment of XS 113 at 180*deg 23 009.12.2008 S. Incerti, tag emlowen-V09-01-44 24 Added protection to G4FinalStateElasticChampion.cc for angular treatment of XS at 180*deg 114 25 115 26 09.12.2008 S. Incerti, tag emlowen-V09-01-43 -
trunk/source/processes/electromagnetic/lowenergy/include/G4AtomicDeexcitation.hh
r961 r991 26 26 // 27 27 // $Id: G4AtomicTransitionManager.hh,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh
r961 r991 26 26 // 27 27 // $Id: G4AtomicShell.hh,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh
r961 r991 26 26 // 27 27 // $Id: G4AtomicTransitionManager.hh,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/include/G4AugerData.hh
r961 r991 25 25 // 26 26 // $Id: G4AugerData.hh 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh
r961 r991 26 26 // 27 27 // $Id: G4BremsstrahlungParameters.hh,v 1.10 2006/06/29 19:33:06 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh
r961 r991 26 26 // 27 27 // $Id: G4CompositeEMDataSet.hh,v 1.12 2008/03/17 13:45:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecrease.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionChargeDecrease.hh,v 1.2 2008/07/14 20:47:32 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONCHARGEDECREASE_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeDecreasePartial.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionChargeDecreasePartial.hh,v 1.2 2008/07/14 20:47:32 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONCHARGEDECREASEPARTIAL_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncrease.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionChargeIncrease.hh,v 1.2 2008/07/14 20:47:33 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONCHARGEIncrease_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeIncreasePartial.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionChargeIncreasePartial.hh,v 1.2 2008/07/14 20:47:33 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONCHARGEIncreasePARTIAL_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeTransferCH.hh
r966 r991 26 26 // 27 27 // $Id: G4CrossSectionChargeTransferCH.hh,v 1.3 2008/03/25 16:00:20 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionChargeTransferExp.hh
r966 r991 26 26 // 27 27 // $Id: G4CrossSectionChargeTransferExp.hh,v 1.2 2008/03/25 16:00:20 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticChampion.hh
r966 r991 25 25 // 26 26 // $Id: G4CrossSectionElasticChampion.hh,v 1.1 2008/07/15 19:56:50 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherford.hh
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionElasticScreenedRutherford.hh,v 1.1 2007/10/12 23:07:10 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherfordHE.hh
r966 r991 25 25 // 26 26 // $Id: G4CrossSectionElasticScreenedRutherfordHE.hh,v 1.1 2008/06/27 20:09:54 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONELASTICSCREENEDRUTHERFORDHE_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionElasticScreenedRutherfordLE.hh
r966 r991 25 25 // 26 26 // $Id: G4CrossSectionElasticScreenedRutherfordLE.hh,v 1.2 2008/07/14 20:47:33 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONELASTICSCREENEDRUTHERFORDLE_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBorn.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationBorn.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONEXCITATIONBORN_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationBornPartial.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationBornPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONEXCITATIONBORNPARTIAL_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglou.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationEmfietzoglou.hh,v 1.3 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOU_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationEmfietzoglouPartial.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationEmfietzoglouPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONEXCITATIONEMFIETZOGLOUPARTIAL_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionExcitationMillerGreenPartial.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationMillerGreenPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONEXCITATIONMILLERGREENPARTIAL_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionHandler.hh,v 1.9 2006/06/29 19:33:10 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBorn.hh
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionIonisationBorn.hh,v 1.3 2008/12/18 13:01:22 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 30 30 #ifndef G4CROSSSECTIONIONISATIONBORN_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornElectron.hh
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionIonisationBornElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartial.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionIonisationBornPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONIONISATIONBORNPARTIAL_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationBornPartialElectron.hh
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionIonisationBornPartialElectron.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRudd.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionIonisationRudd.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONIONISATIONRUDD_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionIonisationRuddPartial.hh
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionIonisationRuddPartial.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4CROSSSECTIONIONISATIONRuddPARTIAL_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionKill.hh
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionKill.hh,v 1.1 2007/11/09 20:26:47 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionPsCreationChampion.hh
r966 r991 25 25 // 26 26 // $Id: G4CrossSectionPsCreationChampion.hh,v 1.1 2008/07/16 19:01:07 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4CrossSectionPsCreationChampionPartial.hh
r966 r991 25 25 // 26 26 // $Id: G4CrossSectionPsCreationChampionPartial.hh,v 1.1 2008/07/16 19:01:07 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4DNACrossSectionDataSet.hh
r961 r991 26 26 // 27 27 // $Id: G4DNACrossSectionDataSet.hh,v 1.6 2008/03/17 13:45:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Riccardo Capra <capra@ge.infn.it> -
trunk/source/processes/electromagnetic/lowenergy/include/G4DNAGenericIonsManager.hh
r961 r991 26 26 // 27 27 // $Id: G4DNAGenericIonsManager.hh,v 1.3 2006/06/29 19:34:16 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 30 30 #ifndef G4DNAGENERICIONSMANAGER_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.hh
r961 r991 26 26 // 27 27 // $Id: G4DNAProcess.hh,v 1.5 2007/11/09 16:20:04 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc
r961 r991 25 25 // 26 26 // 27 // $Id: G4DNAProcess.icc,v 1.1 2 2009/01/20 07:50:28 sincertiExp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4DNAProcess.icc,v 1.11 2007/12/10 16:31:19 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) … … 111 111 aParticleChange.ProposeEnergy(0.); 112 112 aParticleChange.ProposeMomentumDirection( 0., 0., 0. ); 113 114 if (product.PrimaryParticleIsKilledAndDoNotDepositEnergy()) 115 { 116 aParticleChange.ProposeLocalEnergyDeposit(deposit); 117 } 118 else 119 { 120 aParticleChange.ProposeLocalEnergyDeposit(track.GetKineticEnergy() + deposit); 121 } 122 113 aParticleChange.ProposeLocalEnergyDeposit(track.GetKineticEnergy() + deposit); 114 123 115 } 124 116 else -
trunk/source/processes/electromagnetic/lowenergy/include/G4DopplerProfile.hh
r966 r991 26 26 // 27 27 // $Id: G4DopplerProfile.hh,v 1.2 2008/03/17 13:45:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4DummyFinalState.hh
r961 r991 26 26 // 27 27 // $Id: G4DummyFinalState.hh,v 1.2 2007/10/07 12:52:18 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh
r961 r991 26 26 // 27 27 // $Id: G4EMDataSet.hh,v 1.12 2008/03/17 13:45:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeDecrease.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateChargeDecrease.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4FINALSTATECHARGEDECREASE_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeIncrease.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateChargeIncrease.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4FINALSTATECHARGEIncrease_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateChargeTransferProton.hh
r966 r991 26 26 // 27 27 // $Id: G4FinalStateChargeTransferProton.hh,v 1.2 2008/03/25 16:00:20 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticBrennerZaider.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateElasticBrennerZaider.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4FINALSTATEELASTICBRENNERZAIDER_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticChampion.hh
r966 r991 25 25 // 26 26 // $Id: G4FinalStateElasticChampion.hh,v 1.1 2008/07/15 19:56:50 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateElasticScreenedRutherford.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateElasticScreenedRutherford.hh,v 1.3 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4FINALSTATEELASTICSCREENEDRUTHERFORD_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationBorn.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateExcitationBorn.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4FINALSTATEEXCITATIONBORN_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationEmfietzoglou.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateExcitationEmfietzoglou.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4FINALSTATEEXCITATIONEMFIETZOGLOU_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateExcitationMillerGreen.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateExcitationMillerGreen.hh,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4FINALSTATEEXCITATIONMILLERGREEN_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationBorn.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateIonisationBorn.hh,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4FINALSTATEIONISATIONBORN_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateIonisationRudd.hh
r961 r991 25 25 // 26 26 // $Id: G4FinalStateIonisationRudd.hh,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateKill.hh
r961 r991 26 26 // 27 27 // $Id: G4FinalStateKill.hh,v 1.1 2007/11/09 20:26:47 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh
r961 r991 25 25 // 26 26 // 27 // $Id: G4FinalStateProduct.hh,v 1. 5 2009/01/20 07:50:28 sincertiExp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4FinalStateProduct.hh,v 1.4 2007/10/15 08:31:49 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) … … 72 72 void ModifyPrimaryParticle(const G4ThreeVector& direction, G4double energy); 73 73 74 void DoNotDepositEnergy();75 74 void KillPrimaryParticle(); 76 75 77 76 G4bool PrimaryParticleIsKilled() const { return killStatus; } 78 79 G4bool PrimaryParticleIsKilledAndDoNotDepositEnergy() const { return doNotDepositStatus; }80 77 81 78 G4bool PrimaryParticleIsModified() const { return isModified; } … … 99 96 100 97 G4bool killStatus; 101 G4bool doNotDepositStatus;102 98 G4bool isModified; 103 99 G4double localEnergyDeposit; -
trunk/source/processes/electromagnetic/lowenergy/include/G4FinalStatePsCreationChampion.hh
r966 r991 25 25 // 26 26 // $Id: G4FinalStatePsCreationChampion.hh,v 1.1 2008/07/16 19:01:07 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4FluoTransition.hh
r961 r991 26 26 // 27 27 // $Id: G4FluoTransition.hh,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/include/G4IonParametrisedLossModel.hh
r966 r991 37 37 // First implementation: 10. 11. 2008 38 38 // 39 // Modifications: 03. 02. 2009 - Bug fix iterators (AL)39 // Modifications: 40 40 // 41 41 // -
trunk/source/processes/electromagnetic/lowenergy/include/G4IonParametrisedLossModel.icc
r968 r991 37 37 // First implementation: 10. 11. 2008 38 38 // 39 // Modifications: 03. 02. 2009 - Bug fix iterators (AL)39 // Modifications: 40 40 // 41 41 // … … 186 186 const G4Material* material) { // Target material 187 187 188 LossTableList::iterator iter = lossTableList. end();188 LossTableList::iterator iter = lossTableList.begin(); 189 189 LossTableList::iterator iterTables = lossTableList.begin(); 190 190 LossTableList::iterator iterTables_end = lossTableList.end(); -
trunk/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh
r961 r991 26 26 // 27 27 // $Id: G4LinInterpolation.hh,v 1.3 2006/06/29 19:35:45 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4LivermoreComptonModel.hh
r966 r991 25 25 // 26 26 // $Id: G4LivermoreComptonModel.hh,v 1.1 2008/10/30 14:16:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4LivermoreGammaConversionModel.hh
r966 r991 25 25 // 26 26 // $Id: G4LivermoreGammaConversionModel.hh,v 1.1 2008/10/30 14:16:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4LivermorePhotoElectricModel.hh
r966 r991 25 25 // 26 26 // $Id: G4LivermorePhotoElectricModel.hh,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4LivermorePolarizedComptonModel.hh
r966 r991 25 25 // 26 26 // $Id: G4LivermorePolarizedComptonModel.hh,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4LivermorePolarizedRayleighModel.hh
r966 r991 25 25 // 26 26 // $Id: G4LivermorePolarizedRayleighModel.hh,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4LivermoreRayleighModel.hh
r966 r991 25 25 // 26 26 // $Id: G4LivermoreRayleighModel.hh,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 -
trunk/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh
r961 r991 26 26 // 27 27 // $Id: G4LogLogInterpolation.hh,v 1.6 2008/12/09 13:28:02 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh
r961 r991 27 27 // ------------------------------------------------------------------- 28 28 // $Id: G4LowEnergyBremsstrahlung.hh,v 1.37 2006/06/29 19:35:55 gunter Exp $ 29 // GEANT4 tag $Name: geant4-09-02 -ref-02$29 // GEANT4 tag $Name: geant4-09-02 $ 30 30 // 31 31 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh
r961 r991 25 25 // 26 26 // $Id: G4LowEnergyCompton.hh,v 1.24 2008/11/04 10:14:00 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh
r961 r991 26 26 // 27 27 // $Id: G4LowEnergyGammaConversion.hh,v 1.15 2006/06/29 19:35:59 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh
r961 r991 26 26 // ------------------------------------------------------------------- 27 27 // $Id: G4LowEnergyIonisation.hh,v 1.41 2006/06/29 19:36:01 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh
r961 r991 26 26 // 27 27 // $Id: G4LowEnergyPhotoElectric.hh,v 1.28 2006/06/29 19:36:03 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh
r961 r991 26 26 // 27 27 // $Id: G4LowEnergyPolarizedCompton.hh,v 1.10 2008/05/02 13:04:41 flongo Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------------------------------------------------------ -
trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedRayleigh.hh
r961 r991 25 25 // 26 26 // $Id: G4LowEnergyPolarizedRayleigh.hh,v 1.5 2006/06/29 19:36:07 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh
r961 r991 26 26 // 27 27 // $Id: G4LowEnergyRayleigh.hh,v 1.16 2006/06/29 19:36:09 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/lowenergy/include/G4OrlicLCrossSection.hh
r966 r991 25 25 // 26 26 // $Id: G4OrlicLCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Haifa Ben Abdelouahed -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeAnnihilationModel.hh
r966 r991 25 25 // 26 26 // $Id: G4PenelopeAnnihilationModel.hh,v 1.1 2008/11/04 10:14:56 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlung.hh
r961 r991 27 27 // ------------------------------------------------------------------- 28 28 // $Id: G4PenelopeBremsstrahlung.hh,v 1.8 2006/06/29 19:36:15 gunter Exp $ 29 // GEANT4 tag $Name: geant4-09-02 -ref-02$29 // GEANT4 tag $Name: geant4-09-02 $ 30 30 // 31 31 // Author: L.Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungAngular.hh
r961 r991 27 27 // ------------------------------------------------------------------- 28 28 // $Id: G4PenelopeBremsstrahlungAngular.hh,v 1.3 2006/06/29 19:36:17 gunter Exp $ 29 // GEANT4 tag $Name: geant4-09-02 -ref-02$29 // GEANT4 tag $Name: geant4-09-02 $ 30 30 // 31 31 // Author: L.Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungContinuous.hh
r961 r991 27 27 // ------------------------------------------------------------------- 28 28 // $Id: G4PenelopeBremsstrahlungContinuous.hh,v 1.4 2008/12/09 15:04:05 pandola Exp $ 29 // GEANT4 tag $Name: geant4-09-02 -ref-02$29 // GEANT4 tag $Name: geant4-09-02 $ 30 30 // 31 31 // Author: L.Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeCompton.hh
r961 r991 25 25 // 26 26 // $Id: G4PenelopeCompton.hh,v 1.11 2008/03/26 15:30:19 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeComptonModel.hh
r966 r991 25 25 // 26 26 // $Id: G4PenelopeComptonModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeGammaConversion.hh
r961 r991 26 26 // 27 27 // $Id: G4PenelopeGammaConversion.hh,v 1.2 2006/06/29 19:36:25 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: L. Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeGammaConversionModel.hh
r966 r991 25 25 // 26 26 // $Id: G4PenelopeGammaConversionModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeIonisation.hh
r961 r991 26 26 // ------------------------------------------------------------------- 27 27 // $Id: G4PenelopeIonisation.hh,v 1.5 2006/06/29 19:36:33 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: L. Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeIonisationModel.hh
r966 r991 25 25 // 26 26 // $Id: G4PenelopeIonisationModel.hh,v 1.1 2008/12/04 14:12:09 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopePhotoElectric.hh
r961 r991 26 26 // 27 27 // $Id: G4PenelopePhotoElectric.hh,v 1.4 2006/06/29 19:36:35 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: L.Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopePhotoElectricModel.hh
r966 r991 25 25 // 26 26 // $Id: G4PenelopePhotoElectricModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeRayleigh.hh
r961 r991 26 26 // 27 27 // $Id: G4PenelopeRayleigh.hh,v 1.5 2006/06/29 19:36:37 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4PenelopeRayleighModel.hh
r966 r991 25 25 // 26 26 // $Id: G4PenelopeRayleighModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh
r961 r991 26 26 // 27 27 // $Id: G4RangeNoTest.hh,v 1.4 2006/06/29 19:36:47 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh
r961 r991 26 26 // 27 27 // $Id: G4RangeTest.hh,v 1.4 2006/06/29 19:36:49 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh
r961 r991 26 26 // 27 27 // $Id: G4SemiLogInterpolation.hh,v 1.4 2006/06/29 19:36:51 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh
r961 r991 26 26 // 27 27 // $Id: G4ShellData.hh,v 1.7 2008/03/17 13:45:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh
r961 r991 26 26 // 27 27 // $Id: G4ShellEMDataSet.hh,v 1.12 2008/03/17 13:45:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh
r961 r991 26 26 // 27 27 // $Id: G4VCrossSectionHandler.hh,v 1.14 2006/06/29 19:37:01 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh
r961 r991 26 26 // 27 27 // $Id: G4VDataSetAlgorithm.hh,v 1.7 2006/06/29 19:37:07 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh
r961 r991 26 26 // 27 27 // $Id: G4VEMDataSet.hh,v 1.12 2008/03/17 13:45:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyDiscretePhotonProcess.hh
r961 r991 25 25 // 26 26 // $Id: G4VLowEnergyDiscretePhotonProcess.hh,v 1.4 2006/06/29 19:37:13 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/include/G4VLowEnergyTestableDiscreteProcess.hh
r961 r991 26 26 // 27 27 // $Id: G4VLowEnergyTestableDiscreteProcess.hh,v 1.3 2006/06/29 19:37:17 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 -
trunk/source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh
r961 r991 26 26 // 27 27 // $Id: G4VRangeTest.hh,v 1.3 2006/06/29 19:37:21 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh
r961 r991 26 26 // 27 27 // $Id: G4VeLowEnergyLoss.hh,v 1.9 2006/06/29 19:37:23 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // 3.4.2000 Veronique Lefebure: -
trunk/source/processes/electromagnetic/lowenergy/include/G4WaterExcitationStructure.hh
r961 r991 26 26 // 27 27 // $Id: G4WaterExcitationStructure.hh,v 1.1 2007/10/15 08:33:25 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4WaterIonisationStructure.hh
r961 r991 26 26 // 27 27 // $Id: G4WaterIonisationStructure.hh,v 1.1 2007/11/08 20:38:40 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh
r961 r991 25 25 // 26 26 // $Id: G4eBremsstrahlungSpectrum.hh,v 1.8 2006/06/29 19:37:33 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionExcitationEmfietzoglou.hh
r961 r991 26 26 // 27 27 // $Id: G4eCrossSectionExcitationEmfietzoglou.hh,v 1.1 2007/05/02 17:18:48 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4eCrossSectionScreenedRutherford.hh
r961 r991 26 26 // 27 27 // $Id: G4eCrossSectionScreenedRutherford.hh,v 1.2 2007/10/12 12:26:34 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eIonisationCrossSectionHandler.hh,v 1. 7 2009/01/29 08:13:27 pandolaExp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eIonisationCrossSectionHandler.hh,v 1.6 2006/06/29 19:37:36 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 40 40 // Modified: 41 41 // 10 Oct 2001 M.G. Pia Revision to improve code quality and consistency with design 42 // 28 Jan 2009 L.Pandola Added public method to make a easier migration of 43 // G4LowEnergyIonisation to G4LivermoreIonisationModel 42 // 44 43 // ------------------------------------------------------------------- 45 44 … … 73 72 74 73 ~G4eIonisationCrossSectionHandler(); 75 76 G4double GetCrossSectionAboveThresholdForElement(G4double energy,77 G4double cutEnergy,78 G4int Z);79 74 80 75 protected: -
trunk/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh
r961 r991 26 26 // 27 27 // $Id: G4eIonisationParameters.hh,v 1.8 2006/06/29 19:37:38 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh
r961 r991 25 25 // 26 26 // $Id: G4eIonisationSpectrum.hh,v 1.7 2006/06/29 19:37:40 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh
r961 r991 26 26 // 27 27 // $Id: G4eLowEnergyLoss.hh,v 1.14 2006/06/29 19:37:42 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/include/G4ecpssrCrossSection.hh
r966 r991 25 25 // 26 26 // $Id: G4ecpssrCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Haifa Ben Abdelouahed -
trunk/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh
r961 r991 26 26 // 27 27 // $Id: G4hLowEnergyLoss.hh,v 1.17 2006/06/29 19:37:58 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // $Id: -
trunk/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExp.hh
r961 r991 45 45 // ------------------------------------------------------------------- 46 46 // $Id: G4hShellCrossSectionDoubleExp.hh,v 1.3 2006/06/29 19:38:12 gunter Exp $ 47 // GEANT4 tag $Name: geant4-09-02 -ref-02$47 // GEANT4 tag $Name: geant4-09-02 $ 48 48 49 49 #ifndef G4HSHELLCROSSSECTIONDOUBLEEXP_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionDoubleExpData.hh
r961 r991 40 40 // ------------------------------------------------------------------- 41 41 // $Id: G4hShellCrossSectionDoubleExpData.hh,v 1.3 2006/06/29 19:38:14 gunter Exp $ 42 // GEANT4 tag $Name: geant4-09-02 -ref-02$42 // GEANT4 tag $Name: geant4-09-02 $ 43 43 44 44 #ifndef G4hShellCrossSectionDoubleExpData_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExp.hh
r961 r991 45 45 // ------------------------------------------------------------------- 46 46 // $Id: G4hShellCrossSectionExp.hh,v 1.3 2006/06/29 19:38:16 gunter Exp $ 47 // GEANT4 tag $Name: geant4-09-02 -ref-02$47 // GEANT4 tag $Name: geant4-09-02 $ 48 48 49 49 #ifndef G4HSHELLCROSSSECTIONEXP_HH -
trunk/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSectionExpData.hh
r961 r991 38 38 // ------------------------------------------------------------------- 39 39 // $Id: G4hShellCrossSectionExpData.hh,v 1.3 2006/06/29 19:38:18 gunter Exp $ 40 // GEANT4 tag $Name: geant4-09-02 -ref-02$40 // GEANT4 tag $Name: geant4-09-02 $ 41 41 42 42 #ifndef G4hShellCrossSectionExpData_HH -
trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc
r961 r991 26 26 // 27 27 // $Id: G4AtomicDeexcitation.cc,v 1.11 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc
r961 r991 26 26 // 27 27 // $Id: G4AtomicShell.cc,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc
r961 r991 26 26 // 27 27 // $Id: G4AtomicTransitionManager.cc,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc
r961 r991 25 25 // 26 26 // $Id: G4BremsstrahlungCrossSectionHandler.cc,v 1.9 2006/06/29 19:38:42 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc
r961 r991 26 26 // 27 27 // $Id: G4BremsstrahlungParameters.cc,v 1.19 2006/06/29 19:38:44 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc
r961 r991 26 26 // 27 27 // $Id: G4CompositeEMDataSet.cc,v 1.13 2008/03/17 13:40:53 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecrease.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionChargeDecrease.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionChargeDecrease.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecreasePartial.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionChargeDecreasePartial.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionChargeDecreasePartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncrease.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionChargeIncrease.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionChargeIncrease.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncreasePartial.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionChargeIncreasePartial.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionChargeIncreasePartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeTransferCH.cc
r968 r991 26 26 // 27 27 // $Id: G4CrossSectionChargeTransferCH.cc,v 1.3 2008/03/25 16:00:20 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeTransferExp.cc
r968 r991 26 26 // 27 27 // $Id: G4CrossSectionChargeTransferExp.cc,v 1.5 2008/06/27 12:22:25 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticChampion.cc
r968 r991 25 25 // 26 26 // $Id: G4CrossSectionElasticChampion.cc,v 1.4 2008/12/05 11:58:16 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherford.cc
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionElasticScreenedRutherford.cc,v 1.1 2007/10/12 23:11:41 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherfordHE.cc
r968 r991 25 25 // 26 26 // $Id: G4CrossSectionElasticScreenedRutherfordHE.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionElasticScreenedRutherfordHE.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherfordLE.cc
r968 r991 25 25 // 26 26 // $Id: G4CrossSectionElasticScreenedRutherfordLE.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionElasticScreenedRutherfordLE.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBorn.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationBorn.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionExcitationBorn.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBornPartial.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationBornPartial.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionExcitationBornPartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglou.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationEmfietzoglou.cc,v 1.5 2008/12/05 11:58:16 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionExcitationEmfietzoglou.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglouPartial.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationEmfietzoglouPartial.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionExcitationEmfietzoglouPartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreen.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionExcitationMillerGreen.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionExcitationMillerGreen.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4CrossSectionExcitationMillerGreenPartial.cc,v 1. 3 2009/01/20 07:40:53sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4CrossSectionExcitationMillerGreenPartial.cc,v 1.2 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionExcitationMillerGreenPartial.hh" … … 115 115 tCorrected = k * kineticEnergyCorrection[particleTypeIndex]; 116 116 117 // SI - added protection118 if (tCorrected < waterExcitation.ExcitationEnergy(excitationLevel)) return 0;119 //120 121 117 G4int z = 10; 122 118 … … 162 158 // ELECTRON CORRECTION 163 159 164 if ( particle == instance->GetIon("alpha++")|| 165 particle == G4Proton::ProtonDefinition()) 166 160 if ( particle == instance->GetIon("alpha++")) 167 161 { while (i > 0) 168 162 { -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionHandler.cc
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionHandler.cc,v 1.18 2006/06/29 19:38:48 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBorn.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionIonisationBorn.cc,v 1.4 2008/08/20 14:51:48 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionIonisationBorn.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornElectron.cc
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionIonisationBornElectron.cc,v 1.2 2007/11/08 18:51:34 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4CrossSectionIonisationBornPartial.cc,v 1. 5 2009/01/20 07:40:53sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4CrossSectionIonisationBornPartial.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionIonisationBornPartial.hh" … … 33 33 G4CrossSectionIonisationBornPartial::G4CrossSectionIonisationBornPartial() 34 34 { 35 lowEnergyLimitDefault = 12.61* eV;35 lowEnergyLimitDefault = 25 * eV; 36 36 highEnergyLimitDefault = 30 * keV; 37 37 … … 52 52 tableFile[electron] = fileElectron; 53 53 54 lowEnergyLimit[electron] = 12.61* eV;54 lowEnergyLimit[electron] = 25. * eV; 55 55 highEnergyLimit[electron] = 30. * keV; 56 56 -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartialElectron.cc
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionIonisationBornPartialElectron.cc,v 1.1 2007/10/15 08:57:54 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRudd.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionIonisationRudd.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionIonisationRudd.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRuddPartial.cc
r961 r991 25 25 // 26 26 // $Id: G4CrossSectionIonisationRuddPartial.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4CrossSectionIonisationRuddPartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionKill.cc
r961 r991 26 26 // 27 27 // $Id: G4CrossSectionKill.cc,v 1.1 2007/11/09 20:26:12 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionPsCreationChampion.cc
r968 r991 25 25 // 26 26 // $Id: G4CrossSectionPsCreationChampion.cc,v 1.1 2008/07/16 19:01:07 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionPsCreationChampionPartial.cc
r968 r991 25 25 // 26 26 // $Id: G4CrossSectionPsCreationChampionPartial.cc,v 1.1 2008/07/16 19:01:07 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNACrossSectionDataSet.cc
r961 r991 27 27 28 28 // $Id: G4DNACrossSectionDataSet.cc,v 1.7 2007/11/09 18:06:26 pia Exp $ 29 // GEANT4 tag $Name: geant4-09-02 -ref-02$29 // GEANT4 tag $Name: geant4-09-02 $ 30 30 // 31 31 // Author: Riccardo Capra <capra@ge.infn.it> -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAGenericIonsManager.cc
r961 r991 25 25 // 26 26 // $Id: G4DNAGenericIonsManager.cc,v 1.5 2008/07/16 19:01:07 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4DNAGenericIonsManager.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4DopplerProfile.cc
r968 r991 26 26 // 27 27 // $Id: G4DopplerProfile.cc,v 1.2 2008/03/17 13:40:53 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4DummyFinalState.cc
r961 r991 26 26 // 27 27 // $Id: G4DummyFinalState.cc,v 1.2 2007/10/15 08:36:35 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc
r961 r991 26 26 // 27 27 // $Id: G4EMDataSet.cc,v 1.18 2008/03/17 13:40:53 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4FinalStateChargeDecrease.cc,v 1. 4 2009/01/20 07:50:28sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4FinalStateChargeDecrease.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateChargeDecrease.hh" … … 70 70 } 71 71 72 //SI - Added protection against total energy deposit73 product.DoNotDepositEnergy();74 //75 72 product.KillPrimaryParticle(); 76 77 73 product.AddEnergyDeposit(waterBindingEnergy); 78 74 79 75 G4DynamicParticle* aSecondary = new G4DynamicParticle(OutgoingParticleDefinition(definition, finalStateIndex), 80 76 track.GetDynamicParticle()->GetMomentumDirection(), -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4FinalStateChargeIncrease.cc,v 1. 4 2009/01/20 07:50:28sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4FinalStateChargeIncrease.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateChargeIncrease.hh" … … 48 48 product.Clear(); 49 49 50 //SI - Added protection against total energy deposit51 product.DoNotDepositEnergy();52 //53 50 product.KillPrimaryParticle(); 54 51 product.AddEnergyDeposit(0.); 55 56 52 G4ParticleDefinition* definition = track.GetDefinition(); 57 53 -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeTransferProton.cc
r968 r991 26 26 // 27 27 // $Id: G4FinalStateChargeTransferProton.cc,v 1.1 2008/03/25 15:48:21 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticBrennerZaider.cc
r961 r991 25 25 // 26 26 // $Id: G4FinalStateElasticBrennerZaider.cc,v 1.8 2008/12/05 11:58:16 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateElasticBrennerZaider.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticChampion.cc
r968 r991 25 25 // 26 26 // $Id: G4FinalStateElasticChampion.cc,v 1.7 2008/12/10 18:25:28 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticScreenedRutherford.cc
r961 r991 25 25 // 26 26 // $Id: G4FinalStateElasticScreenedRutherford.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateElasticScreenedRutherford.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationBorn.cc
r961 r991 25 25 // 26 26 // $Id: G4FinalStateExcitationBorn.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateExcitationBorn.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationEmfietzoglou.cc
r961 r991 25 25 // 26 26 // $Id: G4FinalStateExcitationEmfietzoglou.cc,v 1.5 2008/12/05 11:58:16 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateExcitationEmfietzoglou.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationMillerGreen.cc
r961 r991 25 25 // 26 26 // $Id: G4FinalStateExcitationMillerGreen.cc,v 1.3 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateExcitationMillerGreen.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationBorn.cc
r961 r991 25 25 // 26 26 // $Id: G4FinalStateIonisationBorn.cc,v 1.16 2008/12/06 13:47:12 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateIonisationBorn.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationRudd.cc
r961 r991 25 25 // 26 26 // $Id: G4FinalStateIonisationRudd.cc,v 1.8 2008/08/20 14:51:48 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #include "G4FinalStateIonisationRudd.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateKill.cc
r961 r991 26 26 // 27 27 // $Id: G4FinalStateKill.cc,v 1.1 2007/11/09 20:26:12 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc
r961 r991 25 25 // 26 26 // 27 // $Id: G4FinalStateProduct.cc,v 1. 6 2009/01/20 07:50:28 sincertiExp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4FinalStateProduct.cc,v 1.5 2007/11/09 20:11:04 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) … … 53 53 #include "G4ThreeVector.hh" 54 54 55 G4FinalStateProduct::G4FinalStateProduct() : killStatus(false), doNotDepositStatus(false),isModified(false), localEnergyDeposit(0.), modifiedEnergy(0)55 G4FinalStateProduct::G4FinalStateProduct() : killStatus(false), isModified(false), localEnergyDeposit(0.), modifiedEnergy(0) 56 56 { 57 57 // empty … … 68 68 // Reset object status 69 69 killStatus = false; 70 doNotDepositStatus = false;71 70 isModified = false; 72 71 localEnergyDeposit = 0.; … … 99 98 } 100 99 101 void G4FinalStateProduct::DoNotDepositEnergy()102 {103 doNotDepositStatus = true;104 }105 106 100 void G4FinalStateProduct::KillPrimaryParticle() 107 101 { 108 109 102 // ---- MGP ---- To be added: Handle local energy deposit here 110 103 killStatus = true; -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStatePsCreationChampion.cc
r968 r991 25 25 // 26 26 // $Id: G4FinalStatePsCreationChampion.cc,v 1.1 2008/07/16 19:01:07 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4FluoTransition.cc
r961 r991 26 26 // 27 27 // $Id: G4FluoTransition.cc,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/src/G4IonParametrisedLossModel.cc
r968 r991 37 37 // First implementation: 10. 11. 2008 38 38 // 39 // Modifications: 03. 02. 2009 - Bug fix iterators (AL)39 // Modifications: 40 40 // 41 41 // … … 107 107 dedxCacheMaterial = 0; 108 108 dedxCacheEnergyCut = 0; 109 dedxCacheIter = lossTableList. end();109 dedxCacheIter = lossTableList.begin(); 110 110 dedxCacheTransitionEnergy = 0.0; 111 111 dedxCacheTransitionFactor = 0.0; … … 166 166 dedxCacheMaterial = 0; 167 167 dedxCacheEnergyCut = 0; 168 dedxCacheIter = lossTableList. end();168 dedxCacheIter = lossTableList.begin(); 169 169 dedxCacheTransitionEnergy = 0.0; 170 170 dedxCacheTransitionFactor = 0.0; … … 342 342 LossTableList::iterator iter = dedxCacheIter; 343 343 344 if(iter != lossTableList. end()) {344 if(iter != lossTableList.begin()) { 345 345 346 346 G4double transitionEnergy = dedxCacheTransitionEnergy; … … 672 672 673 673 // If any table is applicable, the transition factor is computed: 674 if(iter != lossTableList. end()) {674 if(iter != lossTableList.begin()) { 675 675 676 676 // Retrieving the transition energy from the parameterisation table … … 777 777 // If parameterization for ions is available the electronic energy loss 778 778 // is overwritten 779 if(iter != lossTableList. end()) {779 if(iter != lossTableList.begin()) { 780 780 781 781 // The energy loss is calculated using the ComputeDEDXPerVolume function … … 854 854 G4double transitionEnergy = dedxCacheTransitionEnergy; 855 855 856 if(iter != lossTableList. end() && transitionEnergy < kineticEnergy) {856 if(iter != lossTableList.begin() && transitionEnergy < kineticEnergy) { 857 857 chargeSquareRatio *= corrections -> EffectiveChargeCorrection(particle, 858 858 material, … … 862 862 eloss *= chargeSquareRatioCorr; 863 863 } 864 else if (iter == lossTableList. end()) {864 else if (iter == lossTableList.begin()) { 865 865 866 866 chargeSquareRatio *= corrections -> EffectiveChargeCorrection(particle, … … 875 875 // overwrite the energy loss (i.e. when the effective charge approach is 876 876 // used) 877 if(iter == lossTableList. end()) {877 if(iter == lossTableList.begin()) { 878 878 879 879 G4double scaledKineticEnergy = kineticEnergy * dedxCacheGenIonMassRatio; -
trunk/source/processes/electromagnetic/lowenergy/src/G4LinInterpolation.cc
r961 r991 26 26 // 27 27 // $Id: G4LinInterpolation.cc,v 1.3 2006/06/29 19:40:03 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreComptonModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermoreComptonModel.cc,v 1. 2 2009/01/21 10:58:13sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4LivermoreComptonModel.cc,v 1.1 2008/10/30 14:17:46 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 … … 38 38 G4LivermoreComptonModel::G4LivermoreComptonModel(const G4ParticleDefinition*, 39 39 const G4String& nam) 40 :G4VEmModel(nam),isInitialised(false) ,meanFreePathTable(0),scatterFunctionData(0),crossSectionHandler(0)40 :G4VEmModel(nam),isInitialised(false) 41 41 { 42 42 lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ? … … 45 45 SetHighEnergyLimit(highEnergyLimit); 46 46 47 verboseLevel= 0;47 verboseLevel= 0; 48 48 // Verbosity scale: 49 49 // 0 = nothing … … 65 65 G4LivermoreComptonModel::~G4LivermoreComptonModel() 66 66 { 67 68 if (meanFreePathTable) delete meanFreePathTable; 69 if (crossSectionHandler) delete crossSectionHandler; 70 if (scatterFunctionData) delete scatterFunctionData; 71 67 delete meanFreePathTable; 68 delete crossSectionHandler; 69 delete scatterFunctionData; 72 70 } 73 71 … … 77 75 const G4DataVector& cuts) 78 76 { 79 80 77 if (verboseLevel > 3) 81 78 G4cout << "Calling G4LivermoreComptonModel::Initialise()" << G4endl; 82 79 83 if (crossSectionHandler) 84 { 85 crossSectionHandler->Clear(); 86 delete crossSectionHandler; 87 } 88 80 InitialiseElementSelectors(particle,cuts); 81 89 82 // Energy limits 90 83 … … 125 118 if (verboseLevel > 2) 126 119 G4cout << "Loaded cross section files for Livermore Compton model" << G4endl; 127 128 InitialiseElementSelectors(particle,cuts);129 120 130 121 G4cout << "Livermore Compton model is initialized " << G4endl … … 144 135 145 136 isInitialised = true; 146 147 137 } 148 138 … … 155 145 G4double, G4double) 156 146 { 157 158 147 if (verboseLevel > 3) 159 148 G4cout << "Calling ComputeCrossSectionPerAtom() of G4LivermoreComptonModel" << G4endl; 160 149 161 150 G4double cs = crossSectionHandler->FindValue(G4int(Z), GammaEnergy); 162 163 151 return cs; 164 165 152 } 166 153 … … 173 160 G4double) 174 161 { 175 176 162 // The scattered gamma energy is sampled according to Klein - Nishina formula. 177 163 // then accepted or rejected depending on the Scattering Function multiplied … … 198 184 fParticleChange->SetProposedKineticEnergy(0.); 199 185 fParticleChange->ProposeLocalEnergyDeposit(photonEnergy0); 186 // SI - IS THE FOLLOWING RETURN NECESSARY ? 200 187 return ; 201 188 } … … 348 335 G4DynamicParticle* dp = new G4DynamicParticle (G4Electron::Electron(),eDirection,eKineticEnergy) ; 349 336 fvect->push_back(dp); 350 351 337 } 352 338 -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreGammaConversionModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermoreGammaConversionModel.cc,v 1. 2 2009/01/21 10:58:13sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4LivermoreGammaConversionModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 … … 38 38 G4LivermoreGammaConversionModel::G4LivermoreGammaConversionModel(const G4ParticleDefinition*, 39 39 const G4String& nam) 40 :G4VEmModel(nam),smallEnergy(2.*MeV),isInitialised(false) ,crossSectionHandler(0),meanFreePathTable(0)40 :G4VEmModel(nam),smallEnergy(2.*MeV),isInitialised(false) 41 41 { 42 42 lowEnergyLimit = 1.022000 * MeV; … … 63 63 G4LivermoreGammaConversionModel::~G4LivermoreGammaConversionModel() 64 64 { 65 if (meanFreePathTable)delete meanFreePathTable;66 if (crossSectionHandler)delete crossSectionHandler;65 delete meanFreePathTable; 66 delete crossSectionHandler; 67 67 } 68 68 … … 75 75 G4cout << "Calling G4LivermoreGammaConversionModel::Initialise()" << G4endl; 76 76 77 if (crossSectionHandler) 78 { 79 crossSectionHandler->Clear(); 80 delete crossSectionHandler; 81 } 77 InitialiseElementSelectors(particle,cuts); 82 78 83 79 // Energy limits … … 111 107 if (verboseLevel > 2) 112 108 G4cout << "Loaded cross section files for PenelopeGammaConversion" << G4endl; 113 114 InitialiseElementSelectors(particle,cuts);115 109 116 110 G4cout << "Livermore Gamma Conversion model is initialized " << G4endl -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePhotoElectricModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermorePhotoElectricModel.cc,v 1. 2 2009/01/21 10:58:13sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4LivermorePhotoElectricModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 … … 38 38 G4LivermorePhotoElectricModel::G4LivermorePhotoElectricModel(const G4ParticleDefinition*, 39 39 const G4String& nam) 40 :G4VEmModel(nam),isInitialised(false) ,meanFreePathTable(0),crossSectionHandler(0),shellCrossSectionHandler(0),ElectronAngularGenerator(0)40 :G4VEmModel(nam),isInitialised(false) 41 41 { 42 42 lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ? … … 64 64 G4LivermorePhotoElectricModel::~G4LivermorePhotoElectricModel() 65 65 { 66 if (meanFreePathTable)delete meanFreePathTable;67 if (crossSectionHandler)delete crossSectionHandler;68 if (shellCrossSectionHandler)delete shellCrossSectionHandler;69 if (ElectronAngularGenerator)delete ElectronAngularGenerator;66 delete meanFreePathTable; 67 delete crossSectionHandler; 68 delete shellCrossSectionHandler; 69 delete ElectronAngularGenerator; 70 70 } 71 71 … … 78 78 G4cout << "Calling G4LivermorePhotoElectricModel::Initialise()" << G4endl; 79 79 80 if (crossSectionHandler) 81 { 82 crossSectionHandler->Clear(); 83 delete crossSectionHandler; 84 } 85 86 if (shellCrossSectionHandler) 87 { 88 shellCrossSectionHandler->Clear(); 89 delete shellCrossSectionHandler; 90 } 91 80 InitialiseElementSelectors(particle,cuts); 81 92 82 // Energy limits 93 83 … … 132 122 G4cout << "Loaded cross section files for Livermore PhotoElectric model" << G4endl; 133 123 134 InitialiseElementSelectors(particle,cuts);135 136 124 G4cout << "Livermore PhotoElectric model is initialized " << G4endl 137 125 << "Energy range: " … … 189 177 fParticleChange->SetProposedKineticEnergy(0.); 190 178 fParticleChange->ProposeLocalEnergyDeposit(photonEnergy); 179 // SI - IS THE FOLLOWING RETURN NECESSARY ? 191 180 return ; 192 181 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePolarizedComptonModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermorePolarizedComptonModel.cc,v 1. 2 2009/01/21 10:58:13sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4LivermorePolarizedComptonModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 … … 38 38 G4LivermorePolarizedComptonModel::G4LivermorePolarizedComptonModel(const G4ParticleDefinition*, 39 39 const G4String& nam) 40 :G4VEmModel(nam),isInitialised(false) ,meanFreePathTable(0),scatterFunctionData(0),crossSectionHandler(0)40 :G4VEmModel(nam),isInitialised(false) 41 41 { 42 42 lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ? … … 65 65 G4LivermorePolarizedComptonModel::~G4LivermorePolarizedComptonModel() 66 66 { 67 if (meanFreePathTable)delete meanFreePathTable;68 if (crossSectionHandler)delete crossSectionHandler;69 if (scatterFunctionData)delete scatterFunctionData;67 delete meanFreePathTable; 68 delete crossSectionHandler; 69 delete scatterFunctionData; 70 70 } 71 71 … … 78 78 G4cout << "Calling G4LivermorePolarizedComptonModel::Initialise()" << G4endl; 79 79 80 if (crossSectionHandler) 81 { 82 crossSectionHandler->Clear(); 83 delete crossSectionHandler; 84 } 80 InitialiseElementSelectors(particle,cuts); 85 81 86 82 // Energy limits … … 123 119 if (verboseLevel > 2) 124 120 G4cout << "Loaded cross section files for Livermore Polarized Compton model" << G4endl; 125 126 InitialiseElementSelectors(particle,cuts);127 121 128 122 G4cout << "Livermore Polarized Compton model is initialized " << G4endl … … 209 203 fParticleChange->SetProposedKineticEnergy(0.); 210 204 fParticleChange->ProposeLocalEnergyDeposit(gammaEnergy0); 205 // SI - IS THE FOLLOWING RETURN NECESSARY ? 211 206 return; 212 207 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePolarizedRayleighModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermorePolarizedRayleighModel.cc,v 1. 2 2009/01/21 10:58:13sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4LivermorePolarizedRayleighModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 … … 38 38 G4LivermorePolarizedRayleighModel::G4LivermorePolarizedRayleighModel(const G4ParticleDefinition*, 39 39 const G4String& nam) 40 :G4VEmModel(nam),isInitialised(false) ,crossSectionHandler(0),formFactorData(0)40 :G4VEmModel(nam),isInitialised(false) 41 41 { 42 42 lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ? … … 65 65 G4LivermorePolarizedRayleighModel::~G4LivermorePolarizedRayleighModel() 66 66 { 67 if (crossSectionHandler)delete crossSectionHandler;68 if (formFactorData)delete formFactorData;67 delete crossSectionHandler; 68 delete formFactorData; 69 69 } 70 70 … … 84 84 G4cout << "Calling G4LivermorePolarizedRayleighModel::Initialise()" << G4endl; 85 85 86 if (crossSectionHandler) 87 { 88 crossSectionHandler->Clear(); 89 delete crossSectionHandler; 90 } 91 86 InitialiseElementSelectors(particle,cuts); 87 92 88 // Energy limits 93 89 … … 120 116 if (verboseLevel > 2) 121 117 G4cout << "Loaded cross section files for Livermore Polarized Rayleigh model" << G4endl; 122 123 InitialiseElementSelectors(particle,cuts);124 118 125 119 G4cout << "Livermore Polarized Rayleigh model is initialized " << G4endl -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreRayleighModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermoreRayleighModel.cc,v 1. 2 2009/01/21 10:58:13sincerti Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4LivermoreRayleighModel.cc,v 1.1 2008/10/30 14:16:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 … … 38 38 G4LivermoreRayleighModel::G4LivermoreRayleighModel(const G4ParticleDefinition*, 39 39 const G4String& nam) 40 :G4VEmModel(nam),isInitialised(false) ,meanFreePathTable(0),formFactorData(0),crossSectionHandler(0)40 :G4VEmModel(nam),isInitialised(false) 41 41 { 42 42 lowEnergyLimit = 250 * eV; // SI - Could be 10 eV ? … … 65 65 G4LivermoreRayleighModel::~G4LivermoreRayleighModel() 66 66 { 67 if (meanFreePathTable)delete meanFreePathTable;68 if (crossSectionHandler)delete crossSectionHandler;69 if (formFactorData)delete formFactorData;67 delete meanFreePathTable; 68 delete crossSectionHandler; 69 delete formFactorData; 70 70 } 71 71 … … 78 78 G4cout << "Calling G4LivermoreRayleighModel::Initialise()" << G4endl; 79 79 80 if (crossSectionHandler) 81 { 82 crossSectionHandler->Clear(); 83 delete crossSectionHandler; 84 } 85 80 InitialiseElementSelectors(particle,cuts); 81 86 82 // Energy limits 87 83 … … 120 116 G4cout << "Loaded cross section files for Livermore Rayleigh model" << G4endl; 121 117 122 InitialiseElementSelectors(particle,cuts);123 124 118 G4cout << "Livermore Rayleigh model is initialized " << G4endl 125 119 << "Energy range: " … … 172 166 fParticleChange->SetProposedKineticEnergy(0.); 173 167 fParticleChange->ProposeLocalEnergyDeposit(photonEnergy0); 168 // SI - IS THE FOLLOWING RETURN NECESSARY ? 174 169 return ; 175 170 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4LogLogInterpolation.cc
r961 r991 26 26 // 27 27 // $Id: G4LogLogInterpolation.cc,v 1.14 2008/12/12 08:50:59 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyBremsstrahlung.cc
r961 r991 25 25 // 26 26 // $Id: G4LowEnergyBremsstrahlung.cc,v 1.71 2006/06/29 19:40:13 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyCompton.cc
r961 r991 25 25 // 26 26 // $Id: G4LowEnergyCompton.cc,v 1.47 2008/12/18 13:01:28 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc
r961 r991 27 27 /// 28 28 // $Id: G4LowEnergyGammaConversion.cc,v 1.36 2006/06/29 19:40:17 gunter Exp $ 29 // GEANT4 tag $Name: geant4-09-02 -ref-02$29 // GEANT4 tag $Name: geant4-09-02 $ 30 30 // 31 31 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc
r961 r991 25 25 // 26 26 // $Id: G4LowEnergyIonisation.cc,v 1.103 2008/05/02 19:23:38 pia Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPhotoElectric.cc
r961 r991 26 26 // 27 27 // $Id: G4LowEnergyPhotoElectric.cc,v 1.56 2006/06/29 19:40:23 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedCompton.cc
r961 r991 26 26 // 27 27 // $Id: G4LowEnergyPolarizedCompton.cc,v 1.25 2008/05/02 19:23:38 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------------------------------------------------------ -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedRayleigh.cc
r961 r991 25 25 // 26 26 // $Id: G4LowEnergyPolarizedRayleigh.cc,v 1.7 2006/06/29 19:40:27 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc
r961 r991 27 27 // 28 28 // $Id: G4LowEnergyRayleigh.cc,v 1.37 2006/06/29 19:40:29 gunter Exp $ 29 // GEANT4 tag $Name: geant4-09-02 -ref-02$29 // GEANT4 tag $Name: geant4-09-02 $ 30 30 // 31 31 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/src/G4OrlicLCrossSection.cc
r968 r991 25 25 // 26 26 //$Id: G4OrlicLCrossSection.cc,v 1.5 2008/12/18 13:01:30 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Haifa Ben Abdelouahed -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeAnnihilationModel.cc
r968 r991 25 25 // 26 26 // $Id: G4PenelopeAnnihilationModel.cc,v 1.2 2008/12/04 14:09:36 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlung.cc
r961 r991 25 25 // 26 26 // $Id: G4PenelopeBremsstrahlung.cc,v 1.18 2006/06/29 19:40:35 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlungAngular.cc
r961 r991 25 25 // 26 26 // $Id: G4PenelopeBremsstrahlungAngular.cc,v 1.7 2006/06/29 19:40:37 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlungContinuous.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PenelopeBremsstrahlungContinuous.cc,v 1.1 1 2008/12/15 09:23:06pandola Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4PenelopeBremsstrahlungContinuous.cc,v 1.10 2008/12/09 15:08:13 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- … … 97 97 G4String dirFile = pathString + "/penelope/" + name; 98 98 std::ifstream file(dirFile); 99 if (!file.is_open()) 99 std::filebuf* lsdp = file.rdbuf(); 100 if (!(lsdp->is_open())) 100 101 { 101 102 G4String excep = "G4PenelopeBremsstrahlungContinuous - data file " + name + " not found!"; … … 111 112 for (size_t j=0;j<NumberofKPoints;j++){ 112 113 file >> a1; 113 ReducedCS[i][j]=a1*cm2; 114 ReducedCS[i][j]=a1*cm2; //coversion present in Penelope source 114 115 } 115 116 //3) read the total cross section, in cm2 116 117 file >> a1; 117 TotalCS[i]=a1*cm2; 118 TotalCS[i]=a1*cm2; //conversion present in Penelope source 118 119 // Check closing item 119 120 file >> a1; 120 121 if (a1 != ((G4double) -1)) 121 122 { 122 G4String excep = "G4PenelopeBremsstrahlungContinuous - Check the bremms data file " 123 + name; 123 G4String excep = "G4PenelopeBremsstrahlungContinuous - Check the bremms data file " + name; 124 124 G4Exception(excep); 125 125 } … … 229 229 230 230 //Global x-section factor 231 G4double Fact=Zmat*Zmat*(energy+electron_mass_c2)*(energy+electron_mass_c2)/ 232 (energy*(energy+2.0*electron_mass_c2)); 231 G4double Fact=Zmat*Zmat*(energy+electron_mass_c2)*(energy+electron_mass_c2)/(energy*(energy+2.0*electron_mass_c2)); 233 232 Fact *= PositronCorrection(energy); 234 233 -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeCompton.cc
r961 r991 25 25 // 26 26 // $Id: G4PenelopeCompton.cc,v 1.33 2008/06/03 15:44:25 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeComptonModel.cc
r968 r991 25 25 // 26 26 // $Id: G4PenelopeComptonModel.cc,v 1.2 2008/12/04 14:11:21 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeGammaConversionModel.cc
r968 r991 25 25 // 26 26 // $Id: G4PenelopeGammaConversionModel.cc,v 1.2 2008/12/04 14:09:36 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeIonisation.cc
r961 r991 25 25 // 26 26 // $Id: G4PenelopeIonisation.cc,v 1.19 2006/06/29 19:40:49 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeIonisationModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PenelopeIonisationModel.cc,v 1. 3 2008/12/15 09:23:06pandola Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4PenelopeIonisationModel.cc,v 1.2 2008/12/05 09:15:43 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola … … 517 517 //Penelope subtracted the fluorescence, but one has to match the databases 518 518 eKineticEnergy = energySecondary+ioniEnergy-bindingEnergy; 519 519 520 //VERIFICA QUI LA STORIA DEL LOCAL ENERGY DEPOSIT! 521 520 522 G4double localEnergyDeposit = ionEnergy; 521 523 G4double energyInFluorescence = 0.0*eV; -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectric.cc
r961 r991 25 25 // 26 26 // 27 // $Id: G4PenelopePhotoElectric.cc,v 1.1 3 2009/01/08 09:42:54 pandolaExp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4PenelopePhotoElectric.cc,v 1.12 2006/06/29 19:40:51 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: L. Pandola … … 37 37 // 31 May 2005 L. Pandola Added Sauter formula for the sampling of 38 38 // the electron direction 39 // 08 Jan 2009 L. Pandola Check shell index to avoid mismatch between40 // the Penelope cross section database and the41 // G4AtomicTransitionManager database. It suppresses42 // a warning from G4AtomicTransitionManager only.43 // Results are unchanged.44 39 // -------------------------------------------------------------- 45 40 … … 151 146 // Retrieve the corresponding identifier and binding energy of the selected shell 152 147 const G4AtomicTransitionManager* transitionManager = G4AtomicTransitionManager::Instance(); 153 154 //The number of shell cross section possibly reported in the Penelope database155 //might be different from the number of shells in the G4AtomicTransitionManager156 //(namely, Penelope may contain more shell, especially for very light elements).157 //In order to avoid a warning message from the G4AtomicTransitionManager, I158 //add this protection. Results are anyway changed, because when G4AtomicTransitionManager159 //has a shellID>maxID, it sets the shellID to the last valid shell.160 size_t numberOfShells = (size_t) transitionManager->NumberOfShells(Z);161 if (shellIndex >= numberOfShells)162 shellIndex = numberOfShells-1;163 164 148 const G4AtomicShell* shell = transitionManager->Shell(Z,shellIndex); 165 149 G4double bindingEnergy = shell->BindingEnergy(); -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectricModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PenelopePhotoElectricModel.cc,v 1. 3 2009/01/08 09:42:54pandola Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4PenelopePhotoElectricModel.cc,v 1.2 2008/12/04 14:09:36 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola … … 31 31 // History: 32 32 // -------- 33 // 08 Oct 2008 L Pandola Migration from process to model 34 // 08 Jan 2009 L. Pandola Check shell index to avoid mismatch between 35 // the Penelope cross section database and the 36 // G4AtomicTransitionManager database. It suppresses 37 // a warning from G4AtomicTransitionManager only. 38 // Results are unchanged. 33 // 08 Oct 2008 L Pandola Migration from process to model 39 34 // 40 35 … … 232 227 // Retrieve the corresponding identifier and binding energy of the selected shell 233 228 const G4AtomicTransitionManager* transitionManager = G4AtomicTransitionManager::Instance(); 234 235 //The number of shell cross section possibly reported in the Penelope database236 //might be different from the number of shells in the G4AtomicTransitionManager237 //(namely, Penelope may contain more shell, especially for very light elements).238 //In order to avoid a warning message from the G4AtomicTransitionManager, I239 //add this protection. Results are anyway changed, because when G4AtomicTransitionManager240 //has a shellID>maxID, it sets the shellID to the last valid shell.241 size_t numberOfShells = (size_t) transitionManager->NumberOfShells(Z);242 if (shellIndex >= numberOfShells)243 shellIndex = numberOfShells-1;244 245 229 const G4AtomicShell* shell = transitionManager->Shell(Z,shellIndex); 246 230 G4double bindingEnergy = shell->BindingEnergy(); -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeRayleigh.cc
r961 r991 27 27 // 28 28 // $Id: G4PenelopeRayleigh.cc,v 1.15 2007/09/03 09:43:14 pandola Exp $ 29 // GEANT4 tag $Name: geant4-09-02 -ref-02$29 // GEANT4 tag $Name: geant4-09-02 $ 30 30 // 31 31 // Author: L. Pandola (luciano.pandola@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeRayleighModel.cc
r968 r991 25 25 // 26 26 // $Id: G4PenelopeRayleighModel.cc,v 1.2 2008/12/04 14:09:36 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc
r961 r991 26 26 // 27 27 // $Id: G4RangeTest.cc,v 1.8 2006/06/29 19:41:03 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc
r961 r991 26 26 // 27 27 // $Id: G4SemiLogInterpolation.cc,v 1.6 2006/06/29 19:41:18 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc
r961 r991 26 26 // 27 27 // $Id: G4ShellData.cc,v 1.10 2008/03/17 13:40:53 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc
r961 r991 26 26 // 27 27 // $Id: G4ShellEMDataSet.cc,v 1.16 2008/03/10 15:07:41 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc
r961 r991 26 26 // 27 27 // $Id: G4VCrossSectionHandler.cc,v 1.17 2006/06/29 19:41:42 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4VLowEnergyDiscretePhotonProcess.cc
r961 r991 25 25 // 26 26 // $Id: G4VLowEnergyDiscretePhotonProcess.cc,v 1.5 2006/06/29 19:41:44 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc
r961 r991 26 26 // 27 27 // $Id: G4VeLowEnergyLoss.cc,v 1.25 2006/06/29 19:41:50 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4WaterExcitationStructure.cc
r961 r991 26 26 // 27 27 // $Id: G4WaterExcitationStructure.cc,v 1.1 2007/10/15 08:57:54 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4WaterIonisationStructure.cc
r961 r991 26 26 // 27 27 // $Id: G4WaterIonisationStructure.cc,v 1.1 2007/11/08 20:39:35 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc
r961 r991 25 25 // 26 26 // $Id: G4eBremsstrahlungSpectrum.cc,v 1.15 2006/06/29 19:41:58 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionExcitationEmfietzoglou.cc
r961 r991 26 26 // 27 27 // $Id: G4eCrossSectionExcitationEmfietzoglou.cc,v 1.1 2007/05/04 10:16:06 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 31 31 // $Id: G4eCrossSectionExcitationEmfietzoglou.cc,v 1.1 2007/05/04 10:16:06 pia Exp $ 32 // GEANT4 tag $Name: geant4-09-02 -ref-02$32 // GEANT4 tag $Name: geant4-09-02 $ 33 33 // 34 34 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionScreenedRutherford.cc
r961 r991 26 26 // 27 27 // $Id: G4eCrossSectionScreenedRutherford.cc,v 1.3 2007/10/12 12:27:19 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eIonisationCrossSectionHandler.cc,v 1.1 2 2009/01/29 08:13:34 pandolaExp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eIonisationCrossSectionHandler.cc,v 1.11 2006/06/29 19:42:00 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 42 42 // 19 Jul 2002 VI Create composite data set for material 43 43 // 21 Jan 2003 V.Ivanchenko Cut per region 44 // 28 Jan 2009 L.Pandola Added public method to make a easier migration of45 // G4LowEnergyIonisation to G4LivermoreIonisationModel46 44 // 47 45 // ------------------------------------------------------------------- … … 100 98 G4int nElements = material->GetNumberOfElements(); 101 99 102 if(verbose > 0) 103 { 104 G4cout << "eIonisation CS for " << m << "th material " 105 << material->GetName() 106 << " eEl= " << nElements << G4endl; 107 } 100 if(verbose > 0) { 101 G4cout << "eIonisation CS for " << m << "th material " 102 << material->GetName() 103 << " eEl= " << nElements << G4endl; 104 } 108 105 109 106 G4double tcut = (*energyCuts)[m]; … … 132 129 value += cross * p * density; 133 130 134 if(verbose>0 && m == 0 && e>=1. && e<=0.) 135 { 131 if(verbose>0 && m == 0 && e>=1. && e<=0.) { 136 132 G4cout << "G4eIonCrossSH: e(MeV)= " << e/MeV 137 133 << " n= " << n … … 143 139 << " Z= " << Z 144 140 << G4endl; 145 }141 } 146 142 147 143 } … … 159 155 } 160 156 161 G4double G4eIonisationCrossSectionHandler::GetCrossSectionAboveThresholdForElement(G4double energy, 162 G4double cutEnergy, 163 G4int Z) 164 { 165 G4int nShells = NumberOfComponents(Z); 166 G4double value = 0.; 167 if(energy > cutEnergy) 168 { 169 for (G4int n=0; n<nShells; n++) { 170 G4double cross = FindValue(Z, energy, n); 171 G4double p = theParam->Probability(Z, cutEnergy, energy, energy, n); 172 value += cross * p; 173 } 174 } 175 return value; 176 } 157 -
trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc
r961 r991 26 26 // 27 27 // $Id: G4eIonisationParameters.cc,v 1.23 2006/06/29 19:42:02 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc
r961 r991 25 25 // 26 26 // $Id: G4eIonisationSpectrum.cc,v 1.25 2006/06/29 19:42:04 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc
r961 r991 26 26 // 27 27 // $Id: G4eLowEnergyLoss.cc,v 1.35 2006/06/29 19:42:06 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ----------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4ecpssrCrossSection.cc
r968 r991 25 25 // 26 26 //$Id: G4ecpssrCrossSection.cc,v 1.5 2008/12/18 13:01:32 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // Author: Haifa Ben Abdelouahed -
trunk/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc
r961 r991 25 25 // 26 26 // 27 // $Id: G4hLowEnergyLoss.cc,v 1.2 8 2009/02/20 10:49:54sincerti Exp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4hLowEnergyLoss.cc,v 1.27 2008/06/20 19:54:03 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ----------------------------------------------------------- … … 145 145 G4double G4hLowEnergyLoss::HighestKineticEnergy= 100.*GeV; 146 146 G4int G4hLowEnergyLoss::TotBin = 360; 147 G4double G4hLowEnergyLoss::RTable =1.1; 148 G4double G4hLowEnergyLoss::LOGRTable = 1.1; 147 G4double G4hLowEnergyLoss::RTable,G4hLowEnergyLoss::LOGRTable; 149 148 150 149 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... … … 773 772 theRangeTable = theRangepbarTable ; 774 773 } 774 775 775 G4double R2 = RTable*RTable ; 776 776 G4double R1 = RTable+1.; … … 1062 1062 { 1063 1063 G4double LowEdgeRange,A,B,C,discr,KineticEnergy ; 1064 G4double Tbin = 0; 1065 if (RTable !=0.) Tbin = LowestKineticEnergy/RTable ; 1064 G4double Tbin = LowestKineticEnergy/RTable ; 1066 1065 G4double rangebin = 0.0 ; 1067 1066 G4int binnumber = -1 ; -
trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExp.cc
r961 r991 42 42 // ------------------------------------------------------------------- 43 43 // $Id: G4hShellCrossSectionDoubleExp.cc,v 1.9 2008/06/26 18:19:10 sincerti Exp $ 44 // GEANT4 tag $Name: geant4-09-02 -ref-02$44 // GEANT4 tag $Name: geant4-09-02 $ 45 45 46 46 #include "globals.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExpData.cc
r961 r991 34 34 // ------------------------------------------------------------------- 35 35 // $Id: G4hShellCrossSectionDoubleExpData.cc,v 1.4 2006/06/29 19:42:38 gunter Exp $ 36 // GEANT4 tag $Name: geant4-09-02 -ref-02$36 // GEANT4 tag $Name: geant4-09-02 $ 37 37 38 38 #include "G4hShellCrossSectionDoubleExpData.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExp.cc
r961 r991 42 42 // ------------------------------------------------------------------- 43 43 // $Id: G4hShellCrossSectionExp.cc,v 1.6 2008/05/02 19:23:38 pia Exp $ 44 // GEANT4 tag $Name: geant4-09-02 -ref-02$44 // GEANT4 tag $Name: geant4-09-02 $ 45 45 46 46 #include "globals.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExpData.cc
r961 r991 34 34 // ------------------------------------------------------------------- 35 35 // $Id: G4hShellCrossSectionExpData.cc,v 1.3 2006/06/29 19:42:42 gunter Exp $ 36 // GEANT4 tag $Name: geant4-09-02 -ref-02$36 // GEANT4 tag $Name: geant4-09-02 $ 37 37 38 38 #include "G4hShellCrossSectionExpData.hh" -
trunk/source/processes/electromagnetic/muons/History
r961 r991 1 $Id: History,v 1.12 6 2009/02/26 11:04:20vnivanch Exp $1 $Id: History,v 1.124 2008/11/13 14:14:07 vnivanch Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 20 26 February 09: V.Ivant (emmuons-V09-02-01)21 G4MuIonisation - fixed initialisation alowing to configure external model22 of fluctuations23 24 20 February 09: V.Ivant (emmuons-V09-02-00)25 - Cleanup: improved comments, move virtual methods from .hh to .cc26 19 27 20 12 November 08: V.Ivant (emmuons-V09-01-15) -
trunk/source/processes/electromagnetic/muons/include/G4EnergyLossForExtrapolator.hh
r961 r991 25 25 // 26 26 // $Id: G4EnergyLossForExtrapolator.hh,v 1.12 2008/11/13 14:14:07 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 //--------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/muons/include/G4MuBetheBlochModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBetheBlochModel.hh,v 1.1 8 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuBetheBlochModel.hh,v 1.17 2007/05/22 17:35:58 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 76 76 virtual ~G4MuBetheBlochModel(); 77 77 78 v irtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);78 void Initialise(const G4ParticleDefinition*, const G4DataVector&); 79 79 80 virtualG4double MinEnergyCut(const G4ParticleDefinition*,81 const G4MaterialCutsCouple*);80 G4double MinEnergyCut(const G4ParticleDefinition*, 81 const G4MaterialCutsCouple*); 82 82 83 83 virtual G4double ComputeCrossSectionPerElectron( … … 113 113 protected: 114 114 115 virtualG4double MaxSecondaryEnergy(const G4ParticleDefinition*,116 G4double kinEnergy);115 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 116 G4double kinEnergy); 117 117 118 118 private: 119 119 120 inlinevoid SetParticle(const G4ParticleDefinition* p);120 void SetParticle(const G4ParticleDefinition* p); 121 121 122 122 // hide assignment operator … … 141 141 }; 142 142 143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... .143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 144 144 145 inline void G4MuBetheBlochModel::SetParticle(const G4ParticleDefinition* p) 145 inline G4double G4MuBetheBlochModel::MaxSecondaryEnergy( 146 const G4ParticleDefinition*, 147 G4double kinEnergy) 146 148 { 147 if(!particle) { 148 particle = p; 149 mass = particle->GetPDGMass(); 150 massSquare = mass*mass; 151 ratio = electron_mass_c2/mass; 152 } 149 G4double tau = kinEnergy/mass; 150 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) / 151 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio); 152 return tmax; 153 153 } 154 154 -
trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlung.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlung.hh,v 1.3 1 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuBremsstrahlung.hh,v 1.30 2008/02/29 17:50:05 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 86 86 virtual ~G4MuBremsstrahlung(); 87 87 88 virtualG4bool IsApplicable(const G4ParticleDefinition& p);88 G4bool IsApplicable(const G4ParticleDefinition& p); 89 89 90 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition* p,91 const G4Material*,92 G4double cut);90 G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 91 const G4Material*, 92 G4double cut); 93 93 94 94 // Print out of the class parameters 95 v irtual void PrintInfo();95 void PrintInfo(); 96 96 97 97 protected: 98 98 99 v irtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,100 const G4ParticleDefinition*);99 void InitialiseEnergyLossProcess(const G4ParticleDefinition*, 100 const G4ParticleDefinition*); 101 101 102 102 private: … … 114 114 115 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 117 118 inline 119 G4bool G4MuBremsstrahlung::IsApplicable(const G4ParticleDefinition& p) 120 { 121 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV); 122 } 123 124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 125 126 inline 127 G4double G4MuBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*, 128 const G4Material*, 129 G4double) 130 { 131 return lowestKinEnergy; 132 } 133 134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 116 135 117 136 #endif -
trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlungModel.hh,v 1.2 2 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuBremsstrahlungModel.hh,v 1.21 2008/07/22 16:11:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 78 78 virtual ~G4MuBremsstrahlungModel(); 79 79 80 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 81 82 virtual G4double MinEnergyCut(const G4ParticleDefinition*, 83 const G4MaterialCutsCouple*); 80 void SetParticle(const G4ParticleDefinition*); 81 82 void Initialise(const G4ParticleDefinition*, const G4DataVector&); 83 84 G4double MinEnergyCut(const G4ParticleDefinition*, 85 const G4MaterialCutsCouple*); 84 86 85 87 virtual G4double ComputeCrossSectionPerAtom( … … 95 97 G4double cutEnergy); 96 98 97 v irtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,98 const G4MaterialCutsCouple*,99 const G4DynamicParticle*,100 G4double tmin,101 G4double maxEnergy);99 void SampleSecondaries(std::vector<G4DynamicParticle*>*, 100 const G4MaterialCutsCouple*, 101 const G4DynamicParticle*, 102 G4double tmin, 103 G4double maxEnergy); 102 104 103 105 inline void SetLowestKineticEnergy(G4double e); … … 115 117 G4double gammaEnergy); 116 118 117 inline void SetParticle(const G4ParticleDefinition*); 119 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 120 G4double kineticEnergy); 118 121 119 122 private: … … 157 160 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 158 161 162 inline 163 G4double G4MuBremsstrahlungModel::MaxSecondaryEnergy(const G4ParticleDefinition*, 164 G4double kineticEnergy) 165 { 166 return kineticEnergy; 167 } 168 169 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 170 159 171 inline void G4MuBremsstrahlungModel::SetLowestKineticEnergy(G4double e) 160 172 { 161 173 lowestKinEnergy = e; 174 } 175 176 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 177 178 inline 179 G4double G4MuBremsstrahlungModel::MinEnergyCut(const G4ParticleDefinition*, 180 const G4MaterialCutsCouple*) 181 { 182 return minThreshold; 162 183 } 163 184 -
trunk/source/processes/electromagnetic/muons/include/G4MuIonisation.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuIonisation.hh,v 1.3 1 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuIonisation.hh,v 1.30 2007/05/23 08:49:32 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 95 95 virtual ~G4MuIonisation(); 96 96 97 virtualG4bool IsApplicable(const G4ParticleDefinition& p);97 G4bool IsApplicable(const G4ParticleDefinition& p); 98 98 99 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition* p,100 const G4Material*, G4double cut);99 G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 100 const G4Material*, G4double cut); 101 101 102 102 // Print out of the class parameters 103 v irtual void PrintInfo();103 void PrintInfo(); 104 104 105 105 protected: … … 127 127 128 128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 129 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 130 131 inline G4bool G4MuIonisation::IsApplicable(const G4ParticleDefinition& p) 132 { 133 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV); 134 } 135 136 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 137 138 inline G4double G4MuIonisation::MinPrimaryEnergy(const G4ParticleDefinition*, 139 const G4Material*, 140 G4double cut) 141 { 142 G4double x = 0.5*cut/electron_mass_c2; 143 G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio)); 144 return mass*(g - 1.0); 145 } 146 147 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 129 148 130 149 #endif -
trunk/source/processes/electromagnetic/muons/include/G4MuMultipleScattering.hh
r961 r991 25 25 // 26 26 // $Id: G4MuMultipleScattering.hh,v 1.2 2008/04/13 17:19:13 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuPairProduction.hh,v 1.3 1 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuPairProduction.hh,v 1.30 2008/02/29 17:50:05 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 84 84 virtual ~G4MuPairProduction(); 85 85 86 virtualG4bool IsApplicable(const G4ParticleDefinition& p);86 G4bool IsApplicable(const G4ParticleDefinition& p); 87 87 88 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition* p,89 const G4Material*, G4double cut);88 G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 89 const G4Material*, G4double cut); 90 90 91 91 // Print out of the class parameters 92 v irtual void PrintInfo();92 void PrintInfo(); 93 93 94 94 protected: 95 95 96 v irtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,97 const G4ParticleDefinition*);96 void InitialiseEnergyLossProcess(const G4ParticleDefinition*, 97 const G4ParticleDefinition*); 98 98 99 99 private: … … 113 113 114 114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 116 117 inline 118 G4bool G4MuPairProduction::IsApplicable(const G4ParticleDefinition& p) 119 { 120 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV); 121 } 122 123 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 124 125 inline 126 G4double G4MuPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*, 127 const G4Material*, 128 G4double) 129 { 130 return lowestKinEnergy; 131 } 132 133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 115 134 116 135 #endif -
trunk/source/processes/electromagnetic/muons/include/G4MuPairProductionModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuPairProductionModel.hh,v 1.2 8 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuPairProductionModel.hh,v 1.27 2008/07/22 16:11:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 79 79 virtual ~G4MuPairProductionModel(); 80 80 81 v irtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);81 void Initialise(const G4ParticleDefinition*, const G4DataVector&); 82 82 83 83 … … 100 100 G4double maxEnergy); 101 101 102 virtual G4double MinEnergyCut(const G4ParticleDefinition*, 102 inline void SetLowestKineticEnergy(G4double e); 103 104 inline G4double MinEnergyCut(const G4ParticleDefinition*, 103 105 const G4MaterialCutsCouple*); 104 105 inline void SetLowestKineticEnergy(G4double e);106 106 107 107 inline void SetParticle(const G4ParticleDefinition*); … … 120 120 G4double pairEnergy); 121 121 122 virtualG4double MaxSecondaryEnergy(const G4ParticleDefinition*,123 G4double kineticEnergy);122 inline G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 123 G4double kineticEnergy); 124 124 125 125 inline void SetCurrentElement(G4double Z); … … 193 193 194 194 inline 195 G4double G4MuPairProductionModel::MinEnergyCut(const G4ParticleDefinition*, 196 const G4MaterialCutsCouple* ) 197 { 198 return minPairEnergy; 199 } 200 201 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 202 203 inline 195 204 void G4MuPairProductionModel::SetParticle(const G4ParticleDefinition* p) 196 205 { … … 199 208 particleMass = particle->GetPDGMass(); 200 209 } 210 } 211 212 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 213 214 inline G4double G4MuPairProductionModel::MaxSecondaryEnergy( 215 const G4ParticleDefinition*, 216 G4double kineticEnergy) 217 { 218 G4double maxPairEnergy = kineticEnergy + particleMass*(1.0 - 0.75*sqrte*z13); 219 return maxPairEnergy; 201 220 } 202 221 -
trunk/source/processes/electromagnetic/muons/src/G4EnergyLossForExtrapolator.cc
r961 r991 25 25 // 26 26 // $Id: G4EnergyLossForExtrapolator.cc,v 1.18 2008/11/13 14:14:07 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 //--------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/muons/src/G4MuBetheBlochModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBetheBlochModel.cc,v 1.2 5 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuBetheBlochModel.cc,v 1.24 2008/03/25 12:31:04 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 88 88 theElectron = G4Electron::Electron(); 89 89 corr = G4LossTableManager::Instance()->EmCorrections(); 90 fParticleChange = 0;91 90 92 91 if(p) SetParticle(p); … … 100 99 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 101 100 101 void G4MuBetheBlochModel::SetParticle(const G4ParticleDefinition* p) 102 { 103 if(!particle) { 104 particle = p; 105 mass = particle->GetPDGMass(); 106 massSquare = mass*mass; 107 ratio = electron_mass_c2/mass; 108 } 109 } 110 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 112 102 113 G4double G4MuBetheBlochModel::MinEnergyCut(const G4ParticleDefinition*, 103 114 const G4MaterialCutsCouple* couple) … … 106 117 } 107 118 108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....109 110 G4double G4MuBetheBlochModel::MaxSecondaryEnergy(const G4ParticleDefinition*,111 G4double kinEnergy)112 {113 G4double tau = kinEnergy/mass;114 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /115 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);116 return tmax;117 }118 119 119 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 120 120 … … 124 124 if(p) SetParticle(p); 125 125 126 if(!fParticleChange) { 127 if(pParticleChange) { 128 fParticleChange = 129 reinterpret_cast<G4ParticleChangeForLoss*>(pParticleChange); 130 } else { 131 fParticleChange = new G4ParticleChangeForLoss(); 132 } 133 } 126 if(pParticleChange) 127 fParticleChange = reinterpret_cast<G4ParticleChangeForLoss*> 128 (pParticleChange); 129 else 130 fParticleChange = new G4ParticleChangeForLoss(); 134 131 } 135 132 -
trunk/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlung.cc,v 1.4 2 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuBremsstrahlung.cc,v 1.41 2008/10/16 13:37:04 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 93 93 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 94 94 95 G4bool G4MuBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)96 {97 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);98 }99 100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....101 102 G4double G4MuBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,103 const G4Material*,104 G4double)105 {106 return lowestKinEnergy;107 }108 109 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....110 111 95 void G4MuBremsstrahlung::InitialiseEnergyLossProcess( 112 96 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/muons/src/G4MuBremsstrahlungModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuBremsstrahlungModel.cc,v 1.3 3 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuBremsstrahlungModel.cc,v 1.32 2008/07/22 16:11:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 111 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 112 112 113 G4double G4MuBremsstrahlungModel::MinEnergyCut(const G4ParticleDefinition*,114 const G4MaterialCutsCouple*)115 {116 return minThreshold;117 }118 119 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......120 121 113 void G4MuBremsstrahlungModel::Initialise(const G4ParticleDefinition* p, 122 114 const G4DataVector& cuts) … … 139 131 if(nn > 0) { 140 132 for (G4int ii=0; ii<nn; ii++){ 141 G4DataVector* a =partialSumSigma[ii];133 G4DataVector* a=partialSumSigma[ii]; 142 134 if ( a ) delete a; 143 135 } -
trunk/source/processes/electromagnetic/muons/src/G4MuIonisation.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuIonisation.cc,v 1.5 9 2009/02/26 11:04:20vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuIonisation.cc,v 1.57 2008/10/27 10:55:07 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 86 86 #include "G4MuBetheBlochModel.hh" 87 87 #include "G4UniversalFluctuation.hh" 88 #include "G4IonFluctuations.hh"89 88 #include "G4BohrFluctuations.hh" 90 89 #include "G4UnitsTable.hh" … … 113 112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 114 113 115 G4bool G4MuIonisation::IsApplicable(const G4ParticleDefinition& p)116 {117 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);118 }119 120 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....121 122 G4double G4MuIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,123 const G4Material*,124 G4double cut)125 {126 G4double x = 0.5*cut/electron_mass_c2;127 G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));128 return mass*(g - 1.0);129 }130 131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....132 133 114 void G4MuIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* part, 134 115 const G4ParticleDefinition* bpart) … … 142 123 SetSecondaryParticle(G4Electron::Electron()); 143 124 144 // Bragg peak model 145 if (!EmModel(1)) SetEmModel(new G4BraggModel(),1); 146 EmModel(1)->SetLowEnergyLimit(MinKinEnergy()); 147 EmModel(1)->SetHighEnergyLimit(0.2*MeV); 148 AddEmModel(1, EmModel(1), new G4IonFluctuations()); 125 flucModel = new G4UniversalFluctuation(); 149 126 150 // high energy fluctuation model 151 if (!FluctModel()) SetFluctModel(new G4UniversalFluctuation()); 152 153 // moderate energy model 154 if (!EmModel(2)) SetEmModel(new G4BetheBlochModel(),2); 155 EmModel(2)->SetLowEnergyLimit(0.2*MeV); 156 EmModel(2)->SetHighEnergyLimit(1.0*GeV); 157 AddEmModel(2, EmModel(2), FluctModel()); 158 159 // high energy model 160 if (!EmModel(3)) SetEmModel(new G4MuBetheBlochModel(),3); 161 EmModel(3)->SetLowEnergyLimit(1.0*GeV); 162 EmModel(3)->SetHighEnergyLimit(MaxKinEnergy()); 163 AddEmModel(3, EmModel(3), FluctModel()); 127 G4VEmModel* em = new G4BraggModel(); 128 em->SetLowEnergyLimit(MinKinEnergy()); 129 em->SetHighEnergyLimit(0.2*MeV); 130 AddEmModel(1, em, flucModel); 131 G4VEmModel* em1 = new G4BetheBlochModel(); 132 em1->SetLowEnergyLimit(0.2*MeV); 133 em1->SetHighEnergyLimit(1.0*GeV); 134 AddEmModel(2, em1, flucModel); 135 G4VEmModel* em2 = new G4MuBetheBlochModel(); 136 em2->SetLowEnergyLimit(1.0*GeV); 137 em2->SetHighEnergyLimit(MaxKinEnergy()); 138 AddEmModel(3, em2, flucModel); 164 139 165 140 ratio = electron_mass_c2/mass; -
trunk/source/processes/electromagnetic/muons/src/G4MuMultipleScattering.cc
r961 r991 25 25 // 26 26 // $Id: G4MuMultipleScattering.cc,v 1.12 2008/10/16 13:37:04 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuPairProduction.cc,v 1.5 2 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuPairProduction.cc,v 1.51 2008/10/16 13:37:04 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 100 100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 101 101 102 G4bool G4MuPairProduction::IsApplicable(const G4ParticleDefinition& p)103 {104 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);105 }106 107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....108 109 G4double G4MuPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,110 const G4Material*,111 G4double)112 {113 return lowestKinEnergy;114 }115 116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....117 118 102 void G4MuPairProduction::InitialiseEnergyLossProcess( 119 103 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MuPairProductionModel.cc,v 1. 40 2009/02/20 14:48:16vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MuPairProductionModel.cc,v 1.39 2008/07/22 16:11:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 137 137 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 138 138 139 G4double G4MuPairProductionModel::MinEnergyCut(const G4ParticleDefinition*,140 const G4MaterialCutsCouple* )141 {142 return minPairEnergy;143 }144 145 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......146 147 G4double G4MuPairProductionModel::MaxSecondaryEnergy(const G4ParticleDefinition*,148 G4double kineticEnergy)149 {150 G4double maxPairEnergy = kineticEnergy + particleMass*(1.0 - 0.75*sqrte*z13);151 return maxPairEnergy;152 }153 154 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......155 156 139 void G4MuPairProductionModel::Initialise(const G4ParticleDefinition* p, 157 140 const G4DataVector&) -
trunk/source/processes/electromagnetic/standard/History
r961 r991 1 $Id: History,v 1.43 2 2009/02/20 12:11:37vnivanch Exp $1 $Id: History,v 1.430 2008/11/24 18:28:09 vnivanch Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 20 20 February 09: V.Ivant (emstand-V09-02-00)21 - Move all virtual methods from inline to source22 G4PEEffectModel - substitute ComputeMeanFreePath by CrossSectionPerVolume23 (minor CPU speadup for compound materials)24 G4PAIModel, G4PAIPhotonModel - remove usage of random numbers at25 initialisation (potential non-reproducibility)26 G4WentzelVIModel - use generic methods of G4VMscModel to access safety27 and other geometry information28 19 29 20 24 November 08: V.Ivant (emstand-V09-01-45) -
trunk/source/processes/electromagnetic/standard/include/G4ASTARStopping.hh
r961 r991 25 25 // 26 26 // $Id: G4ASTARStopping.hh,v 1.6 2008/11/13 12:04:37 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4ASTARStopping_h -
trunk/source/processes/electromagnetic/standard/include/G4BetheBlochModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BetheBlochModel.hh,v 1.1 7 2009/02/20 12:06:37 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BetheBlochModel.hh,v 1.16 2008/10/22 16:00:57 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 82 82 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 83 83 84 virtualG4double MinEnergyCut(const G4ParticleDefinition*,85 const G4MaterialCutsCouple*);84 G4double MinEnergyCut(const G4ParticleDefinition*, 85 const G4MaterialCutsCouple*); 86 86 87 87 virtual G4double ComputeCrossSectionPerElectron( … … 131 131 protected: 132 132 133 virtualG4double MaxSecondaryEnergy(const G4ParticleDefinition*,134 G4double kinEnergy);133 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 134 G4double kinEnergy); 135 135 136 136 private: … … 166 166 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 167 167 168 inline G4double G4BetheBlochModel::MaxSecondaryEnergy( 169 const G4ParticleDefinition* pd, 170 G4double kinEnergy) 171 { 172 if(isIon) SetParticle(pd); 173 G4double tau = kinEnergy/mass; 174 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) / 175 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio); 176 return std::min(tmax,tlimit); 177 } 178 179 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 180 168 181 #endif -
trunk/source/processes/electromagnetic/standard/include/G4BetheHeitlerModel.hh
r961 r991 25 25 // 26 26 // $Id: G4BetheHeitlerModel.hh,v 1.6 2007/05/22 17:34:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4BohrFluctuations.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BohrFluctuations.hh,v 1. 4 2009/02/19 19:17:50vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BohrFluctuations.hh,v 1.3 2007/09/27 13:53:11 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 79 79 void InitialiseMe(const G4ParticleDefinition*); 80 80 81 protected: 82 81 83 private: 82 84 … … 101 103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 102 104 105 106 inline G4double G4BohrFluctuations::Dispersion( 107 const G4Material* material, 108 const G4DynamicParticle* dp, 109 G4double& tmax, 110 G4double& length) 111 { 112 if(!particle) InitialiseMe(dp->GetDefinition()); 113 114 G4double electronDensity = material->GetElectronDensity(); 115 kineticEnergy = dp->GetKineticEnergy(); 116 G4double etot = kineticEnergy + particleMass; 117 beta2 = kineticEnergy*(kineticEnergy + 2.0*particleMass)/(etot*etot); 118 G4double siga = (1.0/beta2 - 0.5) * twopi_mc2_rcl2 * tmax * length 119 * electronDensity * chargeSquare; 120 121 return siga; 122 } 123 124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 125 103 126 #endif 104 127 -
trunk/source/processes/electromagnetic/standard/include/G4BraggIonModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BraggIonModel.hh,v 1.1 2 2009/02/20 12:06:37 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BraggIonModel.hh,v 1.11 2008/10/22 16:00:57 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 77 77 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 78 78 79 virtualG4double MinEnergyCut(const G4ParticleDefinition*,80 const G4MaterialCutsCouple*);79 G4double MinEnergyCut(const G4ParticleDefinition*, 80 const G4MaterialCutsCouple*); 81 81 82 82 virtual G4double ComputeCrossSectionPerElectron( … … 128 128 protected: 129 129 130 virtualG4double MaxSecondaryEnergy(const G4ParticleDefinition*,131 G4double kinEnergy);130 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 131 G4double kinEnergy); 132 132 133 133 private: … … 180 180 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 181 181 182 inline G4double G4BraggIonModel::MaxSecondaryEnergy( 183 const G4ParticleDefinition* pd, 184 G4double kinEnergy) 185 { 186 if(pd != particle) SetParticle(pd); 187 G4double tau = kinEnergy/mass; 188 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) / 189 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio); 190 return tmax; 191 } 192 193 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 194 182 195 inline void G4BraggIonModel::SetParticle(const G4ParticleDefinition* p) 183 196 { -
trunk/source/processes/electromagnetic/standard/include/G4BraggModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BraggModel.hh,v 1.1 3 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BraggModel.hh,v 1.12 2008/09/14 17:11:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 80 80 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 81 81 82 virtualG4double MinEnergyCut(const G4ParticleDefinition*,83 const G4MaterialCutsCouple*);82 G4double MinEnergyCut(const G4ParticleDefinition*, 83 const G4MaterialCutsCouple*); 84 84 85 85 virtual G4double ComputeCrossSectionPerElectron( … … 131 131 protected: 132 132 133 virtualG4double MaxSecondaryEnergy(const G4ParticleDefinition*,134 G4double kinEnergy);133 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 134 G4double kinEnergy); 135 135 136 136 private: 137 137 138 inlinevoid SetParticle(const G4ParticleDefinition* p);138 void SetParticle(const G4ParticleDefinition* p); 139 139 140 140 G4bool HasMaterial(const G4Material* material); … … 182 182 G4bool isInitialised; 183 183 }; 184 185 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 186 187 inline G4double G4BraggModel::MaxSecondaryEnergy( 188 const G4ParticleDefinition* pd, 189 G4double kinEnergy) 190 { 191 if(pd != particle) SetParticle(pd); 192 G4double tau = kinEnergy/mass; 193 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) / 194 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio); 195 return tmax; 196 } 184 197 185 198 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -
trunk/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh
r961 r991 25 25 // 26 26 // 27 // $Id: G4ComptonScattering.hh,v 1.2 1 2009/02/20 12:06:37vnivanch Exp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4ComptonScattering.hh,v 1.20 2007/05/23 08:47:34 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 //------------------ G4ComptonScattering physics process ----------------------- … … 82 82 83 83 // true for Gamma only. 84 virtualG4bool IsApplicable(const G4ParticleDefinition&);84 G4bool IsApplicable(const G4ParticleDefinition&); 85 85 86 86 // Print few lines of informations about the process: validity range, 87 87 virtual void PrintInfo(); 88 88 89 89 90 protected: … … 96 97 }; 97 98 99 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 101 102 inline 103 G4bool G4ComptonScattering::IsApplicable(const G4ParticleDefinition& p) 104 { 105 return (&p == G4Gamma::Gamma()); 106 } 107 98 108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 99 109 -
trunk/source/processes/electromagnetic/standard/include/G4ComptonScattering52.hh
r961 r991 26 26 // 27 27 // $Id: G4ComptonScattering52.hh,v 1.4 2007/05/16 14:00:56 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 //------------------ G4ComptonScattering52 physics process ----------------------- -
trunk/source/processes/electromagnetic/standard/include/G4CoulombScattering.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4CoulombScattering.hh,v 1.1 2 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4CoulombScattering.hh,v 1.11 2008/06/13 08:19:43 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 104 104 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 105 105 106 inline G4bool G4CoulombScattering::IsApplicable(const G4ParticleDefinition& p) 107 { 108 return (p.GetPDGCharge() != 0.0 && !p.IsShortLived()); 109 } 110 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 112 106 113 inline void G4CoulombScattering::SetThetaMin(G4double val) 107 114 { -
trunk/source/processes/electromagnetic/standard/include/G4CoulombScatteringModel.hh
r961 r991 25 25 // 26 26 // $Id: G4CoulombScatteringModel.hh,v 1.15 2008/07/31 13:11:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4GammaConversion.hh
r961 r991 25 25 // 26 26 // 27 // $Id: G4GammaConversion.hh,v 1.2 3 2009/02/20 12:06:37vnivanch Exp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4GammaConversion.hh,v 1.22 2007/05/23 08:47:34 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // … … 85 85 86 86 // true for Gamma only. 87 virtualG4bool IsApplicable(const G4ParticleDefinition&);87 G4bool IsApplicable(const G4ParticleDefinition&); 88 88 89 89 // Print few lines of informations about the process: validity range, … … 99 99 }; 100 100 101 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 103 104 inline G4bool G4GammaConversion::IsApplicable(const G4ParticleDefinition& p) 105 { 106 return (&p == G4Gamma::Gamma()); 107 } 108 101 109 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 102 110 -
trunk/source/processes/electromagnetic/standard/include/G4InitXscPAI.hh
r961 r991 26 26 // 27 27 // $Id: G4InitXscPAI.hh,v 1.8 2006/06/29 19:50:22 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/standard/include/G4IonFluctuations.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4IonFluctuations.hh,v 1. 9 2009/02/19 19:17:50vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4IonFluctuations.hh,v 1.8 2008/10/22 16:04:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 84 84 85 85 // Initialisation prestep 86 void SetParticleAndCharge(const G4ParticleDefinition*, G4double q2);86 inline void SetParticleAndCharge(const G4ParticleDefinition*, G4double q2); 87 87 88 88 private: … … 117 117 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 118 118 119 inline 120 void G4IonFluctuations::SetParticleAndCharge(const G4ParticleDefinition* part, 121 G4double q2) 122 { 123 if(part != particle) { 124 particle = part; 125 particleMass = part->GetPDGMass(); 126 charge = part->GetPDGCharge()/eplus; 127 chargeSquare = charge*charge; 128 } 129 effChargeSquare = q2; 130 uniFluct.SetParticleAndCharge(part, q2); 131 } 132 133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 134 119 135 #endif 120 136 -
trunk/source/processes/electromagnetic/standard/include/G4KleinNishinaCompton.hh
r961 r991 25 25 // 26 26 // $Id: G4KleinNishinaCompton.hh,v 1.9 2007/05/22 17:34:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4MollerBhabhaModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MollerBhabhaModel.hh,v 1. 20 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MollerBhabhaModel.hh,v 1.19 2007/05/22 17:34:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 74 74 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 75 75 76 virtualG4double MinEnergyCut(const G4ParticleDefinition*,77 const G4MaterialCutsCouple*);76 G4double MinEnergyCut(const G4ParticleDefinition*, 77 const G4MaterialCutsCouple*); 78 78 79 79 virtual G4double ComputeCrossSectionPerElectron( … … 109 109 protected: 110 110 111 virtualG4double MaxSecondaryEnergy(const G4ParticleDefinition*,112 G4double kinEnergy);111 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 112 G4double kinEnergy); 113 113 114 inlinevoid SetParticle(const G4ParticleDefinition* p);114 void SetParticle(const G4ParticleDefinition* p); 115 115 116 116 const G4ParticleDefinition* particle; … … 127 127 G4MollerBhabhaModel & operator=(const G4MollerBhabhaModel &right); 128 128 G4MollerBhabhaModel(const G4MollerBhabhaModel&); 129 130 G4bool isInitialised;131 132 129 }; 133 130 134 131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 135 132 136 inline void G4MollerBhabhaModel::SetParticle(const G4ParticleDefinition* p) 133 inline G4double G4MollerBhabhaModel::MaxSecondaryEnergy( 134 const G4ParticleDefinition*, 135 G4double kinEnergy) 137 136 { 138 particle = p; 139 if(p != theElectron) isElectron = false; 137 G4double tmax = kinEnergy; 138 if(isElectron) tmax *= 0.5; 139 return tmax; 140 140 } 141 141 -
trunk/source/processes/electromagnetic/standard/include/G4MscModel71.hh
r961 r991 25 25 // 26 26 // $Id: G4MscModel71.hh,v 1.5 2007/05/22 17:34:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4MultipleScattering.hh
r961 r991 25 25 // 26 26 // $Id: G4MultipleScattering.hh,v 1.36 2008/03/10 10:39:21 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4MultipleScattering71.hh
r961 r991 25 25 // 26 26 // $Id: G4MultipleScattering71.hh,v 1.6 2008/07/16 11:27:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // … … 59 59 // 60 60 // $Id: G4MultipleScattering71.hh,v 1.6 2008/07/16 11:27:41 vnivanch Exp $ 61 // GEANT4 tag $Name: geant4-09-02 -ref-02$61 // GEANT4 tag $Name: geant4-09-02 $ 62 62 63 63 // class description -
trunk/source/processes/electromagnetic/standard/include/G4PAIModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PAIModel.hh,v 1.22 2009/02/19 19:17:50 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02-ref-02 $28 26 // 29 27 // ------------------------------------------------------------------- … … 77 75 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 78 76 79 virtual void InitialiseMe(const G4ParticleDefinition*) ;80 81 virtual G4double ComputeDEDX PerVolume(const G4Material*,77 virtual void InitialiseMe(const G4ParticleDefinition*) {}; 78 79 virtual G4double ComputeDEDX(const G4MaterialCutsCouple*, 82 80 const G4ParticleDefinition*, 83 81 G4double kineticEnergy, 84 82 G4double cutEnergy); 85 83 86 virtual G4double CrossSection PerVolume(const G4Material*,84 virtual G4double CrossSection(const G4MaterialCutsCouple*, 87 85 const G4ParticleDefinition*, 88 86 G4double kineticEnergy, … … 120 118 121 119 void SetVerboseLevel(G4int verbose){fVerbose=verbose;}; 120 121 122 122 123 123 protected: … … 192 192 }; 193 193 194 ///////////////////////////////////////////////////////////////////// 195 196 inline G4double G4PAIModel::MaxSecondaryEnergy( const G4ParticleDefinition* p, 197 G4double kinEnergy) 198 { 199 G4double tmax = kinEnergy; 200 if(p == fElectron) tmax *= 0.5; 201 else if(p != fPositron) { 202 G4double mass = p->GetPDGMass(); 203 G4double ratio= electron_mass_c2/mass; 204 G4double gamma= kinEnergy/mass + 1.0; 205 tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) / 206 (1. + 2.0*gamma*ratio + ratio*ratio); 207 } 208 return tmax; 209 } 210 211 /////////////////////////////////////////////////////////////// 212 213 inline void G4PAIModel::DefineForRegion(const G4Region* r) 214 { 215 fPAIRegionVector.push_back(r); 216 } 217 194 218 #endif 195 219 -
trunk/source/processes/electromagnetic/standard/include/G4PAIPhotonModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PAIPhotonModel.hh,v 1.12 2009/02/19 19:17:50 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02-ref-02 $28 26 // 29 27 // ------------------------------------------------------------------- … … 76 74 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 77 75 78 virtual void InitialiseMe(const G4ParticleDefinition*) ;79 80 virtual G4double ComputeDEDX PerVolume(const G4Material*,81 const G4ParticleDefinition*,82 G4double kineticEnergy,83 G4double cutEnergy);84 85 virtual G4double CrossSection PerVolume(const G4Material*,86 const G4ParticleDefinition*,87 G4double kineticEnergy,88 G4double cutEnergy,89 G4double maxEnergy);76 virtual void InitialiseMe(const G4ParticleDefinition*) {}; 77 78 virtual G4double ComputeDEDX(const G4MaterialCutsCouple*, 79 const G4ParticleDefinition*, 80 G4double kineticEnergy, 81 G4double cutEnergy); 82 83 virtual G4double CrossSection(const G4MaterialCutsCouple*, 84 const G4ParticleDefinition*, 85 G4double kineticEnergy, 86 G4double cutEnergy, 87 G4double maxEnergy); 90 88 91 89 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, … … 124 122 G4double position, G4int iTransfer ); 125 123 124 125 126 126 protected: 127 127 128 128 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 129 G4double kinEnergy);129 G4double kinEnergy); 130 130 131 131 private: … … 145 145 G4int fVerbose; 146 146 G4PhysicsLogVector* fProtonEnergyVector ; 147 148 147 149 148 150 // vectors … … 202 204 }; 203 205 206 ///////////////////////////////////////////////////////////////////// 207 208 inline G4double G4PAIPhotonModel::MaxSecondaryEnergy( const G4ParticleDefinition* p, 209 G4double kinEnergy) 210 { 211 G4double tmax = kinEnergy; 212 if(p == fElectron) tmax *= 0.5; 213 else if(p != fPositron) { 214 G4double mass = p->GetPDGMass(); 215 G4double ratio= electron_mass_c2/mass; 216 G4double gamma= kinEnergy/mass + 1.0; 217 tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) / 218 (1. + 2.0*gamma*ratio + ratio*ratio); 219 } 220 return tmax; 221 } 222 223 /////////////////////////////////////////////////////////////// 224 225 inline void G4PAIPhotonModel::DefineForRegion(const G4Region* r) 226 { 227 fPAIRegionVector.push_back(r); 228 } 229 204 230 #endif 205 231 -
trunk/source/processes/electromagnetic/standard/include/G4PAIxSection.hh
r961 r991 26 26 // 27 27 // $Id: G4PAIxSection.hh,v 1.15 2008/05/30 16:04:40 grichine Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/standard/include/G4PAIySection.hh
r961 r991 26 26 // 27 27 // $Id: G4PAIySection.hh,v 1.1 2007/10/01 17:45:14 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/standard/include/G4PEEffectModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PEEffectModel.hh,v 1. 7 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4PEEffectModel.hh,v 1.6 2007/05/22 17:34:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 41 41 // 42 42 // 06.02.2006 : added ComputeMeanFreePath() (mma) 43 // 20.02.2009 : move virtual inline to .cc, substitute44 // ComputeMeanFreePath() by CrossSectionPerVolume (VI)45 43 // 46 44 // Class Description: … … 72 70 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 73 71 74 virtualG4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,75 G4double kinEnergy,76 G4double Z,77 G4double A,78 G4double, G4double);72 G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, 73 G4double kinEnergy, 74 G4double Z, 75 G4double A, 76 G4double, G4double); 79 77 80 virtual G4double CrossSectionPerVolume(const G4Material*, 81 const G4ParticleDefinition*, 82 G4double kineticEnergy, 83 G4double cutEnergy, 84 G4double maxEnergy); 78 G4double ComputeMeanFreePath( const G4ParticleDefinition*, 79 G4double kinEnergy, 80 const G4Material* material, 81 G4double, G4double); 85 82 86 83 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, … … 103 100 }; 104 101 102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 103 104 inline G4double G4PEEffectModel::ComputeCrossSectionPerAtom( 105 const G4ParticleDefinition*, 106 G4double energy, 107 G4double Z, G4double, 108 G4double, G4double) 109 { 110 G4double* SandiaCof = G4SandiaTable::GetSandiaCofPerAtom((G4int)Z, energy); 111 112 G4double energy2 = energy*energy, energy3 = energy*energy2, 113 energy4 = energy2*energy2; 114 115 return SandiaCof[0]/energy + SandiaCof[1]/energy2 + 116 SandiaCof[2]/energy3 + SandiaCof[3]/energy4; 117 } 118 119 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 120 121 inline G4double G4PEEffectModel::ComputeMeanFreePath( 122 const G4ParticleDefinition*, 123 G4double energy, 124 const G4Material* material, 125 G4double, G4double) 126 { 127 G4double* SandiaCof = material->GetSandiaTable() 128 ->GetSandiaCofForMaterial(energy); 129 130 G4double energy2 = energy*energy, energy3 = energy*energy2, 131 energy4 = energy2*energy2; 132 133 G4double cross = SandiaCof[0]/energy + SandiaCof[1]/energy2 + 134 SandiaCof[2]/energy3 + SandiaCof[3]/energy4; 135 136 G4double mfp = DBL_MAX; 137 if (cross > 0.) mfp = 1./cross; 138 return mfp; 139 } 140 105 141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 106 142 -
trunk/source/processes/electromagnetic/standard/include/G4PSTARStopping.hh
r961 r991 25 25 // 26 26 // $Id: G4PSTARStopping.hh,v 1.5 2008/11/13 12:04:37 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4PSTARStopping_h -
trunk/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh
r961 r991 25 25 // 26 26 // 27 // $Id: G4PhotoElectricEffect.hh,v 1.2 5 2009/02/20 12:06:37vnivanch Exp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4PhotoElectricEffect.hh,v 1.24 2007/05/23 08:47:34 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // … … 91 91 92 92 // true for Gamma only. 93 virtualG4bool IsApplicable(const G4ParticleDefinition&);93 G4bool IsApplicable(const G4ParticleDefinition&); 94 94 95 95 // Print few lines of informations about the process: validity range, 96 v irtual void PrintInfo();96 void PrintInfo(); 97 97 98 98 protected: 99 99 100 v irtual void InitialiseProcess(const G4ParticleDefinition*);100 void InitialiseProcess(const G4ParticleDefinition*); 101 101 102 102 private: … … 105 105 }; 106 106 107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 109 110 inline 111 G4bool G4PhotoElectricEffect::IsApplicable(const G4ParticleDefinition& p) 112 { 113 return (&p == G4Gamma::Gamma()); 114 } 115 107 116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 108 117 -
trunk/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh
r961 r991 26 26 // 27 27 // $Id: G4PolarizedComptonScattering.hh,v 1.9 2006/06/29 19:51:14 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // --------- G4PolarizedComptonScattering physics process ---------------------- -
trunk/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4UniversalFluctuation.hh,v 1. 8 2009/02/19 19:17:50vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4UniversalFluctuation.hh,v 1.6 2008/10/22 16:04:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 70 70 virtual ~G4UniversalFluctuation(); 71 71 72 virtualG4double SampleFluctuations(const G4Material*,73 const G4DynamicParticle*,74 G4double&,75 G4double&,76 G4double&);72 G4double SampleFluctuations(const G4Material*, 73 const G4DynamicParticle*, 74 G4double&, 75 G4double&, 76 G4double&); 77 77 78 virtualG4double Dispersion( const G4Material*,79 const G4DynamicParticle*,80 G4double&,81 G4double&);78 G4double Dispersion( const G4Material*, 79 const G4DynamicParticle*, 80 G4double&, 81 G4double&); 82 82 83 // Initialisation before the run 84 virtual void InitialiseMe(const G4ParticleDefinition*); 83 void InitialiseMe(const G4ParticleDefinition*); 85 84 86 85 // Initialisation prestep 87 virtual void SetParticleAndCharge(const G4ParticleDefinition*, G4double q2); 86 inline void SetParticleAndCharge(const G4ParticleDefinition*, G4double q2); 87 88 protected: 88 89 89 90 private: … … 125 126 }; 126 127 128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 129 130 inline void 131 G4UniversalFluctuation::SetParticleAndCharge(const G4ParticleDefinition* part, 132 G4double q2) 133 { 134 if(part != particle) { 135 particle = part; 136 particleMass = part->GetPDGMass(); 137 } 138 chargeSquare = q2; 139 } 140 127 141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 128 142 -
trunk/source/processes/electromagnetic/standard/include/G4UrbanMscModel.hh
r961 r991 25 25 // 26 26 // $Id: G4UrbanMscModel.hh,v 1.33 2008/03/10 10:39:21 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4UrbanMscModel2.hh
r966 r991 25 25 // 26 26 // $Id: G4UrbanMscModel2.hh,v 1.11 2008/12/18 13:01:34 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4UrbanMscModel90.hh
r961 r991 25 25 // 26 26 // $Id: G4UrbanMscModel90.hh,v 1.4 2008/10/29 14:15:30 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4WaterStopping.hh
r961 r991 25 25 // 26 26 // $Id: G4WaterStopping.hh,v 1.6 2008/09/09 09:30:58 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 #ifndef G4WaterStopping_h -
trunk/source/processes/electromagnetic/standard/include/G4WentzelVIModel.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4WentzelVIModel.hh,v 1. 8 2009/02/19 19:17:15vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4WentzelVIModel.hh,v 1.7 2008/08/04 08:49:09 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 66 66 class G4LossTableManager; 67 67 class G4ParticleChangeForMSC; 68 //class G4SafetyHelper;68 class G4SafetyHelper; 69 69 class G4ParticleDefinition; 70 70 … … 133 133 G4ParticleChangeForMSC* fParticleChange; 134 134 135 //G4SafetyHelper* safetyHelper;135 G4SafetyHelper* safetyHelper; 136 136 G4PhysicsTable* theLambdaTable; 137 137 G4PhysicsTable* theLambda2Table; -
trunk/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eBremsstrahlung.hh,v 1.3 7 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eBremsstrahlung.hh,v 1.36 2007/05/23 08:47:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 89 89 virtual ~G4eBremsstrahlung(); 90 90 91 virtualG4bool IsApplicable(const G4ParticleDefinition& p);91 G4bool IsApplicable(const G4ParticleDefinition& p); 92 92 93 93 // Print out of the class parameters … … 111 111 112 112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 113 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 114 115 inline G4bool G4eBremsstrahlung::IsApplicable(const G4ParticleDefinition& p) 116 { 117 return (&p == G4Electron::Electron() || &p == G4Positron::Positron()); 118 } 119 120 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 113 121 114 122 #endif -
trunk/source/processes/electromagnetic/standard/include/G4eBremsstrahlungModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eBremsstrahlungModel.hh,v 1.2 6 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eBremsstrahlungModel.hh,v 1.25 2008/11/13 19:28:58 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 76 76 77 virtualG4double MinEnergyCut(const G4ParticleDefinition*,78 const G4MaterialCutsCouple*);77 G4double MinEnergyCut(const G4ParticleDefinition*, 78 const G4MaterialCutsCouple*); 79 79 80 80 virtual G4double ComputeDEDXPerVolume(const G4Material*, … … 103 103 protected: 104 104 105 inline G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 106 G4double kineticEnergy); 107 105 108 const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple); 106 109 … … 188 191 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 189 192 193 inline 194 G4double G4eBremsstrahlungModel::MaxSecondaryEnergy( 195 const G4ParticleDefinition*, 196 G4double kineticEnergy) 197 { 198 return kineticEnergy; 199 } 200 201 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 202 190 203 #endif -
trunk/source/processes/electromagnetic/standard/include/G4eBremsstrahlungRelModel.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eBremsstrahlungRelModel.hh,v 1.1 1 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eBremsstrahlungRelModel.hh,v 1.10 2008/11/14 09:25:19 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 71 71 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&); 72 72 73 virtualG4double MinEnergyCut(const G4ParticleDefinition*,74 const G4MaterialCutsCouple*);73 G4double MinEnergyCut(const G4ParticleDefinition*, 74 const G4MaterialCutsCouple*); 75 75 76 76 virtual G4double ComputeDEDXPerVolume(const G4Material*, … … 97 97 inline G4double LPMconstant() const; 98 98 99 protected: 100 101 inline G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 102 G4double kineticEnergy); 103 99 104 private: 100 105 … … 202 207 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 203 208 209 inline G4double 210 G4eBremsstrahlungRelModel::MaxSecondaryEnergy(const G4ParticleDefinition*, 211 G4double kineticEnergy) 212 { 213 return kineticEnergy; 214 } 215 216 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 217 204 218 205 219 inline G4double G4eBremsstrahlungRelModel::Phi1(G4double gg, G4double) -
trunk/source/processes/electromagnetic/standard/include/G4eCoulombScatteringModel.hh
r961 r991 25 25 // 26 26 // $Id: G4eCoulombScatteringModel.hh,v 1.36 2008/08/04 08:49:09 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4eIonisation.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eIonisation.hh,v 1.3 6 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eIonisation.hh,v 1.35 2007/05/23 08:47:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 88 88 virtual ~G4eIonisation(); 89 89 90 virtualG4bool IsApplicable(const G4ParticleDefinition& p);90 G4bool IsApplicable(const G4ParticleDefinition& p); 91 91 92 92 // Print out of the class parameters … … 98 98 const G4ParticleDefinition*); 99 99 100 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition*,101 const G4Material*, G4double cut);100 G4double MinPrimaryEnergy(const G4ParticleDefinition*, 101 const G4Material*, G4double cut); 102 102 103 103 private: … … 114 114 }; 115 115 116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 117 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 118 119 inline G4double G4eIonisation::MinPrimaryEnergy(const G4ParticleDefinition*, 120 const G4Material*, 121 G4double cut) 122 { 123 G4double x = cut; 124 if(isElectron) x += cut; 125 return x; 126 } 127 128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 129 130 inline G4bool G4eIonisation::IsApplicable(const G4ParticleDefinition& p) 131 { 132 return (&p == G4Electron::Electron() || &p == G4Positron::Positron()); 133 } 134 116 135 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 117 136 -
trunk/source/processes/electromagnetic/standard/include/G4eMultipleScattering.hh
r966 r991 25 25 // 26 26 // $Id: G4eMultipleScattering.hh,v 1.2 2008/03/11 12:03:43 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4eeToTwoGammaModel.hh
r961 r991 25 25 // 26 26 // $Id: G4eeToTwoGammaModel.hh,v 1.14 2007/05/23 08:47:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eplusAnnihilation.hh,v 1.2 4 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eplusAnnihilation.hh,v 1.23 2007/05/23 08:47:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 73 73 virtual ~G4eplusAnnihilation(); 74 74 75 virtualG4bool IsApplicable(const G4ParticleDefinition& p);75 G4bool IsApplicable(const G4ParticleDefinition& p); 76 76 77 77 virtual G4VParticleChange* AtRestDoIt( … … 79 79 const G4Step& stepData); 80 80 81 virtualG4double AtRestGetPhysicalInteractionLength(81 G4double AtRestGetPhysicalInteractionLength( 82 82 const G4Track& track, 83 83 G4ForceCondition* condition … … 96 96 }; 97 97 98 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 99 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 100 101 inline G4bool G4eplusAnnihilation::IsApplicable(const G4ParticleDefinition& p) 102 { 103 return (&p == G4Positron::Positron()); 104 } 105 106 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 107 108 inline 109 G4double G4eplusAnnihilation::AtRestGetPhysicalInteractionLength( 110 const G4Track&, G4ForceCondition* condition) 111 { 112 *condition = NotForced; 113 return 0.0; 114 } 115 98 116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 99 117 -
trunk/source/processes/electromagnetic/standard/include/G4hIonisation.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hIonisation.hh,v 1.4 2 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4hIonisation.hh,v 1.41 2008/09/14 17:11:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 93 93 virtual ~G4hIonisation(); 94 94 95 virtualG4bool IsApplicable(const G4ParticleDefinition& p);95 G4bool IsApplicable(const G4ParticleDefinition& p); 96 96 97 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition* p,98 const G4Material*, G4double cut);97 G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 98 const G4Material*, G4double cut); 99 99 100 100 // Print out of the class parameters … … 123 123 124 124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 125 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 126 127 inline G4bool G4hIonisation::IsApplicable(const G4ParticleDefinition& p) 128 { 129 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV && 130 !p.IsShortLived()); 131 } 132 133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 134 135 inline G4double G4hIonisation::MinPrimaryEnergy(const G4ParticleDefinition*, 136 const G4Material*, 137 G4double cut) 138 { 139 G4double x = 0.5*cut/electron_mass_c2; 140 G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio)); 141 return mass*(g - 1.0); 142 } 143 144 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 125 145 126 146 inline void G4hIonisation::ActivateNuclearStopping(G4bool val) -
trunk/source/processes/electromagnetic/standard/include/G4hMultipleScattering.hh
r961 r991 25 25 // 26 26 // $Id: G4hMultipleScattering.hh,v 1.6 2008/05/09 08:23:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4ionGasIonisation.hh
r961 r991 25 25 // 26 26 // $Id: G4ionGasIonisation.hh,v 1.4 2008/09/12 16:26:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/include/G4ionIonisation.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ionIonisation.hh,v 1.5 7 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4ionIonisation.hh,v 1.56 2008/09/14 17:11:48 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 85 85 virtual ~G4ionIonisation(); 86 86 87 virtualG4bool IsApplicable(const G4ParticleDefinition& p);87 inline G4bool IsApplicable(const G4ParticleDefinition& p); 88 88 89 89 // Print out of the class parameters … … 102 102 const G4ParticleDefinition*); 103 103 104 virtualG4double MinPrimaryEnergy(const G4ParticleDefinition* p,104 inline G4double MinPrimaryEnergy(const G4ParticleDefinition* p, 105 105 const G4Material*, G4double cut); 106 106 … … 127 127 128 128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 129 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 130 131 inline G4bool G4ionIonisation::IsApplicable(const G4ParticleDefinition& p) 132 { 133 return (p.GetPDGCharge() != 0.0 && !p.IsShortLived() && 134 p.GetParticleType() == "nucleus"); 135 } 136 137 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 138 139 inline G4double G4ionIonisation::MinPrimaryEnergy( 140 const G4ParticleDefinition* p, const G4Material*, G4double cut) 141 { 142 return 143 p->GetPDGMass()*(std::sqrt(1. + 0.5*cut/CLHEP::electron_mass_c2) - 1.0); 144 } 145 129 146 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 130 147 -
trunk/source/processes/electromagnetic/standard/src/G4ASTARStopping.cc
r961 r991 25 25 // 26 26 // $Id: G4ASTARStopping.cc,v 1.8 2008/11/24 18:28:09 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 //--------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4BetheBlochModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BetheBlochModel.cc,v 1.2 5 2009/02/20 12:06:37 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BetheBlochModel.cc,v 1.24 2008/10/22 16:00:57 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 111 111 112 112 corrFactor = chargeSquare; 113 // always false before the run114 SetDeexcitationFlag(false);115 113 116 114 if(!isInitialised) { … … 455 453 } 456 454 457 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 458 459 G4double G4BetheBlochModel::MaxSecondaryEnergy(const G4ParticleDefinition* pd, 460 G4double kinEnergy) 461 { 462 if(isIon) SetParticle(pd); 463 G4double tau = kinEnergy/mass; 464 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) / 465 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio); 466 return std::min(tmax,tlimit); 467 } 468 469 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 455 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -
trunk/source/processes/electromagnetic/standard/src/G4BetheHeitlerModel.cc
r961 r991 25 25 // 26 26 // $Id: G4BetheHeitlerModel.cc,v 1.12 2008/10/15 15:54:57 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4BohrFluctuations.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BohrFluctuations.cc,v 1. 7 2009/02/19 19:17:50vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BohrFluctuations.cc,v 1.6 2007/09/27 14:02:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 137 137 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 138 138 139 G4double G4BohrFluctuations::Dispersion(const G4Material* material,140 const G4DynamicParticle* dp,141 G4double& tmax,142 G4double& length)143 {144 if(!particle) InitialiseMe(dp->GetDefinition());145 139 146 G4double electronDensity = material->GetElectronDensity();147 kineticEnergy = dp->GetKineticEnergy();148 G4double etot = kineticEnergy + particleMass;149 beta2 = kineticEnergy*(kineticEnergy + 2.0*particleMass)/(etot*etot);150 G4double siga = (1.0/beta2 - 0.5) * twopi_mc2_rcl2 * tmax * length151 * electronDensity * chargeSquare;152 153 return siga;154 }155 156 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....157 158 -
trunk/source/processes/electromagnetic/standard/src/G4BraggIonModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BraggIonModel.cc,v 1.2 3 2009/02/20 12:06:37 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BraggIonModel.cc,v 1.22 2008/10/22 16:00:57 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 113 113 114 114 corrFactor = chargeSquare; 115 116 // always false before the run117 SetDeexcitationFlag(false);118 115 119 116 if(!isInitialised) { … … 355 352 fParticleChange->SetProposedKineticEnergy(kineticEnergy); 356 353 fParticleChange->SetProposedMomentumDirection(finalP); 357 }358 359 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......360 361 G4double G4BraggIonModel::MaxSecondaryEnergy(const G4ParticleDefinition* pd,362 G4double kinEnergy)363 {364 if(pd != particle) SetParticle(pd);365 G4double tau = kinEnergy/mass;366 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /367 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);368 return tmax;369 354 } 370 355 -
trunk/source/processes/electromagnetic/standard/src/G4BraggModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BraggModel.cc,v 1.2 1 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4BraggModel.cc,v 1.20 2008/10/22 16:01:46 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 111 111 { 112 112 if(p != particle) SetParticle(p); 113 114 // always false before the run115 SetDeexcitationFlag(false);116 113 117 114 if(!isInitialised) { … … 340 337 341 338 vdp->push_back(delta); 342 }343 344 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......345 346 G4double G4BraggModel::MaxSecondaryEnergy(const G4ParticleDefinition* pd,347 G4double kinEnergy)348 {349 if(pd != particle) SetParticle(pd);350 G4double tau = kinEnergy/mass;351 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /352 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);353 return tmax;354 339 } 355 340 -
trunk/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ComptonScattering.cc,v 1.3 1 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4ComptonScattering.cc,v 1.30 2008/10/15 17:53:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // … … 84 84 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 85 85 86 G4bool G4ComptonScattering::IsApplicable(const G4ParticleDefinition& p)87 {88 return (&p == G4Gamma::Gamma());89 }90 91 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....92 93 86 void G4ComptonScattering::InitialiseProcess(const G4ParticleDefinition*) 94 87 { -
trunk/source/processes/electromagnetic/standard/src/G4ComptonScattering52.cc
r961 r991 25 25 // 26 26 // $Id: G4ComptonScattering52.cc,v 1.7 2008/10/15 17:53:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // -
trunk/source/processes/electromagnetic/standard/src/G4CoulombScattering.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4CoulombScattering.cc,v 1. 20 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4CoulombScattering.cc,v 1.19 2008/10/15 17:53:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 79 79 G4CoulombScattering::~G4CoulombScattering() 80 80 {} 81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....83 84 G4bool G4CoulombScattering::IsApplicable(const G4ParticleDefinition& p)85 {86 return (p.GetPDGCharge() != 0.0 && !p.IsShortLived());87 }88 81 89 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -
trunk/source/processes/electromagnetic/standard/src/G4CoulombScatteringModel.cc
r961 r991 25 25 // 26 26 // $Id: G4CoulombScatteringModel.cc,v 1.37 2008/07/31 13:11:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4GammaConversion.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4GammaConversion.cc,v 1.3 1 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4GammaConversion.cc,v 1.30 2008/10/15 17:53:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // … … 90 90 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 91 91 92 G4bool G4GammaConversion::IsApplicable(const G4ParticleDefinition& p)93 {94 return (&p == G4Gamma::Gamma());95 }96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....98 99 92 void G4GammaConversion::InitialiseProcess(const G4ParticleDefinition*) 100 93 { -
trunk/source/processes/electromagnetic/standard/src/G4InitXscPAI.cc
r961 r991 26 26 // 27 27 // $Id: G4InitXscPAI.cc,v 1.9 2006/06/29 19:53:00 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/standard/src/G4IonFluctuations.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4IonFluctuations.cc,v 1.2 5 2009/02/19 19:17:50vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4IonFluctuations.cc,v 1.24 2008/10/22 16:25:21 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 420 420 421 421 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 422 423 void G4IonFluctuations::SetParticleAndCharge(const G4ParticleDefinition* part,424 G4double q2)425 {426 if(part != particle) {427 particle = part;428 particleMass = part->GetPDGMass();429 charge = part->GetPDGCharge()/eplus;430 chargeSquare = charge*charge;431 }432 effChargeSquare = q2;433 uniFluct.SetParticleAndCharge(part, q2);434 }435 436 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -
trunk/source/processes/electromagnetic/standard/src/G4KleinNishinaCompton.cc
r961 r991 25 25 // 26 26 // $Id: G4KleinNishinaCompton.cc,v 1.9 2007/05/22 17:34:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4MollerBhabhaModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4MollerBhabhaModel.cc,v 1.3 1 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4MollerBhabhaModel.cc,v 1.30 2007/05/22 17:34:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 74 74 const G4String& nam) 75 75 : G4VEmModel(nam), 76 particle(0), 77 isElectron(true), 78 twoln10(2.0*log(10.0)), 79 lowLimit(0.2*keV), 80 isInitialised(false) 76 particle(0), 77 isElectron(true), 78 twoln10(2.0*log(10.0)), 79 lowLimit(0.2*keV) 81 80 { 82 81 theElectron = G4Electron::Electron(); … … 88 87 G4MollerBhabhaModel::~G4MollerBhabhaModel() 89 88 {} 89 90 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 91 92 void G4MollerBhabhaModel::SetParticle(const G4ParticleDefinition* p) 93 { 94 particle = p; 95 if(p != theElectron) isElectron = false; 96 } 90 97 91 98 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... … … 101 108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 102 109 103 G4double G4MollerBhabhaModel::MaxSecondaryEnergy(const G4ParticleDefinition*,104 G4double kinEnergy)105 {106 G4double tmax = kinEnergy;107 if(isElectron) tmax *= 0.5;108 return tmax;109 }110 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......112 113 110 void G4MollerBhabhaModel::Initialise(const G4ParticleDefinition* p, 114 111 const G4DataVector&) 115 112 { 116 113 if(!particle) SetParticle(p); 117 SetDeexcitationFlag(false); 118 119 if(isInitialised) return; 120 121 isInitialised = true; 122 if(pParticleChange) { 114 if(pParticleChange) 123 115 fParticleChange = reinterpret_cast<G4ParticleChangeForLoss*> 124 116 (pParticleChange); 125 } else {117 else 126 118 fParticleChange = new G4ParticleChangeForLoss(); 127 }128 119 } 129 120 -
trunk/source/processes/electromagnetic/standard/src/G4MscModel71.cc
r961 r991 25 25 // 26 26 // $Id: G4MscModel71.cc,v 1.6 2008/03/13 17:20:07 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4MultipleScattering.cc
r961 r991 25 25 // 26 26 // $Id: G4MultipleScattering.cc,v 1.75 2008/10/15 17:53:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4MultipleScattering71.cc
r961 r991 25 25 // 26 26 // $Id: G4MultipleScattering71.cc,v 1.5 2008/07/16 11:27:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4PAIModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PAIModel.cc,v 1.46 2009/02/19 19:17:50 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02-ref-02 $28 //29 // -------------------------------------------------------------------30 //31 // GEANT4 Class32 26 // File name: G4PAIModel.cc 33 27 // … … 183 177 fCutCouple = theCoupleTable->GetMaterialCutsCouple( fMaterial, 184 178 curReg->GetProductionCuts() ); 185 //G4cout << "Reg <" <<curReg->GetName() << "> mat <"186 // << fMaterial->GetName() << "> fCouple= "187 // << fCutCouple<<G4endl;188 179 if( fCutCouple ) { 189 180 fMaterialCutsCoupleVector.push_back(fCutCouple); … … 206 197 } 207 198 } 208 209 //////////////////////////////////////////////////////////////////210 211 void G4PAIModel::InitialiseMe(const G4ParticleDefinition*)212 {}213 199 214 200 ////////////////////////////////////////////////////////////////// … … 407 393 { 408 394 // if ( x1 == x2 ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 409 // if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 410 if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*0.5 ; 395 if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 411 396 else dNdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ; 412 397 } … … 450 435 { 451 436 // if ( x1 == x2 ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ; 452 // if ( std::abs(x1-x2) <= eV ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ; 453 if ( std::abs(x1-x2) <= eV ) dEdxCut = y1 + (y2 - y1)*0.5 ; 437 if ( std::abs(x1-x2) <= eV ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ; 454 438 else dEdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ; 455 439 } … … 460 444 ////////////////////////////////////////////////////////////////////////////// 461 445 462 G4double G4PAIModel::ComputeDEDX PerVolume(const G4Material*,463 const G4ParticleDefinition* p,464 G4double kineticEnergy,465 G4double cutEnergy)446 G4double G4PAIModel::ComputeDEDX(const G4MaterialCutsCouple* matCC, 447 const G4ParticleDefinition* p, 448 G4double kineticEnergy, 449 G4double cutEnergy) 466 450 { 467 451 G4int iTkin,iPlace; 468 452 size_t jMat; 469 470 //G4double cut = std::min(MaxSecondaryEnergy(p, kineticEnergy), cutEnergy);471 G4double cut = cutEnergy;472 473 453 G4double massRatio = fMass/p->GetPDGMass(); 474 454 G4double scaledTkin = kineticEnergy*massRatio; 475 455 G4double charge = p->GetPDGCharge(); 476 G4double charge2 = charge*charge; 477 const G4MaterialCutsCouple* matCC = CurrentCouple(); 456 G4double charge2 = charge*charge, dEdx; 478 457 479 458 for( jMat = 0 ;jMat < fMaterialCutsCoupleVector.size() ; ++jMat ) … … 491 470 iPlace = iTkin - 1; 492 471 if(iPlace < 0) iPlace = 0; 493 G4double dEdx = charge2*( (*fdEdxVector)(iPlace) - GetdEdxCut(iPlace,cut) ); 472 dEdx = charge2*( (*fdEdxVector)(iPlace) - GetdEdxCut(iPlace,cutEnergy) ) ; 473 494 474 if( dEdx < 0.) dEdx = 0.; 495 475 return dEdx; … … 498 478 ///////////////////////////////////////////////////////////////////////// 499 479 500 G4double G4PAIModel::CrossSection PerVolume( const G4Material*,501 const G4ParticleDefinition* p,502 G4double kineticEnergy,503 G4double cutEnergy,504 G4double maxEnergy )480 G4double G4PAIModel::CrossSection( const G4MaterialCutsCouple* matCC, 481 const G4ParticleDefinition* p, 482 G4double kineticEnergy, 483 G4double cutEnergy, 484 G4double maxEnergy ) 505 485 { 506 486 G4int iTkin,iPlace; 507 487 size_t jMat; 508 G4double tmax = std::min(MaxSecondaryEnergy(p, kineticEnergy), maxEnergy); 509 if(tmax <= cutEnergy) return 0.0; 488 G4double tmax = min(MaxSecondaryEnergy(p, kineticEnergy), maxEnergy); 510 489 G4double massRatio = fMass/p->GetPDGMass(); 511 490 G4double scaledTkin = kineticEnergy*massRatio; 512 491 G4double charge = p->GetPDGCharge(); 513 492 G4double charge2 = charge*charge, cross, cross1, cross2; 514 const G4MaterialCutsCouple* matCC = CurrentCouple();515 493 516 494 for( jMat = 0 ;jMat < fMaterialCutsCoupleVector.size() ; ++jMat ) … … 957 935 } 958 936 959 /////////////////////////////////////////////////////////////////////960 961 G4double G4PAIModel::MaxSecondaryEnergy( const G4ParticleDefinition* p,962 G4double kinEnergy)963 {964 G4double tmax = kinEnergy;965 if(p == fElectron) tmax *= 0.5;966 else if(p != fPositron) {967 G4double mass = p->GetPDGMass();968 G4double ratio= electron_mass_c2/mass;969 G4double gamma= kinEnergy/mass + 1.0;970 tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) /971 (1. + 2.0*gamma*ratio + ratio*ratio);972 }973 return tmax;974 }975 976 ///////////////////////////////////////////////////////////////977 978 void G4PAIModel::DefineForRegion(const G4Region* r)979 {980 fPAIRegionVector.push_back(r);981 }982 937 983 938 // -
trunk/source/processes/electromagnetic/standard/src/G4PAIPhotonModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PAIPhotonModel.cc,v 1.21 2009/02/19 19:17:50 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02-ref-02 $28 //29 // -------------------------------------------------------------------30 //31 // GEANT4 Class32 26 // File name: G4PAIPhotonModel.cc 33 27 // … … 223 217 ////////////////////////////////////////////////////////////////// 224 218 225 void G4PAIPhotonModel::InitialiseMe(const G4ParticleDefinition*)226 {}227 228 //////////////////////////////////////////////////////////////////229 230 219 void G4PAIPhotonModel::ComputeSandiaPhotoAbsCof() 231 220 { … … 498 487 { 499 488 // if ( x1 == x2 ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 500 // if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 501 if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*0.5 ; 489 if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 502 490 else dNdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ; 503 491 } … … 542 530 { 543 531 // if ( x1 == x2 ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 544 // if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 545 if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*0.5 ; 532 if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 546 533 else dNdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ; 547 534 } … … 587 574 { 588 575 // if ( x1 == x2 ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 589 // if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 590 if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*0.5 ; 576 if ( std::abs(x1-x2) <= eV ) dNdxCut = y1 + (y2 - y1)*G4UniformRand() ; 591 577 else dNdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ; 592 578 } … … 631 617 { 632 618 // if ( x1 == x2 ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ; 633 // if ( std::abs(x1-x2) <= eV ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ; 634 if ( std::abs(x1-x2) <= eV ) dEdxCut = y1 + (y2 - y1)*0.5 ; 619 if ( std::abs(x1-x2) <= eV ) dEdxCut = y1 + (y2 - y1)*G4UniformRand() ; 635 620 else dEdxCut = y1 + (transferCut - x1)*(y2 - y1)/(x2 - x1) ; 636 621 } … … 641 626 ////////////////////////////////////////////////////////////////////////////// 642 627 643 G4double G4PAIPhotonModel::ComputeDEDX PerVolume(const G4Material*,644 const G4ParticleDefinition* p,645 G4double kineticEnergy,646 G4double cutEnergy)628 G4double G4PAIPhotonModel::ComputeDEDX(const G4MaterialCutsCouple* matCC, 629 const G4ParticleDefinition* p, 630 G4double kineticEnergy, 631 G4double cutEnergy) 647 632 { 648 633 G4int iTkin,iPlace; 649 634 size_t jMat; 650 651 //G4double cut = std::min(MaxSecondaryEnergy(p, kineticEnergy), cutEnergy);652 G4double cut = cutEnergy;653 654 635 G4double particleMass = p->GetPDGMass(); 655 636 G4double scaledTkin = kineticEnergy*proton_mass_c2/particleMass; … … 657 638 G4double charge2 = charge*charge; 658 639 G4double dEdx = 0.; 659 const G4MaterialCutsCouple* matCC = CurrentCouple();660 640 661 641 for( jMat = 0 ;jMat < fMaterialCutsCoupleVector.size() ; ++jMat ) … … 673 653 iPlace = iTkin - 1; 674 654 if(iPlace < 0) iPlace = 0; 675 dEdx = charge2*( (*fdEdxVector)(iPlace) - GetdEdxCut(iPlace,cut ) ) ;655 dEdx = charge2*( (*fdEdxVector)(iPlace) - GetdEdxCut(iPlace,cutEnergy) ) ; 676 656 677 657 if( dEdx < 0.) dEdx = 0.; … … 681 661 ///////////////////////////////////////////////////////////////////////// 682 662 683 G4double G4PAIPhotonModel::CrossSection PerVolume( const G4Material*,684 const G4ParticleDefinition* p,685 G4double kineticEnergy,686 G4double cutEnergy,687 G4double maxEnergy )663 G4double G4PAIPhotonModel::CrossSection( const G4MaterialCutsCouple* matCC, 664 const G4ParticleDefinition* p, 665 G4double kineticEnergy, 666 G4double cutEnergy, 667 G4double maxEnergy ) 688 668 { 689 669 G4int iTkin,iPlace; 690 670 size_t jMat, jMatCC; 691 G4double tmax = std::min(MaxSecondaryEnergy(p, kineticEnergy), maxEnergy); 692 if(cutEnergy >= tmax) return 0.0; 671 G4double tmax = min(MaxSecondaryEnergy(p, kineticEnergy), maxEnergy); 693 672 G4double particleMass = p->GetPDGMass(); 694 673 G4double scaledTkin = kineticEnergy*proton_mass_c2/particleMass; … … 696 675 G4double charge2 = charge*charge, cross, cross1, cross2; 697 676 G4double photon1, photon2, plasmon1, plasmon2; 698 699 const G4MaterialCutsCouple* matCC = CurrentCouple();700 677 701 678 const G4ProductionCutsTable* theCoupleTable= … … 1248 1225 } 1249 1226 1250 /////////////////////////////////////////////////////////////////////1251 1252 G4double G4PAIPhotonModel::MaxSecondaryEnergy( const G4ParticleDefinition* p,1253 G4double kinEnergy)1254 {1255 G4double tmax = kinEnergy;1256 if(p == fElectron) tmax *= 0.5;1257 else if(p != fPositron) {1258 G4double mass = p->GetPDGMass();1259 G4double ratio= electron_mass_c2/mass;1260 G4double gamma= kinEnergy/mass + 1.0;1261 tmax = 2.0*electron_mass_c2*(gamma*gamma - 1.) /1262 (1. + 2.0*gamma*ratio + ratio*ratio);1263 }1264 return tmax;1265 }1266 1267 ///////////////////////////////////////////////////////////////1268 1269 void G4PAIPhotonModel::DefineForRegion(const G4Region* r)1270 {1271 fPAIRegionVector.push_back(r);1272 }1273 1274 1227 1275 1228 // -
trunk/source/processes/electromagnetic/standard/src/G4PAIxSection.cc
r961 r991 26 26 // 27 27 // $Id: G4PAIxSection.cc,v 1.24 2008/05/30 16:04:40 grichine Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/standard/src/G4PAIySection.cc
r961 r991 26 26 // 27 27 // $Id: G4PAIySection.cc,v 1.3 2007/10/01 18:38:10 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/standard/src/G4PEEffectModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PEEffectModel.cc,v 1. 7 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4PEEffectModel.cc,v 1.6 2007/05/22 17:34:36 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 41 41 // 42 42 // 04.12.05 : SetProposedKineticEnergy(0.) for the killed photon (mma) 43 // 20.02.09 : Added initialisation of deexcitation flag and method44 // CrossSectionPerVolume instead of mfp (V.Ivanchenko)45 43 // 46 44 // Class Description: … … 68 66 theGamma = G4Gamma::Gamma(); 69 67 theElectron = G4Electron::Electron(); 70 fminimalEnergy = 1.0*eV;71 68 } 72 69 … … 74 71 75 72 G4PEEffectModel::~G4PEEffectModel() 76 {} 73 { 74 } 77 75 78 76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... … … 81 79 const G4DataVector&) 82 80 { 83 // always false before the run 84 SetDeexcitationFlag(false); 81 if (isInitialized) return; 82 if (pParticleChange) 83 fParticleChange = 84 reinterpret_cast<G4ParticleChangeForGamma*>(pParticleChange); 85 else 86 fParticleChange = new G4ParticleChangeForGamma(); 85 87 86 if (isInitialized) return; 87 if (pParticleChange) { 88 fParticleChange = reinterpret_cast<G4ParticleChangeForGamma*>(pParticleChange); 89 } else { 90 fParticleChange = new G4ParticleChangeForGamma(); 91 } 92 isInitialized = true; 93 } 94 95 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 96 97 G4double G4PEEffectModel::ComputeCrossSectionPerAtom(const G4ParticleDefinition*, 98 G4double energy, 99 G4double Z, G4double, 100 G4double, G4double) 101 { 102 G4double* SandiaCof = G4SandiaTable::GetSandiaCofPerAtom((G4int)Z, energy); 103 104 G4double energy2 = energy*energy; 105 G4double energy3 = energy*energy2; 106 G4double energy4 = energy2*energy2; 107 108 return SandiaCof[0]/energy + SandiaCof[1]/energy2 + 109 SandiaCof[2]/energy3 + SandiaCof[3]/energy4; 110 } 111 112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 113 114 G4double G4PEEffectModel::CrossSectionPerVolume(const G4Material* material, 115 const G4ParticleDefinition*, 116 G4double energy, 117 G4double, G4double) 118 { 119 G4double* SandiaCof = 120 material->GetSandiaTable()->GetSandiaCofForMaterial(energy); 121 122 G4double energy2 = energy*energy; 123 G4double energy3 = energy*energy2; 124 G4double energy4 = energy2*energy2; 125 126 return SandiaCof[0]/energy + SandiaCof[1]/energy2 + 127 SandiaCof[2]/energy3 + SandiaCof[3]/energy4; 88 fminimalEnergy = 1.0*eV; 128 89 } 129 90 -
trunk/source/processes/electromagnetic/standard/src/G4PSTARStopping.cc
r961 r991 25 25 // 26 26 // $Id: G4PSTARStopping.cc,v 1.8 2008/11/24 18:28:09 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 //--------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4PhotoElectricEffect.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PhotoElectricEffect.cc,v 1.4 2 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4PhotoElectricEffect.cc,v 1.41 2008/10/16 14:12:32 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // … … 89 89 {} 90 90 91 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....92 93 G4bool G4PhotoElectricEffect::IsApplicable(const G4ParticleDefinition& p)94 {95 return (&p == G4Gamma::Gamma());96 }97 98 91 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 99 92 -
trunk/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc
r961 r991 26 26 // 27 27 // $Id: G4PolarizedComptonScattering.cc,v 1.18 2008/10/15 17:53:44 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/standard/src/G4UniversalFluctuation.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4UniversalFluctuation.cc,v 1.1 7 2009/02/19 11:26:01vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4UniversalFluctuation.cc,v 1.16 2008/10/22 16:04:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 305 305 } 306 306 307 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 308 309 void 310 G4UniversalFluctuation::SetParticleAndCharge(const G4ParticleDefinition* part, 311 G4double q2) 312 { 313 if(part != particle) { 314 particle = part; 315 particleMass = part->GetPDGMass(); 316 } 317 chargeSquare = q2; 318 } 319 320 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 307 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -
trunk/source/processes/electromagnetic/standard/src/G4UrbanMscModel.cc
r961 r991 25 25 // 26 26 // $Id: G4UrbanMscModel.cc,v 1.86 2008/10/29 14:15:30 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4UrbanMscModel2.cc
r968 r991 26 26 // 27 27 // $Id: G4UrbanMscModel2.cc,v 1.18 2008/12/18 13:01:36 gunter Exp $ 28 // GEANT4 tag $Name: geant4-09-02 -ref-02$28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4UrbanMscModel90.cc
r961 r991 25 25 // 26 26 // $Id: G4UrbanMscModel90.cc,v 1.10 2008/10/29 14:15:30 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4WaterStopping.cc
r961 r991 25 25 // 26 26 // $Id: G4WaterStopping.cc,v 1.11 2008/12/18 13:01:38 gunter Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 29 29 //--------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4WentzelVIModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4WentzelVIModel.cc,v 1.1 7 2009/02/19 19:17:15vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4WentzelVIModel.cc,v 1.16 2008/11/19 11:47:50 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 60 60 #include "G4LossTableManager.hh" 61 61 #include "G4ParticleChangeForMSC.hh" 62 //#include "G4TransportationManager.hh"63 //#include "G4SafetyHelper.hh"62 #include "G4TransportationManager.hh" 63 #include "G4SafetyHelper.hh" 64 64 #include "G4PhysicsTableHelper.hh" 65 65 #include "G4ElementVector.hh" … … 138 138 fParticleChange = new G4ParticleChangeForMSC(); 139 139 140 InitialiseSafetyHelper(); 140 safetyHelper = G4TransportationManager::GetTransportationManager() 141 ->GetSafetyHelper(); 142 safetyHelper->InitialiseHelper(); 141 143 } 142 144 } … … 275 277 // i.e. when it is needed for optimization purposes 276 278 if(stepStatus != fGeomBoundary && presafety < tlimitminfix) 277 presafety = ComputeSafety(sp->GetPosition(), tlimit);279 presafety = safetyHelper->ComputeSafety(sp->GetPosition()); 278 280 /* 279 281 G4cout << "G4WentzelVIModel::ComputeTruePathLengthLimit tlimit= " … … 568 570 569 571 if(r > tlimitminfix) { 570 pos /= r; 571 ComputeDisplacement(fParticleChange, pos, r, safety); 572 G4ThreeVector Position = *(fParticleChange->GetProposedPosition()); 573 G4double fac= 1.; 574 if(r >= safety) { 575 // ******* so safety is computed at boundary too ************ 576 G4double newsafety = 577 safetyHelper->ComputeSafety(Position) - tlimitminfix; 578 if(newsafety <= 0.0) fac = 0.0; 579 else if(r > newsafety) fac = newsafety/r ; 580 //G4cout << "NewSafety= " << newsafety << " fac= " << fac 581 // << " r= " << r << " sint= " << sint << " pos " << Position << G4endl; 582 } 583 584 if(fac > 0.) { 585 // compute new endpoint of the Step 586 G4ThreeVector newPosition = Position + fac*pos; 587 588 // check safety after displacement 589 G4double postsafety = safetyHelper->ComputeSafety(newPosition); 590 591 // displacement to boundary 592 if(postsafety <= 0.0) { 593 safetyHelper->Locate(newPosition, newDirection); 594 595 // not on the boundary 596 } else { 597 safetyHelper->ReLocateWithinVolume(newPosition); 598 // if(fac < 1.0) G4cout << "NewPosition " << newPosition << G4endl; 599 } 600 601 fParticleChange->ProposePosition(newPosition); 602 } 572 603 } 573 604 } -
trunk/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eBremsstrahlung.cc,v 1.5 6 2009/02/20 12:06:37 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eBremsstrahlung.cc,v 1.55 2008/11/14 19:23:07 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 104 104 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 105 105 106 G4bool G4eBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)107 {108 return (&p == G4Electron::Electron() || &p == G4Positron::Positron());109 }110 111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....112 113 106 void G4eBremsstrahlung::InitialiseEnergyLossProcess( 114 107 const G4ParticleDefinition* p, -
trunk/source/processes/electromagnetic/standard/src/G4eBremsstrahlungModel.cc
r961 r991 25 25 // 26 26 // $Id: G4eBremsstrahlungModel.cc,v 1.43 2008/11/13 19:28:58 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4eBremsstrahlungRelModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eBremsstrahlungRelModel.cc,v 1.1 3 2009/02/20 12:06:37 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eBremsstrahlungRelModel.cc,v 1.12 2008/11/13 23:28:27 schaelic Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4eCoulombScatteringModel.cc
r961 r991 25 25 // 26 26 // $Id: G4eCoulombScatteringModel.cc,v 1.59 2008/10/22 18:39:29 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4eIonisation.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eIonisation.cc,v 1.5 7 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eIonisation.cc,v 1.56 2008/10/20 08:56:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 103 103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 104 104 105 G4double G4eIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,106 const G4Material*,107 G4double cut)108 {109 G4double x = cut;110 if(isElectron) x += cut;111 return x;112 }113 114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....115 116 G4bool G4eIonisation::IsApplicable(const G4ParticleDefinition& p)117 {118 return (&p == G4Electron::Electron() || &p == G4Positron::Positron());119 }120 121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....122 123 105 void G4eIonisation::InitialiseEnergyLossProcess( 124 106 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/standard/src/G4eMultipleScattering.cc
r968 r991 25 25 // 26 26 // $Id: G4eMultipleScattering.cc,v 1.7 2008/10/23 17:55:20 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4eeToTwoGammaModel.cc
r961 r991 25 25 // 26 26 // $Id: G4eeToTwoGammaModel.cc,v 1.14 2007/05/23 08:47:35 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eplusAnnihilation.cc,v 1. 30 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4eplusAnnihilation.cc,v 1.29 2008/10/15 17:53:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 79 79 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 80 80 81 G4bool G4eplusAnnihilation::IsApplicable(const G4ParticleDefinition& p)82 {83 return (&p == G4Positron::Positron());84 }85 86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....87 88 G4double G4eplusAnnihilation::AtRestGetPhysicalInteractionLength(89 const G4Track&, G4ForceCondition* condition)90 {91 *condition = NotForced;92 return 0.0;93 }94 95 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....96 97 81 void G4eplusAnnihilation::InitialiseProcess(const G4ParticleDefinition*) 98 82 { -
trunk/source/processes/electromagnetic/standard/src/G4hIonisation.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hIonisation.cc,v 1.8 2 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4hIonisation.cc,v 1.81 2008/10/22 16:02:20 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 122 122 {} 123 123 124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....125 126 G4bool G4hIonisation::IsApplicable(const G4ParticleDefinition& p)127 {128 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV &&129 !p.IsShortLived());130 }131 132 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....133 134 G4double G4hIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,135 const G4Material*,136 G4double cut)137 {138 G4double x = 0.5*cut/electron_mass_c2;139 G4double g = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));140 return mass*(g - 1.0);141 }142 143 124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 144 125 -
trunk/source/processes/electromagnetic/standard/src/G4hMultipleScattering.cc
r961 r991 25 25 // 26 26 // $Id: G4hMultipleScattering.cc,v 1.13 2008/10/15 17:53:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ----------------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4ionGasIonisation.cc
r961 r991 25 25 // 26 26 // $Id: G4ionGasIonisation.cc,v 1.14 2008/09/12 16:26:34 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/standard/src/G4ionIonisation.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ionIonisation.cc,v 1.6 6 2009/02/20 12:06:37vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4ionIonisation.cc,v 1.65 2008/10/15 17:53:44 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 104 104 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 105 105 106 G4bool G4ionIonisation::IsApplicable(const G4ParticleDefinition& p)107 {108 return (p.GetPDGCharge() != 0.0 && !p.IsShortLived() &&109 p.GetParticleType() == "nucleus");110 }111 112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....113 114 G4double G4ionIonisation::MinPrimaryEnergy(const G4ParticleDefinition* p,115 const G4Material*,116 G4double cut)117 {118 return119 p->GetPDGMass()*(std::sqrt(1. + 0.5*cut/CLHEP::electron_mass_c2) - 1.0);120 }121 122 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....123 124 106 void G4ionIonisation::InitialiseEnergyLossProcess( 125 107 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/utils/History
r961 r991 1 $Id: History,v 1.3 72 2009/02/26 11:33:33vnivanch Exp $1 $Id: History,v 1.364 2008/11/20 20:32:40 vnivanch Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 20 26 February 09: V.Ivant (emutils-V09-02-03)21 G4EmConfigurator - fixed for the case if only fluctuation model is set22 and main model is default23 24 22 February 09: V.Ivant (emutils-V09-02-02)25 - G4VEmModel - make methods to access geometry protected, added new26 method SetSampleZ, added geommax private member27 - G4EmCalculator - added possibility to be used by DNA processes:28 take into account special DNA particles29 30 18 February 09: V.Ivant (emutils-V09-02-01)31 G4VEmModel, G4VEmFluctuationModel, G4VEnegryLossProcess, G4VEmProcess,32 G4VMultipleScattering - move all virtual methods to source, update comments33 G4VEmModel - added flagDeexcitation and Get/Set methods34 G4VEnegryLossProcess, G4VEmProcess - added calls to deexcitation PostStep35 G4EmProcessOptions - added ActivateDeexcitation method36 G4EnergyLossMessenger - added /process/em/deexcitation UI command37 G4LossTableBuilder - added protection in BuildRangeTable against zero dedx38 39 27 January 09: V.Ivant (emutils-V09-02-00)40 G4VEmModel - added method SampleDeexcitationAlongStep41 G4VEnegryLossProcess - added deexcitation AlongStep per region42 G4VMscModel - added methdos: InitialiseSafetyHelper, ComputeSafety,43 ComputeGeomLimit, ComputeDisplacement44 G4VEmProcess - added possibility to set more than 1 model45 19 46 20 20 November 08: V.Ivant (emutils-V09-01-37) -
trunk/source/processes/electromagnetic/utils/include/G4EmProcessOptions.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4EmProcessOptions.hh,v 1.1 5 2009/02/18 14:40:10vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4EmProcessOptions.hh,v 1.14 2008/04/17 10:33:26 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // … … 107 107 void SetLinearLossLimit(G4double val); 108 108 109 void ActivateDeexcitation(const G4String& proc, G4bool val, 110 const G4String& reg = ""); 109 void ActivateDeexcitation(G4bool val, const G4Region* r = 0); 111 110 112 111 void SetMscStepLimitation(G4MscStepLimitType val); -
trunk/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh
r961 r991 25 25 // 26 26 // 27 // $Id: G4EnergyLossMessenger.hh,v 1.2 3 2009/02/18 14:40:10vnivanch Exp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4EnergyLossMessenger.hh,v 1.22 2008/10/20 13:27:45 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------------------------------------------------------------- … … 107 107 G4UIcmdWithADouble* MinSubSecCmd; 108 108 G4UIcommand* StepFuncCmd; 109 G4UIcommand* deexCmd;110 109 G4UIcmdWithAString* mscCmd; 111 110 G4UIcmdWithADoubleAndUnit* MinEnCmd; -
trunk/source/processes/electromagnetic/utils/include/G4VEmFluctuationModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEmFluctuationModel.hh,v 1.1 2 2009/02/19 11:25:50vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VEmFluctuationModel.hh,v 1.11 2008/09/12 14:47:38 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 101 101 //------------------------------------------------------------------------ 102 102 103 inlineG4String GetName() const;103 G4String GetName() const; 104 104 105 105 private: … … 115 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 116 116 117 inline void G4VEmFluctuationModel::InitialiseMe(const G4ParticleDefinition*) 118 {} 119 120 inline 121 void G4VEmFluctuationModel::SetParticleAndCharge(const G4ParticleDefinition*, 122 G4double) 123 {} 124 117 125 inline G4String G4VEmFluctuationModel::GetName() const 118 126 { -
trunk/source/processes/electromagnetic/utils/include/G4VEmModel.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEmModel.hh,v 1. 66 2009/02/19 09:57:36vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VEmModel.hh,v 1.59 2008/11/13 19:29:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 65 65 // 12-09-08 Added methods GetParticleCharge, GetChargeSquareRatio, 66 66 // CorrectionsAlongStep, ActivateNuclearStopping (VI) 67 // 16-02-09 Move implementations of virtual methods to source (VI)68 67 // 69 68 // Class Description: … … 121 120 //------------------------------------------------------------------------ 122 121 122 // dEdx per unit length 123 virtual G4double ComputeDEDX(const G4MaterialCutsCouple*, 124 const G4ParticleDefinition*, 125 G4double kineticEnergy, 126 G4double cutEnergy = DBL_MAX); 127 123 128 // main method to compute dEdx 124 129 virtual G4double ComputeDEDXPerVolume(const G4Material*, … … 126 131 G4double kineticEnergy, 127 132 G4double cutEnergy = DBL_MAX); 133 134 // cross section per volume 135 virtual G4double CrossSection(const G4MaterialCutsCouple*, 136 const G4ParticleDefinition*, 137 G4double kineticEnergy, 138 G4double cutEnergy = 0.0, 139 G4double maxEnergy = DBL_MAX); 128 140 129 141 // main method to compute cross section per Volume … … 163 175 G4double length); 164 176 165 // sample PIXE deexcitation166 virtual void SampleDeexcitationAlongStep(const G4Material*,167 const G4Track&,168 G4double& eloss);169 170 177 protected: 171 178 … … 205 212 const G4DataVector&); 206 213 207 // dEdx per unit length208 inline G4double ComputeDEDX(const G4MaterialCutsCouple*,209 const G4ParticleDefinition*,210 G4double kineticEnergy,211 G4double cutEnergy = DBL_MAX);212 213 // cross section per volume214 inline G4double CrossSection(const G4MaterialCutsCouple*,215 const G4ParticleDefinition*,216 G4double kineticEnergy,217 G4double cutEnergy = 0.0,218 G4double maxEnergy = DBL_MAX);219 220 214 // compute mean free path via cross section per volume 221 inlineG4double ComputeMeanFreePath(const G4ParticleDefinition*,222 G4double kineticEnergy,223 const G4Material*,224 G4double cutEnergy = 0.0,225 G4double maxEnergy = DBL_MAX);215 G4double ComputeMeanFreePath(const G4ParticleDefinition*, 216 G4double kineticEnergy, 217 const G4Material*, 218 G4double cutEnergy = 0.0, 219 G4double maxEnergy = DBL_MAX); 226 220 227 221 // generic cross section per element … … 239 233 G4double maxEnergy = DBL_MAX); 240 234 241 // to select atom cross section per volume is recomputed for each element 235 // this method can be used only in the case if generic method to compute 236 // cross section per volume is used and not overwritten in derived class 242 237 inline const G4Element* SelectRandomAtom(const G4Material*, 243 238 const G4ParticleDefinition*, … … 265 260 inline G4bool LPMFlag() const; 266 261 267 inline G4bool DeexcitationFlag() const;268 269 262 inline void SetHighEnergyLimit(G4double); 270 263 … … 277 270 inline void SetLPMFlag(G4bool val); 278 271 279 inline void SetDeexcitationFlag(G4bool val);280 281 272 inline void ActivateNuclearStopping(G4bool); 282 273 … … 287 278 inline void SetParticleChange(G4VParticleChange*, G4VEmFluctuationModel*); 288 279 289 inline void SetCurrentCouple(const G4MaterialCutsCouple*);290 291 280 protected: 292 281 293 inline const G4 MaterialCutsCouple* CurrentCouple() const;282 inline const G4Element* GetCurrentElement() const; 294 283 295 284 inline void SetCurrentElement(const G4Element*); 296 297 inline const G4Element* GetCurrentElement() const;298 285 299 286 private: … … 328 315 private: 329 316 330 const G4MaterialCutsCouple* currentCouple; 331 const G4Element* currentElement; 332 317 const G4Element* currentElement; 333 318 G4int nsec; 334 G4bool flagDeexcitation;335 319 std::vector<G4double> xsec; 336 320 … … 340 324 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 341 325 342 inline G4double G4VEmModel::ComputeDEDX(const G4MaterialCutsCouple* c, 343 const G4ParticleDefinition* p, 344 G4double kinEnergy, 345 G4double cutEnergy) 346 { 347 currentCouple = c; 348 return ComputeDEDXPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy); 349 } 350 351 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 352 353 inline G4double G4VEmModel::CrossSection(const G4MaterialCutsCouple* c, 354 const G4ParticleDefinition* p, 355 G4double kinEnergy, 356 G4double cutEnergy, 357 G4double maxEnergy) 358 { 359 currentCouple = c; 360 return CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy); 361 } 362 363 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 364 365 inline G4double G4VEmModel::ComputeMeanFreePath(const G4ParticleDefinition* p, 366 G4double ekin, 367 const G4Material* material, 368 G4double emin, 369 G4double emax) 370 { 371 G4double mfp = DBL_MAX; 372 G4double cross = CrossSectionPerVolume(material,p,ekin,emin,emax); 373 if (cross > DBL_MIN) mfp = 1./cross; 374 return mfp; 326 inline G4double G4VEmModel::HighEnergyLimit() const 327 { 328 return highLimit; 329 } 330 331 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 332 333 inline G4double G4VEmModel::LowEnergyLimit() const 334 { 335 return lowLimit; 336 } 337 338 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 339 340 inline G4double G4VEmModel::PolarAngleLimit() const 341 { 342 return polarAngleLimit; 343 } 344 345 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 346 347 inline G4double G4VEmModel::SecondaryThreshold() const 348 { 349 return secondaryThreshold; 350 } 351 352 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 353 354 inline G4bool G4VEmModel::LPMFlag() const 355 { 356 return theLPMflag; 357 } 358 359 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 360 361 inline void G4VEmModel::SetHighEnergyLimit(G4double val) 362 { 363 highLimit = val; 364 } 365 366 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 367 368 inline void G4VEmModel::SetLowEnergyLimit(G4double val) 369 { 370 lowLimit = val; 371 } 372 373 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 374 375 inline void G4VEmModel::SetPolarAngleLimit(G4double val) 376 { 377 polarAngleLimit = val; 378 } 379 380 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 381 382 inline void G4VEmModel::SetSecondaryThreshold(G4double val) 383 { 384 secondaryThreshold = val; 385 } 386 387 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 388 389 inline void G4VEmModel::SetLPMFlag(G4bool val) 390 { 391 theLPMflag = val; 392 } 393 394 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 395 396 inline void G4VEmModel::ActivateNuclearStopping(G4bool val) 397 { 398 nuclearStopping = val; 375 399 } 376 400 … … 391 415 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 392 416 417 inline void G4VEmModel::SetParticleChange(G4VParticleChange* p, 418 G4VEmFluctuationModel* f = 0) 419 { 420 if(p && pParticleChange != p) pParticleChange = p; 421 fluc = f; 422 } 423 424 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 425 426 427 inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations() 428 { 429 return fluc; 430 } 431 432 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 433 434 inline G4double G4VEmModel::MinEnergyCut(const G4ParticleDefinition*, 435 const G4MaterialCutsCouple*) 436 { 437 return 0.0; 438 } 439 440 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 441 442 inline G4double G4VEmModel::GetChargeSquareRatio(const G4ParticleDefinition* p, 443 const G4Material*, G4double) 444 { 445 G4double q = p->GetPDGCharge()/CLHEP::eplus; 446 return q*q; 447 } 448 449 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 450 451 inline G4double G4VEmModel::GetParticleCharge(const G4ParticleDefinition* p, 452 const G4Material*, G4double) 453 { 454 return p->GetPDGCharge(); 455 } 456 457 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 458 459 inline void G4VEmModel::CorrectionsAlongStep(const G4MaterialCutsCouple*, 460 const G4DynamicParticle*, 461 G4double&,G4double&,G4double) 462 {} 463 464 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 465 466 inline G4double G4VEmModel::ComputeDEDXPerVolume(const G4Material*, 467 const G4ParticleDefinition*, 468 G4double,G4double) 469 { 470 return 0.0; 471 } 472 473 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 474 475 inline G4double G4VEmModel::ComputeDEDX(const G4MaterialCutsCouple* c, 476 const G4ParticleDefinition* p, 477 G4double kinEnergy, 478 G4double cutEnergy) 479 { 480 return ComputeDEDXPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy); 481 } 482 483 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 484 485 inline G4double G4VEmModel::CrossSection(const G4MaterialCutsCouple* c, 486 const G4ParticleDefinition* p, 487 G4double kinEnergy, 488 G4double cutEnergy, 489 G4double maxEnergy) 490 { 491 return CrossSectionPerVolume(c->GetMaterial(),p, 492 kinEnergy,cutEnergy,maxEnergy); 493 } 494 495 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 496 497 inline G4double G4VEmModel::ComputeCrossSectionPerAtom( 498 const G4ParticleDefinition*, 499 G4double, G4double, G4double, 500 G4double, G4double) 501 { 502 return 0.0; 503 } 504 505 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 506 393 507 inline 394 508 const G4Element* G4VEmModel::SelectRandomAtom(const G4MaterialCutsCouple* couple, … … 398 512 G4double maxEnergy) 399 513 { 400 currentCouple = couple;401 514 if(nSelectors > 0) { 402 515 currentElement = … … 458 571 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 459 572 460 inline G4VEmFluctuationModel* G4VEmModel::GetModelOfFluctuations() 461 { 462 return fluc; 463 } 464 465 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 466 467 inline G4double G4VEmModel::HighEnergyLimit() const 468 { 469 return highLimit; 470 } 471 472 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 473 474 inline G4double G4VEmModel::LowEnergyLimit() const 475 { 476 return lowLimit; 477 } 478 479 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 480 481 inline G4double G4VEmModel::PolarAngleLimit() const 482 { 483 return polarAngleLimit; 484 } 485 486 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 487 488 inline G4double G4VEmModel::SecondaryThreshold() const 489 { 490 return secondaryThreshold; 491 } 492 493 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 494 495 inline G4bool G4VEmModel::LPMFlag() const 496 { 497 return theLPMflag; 498 } 499 500 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 501 502 inline G4bool G4VEmModel::DeexcitationFlag() const 503 { 504 return flagDeexcitation; 505 } 506 507 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 508 509 inline void G4VEmModel::SetHighEnergyLimit(G4double val) 510 { 511 highLimit = val; 512 } 513 514 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 515 516 inline void G4VEmModel::SetLowEnergyLimit(G4double val) 517 { 518 lowLimit = val; 519 } 520 521 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 522 523 inline void G4VEmModel::SetPolarAngleLimit(G4double val) 524 { 525 polarAngleLimit = val; 526 } 527 528 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 529 530 inline void G4VEmModel::SetSecondaryThreshold(G4double val) 531 { 532 secondaryThreshold = val; 533 } 534 535 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 536 537 inline void G4VEmModel::SetLPMFlag(G4bool val) 538 { 539 theLPMflag = val; 540 } 541 542 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 543 544 inline void G4VEmModel::SetDeexcitationFlag(G4bool val) 545 { 546 flagDeexcitation = val; 547 } 548 549 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 550 551 inline void G4VEmModel::ActivateNuclearStopping(G4bool val) 552 { 553 nuclearStopping = val; 573 inline const G4Element* G4VEmModel::GetCurrentElement() const 574 { 575 return currentElement; 576 } 577 578 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 579 580 inline void G4VEmModel::SetCurrentElement(const G4Element* elm) 581 { 582 currentElement = elm; 554 583 } 555 584 … … 565 594 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 566 595 596 inline G4double G4VEmModel::MaxSecondaryEnergy(const G4ParticleDefinition*, 597 G4double kineticEnergy) 598 { 599 return kineticEnergy; 600 } 601 602 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 603 567 604 inline const G4String& G4VEmModel::GetName() const 568 605 { … … 571 608 572 609 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 573 574 inline void G4VEmModel::SetParticleChange(G4VParticleChange* p, 575 G4VEmFluctuationModel* f = 0) 576 { 577 if(p && pParticleChange != p) pParticleChange = p; 578 fluc = f; 579 } 580 581 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 582 583 inline void G4VEmModel::SetCurrentCouple(const G4MaterialCutsCouple* p) 584 { 585 currentCouple = p; 586 } 587 588 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 589 590 inline const G4MaterialCutsCouple* G4VEmModel::CurrentCouple() const 591 { 592 return currentCouple; 593 } 594 595 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 596 597 inline void G4VEmModel::SetCurrentElement(const G4Element* elm) 598 { 599 currentElement = elm; 600 } 601 602 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 603 604 inline const G4Element* G4VEmModel::GetCurrentElement() const 605 { 606 return currentElement; 607 } 610 // Methods for msc simulation 611 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 612 613 inline void G4VEmModel::SampleScattering(const G4DynamicParticle*, G4double) 614 {} 615 616 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 617 618 inline G4double G4VEmModel::ComputeTruePathLengthLimit( 619 const G4Track&, 620 G4PhysicsTable*, 621 G4double) 622 { 623 return DBL_MAX; 624 } 625 626 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 627 628 inline G4double G4VEmModel::ComputeGeomPathLength(G4double truePathLength) 629 { 630 return truePathLength; 631 } 632 633 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 634 635 inline G4double G4VEmModel::ComputeTrueStepLength(G4double geomPathLength) 636 { 637 return geomPathLength; 638 } 639 640 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 641 642 inline void G4VEmModel::DefineForRegion(const G4Region*) 643 {} 644 645 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 646 647 inline void G4VEmModel::SetupForMaterial(const G4ParticleDefinition*, 648 const G4Material*, G4double) 649 {} 608 650 609 651 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -
trunk/source/processes/electromagnetic/utils/include/G4VEmProcess.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEmProcess.hh,v 1. 50 2009/02/19 09:57:36 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VEmProcess.hh,v 1.47 2008/07/31 13:01:26 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 108 108 109 109 //------------------------------------------------------------------------ 110 // Implementation of virtual methods common to all Discrete processes 110 // Methods with standard implementation; may be overwritten if needed 111 //------------------------------------------------------------------------ 112 113 inline G4double RecalculateLambda(G4double kinEnergy, 114 const G4MaterialCutsCouple* couple); 115 116 //------------------------------------------------------------------------ 117 // Generic methods common to all Discrete processes 111 118 //------------------------------------------------------------------------ 112 119 113 120 public: 121 122 void PrintInfoDefinition(); 123 124 G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&); 114 125 115 126 // Initialise for build of tables … … 118 129 // Build physics table during initialisation 119 130 void BuildPhysicsTable(const G4ParticleDefinition&); 120 121 void PrintInfoDefinition();122 123 // implementation of virtual method, specific for G4VEmProcess124 G4double PostStepGetPhysicalInteractionLength(125 const G4Track& track,126 G4double previousStepSize,127 G4ForceCondition* condition128 );129 130 // implementation of virtual method, specific for G4VEmProcess131 G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);132 131 133 132 // Store PhysicsTable in a file. … … 146 145 G4bool ascii); 147 146 148 // deexcitation activated per G4Region149 void ActivateDeexcitation(G4bool, const G4Region* r = 0);150 151 147 //------------------------------------------------------------------------ 152 148 // Specific methods for Discrete EM post step simulation … … 156 152 G4double CrossSectionPerVolume(G4double kineticEnergy, 157 153 const G4MaterialCutsCouple* couple); 154 155 // implementation of virtual method 156 virtual G4double PostStepGetPhysicalInteractionLength( 157 const G4Track& track, 158 G4double previousStepSize, 159 G4ForceCondition* condition 160 ); 158 161 159 162 // It returns the cross section of the process per atom … … 164 167 inline G4double MeanFreePath(const G4Track& track); 165 168 169 inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy, 170 size_t& idxRegion) const; 171 166 172 // It returns cross section per volume 167 173 inline G4double GetLambda(G4double& kinEnergy, … … 197 203 198 204 //------------------------------------------------------------------------ 199 // Specific methods to set, access, modify models and basic parameters 200 //------------------------------------------------------------------------ 201 202 protected: 203 // Select model in run time 204 inline void SelectModel(G4double& kinEnergy); 205 206 public: 207 // Select model by energy and region index 208 inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy, 209 size_t& idxRegion) const; 205 // Specific methods to set, access, modify models 206 //------------------------------------------------------------------------ 207 208 // Add EM model coupled for the region 209 inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0); 210 210 211 // Add model for region, smaller value of order defines which212 // model will be selected for a given energy interval213 inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0);214 215 211 // Assign a model to a process 216 inline void SetModel(G4VEmModel* , G4int index = 1);212 inline void SetModel(G4VEmModel*); 217 213 218 214 // return the assigned model 219 inline G4VEmModel* Model( G4int index = 1);215 inline G4VEmModel* Model(); 220 216 221 217 // Define new energy range for the model identified by the name … … 225 221 inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false); 226 222 223 //------------------------------------------------------------------------ 224 // Get/set parameters used for simulation of energy loss 225 //------------------------------------------------------------------------ 226 227 inline void ActivateDeexcitation(G4bool, const G4Region* r = 0); 228 227 229 inline void SetLambdaFactor(G4double val); 228 230 … … 231 233 232 234 inline void SetApplyCuts(G4bool val); 233 234 //------------------------------------------------------------------------235 // Other generic methods236 //------------------------------------------------------------------------237 235 238 236 protected: … … 244 242 G4PhysicsVector* LambdaPhysicsVector(const G4MaterialCutsCouple*); 245 243 246 inline G4double RecalculateLambda(G4double kinEnergy,247 const G4MaterialCutsCouple* couple);248 249 244 inline G4ParticleChangeForGamma* GetParticleChange(); 250 245 … … 253 248 inline void SetSecondaryParticle(const G4ParticleDefinition* p); 254 249 250 inline G4VEmModel* SelectModel(G4double& kinEnergy); 251 255 252 inline size_t CurrentMaterialCutsCoupleIndex() const; 256 253 … … 283 280 inline G4double ComputeCurrentLambda(G4double kinEnergy); 284 281 285 // copy constructor and hide assignment operator 282 // hide assignment operator 283 286 284 G4VEmProcess(G4VEmProcess &); 287 285 G4VEmProcess & operator=(const G4VEmProcess &right); … … 299 297 // ======== Parameters of the class fixed at initialisation ======= 300 298 301 std::vector<G4VEmModel*> emModels;302 303 299 // tables and vectors 304 300 G4PhysicsTable* theLambdaTable; … … 321 317 G4bool applyCuts; 322 318 G4bool startFromNull; 323 G4bool useDeexcitation; 324 325 G4int nDERegions; 326 std::vector<const G4Region*> deRegions; 327 G4bool* idxDERegions; 319 320 G4int nRegions; 321 std::vector<G4Region*> regions; 322 std::vector<G4bool> flagsDeexcitation; 328 323 329 324 // ======== Cashed values - may be state dependent ================ … … 337 332 std::vector<G4DynamicParticle*> secParticles; 338 333 339 G4VEmModel* currentModel;334 G4VEmModel* selectedModel; 340 335 341 336 const G4ParticleDefinition* particle; … … 353 348 354 349 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 355 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....356 357 inline G4double G4VEmProcess::ComputeCrossSectionPerAtom(358 G4double kineticEnergy, G4double Z, G4double A, G4double cut)359 {360 SelectModel(kineticEnergy);361 G4double x = 0.0;362 if(currentModel) {363 x = currentModel->ComputeCrossSectionPerAtom(particle,kineticEnergy,364 Z,A,cut);365 }366 return x;367 }368 369 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....370 371 inline G4double G4VEmProcess::MeanFreePath(const G4Track& track)372 {373 DefineMaterial(track.GetMaterialCutsCouple());374 preStepLambda = GetCurrentLambda(track.GetKineticEnergy());375 G4double x = DBL_MAX;376 if(DBL_MIN < preStepLambda) x = 1.0/preStepLambda;377 return x;378 }379 380 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....381 382 inline G4double G4VEmProcess::GetLambda(G4double& kineticEnergy,383 const G4MaterialCutsCouple* couple)384 {385 DefineMaterial(couple);386 return GetCurrentLambda(kineticEnergy);387 }388 389 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....390 391 inline void G4VEmProcess::SetLambdaBinning(G4int nbins)392 {393 nLambdaBins = nbins;394 }395 396 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....397 398 inline G4int G4VEmProcess::LambdaBinning() const399 {400 return nLambdaBins;401 }402 403 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....404 405 inline void G4VEmProcess::SetMinKinEnergy(G4double e)406 {407 minKinEnergy = e;408 }409 410 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....411 412 inline G4double G4VEmProcess::MinKinEnergy() const413 {414 return minKinEnergy;415 }416 417 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....418 419 inline void G4VEmProcess::SetMaxKinEnergy(G4double e)420 {421 maxKinEnergy = e;422 }423 424 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....425 426 inline G4double G4VEmProcess::MaxKinEnergy() const427 {428 return maxKinEnergy;429 }430 431 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....432 433 inline void G4VEmProcess::SetPolarAngleLimit(G4double val)434 {435 if(val < 0.0) polarAngleLimit = 0.0;436 else if(val > pi) polarAngleLimit = pi;437 else polarAngleLimit = val;438 }439 440 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....441 442 inline G4double G4VEmProcess::PolarAngleLimit() const443 {444 return polarAngleLimit;445 }446 447 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....448 449 inline const G4PhysicsTable* G4VEmProcess::LambdaTable() const450 {451 return theLambdaTable;452 }453 454 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....455 456 inline const G4ParticleDefinition* G4VEmProcess::Particle() const457 {458 return particle;459 }460 461 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....462 463 inline const G4ParticleDefinition* G4VEmProcess::SecondaryParticle() const464 {465 return secondaryParticle;466 }467 468 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....469 470 inline void G4VEmProcess::SelectModel(G4double& kinEnergy)471 {472 currentModel = modelManager->SelectModel(kinEnergy, currentMaterialIndex);473 currentModel->SetCurrentCouple(currentCouple);474 }475 476 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....477 478 inline G4VEmModel* G4VEmProcess::SelectModelForMaterial(479 G4double kinEnergy, size_t& idxRegion) const480 {481 return modelManager->SelectModel(kinEnergy, idxRegion);482 }483 484 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....485 486 inline void G4VEmProcess::AddEmModel(G4int order, G4VEmModel* p,487 const G4Region* region)488 {489 G4VEmFluctuationModel* fm = 0;490 modelManager->AddEmModel(order, p, fm, region);491 if(p) p->SetParticleChange(pParticleChange);492 }493 494 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....495 496 inline void G4VEmProcess::SetModel(G4VEmModel* p, G4int index)497 {498 G4int n = emModels.size();499 if(index >= n) for(G4int i=n; i<index+1; i++) {emModels.push_back(0);}500 emModels[index] = p;501 }502 503 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....504 505 inline G4VEmModel* G4VEmProcess::Model(G4int index)506 {507 G4VEmModel* p = 0;508 if(index >= 0 && index < G4int(emModels.size())) p = emModels[index];509 return p;510 }511 512 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....513 514 inline void G4VEmProcess::UpdateEmModel(const G4String& nam,515 G4double emin, G4double emax)516 {517 modelManager->UpdateEmModel(nam, emin, emax);518 }519 520 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....521 522 inline G4VEmModel* G4VEmProcess::GetModelByIndex(G4int idx, G4bool ver)523 {524 return modelManager->GetModel(idx, ver);525 }526 527 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....528 529 inline void G4VEmProcess::SetLambdaFactor(G4double val)530 {531 if(val > 0.0 && val <= 1.0) lambdaFactor = val;532 }533 534 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....535 536 inline void G4VEmProcess::SetIntegral(G4bool val)537 {538 if(particle && particle != theGamma) integral = val;539 if(integral) buildLambdaTable = true;540 }541 542 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....543 544 inline G4bool G4VEmProcess::IsIntegral() const545 {546 return integral;547 }548 549 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....550 551 inline void G4VEmProcess::SetApplyCuts(G4bool val)552 {553 applyCuts = val;554 }555 556 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....557 558 inline G4double G4VEmProcess::RecalculateLambda(G4double e,559 const G4MaterialCutsCouple* couple)560 {561 DefineMaterial(couple);562 return ComputeCurrentLambda(e);563 }564 565 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....566 567 inline G4ParticleChangeForGamma* G4VEmProcess::GetParticleChange()568 {569 return &fParticleChange;570 }571 572 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....573 574 inline void G4VEmProcess::SetParticle(const G4ParticleDefinition* p)575 {576 particle = p;577 }578 579 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....580 581 inline void G4VEmProcess::SetSecondaryParticle(const G4ParticleDefinition* p)582 {583 secondaryParticle = p;584 }585 586 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....587 588 inline size_t G4VEmProcess::CurrentMaterialCutsCoupleIndex() const589 {590 return currentMaterialIndex;591 }592 593 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....594 595 inline G4double G4VEmProcess::GetGammaEnergyCut()596 {597 return (*theCutsGamma)[currentMaterialIndex];598 }599 600 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....601 602 inline G4double G4VEmProcess::GetElectronEnergyCut()603 {604 return (*theCutsElectron)[currentMaterialIndex];605 }606 607 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....608 609 inline void G4VEmProcess::SetBuildTableFlag(G4bool val)610 {611 buildLambdaTable = val;612 if(!val) integral = false;613 }614 615 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....616 617 inline void G4VEmProcess::SetStartFromNullFlag(G4bool val)618 {619 startFromNull = val;620 }621 622 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....623 624 inline void G4VEmProcess::InitialiseStep(const G4Track& track)625 {626 preStepKinEnergy = track.GetKineticEnergy();627 DefineMaterial(track.GetMaterialCutsCouple());628 if (theNumberOfInteractionLengthLeft < 0.0) mfpKinEnergy = DBL_MAX;629 }630 631 350 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 632 351 … … 639 358 mfpKinEnergy = DBL_MAX; 640 359 } 360 } 361 362 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 363 364 inline void G4VEmProcess::InitialiseStep(const G4Track& track) 365 { 366 preStepKinEnergy = track.GetKineticEnergy(); 367 DefineMaterial(track.GetMaterialCutsCouple()); 368 if (theNumberOfInteractionLengthLeft < 0.0) mfpKinEnergy = DBL_MAX; 369 } 370 371 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 372 373 inline G4double G4VEmProcess::GetLambda(G4double& kineticEnergy, 374 const G4MaterialCutsCouple* couple) 375 { 376 DefineMaterial(couple); 377 return GetCurrentLambda(kineticEnergy); 378 } 379 380 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 381 382 inline G4double G4VEmProcess::GetCurrentLambda(G4double e) 383 { 384 G4double x = 0.0; 385 if(theLambdaTable) x = GetLambdaFromTable(e); 386 else x = ComputeCurrentLambda(e); 387 return x; 388 } 389 390 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 391 392 inline G4double G4VEmProcess::RecalculateLambda(G4double e, 393 const G4MaterialCutsCouple* couple) 394 { 395 DefineMaterial(couple); 396 return ComputeCurrentLambda(e); 397 } 398 399 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 400 401 inline G4double G4VEmProcess::ComputeCurrentLambda(G4double e) 402 { 403 G4VEmModel* currentModel = SelectModel(e); 404 G4double x = 0.0; 405 if(currentModel) 406 x = currentModel->CrossSectionPerVolume(currentMaterial,particle, 407 e,(*theCuts)[currentMaterialIndex]); 408 return x; 409 } 410 411 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 412 413 inline G4double G4VEmProcess::GetLambdaFromTable(G4double e) 414 { 415 G4bool b; 416 return (((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b)); 641 417 } 642 418 … … 666 442 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 667 443 668 inline G4double G4VEmProcess::GetLambdaFromTable(G4double e) 669 { 670 G4bool b; 671 return (((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b)); 672 } 673 674 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 675 676 inline G4double G4VEmProcess::GetCurrentLambda(G4double e) 677 { 678 G4double x = 0.0; 679 if(theLambdaTable) x = GetLambdaFromTable(e); 680 else x = ComputeCurrentLambda(e); 444 inline G4double G4VEmProcess::MeanFreePath(const G4Track& track) 445 { 446 DefineMaterial(track.GetMaterialCutsCouple()); 447 preStepLambda = GetCurrentLambda(track.GetKineticEnergy()); 448 G4double x = DBL_MAX; 449 if(DBL_MIN < preStepLambda) x = 1.0/preStepLambda; 681 450 return x; 682 451 } … … 684 453 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 685 454 686 inline G4double G4VEmProcess::ComputeCurrentLambda(G4double e) 687 { 688 SelectModel(e); 689 G4double x = 0.0; 690 if(currentModel) { 691 x = currentModel->CrossSectionPerVolume(currentMaterial,particle, 692 e,(*theCuts)[currentMaterialIndex]); 693 } 694 return x; 455 inline G4VEmModel* G4VEmProcess::SelectModel(G4double& kinEnergy) 456 { 457 return modelManager->SelectModel(kinEnergy, currentMaterialIndex); 458 } 459 460 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 461 462 inline G4VEmModel* G4VEmProcess::SelectModelForMaterial( 463 G4double kinEnergy, size_t& idxRegion) const 464 { 465 return modelManager->SelectModel(kinEnergy, idxRegion); 466 } 467 468 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 469 470 inline const G4ParticleDefinition* G4VEmProcess::Particle() const 471 { 472 return particle; 473 } 474 475 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 476 477 inline const G4ParticleDefinition* G4VEmProcess::SecondaryParticle() const 478 { 479 return secondaryParticle; 480 } 481 482 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 483 484 inline G4double G4VEmProcess::GetGammaEnergyCut() 485 { 486 return (*theCutsGamma)[currentMaterialIndex]; 487 } 488 489 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 490 491 inline G4double G4VEmProcess::GetElectronEnergyCut() 492 { 493 return (*theCutsElectron)[currentMaterialIndex]; 494 } 495 496 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 497 498 inline void G4VEmProcess::SetLambdaFactor(G4double val) 499 { 500 if(val > 0.0 && val <= 1.0) lambdaFactor = val; 501 } 502 503 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 504 505 inline G4VEmModel* G4VEmProcess::GetModelByIndex(G4int idx, G4bool ver) 506 { 507 return modelManager->GetModel(idx, ver); 508 } 509 510 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 511 512 inline G4ParticleChangeForGamma* G4VEmProcess::GetParticleChange() 513 { 514 return &fParticleChange; 515 } 516 517 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 518 519 inline void G4VEmProcess::SetParticle(const G4ParticleDefinition* p) 520 { 521 particle = p; 522 } 523 524 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 525 526 inline void G4VEmProcess::SetSecondaryParticle(const G4ParticleDefinition* p) 527 { 528 secondaryParticle = p; 529 } 530 531 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 532 533 inline void G4VEmProcess::AddEmModel(G4int order, G4VEmModel* p, 534 const G4Region* region) 535 { 536 G4VEmFluctuationModel* fm = 0; 537 modelManager->AddEmModel(order, p, fm, region); 538 if(p) p->SetParticleChange(pParticleChange); 539 } 540 541 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 542 543 inline void G4VEmProcess::SetModel(G4VEmModel* model) 544 { 545 selectedModel = model; 546 } 547 548 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 549 550 inline G4VEmModel* G4VEmProcess::Model() 551 { 552 return selectedModel; 553 } 554 555 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 556 557 inline void G4VEmProcess::UpdateEmModel(const G4String& nam, 558 G4double emin, G4double emax) 559 { 560 modelManager->UpdateEmModel(nam, emin, emax); 561 } 562 563 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 564 565 inline G4double G4VEmProcess::ComputeCrossSectionPerAtom( 566 G4double kineticEnergy, G4double Z, G4double A, G4double cut) 567 { 568 G4VEmModel* model = SelectModel(kineticEnergy); 569 return model->ComputeCrossSectionPerAtom(particle,kineticEnergy,Z,A,cut); 570 } 571 572 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 573 574 inline void G4VEmProcess::SetLambdaBinning(G4int nbins) 575 { 576 nLambdaBins = nbins; 577 } 578 579 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 580 581 inline G4int G4VEmProcess::LambdaBinning() const 582 { 583 return nLambdaBins; 584 } 585 586 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 587 588 inline void G4VEmProcess::SetMinKinEnergy(G4double e) 589 { 590 minKinEnergy = e; 591 } 592 593 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 594 595 inline G4double G4VEmProcess::MinKinEnergy() const 596 { 597 return minKinEnergy; 598 } 599 600 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 601 602 inline void G4VEmProcess::SetMaxKinEnergy(G4double e) 603 { 604 maxKinEnergy = e; 605 } 606 607 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 608 609 inline G4double G4VEmProcess::MaxKinEnergy() const 610 { 611 return maxKinEnergy; 612 } 613 614 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 615 616 inline void G4VEmProcess::SetPolarAngleLimit(G4double val) 617 { 618 if(val < 0.0) polarAngleLimit = 0.0; 619 else if(val > pi) polarAngleLimit = pi; 620 else polarAngleLimit = val; 621 } 622 623 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 624 625 inline G4double G4VEmProcess::PolarAngleLimit() const 626 { 627 return polarAngleLimit; 628 } 629 630 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 631 632 inline void G4VEmProcess::ActivateDeexcitation(G4bool, const G4Region*) 633 {} 634 635 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 636 637 inline const G4PhysicsTable* G4VEmProcess::LambdaTable() const 638 { 639 return theLambdaTable; 640 } 641 642 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 643 644 inline void G4VEmProcess::SetIntegral(G4bool val) 645 { 646 if(particle && particle != theGamma) integral = val; 647 if(integral) buildLambdaTable = true; 648 } 649 650 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 651 652 inline G4bool G4VEmProcess::IsIntegral() const 653 { 654 return integral; 655 } 656 657 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 658 659 inline void G4VEmProcess::SetBuildTableFlag(G4bool val) 660 { 661 buildLambdaTable = val; 662 if(!val) integral = false; 663 } 664 665 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 666 667 inline void G4VEmProcess::SetStartFromNullFlag(G4bool val) 668 { 669 startFromNull = val; 670 } 671 672 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 673 674 inline void G4VEmProcess::SetApplyCuts(G4bool val) 675 { 676 applyCuts = val; 677 } 678 679 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 680 681 inline size_t G4VEmProcess::CurrentMaterialCutsCoupleIndex() const 682 { 683 return currentMaterialIndex; 695 684 } 696 685 -
trunk/source/processes/electromagnetic/utils/include/G4VEnergyLossProcess.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEnergyLossProcess.hh,v 1.8 6 2009/02/19 09:57:36vnivanch Exp $26 // $Id: G4VEnergyLossProcess.hh,v 1.83 2008/09/12 16:19:01 vnivanch Exp $ 27 27 // GEANT4 tag $Name: 28 28 // … … 126 126 virtual ~G4VEnergyLossProcess(); 127 127 128 private:129 // clean vectors and arrays130 void Clean();131 132 128 //------------------------------------------------------------------------ 133 129 // Virtual methods to be implemented in concrete processes 134 130 //------------------------------------------------------------------------ 135 131 136 public:137 132 virtual G4bool IsApplicable(const G4ParticleDefinition& p) = 0; 138 133 … … 148 143 //------------------------------------------------------------------------ 149 144 145 protected: 146 150 147 virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*, 151 148 const G4Material*, G4double cut); 152 149 153 150 //------------------------------------------------------------------------ 154 // Virtual methods implementation common to all EM ContinuousDiscrete155 // processes.Further inheritance is not assumed151 // Virtual methods common to all EM ContinuousDiscrete processes 152 // Further inheritance is not assumed 156 153 //------------------------------------------------------------------------ 157 154 158 155 public: 159 156 160 // prepare all tables 157 void PrintInfoDefinition(); 158 161 159 void PreparePhysicsTable(const G4ParticleDefinition&); 162 160 163 // build all tables164 161 void BuildPhysicsTable(const G4ParticleDefinition&); 165 162 166 // build a table167 G4PhysicsTable* BuildDEDXTable(G4EmTableType tType = fRestricted);168 169 // build a table170 G4PhysicsTable* BuildLambdaTable(G4EmTableType tType = fRestricted);171 172 // summary printout after initialisation173 void PrintInfoDefinition();174 175 // Add subcutoff option for the region176 void ActivateSubCutoff(G4bool val, const G4Region* region = 0);177 178 // Activate deexcitation code for region179 void ActivateDeexcitation(G4bool, const G4Region* region = 0);180 181 // Step limit from AlongStep182 163 G4double AlongStepGetPhysicalInteractionLength(const G4Track&, 183 164 G4double previousStepSize, … … 186 167 G4GPILSelection* selection); 187 168 188 // Step limit from cross section189 169 G4double PostStepGetPhysicalInteractionLength(const G4Track& track, 190 170 G4double previousStepSize, 191 171 G4ForceCondition* condition); 192 172 193 // AlongStep computations194 173 G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&); 195 174 196 // Sampling of secondaries in vicinity of geometrical boundary197 void SampleSubCutSecondaries(std::vector<G4Track*>&, const G4Step&,198 G4VEmModel* model, G4int matIdx,199 G4double& extraEdep);200 201 // PostStep sampling of secondaries202 175 G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&); 203 176 204 // Store all PhysicsTable in files.205 // Return false in case of any fatal failure at I/O177 // Store PhysicsTable in a file. 178 // Return false in case of failure at I/O 206 179 G4bool StorePhysicsTable(const G4ParticleDefinition*, 207 180 const G4String& directory, 208 181 G4bool ascii = false); 209 182 210 // Retrieve all Physics from a files. 211 // Return true if all the Physics Table are built. 212 // Return false if any fatal failure. 183 // Retrieve Physics from a file. 184 // (return true if the Physics Table can be build by using file) 185 // (return false if the process has no functionality or in case of failure) 186 // File name should is constructed as processName+particleName and the 187 // should be placed under the directory specifed by the argument. 213 188 G4bool RetrievePhysicsTable(const G4ParticleDefinition*, 214 189 const G4String& directory, 215 190 G4bool ascii); 216 191 217 private:218 // store a table219 G4bool StoreTable(const G4ParticleDefinition* p,220 G4PhysicsTable*, G4bool ascii,221 const G4String& directory,222 const G4String& tname);223 224 // retrieve a table225 G4bool RetrieveTable(const G4ParticleDefinition* p,226 G4PhysicsTable*, G4bool ascii,227 const G4String& directory,228 const G4String& tname,229 G4bool mandatory);230 231 //------------------------------------------------------------------------232 // Public interface to cross section, mfp and sampling of fluctuations233 // These methods are not used in run time234 //------------------------------------------------------------------------235 236 public:237 // access to dispersion of restricted energy loss238 G4double GetDEDXDispersion(const G4MaterialCutsCouple *couple,239 const G4DynamicParticle* dp,240 G4double length);241 242 // Access to cross section table243 G4double CrossSectionPerVolume(G4double kineticEnergy,244 const G4MaterialCutsCouple* couple);245 246 // access to cross section247 G4double MeanFreePath(const G4Track& track);248 249 // access to step limit250 G4double ContinuousStepLimit(const G4Track& track,251 G4double previousStepSize,252 G4double currentMinimumStep,253 G4double& currentSafety);254 255 192 protected: 256 193 257 // implementation of the pure virtual method258 194 G4double GetMeanFreePath(const G4Track& track, 259 195 G4double previousStepSize, 260 196 G4ForceCondition* condition); 261 197 262 // implementation of the pure virtual method263 198 G4double GetContinuousStepLimit(const G4Track& track, 264 199 G4double previousStepSize, … … 267 202 268 203 //------------------------------------------------------------------------ 269 // Run time method which may be also used by derived processes 270 //------------------------------------------------------------------------ 271 272 // creeation of an empty vector for cross section 273 G4PhysicsVector* LambdaPhysicsVector(const G4MaterialCutsCouple*, 274 G4double cut); 275 276 inline G4ParticleChangeForLoss* GetParticleChange(); 277 278 inline size_t CurrentMaterialCutsCoupleIndex() const; 279 280 inline G4double GetCurrentRange() const; 281 282 //------------------------------------------------------------------------ 283 // Specific methods to set, access, modify models 284 //------------------------------------------------------------------------ 285 286 // Select model in run time 287 inline void SelectModel(G4double kinEnergy); 204 // Specific methods for along/post step EM processes 205 //------------------------------------------------------------------------ 288 206 289 207 public: 290 // Select model by energy and region index 291 inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy, 292 size_t& idx) const; 293 294 // Add EM model coupled with fluctuation model for region, smaller value 295 // of order defines which pair of models will be selected for a given 296 // energy interval 297 inline void AddEmModel(G4int, G4VEmModel*, 298 G4VEmFluctuationModel* fluc = 0, 299 const G4Region* region = 0); 300 301 // Define new energy range for the model identified by the name 302 inline void UpdateEmModel(const G4String&, G4double, G4double); 303 304 // Assign a model to a process 305 inline void SetEmModel(G4VEmModel*, G4int index=1); 306 307 // return the assigned model 308 inline G4VEmModel* EmModel(G4int index=1); 309 310 // Access to models 311 inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false); 312 313 inline G4int NumberOfModels(); 314 315 // Assign a fluctuation model to a process 316 inline void SetFluctModel(G4VEmFluctuationModel*); 317 318 // return the assigned fluctuation model 319 inline G4VEmFluctuationModel* FluctModel(); 320 321 //------------------------------------------------------------------------ 322 // Define and access particle type 323 //------------------------------------------------------------------------ 324 325 protected: 326 inline void SetParticle(const G4ParticleDefinition* p); 327 inline void SetSecondaryParticle(const G4ParticleDefinition* p); 328 329 public: 330 inline void SetBaseParticle(const G4ParticleDefinition* p); 331 inline const G4ParticleDefinition* Particle() const; 332 inline const G4ParticleDefinition* BaseParticle() const; 333 inline const G4ParticleDefinition* SecondaryParticle() const; 334 335 //------------------------------------------------------------------------ 336 // Get/set parameters to configure the process at initialisation time 337 //------------------------------------------------------------------------ 338 339 // Add subcutoff process (bremsstrahlung) to sample secondary 340 // particle production in vicinity of the geometry boundary 208 341 209 void AddCollaborativeProcess(G4VEnergyLossProcess*); 342 210 343 inline void SetLossFluctuations(G4bool val); 344 inline void SetRandomStep(G4bool val); 345 346 inline void SetIntegral(G4bool val); 347 inline G4bool IsIntegral() const; 348 349 // Set/Get flag "isIonisation" 350 inline void SetIonisation(G4bool val); 351 inline G4bool IsIonisationProcess() const; 352 353 // Redefine parameteters for stepping control 354 // 355 inline void SetLinearLossLimit(G4double val); 356 inline void SetMinSubRange(G4double val); 357 inline void SetLambdaFactor(G4double val); 358 inline void SetStepFunction(G4double v1, G4double v2); 359 360 inline G4int NumberOfSubCutoffRegions() const; 361 inline G4int NumberOfDERegions() const; 362 363 //------------------------------------------------------------------------ 364 // Specific methods to path Physics Tables to the process 365 //------------------------------------------------------------------------ 211 void SampleSubCutSecondaries(std::vector<G4Track*>&, const G4Step&, 212 G4VEmModel* model, G4int matIdx, 213 G4double& extraEdep); 214 215 G4double GetDEDXDispersion(const G4MaterialCutsCouple *couple, 216 const G4DynamicParticle* dp, 217 G4double length); 218 219 //------------------------------------------------------------------------ 220 // Specific methods to build and access Physics Tables 221 //------------------------------------------------------------------------ 222 223 G4PhysicsTable* BuildDEDXTable(G4EmTableType tType = fRestricted); 224 225 G4PhysicsTable* BuildLambdaTable(G4EmTableType tType = fRestricted); 366 226 367 227 void SetDEDXTable(G4PhysicsTable* p, G4EmTableType tType); 368 228 void SetCSDARangeTable(G4PhysicsTable* pRange); 369 229 void SetRangeTableForLoss(G4PhysicsTable* p); 230 void SetInverseRangeTable(G4PhysicsTable* p); 370 231 void SetSecondaryRangeTable(G4PhysicsTable* p); 371 void SetInverseRangeTable(G4PhysicsTable* p);372 232 373 233 void SetLambdaTable(G4PhysicsTable* p); … … 391 251 // Max kinetic energy for tables 392 252 inline void SetMaxKinEnergyForCSDARange(G4double e); 393 394 // Return values for given G4MaterialCutsCouple395 inline G4double GetDEDX(G4double& kineticEnergy, const G4MaterialCutsCouple*);396 inline G4double GetDEDXForSubsec(G4double& kineticEnergy,397 const G4MaterialCutsCouple*);398 inline G4double GetRange(G4double& kineticEnergy, const G4MaterialCutsCouple*);399 inline G4double GetCSDARange(G4double& kineticEnergy, const G4MaterialCutsCouple*);400 inline G4double GetRangeForLoss(G4double& kineticEnergy, const G4MaterialCutsCouple*);401 inline G4double GetKineticEnergy(G4double& range, const G4MaterialCutsCouple*);402 inline G4double GetLambda(G4double& kineticEnergy, const G4MaterialCutsCouple*);403 404 inline G4bool TablesAreBuilt() const;405 253 406 254 // Access to specific tables … … 416 264 inline G4PhysicsTable* SubLambdaTable(); 417 265 266 // Return values for given G4MaterialCutsCouple 267 inline G4double GetDEDX(G4double& kineticEnergy, const G4MaterialCutsCouple*); 268 inline G4double GetDEDXForSubsec(G4double& kineticEnergy, 269 const G4MaterialCutsCouple*); 270 inline G4double GetRange(G4double& kineticEnergy, const G4MaterialCutsCouple*); 271 inline G4double GetCSDARange(G4double& kineticEnergy, const G4MaterialCutsCouple*); 272 inline G4double GetRangeForLoss(G4double& kineticEnergy, const G4MaterialCutsCouple*); 273 inline G4double GetKineticEnergy(G4double& range, const G4MaterialCutsCouple*); 274 inline G4double GetLambda(G4double& kineticEnergy, const G4MaterialCutsCouple*); 275 276 inline G4bool TablesAreBuilt() const; 277 278 //------------------------------------------------------------------------ 279 // Define and access particle type 280 //------------------------------------------------------------------------ 281 282 inline void SetBaseParticle(const G4ParticleDefinition* p); 283 inline const G4ParticleDefinition* Particle() const; 284 inline const G4ParticleDefinition* BaseParticle() const; 285 inline const G4ParticleDefinition* SecondaryParticle() const; 286 287 //------------------------------------------------------------------------ 288 // Specific methods to set, access, modify models 289 //------------------------------------------------------------------------ 290 291 // Add EM model coupled with fluctuation model for the region 292 inline void AddEmModel(G4int, G4VEmModel*, 293 G4VEmFluctuationModel* fluc = 0, 294 const G4Region* region = 0); 295 296 // Assign a model to a process 297 inline void SetEmModel(G4VEmModel*, G4int index=1); 298 299 // return the assigned model 300 inline G4VEmModel* EmModel(G4int index=1); 301 302 // Assign a fluctuation model to a process 303 inline void SetFluctModel(G4VEmFluctuationModel*); 304 305 // return the assigned fluctuation model 306 inline G4VEmFluctuationModel* FluctModel(); 307 308 // Define new energy range for the model identified by the name 309 inline void UpdateEmModel(const G4String&, G4double, G4double); 310 311 // Access to models 312 inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false); 313 314 inline G4int NumberOfModels(); 315 316 //------------------------------------------------------------------------ 317 // Get/set parameters used for simulation of energy loss 318 //------------------------------------------------------------------------ 319 320 inline void SetLossFluctuations(G4bool val); 321 inline void SetRandomStep(G4bool val); 322 inline void SetIntegral(G4bool val); 323 inline G4bool IsIntegral() const; 324 325 // Set/Get flag "isIonisation" 326 inline void SetIonisation(G4bool val); 327 inline G4bool IsIonisationProcess() const; 328 329 // Redefine parameteters for stepping control 330 // 331 inline void SetLinearLossLimit(G4double val); 332 inline void SetMinSubRange(G4double val); 333 inline void SetStepFunction(G4double v1, G4double v2); 334 inline void SetLambdaFactor(G4double val); 335 336 337 // Add subcutoff option for the region 338 void ActivateSubCutoff(G4bool val, const G4Region* region = 0); 339 340 inline G4int NumberOfSubCutoffRegions() const; 341 342 // Activate deexcitation code 343 virtual void ActivateDeexcitation(G4bool, const G4Region* region = 0); 344 345 //------------------------------------------------------------------------ 346 // Public interface to helper functions 347 //------------------------------------------------------------------------ 348 349 inline 350 G4VEmModel* SelectModelForMaterial(G4double kinEnergy, size_t& idx) const; 351 352 inline G4double MeanFreePath(const G4Track& track); 353 354 inline G4double ContinuousStepLimit(const G4Track& track, 355 G4double previousStepSize, 356 G4double currentMinimumStep, 357 G4double& currentSafety); 358 418 359 //------------------------------------------------------------------------ 419 360 // Run time method for simulation of ionisation … … 426 367 inline void SetDynamicMassCharge(G4double massratio, G4double charge2ratio); 427 368 369 // Access to cross section table 370 G4double CrossSectionPerVolume(G4double kineticEnergy, 371 const G4MaterialCutsCouple* couple); 372 373 protected: 374 375 G4PhysicsVector* LambdaPhysicsVector(const G4MaterialCutsCouple*, 376 G4double cut); 377 378 inline G4ParticleChangeForLoss* GetParticleChange(); 379 380 inline void SetParticle(const G4ParticleDefinition* p); 381 382 inline void SetSecondaryParticle(const G4ParticleDefinition* p); 383 384 inline void SelectModel(G4double kinEnergy); 385 386 inline size_t CurrentMaterialCutsCoupleIndex() const; 387 388 inline G4double GetCurrentRange() const; 389 428 390 private: 391 392 //------------------------------------------------------------------------ 393 // Management of tables 394 //------------------------------------------------------------------------ 395 396 void Clear(); 397 398 G4bool StoreTable(const G4ParticleDefinition* p, 399 G4PhysicsTable*, G4bool ascii, 400 const G4String& directory, 401 const G4String& tname); 402 403 G4bool RetrieveTable(const G4ParticleDefinition* p, 404 G4PhysicsTable*, G4bool ascii, 405 const G4String& directory, 406 const G4String& tname, 407 G4bool mandatory); 429 408 430 409 // define material and indexes 431 410 inline void DefineMaterial(const G4MaterialCutsCouple* couple); 432 411 433 //------------------------------------------------------------------------ 434 // Compute values using scaling relation, mass and charge of based particle 435 //------------------------------------------------------------------------ 436 412 // Returnd values for scaled energy using mass of the base particle 413 // 437 414 inline G4double GetDEDXForScaledEnergy(G4double scaledKinEnergy); 438 415 inline G4double GetSubDEDXForScaledEnergy(G4double scaledKinEnergy); … … 441 418 inline G4double GetScaledRangeForScaledEnergy(G4double scaledKinEnergy); 442 419 inline G4double GetLimitScaledRangeForScaledEnergy(G4double scaledKinEnergy); 420 inline G4double GetLambdaForScaledEnergy(G4double scaledKinEnergy); 443 421 inline G4double ScaledKinEnergyForLoss(G4double range); 444 inline G4double GetLambdaForScaledEnergy(G4double scaledKinEnergy);445 422 inline void ComputeLambdaForScaledEnergy(G4double scaledKinEnergy); 446 423 447 424 // hide assignment operator 425 448 426 G4VEnergyLossProcess(G4VEnergyLossProcess &); 449 427 G4VEnergyLossProcess & operator=(const G4VEnergyLossProcess &right); … … 466 444 G4VEmFluctuationModel* fluctModel; 467 445 std::vector<const G4Region*> scoffRegions; 468 std::vector<const G4Region*> deRegions;469 446 G4int nSCoffRegions; 470 G4int nDERegions; 471 G4bool* idxSCoffRegions; 472 G4bool* idxDERegions; 447 G4int* idxSCoffRegions; 473 448 474 449 std::vector<G4VEnergyLossProcess*> scProcesses; … … 518 493 G4bool isIonisation; 519 494 G4bool useSubCutoff; 520 G4bool useDeexcitation;521 495 522 496 protected: … … 557 531 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 558 532 559 inline G4ParticleChangeForLoss* G4VEnergyLossProcess::GetParticleChange() 560 { 561 return &fParticleChange; 562 } 563 564 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 565 566 inline size_t G4VEnergyLossProcess::CurrentMaterialCutsCoupleIndex() const 567 { 568 return currentMaterialIndex; 569 } 570 571 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 572 573 inline G4double G4VEnergyLossProcess::GetCurrentRange() const 574 { 575 return fRange; 576 } 577 578 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 579 580 inline void G4VEnergyLossProcess::SelectModel(G4double kinEnergy) 581 { 582 currentModel = modelManager->SelectModel(kinEnergy, currentMaterialIndex); 583 currentModel->SetCurrentCouple(currentCouple); 584 } 585 586 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 587 588 inline G4VEmModel* G4VEnergyLossProcess::SelectModelForMaterial( 589 G4double kinEnergy, size_t& idx) const 590 { 591 return modelManager->SelectModel(kinEnergy, idx); 592 } 593 594 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 595 596 inline 597 void G4VEnergyLossProcess::AddEmModel(G4int order, G4VEmModel* p, 598 G4VEmFluctuationModel* fluc, 599 const G4Region* region) 600 { 601 modelManager->AddEmModel(order, p, fluc, region); 602 if(p) p->SetParticleChange(pParticleChange, fluc); 603 } 604 605 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 606 607 inline void G4VEnergyLossProcess::UpdateEmModel(const G4String& nam, 608 G4double emin, G4double emax) 609 { 610 modelManager->UpdateEmModel(nam, emin, emax); 611 } 612 613 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 614 615 inline void G4VEnergyLossProcess::SetEmModel(G4VEmModel* p, G4int index) 616 { 617 G4int n = emModels.size(); 618 if(index >= n) for(G4int i=n; i<index+1; i++) {emModels.push_back(0);} 619 emModels[index] = p; 620 } 621 622 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 623 624 inline G4VEmModel* G4VEnergyLossProcess::EmModel(G4int index) 625 { 626 G4VEmModel* p = 0; 627 if(index >= 0 && index < G4int(emModels.size())) p = emModels[index]; 628 return p; 629 } 630 631 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 632 633 inline 634 G4VEmModel* G4VEnergyLossProcess::GetModelByIndex(G4int idx, G4bool ver) 635 { 636 return modelManager->GetModel(idx, ver); 637 } 638 639 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 640 641 inline G4int G4VEnergyLossProcess::NumberOfModels() 642 { 643 return modelManager->NumberOfModels(); 644 } 645 646 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 647 648 inline void G4VEnergyLossProcess::SetFluctModel(G4VEmFluctuationModel* p) 649 { 650 fluctModel = p; 651 } 652 653 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 654 655 inline G4VEmFluctuationModel* G4VEnergyLossProcess::FluctModel() 656 { 657 return fluctModel; 658 } 659 660 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 661 662 inline void G4VEnergyLossProcess::SetParticle(const G4ParticleDefinition* p) 663 { 664 particle = p; 665 } 666 667 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 668 669 inline void G4VEnergyLossProcess::SetSecondaryParticle(const G4ParticleDefinition* p) 670 { 671 secondaryParticle = p; 672 } 673 674 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 675 676 inline void G4VEnergyLossProcess::SetBaseParticle(const G4ParticleDefinition* p) 677 { 678 baseParticle = p; 679 } 680 681 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 682 683 inline const G4ParticleDefinition* G4VEnergyLossProcess::Particle() const 684 { 685 return particle; 686 } 687 688 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 689 690 inline const G4ParticleDefinition* G4VEnergyLossProcess::BaseParticle() const 691 { 692 return baseParticle; 693 } 694 695 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 696 697 inline const G4ParticleDefinition* G4VEnergyLossProcess::SecondaryParticle() const 698 { 699 return secondaryParticle; 700 } 701 702 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 703 704 inline void G4VEnergyLossProcess::SetLossFluctuations(G4bool val) 705 { 706 lossFluctuationFlag = val; 707 } 708 709 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 710 711 inline void G4VEnergyLossProcess::SetRandomStep(G4bool val) 712 { 713 rndmStepFlag = val; 714 } 715 716 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 717 718 inline void G4VEnergyLossProcess::SetIntegral(G4bool val) 719 { 720 integral = val; 721 } 722 723 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 724 725 inline G4bool G4VEnergyLossProcess::IsIntegral() const 726 { 727 return integral; 728 } 729 730 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 731 732 inline void G4VEnergyLossProcess::SetIonisation(G4bool val) 733 { 734 isIonisation = val; 735 if(val) aGPILSelection = CandidateForSelection; 736 else aGPILSelection = NotCandidateForSelection; 737 } 738 739 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 740 741 inline G4bool G4VEnergyLossProcess::IsIonisationProcess() const 742 { 743 return isIonisation; 744 } 745 746 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 747 748 inline void G4VEnergyLossProcess::SetLinearLossLimit(G4double val) 749 { 750 linLossLimit = val; 751 } 752 753 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 754 755 inline void G4VEnergyLossProcess::SetMinSubRange(G4double val) 756 { 757 minSubRange = val; 758 } 759 760 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 761 762 inline void G4VEnergyLossProcess::SetLambdaFactor(G4double val) 763 { 764 if(val > 0.0 && val <= 1.0) lambdaFactor = val; 765 } 766 767 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 768 769 void G4VEnergyLossProcess::SetStepFunction(G4double v1, G4double v2) 770 { 771 dRoverRange = v1; 772 finalRange = v2; 773 if (dRoverRange > 0.999) dRoverRange = 1.0; 774 currentCouple = 0; 775 mfpKinEnergy = DBL_MAX; 776 } 777 778 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 779 780 inline G4int G4VEnergyLossProcess::NumberOfSubCutoffRegions() const 781 { 782 return nSCoffRegions; 783 } 784 785 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 786 787 inline G4int G4VEnergyLossProcess::NumberOfDERegions() const 788 { 789 return nDERegions; 790 } 791 792 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 793 794 inline void G4VEnergyLossProcess::SetDEDXBinning(G4int nbins) 795 { 796 nBins = nbins; 797 } 798 799 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 800 801 inline void G4VEnergyLossProcess::SetLambdaBinning(G4int nbins) 802 { 803 nBins = nbins; 804 } 805 806 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 807 808 inline void G4VEnergyLossProcess::SetDEDXBinningForCSDARange(G4int nbins) 809 { 810 nBinsCSDA = nbins; 811 } 812 813 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 814 815 inline void G4VEnergyLossProcess::SetMinKinEnergy(G4double e) 816 { 817 minKinEnergy = e; 818 } 819 820 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 821 822 inline G4double G4VEnergyLossProcess::MinKinEnergy() const 823 { 824 return minKinEnergy; 825 } 826 827 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 828 829 inline void G4VEnergyLossProcess::SetMaxKinEnergy(G4double e) 830 { 831 maxKinEnergy = e; 832 if(e < maxKinEnergyCSDA) maxKinEnergyCSDA = e; 833 } 834 835 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 836 837 inline G4double G4VEnergyLossProcess::MaxKinEnergy() const 838 { 839 return maxKinEnergy; 840 } 841 842 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 843 844 inline void G4VEnergyLossProcess::SetMaxKinEnergyForCSDARange(G4double e) 845 { 846 maxKinEnergyCSDA = e; 533 inline void G4VEnergyLossProcess::DefineMaterial( 534 const G4MaterialCutsCouple* couple) 535 { 536 if(couple != currentCouple) { 537 currentCouple = couple; 538 currentMaterial = couple->GetMaterial(); 539 currentMaterialIndex = couple->GetIndex(); 540 mfpKinEnergy = DBL_MAX; 541 } 847 542 } 848 543 … … 863 558 DefineMaterial(couple); 864 559 return GetSubDEDXForScaledEnergy(kineticEnergy*massRatio); 560 } 561 562 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 563 564 inline G4double G4VEnergyLossProcess::GetDEDXForScaledEnergy(G4double e) 565 { 566 G4bool b; 567 G4double x = 568 ((*theDEDXTable)[currentMaterialIndex]->GetValue(e, b))*chargeSqRatio; 569 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy); 570 return x; 571 } 572 573 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 574 575 inline G4double G4VEnergyLossProcess::GetSubDEDXForScaledEnergy(G4double e) 576 { 577 G4bool b; 578 G4double x = 579 ((*theDEDXSubTable)[currentMaterialIndex]->GetValue(e, b))*chargeSqRatio; 580 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy); 581 return x; 582 } 583 584 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 585 586 inline G4double G4VEnergyLossProcess::GetIonisationForScaledEnergy(G4double e) 587 { 588 G4bool b; 589 G4double x = 0.0; 590 // if(theIonisationTable) { 591 x = ((*theIonisationTable)[currentMaterialIndex]->GetValue(e, b)) 592 *chargeSqRatio; 593 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy); 594 //} 595 return x; 596 } 597 598 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 599 600 inline 601 G4double G4VEnergyLossProcess::GetSubIonisationForScaledEnergy(G4double e) 602 { 603 G4bool b; 604 G4double x = 0.0; 605 //if(theIonisationSubTable) { 606 x = ((*theIonisationSubTable)[currentMaterialIndex]->GetValue(e, b)) 607 *chargeSqRatio; 608 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy); 609 //} 610 return x; 865 611 } 866 612 … … 897 643 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 898 644 899 inline G4double G4VEnergyLossProcess::GetRangeForLoss(900 G4double& kineticEnergy,901 const G4MaterialCutsCouple* couple)902 {903 DefineMaterial(couple);904 G4double x = DBL_MAX;905 if(theRangeTableForLoss)906 x = GetScaledRangeForScaledEnergy(kineticEnergy*massRatio)*reduceFactor;907 // G4cout << "Range from " << GetProcessName()908 // << " e= " << kineticEnergy << " r= " << x << G4endl;909 return x;910 }911 912 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....913 914 inline G4double G4VEnergyLossProcess::GetKineticEnergy(915 G4double& range,916 const G4MaterialCutsCouple* couple)917 {918 DefineMaterial(couple);919 G4double r = range/reduceFactor;920 G4double e = ScaledKinEnergyForLoss(r)/massRatio;921 return e;922 }923 924 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....925 926 inline G4double G4VEnergyLossProcess::GetLambda(G4double& kineticEnergy,927 const G4MaterialCutsCouple* couple)928 {929 DefineMaterial(couple);930 G4double x = 0.0;931 if(theLambdaTable) x = GetLambdaForScaledEnergy(kineticEnergy*massRatio);932 return x;933 }934 935 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....936 937 inline G4bool G4VEnergyLossProcess::TablesAreBuilt() const938 {939 return tablesAreBuilt;940 }941 942 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....943 944 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTable() const945 {946 return theDEDXTable;947 }948 949 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....950 951 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTableForSubsec() const952 {953 return theDEDXSubTable;954 }955 956 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....957 958 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXunRestrictedTable() const959 {960 return theDEDXunRestrictedTable;961 }962 963 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....964 965 inline G4PhysicsTable* G4VEnergyLossProcess::IonisationTable() const966 {967 G4PhysicsTable* t = theDEDXTable;968 if(theIonisationTable) t = theIonisationTable;969 return t;970 }971 972 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....973 974 inline G4PhysicsTable* G4VEnergyLossProcess::IonisationTableForSubsec() const975 {976 G4PhysicsTable* t = theDEDXSubTable;977 if(theIonisationSubTable) t = theIonisationSubTable;978 return t;979 }980 981 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....982 983 inline G4PhysicsTable* G4VEnergyLossProcess::CSDARangeTable() const984 {985 return theCSDARangeTable;986 }987 988 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....989 990 inline G4PhysicsTable* G4VEnergyLossProcess::RangeTableForLoss() const991 {992 return theRangeTableForLoss;993 }994 995 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....996 997 inline G4PhysicsTable* G4VEnergyLossProcess::InverseRangeTable() const998 {999 return theInverseRangeTable;1000 }1001 1002 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1003 1004 inline G4PhysicsTable* G4VEnergyLossProcess::LambdaTable()1005 {1006 return theLambdaTable;1007 }1008 1009 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1010 1011 inline G4PhysicsTable* G4VEnergyLossProcess::SubLambdaTable()1012 {1013 return theSubLambdaTable;1014 }1015 1016 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1017 1018 inline G4double G4VEnergyLossProcess::SampleRange()1019 {1020 G4double e = amu_c2*preStepKinEnergy/particle->GetPDGMass();1021 G4bool b;1022 G4double s = fRange*std::pow(10.,vstrag->GetValue(e,b));1023 G4double x = fRange + G4RandGauss::shoot(0.0,s);1024 if(x > 0.0) fRange = x;1025 return fRange;1026 }1027 1028 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1029 1030 inline void G4VEnergyLossProcess::SetDynamicMassCharge(G4double massratio,1031 G4double charge2ratio)1032 {1033 massRatio = massratio;1034 chargeSqRatio = charge2ratio;1035 reduceFactor = 1.0/(chargeSqRatio*massRatio);1036 }1037 1038 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1039 1040 inline void G4VEnergyLossProcess::DefineMaterial(1041 const G4MaterialCutsCouple* couple)1042 {1043 if(couple != currentCouple) {1044 currentCouple = couple;1045 currentMaterial = couple->GetMaterial();1046 currentMaterialIndex = couple->GetIndex();1047 mfpKinEnergy = DBL_MAX;1048 }1049 }1050 1051 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1052 1053 inline G4double G4VEnergyLossProcess::GetDEDXForScaledEnergy(G4double e)1054 {1055 G4bool b;1056 G4double x =1057 ((*theDEDXTable)[currentMaterialIndex]->GetValue(e, b))*chargeSqRatio;1058 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);1059 return x;1060 }1061 1062 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1063 1064 inline G4double G4VEnergyLossProcess::GetSubDEDXForScaledEnergy(G4double e)1065 {1066 G4bool b;1067 G4double x =1068 ((*theDEDXSubTable)[currentMaterialIndex]->GetValue(e, b))*chargeSqRatio;1069 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);1070 return x;1071 }1072 1073 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1074 1075 inline G4double G4VEnergyLossProcess::GetIonisationForScaledEnergy(G4double e)1076 {1077 G4bool b;1078 G4double x = 0.0;1079 // if(theIonisationTable) {1080 x = ((*theIonisationTable)[currentMaterialIndex]->GetValue(e, b))1081 *chargeSqRatio;1082 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);1083 //}1084 return x;1085 }1086 1087 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1088 1089 inline1090 G4double G4VEnergyLossProcess::GetSubIonisationForScaledEnergy(G4double e)1091 {1092 G4bool b;1093 G4double x = 0.0;1094 //if(theIonisationSubTable) {1095 x = ((*theIonisationSubTable)[currentMaterialIndex]->GetValue(e, b))1096 *chargeSqRatio;1097 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);1098 //}1099 return x;1100 }1101 1102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1103 1104 inline G4double G4VEnergyLossProcess::GetScaledRangeForScaledEnergy(G4double e)1105 {1106 G4bool b;1107 G4double x = ((*theRangeTableForLoss)[currentMaterialIndex])->GetValue(e, b);1108 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy);1109 return x;1110 }1111 1112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....1113 1114 645 inline G4double G4VEnergyLossProcess::GetLimitScaledRangeForScaledEnergy( 1115 646 G4double e) … … 1126 657 } 1127 658 return x; 659 } 660 661 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 662 663 inline G4double G4VEnergyLossProcess::GetRangeForLoss( 664 G4double& kineticEnergy, 665 const G4MaterialCutsCouple* couple) 666 { 667 DefineMaterial(couple); 668 G4double x = DBL_MAX; 669 if(theRangeTableForLoss) 670 x = GetScaledRangeForScaledEnergy(kineticEnergy*massRatio)*reduceFactor; 671 // G4cout << "Range from " << GetProcessName() 672 // << " e= " << kineticEnergy << " r= " << x << G4endl; 673 return x; 674 } 675 676 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 677 678 inline G4double G4VEnergyLossProcess::GetScaledRangeForScaledEnergy(G4double e) 679 { 680 G4bool b; 681 G4double x = ((*theRangeTableForLoss)[currentMaterialIndex])->GetValue(e, b); 682 if(e < minKinEnergy) x *= std::sqrt(e/minKinEnergy); 683 return x; 684 } 685 686 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 687 688 inline G4double G4VEnergyLossProcess::GetKineticEnergy( 689 G4double& range, 690 const G4MaterialCutsCouple* couple) 691 { 692 DefineMaterial(couple); 693 G4double r = range/reduceFactor; 694 G4double e = ScaledKinEnergyForLoss(r)/massRatio; 695 return e; 1128 696 } 1129 697 … … 1143 711 } 1144 712 return e; 713 } 714 715 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 716 717 inline G4double G4VEnergyLossProcess::GetLambda(G4double& kineticEnergy, 718 const G4MaterialCutsCouple* couple) 719 { 720 DefineMaterial(couple); 721 G4double x = 0.0; 722 if(theLambdaTable) x = GetLambdaForScaledEnergy(kineticEnergy*massRatio); 723 return x; 1145 724 } 1146 725 … … 1179 758 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1180 759 760 inline G4double G4VEnergyLossProcess::ContinuousStepLimit( 761 const G4Track& track, G4double x, G4double y, G4double& z) 762 { 763 G4GPILSelection sel; 764 return AlongStepGetPhysicalInteractionLength(track, x, y, z, &sel); 765 } 766 767 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 768 769 inline G4double G4VEnergyLossProcess::SampleRange() 770 { 771 G4double e = amu_c2*preStepKinEnergy/particle->GetPDGMass(); 772 G4bool b; 773 G4double s = fRange*std::pow(10.,vstrag->GetValue(e,b)); 774 G4double x = fRange + G4RandGauss::shoot(0.0,s); 775 if(x > 0.0) fRange = x; 776 return fRange; 777 } 778 779 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 780 781 inline G4double G4VEnergyLossProcess::MeanFreePath(const G4Track& track) 782 { 783 DefineMaterial(track.GetMaterialCutsCouple()); 784 preStepLambda = GetLambdaForScaledEnergy(track.GetKineticEnergy()*massRatio); 785 G4double x = DBL_MAX; 786 if(DBL_MIN < preStepLambda) x = 1.0/preStepLambda; 787 return x; 788 } 789 790 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 791 792 inline G4double G4VEnergyLossProcess::MinPrimaryEnergy( 793 const G4ParticleDefinition*, const G4Material*, G4double cut) 794 { 795 return cut; 796 } 797 798 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 799 800 inline void G4VEnergyLossProcess::SelectModel(G4double kinEnergy) 801 { 802 currentModel = modelManager->SelectModel(kinEnergy, currentMaterialIndex); 803 } 804 805 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 806 807 inline G4VEmModel* G4VEnergyLossProcess::SelectModelForMaterial( 808 G4double kinEnergy, size_t& idx) const 809 { 810 return modelManager->SelectModel(kinEnergy, idx); 811 } 812 813 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 814 815 inline G4ParticleChangeForLoss* G4VEnergyLossProcess::GetParticleChange() 816 { 817 return &fParticleChange; 818 } 819 820 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 821 822 inline const G4ParticleDefinition* G4VEnergyLossProcess::Particle() const 823 { 824 return particle; 825 } 826 827 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 828 829 inline const G4ParticleDefinition* G4VEnergyLossProcess::BaseParticle() const 830 { 831 return baseParticle; 832 } 833 834 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 835 836 inline const G4ParticleDefinition* G4VEnergyLossProcess::SecondaryParticle() const 837 { 838 return secondaryParticle; 839 } 840 841 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 842 843 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTable() const 844 { 845 return theDEDXTable; 846 } 847 848 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 849 850 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTableForSubsec() const 851 { 852 return theDEDXSubTable; 853 } 854 855 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 856 857 inline G4PhysicsTable* G4VEnergyLossProcess::DEDXunRestrictedTable() const 858 { 859 return theDEDXunRestrictedTable; 860 } 861 862 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 863 864 inline G4PhysicsTable* G4VEnergyLossProcess::IonisationTable() const 865 { 866 G4PhysicsTable* t = theDEDXTable; 867 if(theIonisationTable) t = theIonisationTable; 868 return t; 869 } 870 871 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 872 873 inline G4PhysicsTable* G4VEnergyLossProcess::IonisationTableForSubsec() const 874 { 875 G4PhysicsTable* t = theDEDXSubTable; 876 if(theIonisationSubTable) t = theIonisationSubTable; 877 return t; 878 } 879 880 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 881 882 inline G4PhysicsTable* G4VEnergyLossProcess::CSDARangeTable() const 883 { 884 return theCSDARangeTable; 885 } 886 887 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 888 889 inline G4PhysicsTable* G4VEnergyLossProcess::RangeTableForLoss() const 890 { 891 return theRangeTableForLoss; 892 } 893 894 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 895 896 inline G4PhysicsTable* G4VEnergyLossProcess::InverseRangeTable() const 897 { 898 return theInverseRangeTable; 899 } 900 901 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 902 903 inline G4PhysicsTable* G4VEnergyLossProcess::LambdaTable() 904 { 905 return theLambdaTable; 906 } 907 908 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 909 910 inline G4PhysicsTable* G4VEnergyLossProcess::SubLambdaTable() 911 { 912 return theSubLambdaTable; 913 } 914 915 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 916 917 inline G4bool G4VEnergyLossProcess::IsIntegral() const 918 { 919 return integral; 920 } 921 922 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 923 924 inline size_t G4VEnergyLossProcess::CurrentMaterialCutsCoupleIndex() const 925 { 926 return currentMaterialIndex; 927 } 928 929 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 930 931 inline void G4VEnergyLossProcess::SetDynamicMassCharge(G4double massratio, 932 G4double charge2ratio) 933 { 934 massRatio = massratio; 935 chargeSqRatio = charge2ratio; 936 reduceFactor = 1.0/(chargeSqRatio*massRatio); 937 } 938 939 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 940 941 inline G4double G4VEnergyLossProcess::GetCurrentRange() const 942 { 943 return fRange; 944 } 945 946 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 947 948 inline 949 void G4VEnergyLossProcess::AddEmModel(G4int order, G4VEmModel* p, 950 G4VEmFluctuationModel* fluc, 951 const G4Region* region) 952 { 953 modelManager->AddEmModel(order, p, fluc, region); 954 if(p) p->SetParticleChange(pParticleChange, fluc); 955 } 956 957 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 958 959 inline 960 G4VEmModel* G4VEnergyLossProcess::GetModelByIndex(G4int idx, G4bool ver) 961 { 962 return modelManager->GetModel(idx, ver); 963 } 964 965 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 966 967 inline G4int G4VEnergyLossProcess::NumberOfModels() 968 { 969 return modelManager->NumberOfModels(); 970 } 971 972 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 973 974 inline void G4VEnergyLossProcess::SetEmModel(G4VEmModel* p, G4int index) 975 { 976 G4int n = emModels.size(); 977 if(index >= n) for(G4int i=n; i<index+1; i++) {emModels.push_back(0);} 978 emModels[index] = p; 979 } 980 981 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 982 983 inline G4VEmModel* G4VEnergyLossProcess::EmModel(G4int index) 984 { 985 G4VEmModel* p = 0; 986 if(index >= 0 && index < G4int(emModels.size())) p = emModels[index]; 987 return p; 988 } 989 990 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 991 992 inline void G4VEnergyLossProcess::SetFluctModel(G4VEmFluctuationModel* p) 993 { 994 fluctModel = p; 995 } 996 997 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 998 999 inline G4VEmFluctuationModel* G4VEnergyLossProcess::FluctModel() 1000 { 1001 return fluctModel; 1002 } 1003 1004 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1005 1006 inline void G4VEnergyLossProcess::UpdateEmModel(const G4String& nam, 1007 G4double emin, G4double emax) 1008 { 1009 modelManager->UpdateEmModel(nam, emin, emax); 1010 } 1011 1012 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1013 1014 inline void G4VEnergyLossProcess::SetIntegral(G4bool val) 1015 { 1016 integral = val; 1017 } 1018 1019 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1020 1021 inline void G4VEnergyLossProcess::SetParticle(const G4ParticleDefinition* p) 1022 { 1023 particle = p; 1024 } 1025 1026 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1027 1028 inline void G4VEnergyLossProcess::SetBaseParticle(const G4ParticleDefinition* p) 1029 { 1030 baseParticle = p; 1031 } 1032 1033 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1034 1035 inline void G4VEnergyLossProcess::SetSecondaryParticle(const G4ParticleDefinition* p) 1036 { 1037 secondaryParticle = p; 1038 } 1039 1040 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1041 1042 inline void G4VEnergyLossProcess::SetLinearLossLimit(G4double val) 1043 { 1044 linLossLimit = val; 1045 } 1046 1047 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1048 1049 inline void G4VEnergyLossProcess::SetLossFluctuations(G4bool val) 1050 { 1051 lossFluctuationFlag = val; 1052 } 1053 1054 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1055 1056 inline void G4VEnergyLossProcess::SetRandomStep(G4bool val) 1057 { 1058 rndmStepFlag = val; 1059 } 1060 1061 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1062 1063 inline void G4VEnergyLossProcess::SetMinSubRange(G4double val) 1064 { 1065 minSubRange = val; 1066 } 1067 1068 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1069 1070 inline G4bool G4VEnergyLossProcess::TablesAreBuilt() const 1071 { 1072 return tablesAreBuilt; 1073 } 1074 1075 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1076 1077 inline G4int G4VEnergyLossProcess::NumberOfSubCutoffRegions() const 1078 { 1079 return nSCoffRegions; 1080 } 1081 1082 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1083 1084 inline void G4VEnergyLossProcess::SetDEDXBinning(G4int nbins) 1085 { 1086 nBins = nbins; 1087 } 1088 1089 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1090 1091 inline void G4VEnergyLossProcess::SetLambdaBinning(G4int nbins) 1092 { 1093 nBins = nbins; 1094 } 1095 1096 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1097 1098 inline void G4VEnergyLossProcess::SetDEDXBinningForCSDARange(G4int nbins) 1099 { 1100 nBinsCSDA = nbins; 1101 } 1102 1103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1104 1105 inline G4double G4VEnergyLossProcess::MinKinEnergy() const 1106 { 1107 return minKinEnergy; 1108 } 1109 1110 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1111 1112 inline void G4VEnergyLossProcess::SetMinKinEnergy(G4double e) 1113 { 1114 minKinEnergy = e; 1115 } 1116 1117 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1118 1119 inline void G4VEnergyLossProcess::SetMaxKinEnergy(G4double e) 1120 { 1121 maxKinEnergy = e; 1122 if(e < maxKinEnergyCSDA) maxKinEnergyCSDA = e; 1123 } 1124 1125 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1126 1127 inline void G4VEnergyLossProcess::SetMaxKinEnergyForCSDARange(G4double e) 1128 { 1129 maxKinEnergyCSDA = e; 1130 } 1131 1132 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1133 1134 inline G4double G4VEnergyLossProcess::MaxKinEnergy() const 1135 { 1136 return maxKinEnergy; 1137 } 1138 1139 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1140 1141 inline void G4VEnergyLossProcess::SetLambdaFactor(G4double val) 1142 { 1143 if(val > 0.0 && val <= 1.0) lambdaFactor = val; 1144 } 1145 1146 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1147 1148 inline void G4VEnergyLossProcess::SetIonisation(G4bool val) 1149 { 1150 isIonisation = val; 1151 if(val) aGPILSelection = CandidateForSelection; 1152 else aGPILSelection = NotCandidateForSelection; 1153 } 1154 1155 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1156 1157 inline G4bool G4VEnergyLossProcess::IsIonisationProcess() const 1158 { 1159 return isIonisation; 1160 } 1161 1162 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1163 1164 void G4VEnergyLossProcess::SetStepFunction(G4double v1, G4double v2) 1165 { 1166 dRoverRange = v1; 1167 finalRange = v2; 1168 if (dRoverRange > 0.999) dRoverRange = 1.0; 1169 currentCouple = 0; 1170 mfpKinEnergy = DBL_MAX; 1171 } 1172 1173 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1174 1181 1175 #endif -
trunk/source/processes/electromagnetic/utils/include/G4VMscModel.hh
r966 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VMscModel.hh,v 1. 8 2009/02/24 09:56:03vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VMscModel.hh,v 1.4 2008/03/10 10:39:28 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 54 54 #include "G4MscStepLimitType.hh" 55 55 #include "globals.hh" 56 #include "G4ThreeVector.hh"57 #include "G4Track.hh"58 #include "G4SafetyHelper.hh"59 60 class G4ParticleChangeForMSC;61 56 62 57 class G4VMscModel : public G4VEmModel … … 69 64 virtual ~G4VMscModel(); 70 65 71 // empty72 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,73 const G4MaterialCutsCouple*,74 const G4DynamicParticle*,75 G4double tmin,76 G4double tmax);77 78 //================================================================79 // Set parameters of multiple scattering models80 //================================================================81 82 66 inline void SetStepLimitType(G4MscStepLimitType); 83 67 … … 90 74 inline void SetSkin(G4double); 91 75 92 inline void SetSampleZ(G4bool);93 94 protected:95 96 // initialisation of interface with geometry97 void InitialiseSafetyHelper();98 99 // shift point of the track PostStep100 void ComputeDisplacement(G4ParticleChangeForMSC*,101 const G4ThreeVector& displDir,102 G4double displacement,103 G4double postsafety);104 105 // compute safety106 inline G4double ComputeSafety(const G4ThreeVector& position, G4double limit);107 108 // compute linear distance to a geometry boundary109 inline G4double ComputeGeomLimit(const G4Track& position, G4double& presafety,110 G4double limit);111 112 76 private: 113 77 … … 115 79 G4VMscModel & operator=(const G4VMscModel &right); 116 80 G4VMscModel(const G4VMscModel&); 117 118 G4SafetyHelper* safetyHelper;119 81 120 82 protected: … … 126 88 G4double dtrl; 127 89 G4double lambdalimit; 128 G4double geommax;129 90 130 91 G4MscStepLimitType steppingAlgorithm; … … 173 134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 174 135 175 inline void G4VMscModel::SetSampleZ(G4bool val)176 {177 samplez = val;178 }179 180 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......181 182 inline G4double G4VMscModel::ComputeSafety(const G4ThreeVector& position,183 G4double)184 {185 return safetyHelper->ComputeSafety(position);186 }187 188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......189 190 inline G4double G4VMscModel::ComputeGeomLimit(const G4Track& track,191 G4double& presafety,192 G4double limit)193 {194 G4double res = geommax;195 if(track.GetVolume() != safetyHelper->GetWorldVolume()) {196 res = safetyHelper->CheckNextStep(197 track.GetStep()->GetPreStepPoint()->GetPosition(),198 track.GetMomentumDirection(),199 limit, presafety);200 }201 return res;202 }203 204 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......205 206 136 #endif 207 137 -
trunk/source/processes/electromagnetic/utils/include/G4VMultipleScattering.hh
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VMultipleScattering.hh,v 1.5 5 2009/02/18 12:19:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VMultipleScattering.hh,v 1.54 2008/07/31 13:01:26 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 145 145 G4bool ascii); 146 146 147 //------------------------------------------------------------------------ 148 // Specific methods for msc processes 149 //------------------------------------------------------------------------ 150 147 151 // The function overloads the corresponding function of the base 148 152 // class.It limits the step near to boundaries only 149 153 // and invokes the method GetMscContinuousStepLimit at every step. 150 G4double AlongStepGetPhysicalInteractionLength(154 virtual G4double AlongStepGetPhysicalInteractionLength( 151 155 const G4Track&, 152 156 G4double previousStepSize, … … 188 192 inline G4PhysicsTable* LambdaTable() const; 189 193 190 // access particle type 194 //------------------------------------------------------------------------ 195 // Define and access particle type 196 //------------------------------------------------------------------------ 197 191 198 inline const G4ParticleDefinition* Particle() const; 199 inline void SetParticle(const G4ParticleDefinition*); 192 200 193 201 //------------------------------------------------------------------------ … … 195 203 //------------------------------------------------------------------------ 196 204 197 protected: 198 // Select model in run time 199 inline G4VEmModel* SelectModel(G4double kinEnergy); 200 201 public: 202 // Select model in run time 205 inline void AddEmModel(G4int, G4VEmModel*, const G4Region* region = 0); 206 203 207 inline G4VEmModel* SelectModelForMaterial(G4double kinEnergy, 204 208 size_t& idxRegion) const; 205 209 206 // Add model for region, smaller value of order defines which 207 // model will be selected for a given energy interval 208 inline void AddEmModel(G4int order, G4VEmModel*, const G4Region* region = 0); 209 210 // Access to models by index 210 // Access to models 211 211 inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false); 212 212 213 213 //------------------------------------------------------------------------ 214 // Get/Set parameters for simulation of multiple scattering 215 //------------------------------------------------------------------------ 216 217 inline G4bool LateralDisplasmentFlag() const; 214 // Set parameters for simulation of multiple scattering 215 //------------------------------------------------------------------------ 216 218 217 inline void SetLateralDisplasmentFlag(G4bool val); 219 218 220 inline G4double Skin() const;221 219 inline void SetSkin(G4double val); 222 220 223 inline G4double RangeFactor() const;224 221 inline void SetRangeFactor(G4double val); 225 222 226 inline G4double GeomFactor() const;227 223 inline void SetGeomFactor(G4double val); 228 224 229 inline G4double PolarAngleLimit() const;230 225 inline void SetPolarAngleLimit(G4double val); 231 226 232 inline G4MscStepLimitType StepLimitType() const;233 227 inline void SetStepLimitType(G4MscStepLimitType val); 234 235 //------------------------------------------------------------------------236 // Run time methods237 //------------------------------------------------------------------------238 228 239 229 protected: … … 243 233 G4double, 244 234 G4ForceCondition* condition); 235 236 //------------------------------------------------------------------------ 237 // Run time methods 238 //------------------------------------------------------------------------ 245 239 246 240 // This method is not used for tracking, it returns step limit … … 259 253 G4double& currentSafety); 260 254 255 inline G4VEmModel* SelectModel(G4double kinEnergy); 256 // Select concrete model 257 258 inline const G4MaterialCutsCouple* CurrentMaterialCutsCouple() const; 259 261 260 // define current material 262 261 inline void DefineMaterial(const G4MaterialCutsCouple* couple); 263 262 264 inline const G4MaterialCutsCouple* CurrentMaterialCutsCouple() const; 263 //------------------------------------------------------------------------ 264 // Access parameters of multiple scattering 265 //------------------------------------------------------------------------ 265 266 266 267 inline G4ParticleChangeForMSC* GetParticleChange(); 267 268 269 inline G4double Skin() const; 270 271 inline G4double RangeFactor() const; 272 273 inline G4double GeomFactor() const; 274 275 inline G4double PolarAngleLimit() const; 276 277 inline G4MscStepLimitType StepLimitType() const; 278 279 inline G4bool LateralDisplasmentFlag() const; 268 280 269 281 private: 270 282 271 283 // hide assignment operator 284 272 285 G4VMultipleScattering(G4VMultipleScattering &); 273 286 G4VMultipleScattering & operator=(const G4VMultipleScattering &right); … … 317 330 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 318 331 319 inline G4double G4VMultipleScattering::ContinuousStepLimit(320 const G4Track& track,321 G4double previousStepSize,322 G4double currentMinimalStep,323 G4double& currentSafety)324 {325 return GetMscContinuousStepLimit(track,previousStepSize,currentMinimalStep,326 currentSafety);327 }328 329 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....330 331 inline void G4VMultipleScattering::SetBinning(G4int nbins)332 {333 nBins = nbins;334 }335 336 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....337 338 inline G4int G4VMultipleScattering::Binning() const339 {340 return nBins;341 }342 343 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....344 345 inline void G4VMultipleScattering::SetMinKinEnergy(G4double e)346 {347 minKinEnergy = e;348 }349 350 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....351 352 inline G4double G4VMultipleScattering::MinKinEnergy() const353 {354 return minKinEnergy;355 }356 357 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....358 359 inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e)360 {361 maxKinEnergy = e;362 }363 364 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....365 366 inline G4double G4VMultipleScattering::MaxKinEnergy() const367 {368 return maxKinEnergy;369 }370 371 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....372 373 inline void G4VMultipleScattering::SetBuildLambdaTable(G4bool val)374 {375 buildLambdaTable = val;376 }377 378 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....379 380 inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const381 {382 return theLambdaTable;383 }384 385 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....386 387 inline const G4ParticleDefinition* G4VMultipleScattering::Particle() const388 {389 return currentParticle;390 }391 392 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....393 394 inline void G4VMultipleScattering::AddEmModel(G4int order, G4VEmModel* p,395 const G4Region* region)396 {397 G4VEmFluctuationModel* fm = 0;398 modelManager->AddEmModel(order, p, fm, region);399 if(p) p->SetParticleChange(pParticleChange);400 }401 402 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....403 404 inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy)405 {406 return modelManager->SelectModel(kinEnergy, currentMaterialIndex);407 }408 409 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....410 411 inline G4VEmModel* G4VMultipleScattering::SelectModelForMaterial(412 G4double kinEnergy, size_t& idxRegion) const413 {414 return modelManager->SelectModel(kinEnergy, idxRegion);415 }416 417 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....418 419 332 inline 420 G4VEmModel* G4VMultipleScattering::GetModelByIndex(G4int idx, G4bool ver) 421 { 422 return modelManager->GetModel(idx, ver); 423 } 424 425 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 426 427 inline G4bool G4VMultipleScattering::LateralDisplasmentFlag() const 428 { 429 return latDisplasment; 430 } 431 432 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 433 434 inline void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val) 435 { 436 latDisplasment = val; 437 } 438 439 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 440 441 inline G4double G4VMultipleScattering::Skin() const 442 { 443 return skin; 444 } 445 446 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 447 448 inline void G4VMultipleScattering::SetSkin(G4double val) 449 { 450 if(val < 1.0) skin = 0.0; 451 else skin = val; 452 } 453 454 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 455 456 inline G4double G4VMultipleScattering::RangeFactor() const 457 { 458 return facrange; 459 } 460 461 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 462 463 inline void G4VMultipleScattering::SetRangeFactor(G4double val) 464 { 465 if(val > 0.0) facrange = val; 466 } 467 468 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 469 470 inline G4double G4VMultipleScattering::GeomFactor() const 471 { 472 return facgeom; 473 } 474 475 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 476 477 inline void G4VMultipleScattering::SetGeomFactor(G4double val) 478 { 479 if(val > 0.0) facgeom = val; 480 } 481 482 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 483 484 inline G4double G4VMultipleScattering::PolarAngleLimit() const 485 { 486 return polarAngleLimit; 487 } 488 489 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 490 491 inline void G4VMultipleScattering::SetPolarAngleLimit(G4double val) 492 { 493 if(val < 0.0) polarAngleLimit = 0.0; 494 else if(val > pi) polarAngleLimit = pi; 495 else polarAngleLimit = val; 496 } 497 498 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 499 500 inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const 501 { 502 return stepLimit; 503 } 504 505 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 506 507 inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val) 508 { 509 stepLimit = val; 510 if(val == fMinimal) facrange = 0.2; 511 } 512 513 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 514 515 inline 516 G4double G4VMultipleScattering::GetLambda(const G4ParticleDefinition* p, 517 G4double& e) 518 { 519 G4double x; 520 if(theLambdaTable) { 521 G4bool b; 522 x = ((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b); 523 } else { 524 x = currentModel->CrossSection(currentCouple,p,e); 333 void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple) 334 { 335 if(couple != currentCouple) { 336 currentCouple = couple; 337 currentMaterialIndex = couple->GetIndex(); 525 338 } 526 if(x > DBL_MIN) x = 1./x;527 else x = DBL_MAX;528 return x;529 339 } 530 340 … … 554 364 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 555 365 366 inline G4double G4VMultipleScattering::ContinuousStepLimit( 367 const G4Track& track, 368 G4double previousStepSize, 369 G4double currentMinimalStep, 370 G4double& currentSafety) 371 { 372 return GetMscContinuousStepLimit(track,previousStepSize,currentMinimalStep, 373 currentSafety); 374 } 375 376 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 377 556 378 inline 557 void G4VMultipleScattering::DefineMaterial(const G4MaterialCutsCouple* couple) 558 { 559 if(couple != currentCouple) { 560 currentCouple = couple; 561 currentMaterialIndex = couple->GetIndex(); 379 G4double G4VMultipleScattering::GetLambda(const G4ParticleDefinition* p, 380 G4double& e) 381 { 382 G4double x; 383 if(theLambdaTable) { 384 G4bool b; 385 x = ((*theLambdaTable)[currentMaterialIndex])->GetValue(e, b); 386 } else { 387 x = currentModel->CrossSection(currentCouple,p,e); 562 388 } 563 } 564 565 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 566 567 inline const G4MaterialCutsCouple* 568 G4VMultipleScattering::CurrentMaterialCutsCouple() const 389 if(x > DBL_MIN) x = 1./x; 390 else x = DBL_MAX; 391 return x; 392 } 393 394 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 395 396 inline G4VEmModel* G4VMultipleScattering::SelectModel(G4double kinEnergy) 397 { 398 return modelManager->SelectModel(kinEnergy, currentMaterialIndex); 399 } 400 401 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 402 403 inline G4VEmModel* G4VMultipleScattering::SelectModelForMaterial( 404 G4double kinEnergy, size_t& idxRegion) const 405 { 406 return modelManager->SelectModel(kinEnergy, idxRegion); 407 } 408 409 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 410 411 inline void G4VMultipleScattering::SetBinning(G4int nbins) 412 { 413 nBins = nbins; 414 } 415 416 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 417 418 inline G4int G4VMultipleScattering::Binning() const 419 { 420 return nBins; 421 } 422 423 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 424 425 inline void G4VMultipleScattering::SetMinKinEnergy(G4double e) 426 { 427 minKinEnergy = e; 428 } 429 430 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 431 432 inline G4double G4VMultipleScattering::MinKinEnergy() const 433 { 434 return minKinEnergy; 435 } 436 437 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 438 439 inline void G4VMultipleScattering::SetMaxKinEnergy(G4double e) 440 { 441 maxKinEnergy = e; 442 } 443 444 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 445 446 inline G4double G4VMultipleScattering::MaxKinEnergy() const 447 { 448 return maxKinEnergy; 449 } 450 451 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 452 453 inline G4bool G4VMultipleScattering::LateralDisplasmentFlag() const 454 { 455 return latDisplasment; 456 } 457 458 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 459 460 inline void G4VMultipleScattering::SetLateralDisplasmentFlag(G4bool val) 461 { 462 latDisplasment = val; 463 } 464 465 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 466 467 inline G4ParticleChangeForMSC* G4VMultipleScattering::GetParticleChange() 468 { 469 return &fParticleChange; 470 } 471 472 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 473 474 inline G4double G4VMultipleScattering::Skin() const 475 { 476 return skin; 477 } 478 479 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 480 481 inline void G4VMultipleScattering::SetSkin(G4double val) 482 { 483 if(val < 1.0) skin = 0.0; 484 else skin = val; 485 } 486 487 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 488 489 inline G4double G4VMultipleScattering::RangeFactor() const 490 { 491 return facrange; 492 } 493 494 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 495 496 inline void G4VMultipleScattering::SetRangeFactor(G4double val) 497 { 498 if(val > 0.0) facrange = val; 499 } 500 501 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 502 503 inline G4double G4VMultipleScattering::GeomFactor() const 504 { 505 return facgeom; 506 } 507 508 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 509 510 inline void G4VMultipleScattering::SetGeomFactor(G4double val) 511 { 512 if(val > 0.0) facgeom = val; 513 } 514 515 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 516 517 inline G4double G4VMultipleScattering::PolarAngleLimit() const 518 { 519 return polarAngleLimit; 520 } 521 522 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 523 524 inline void G4VMultipleScattering::SetPolarAngleLimit(G4double val) 525 { 526 if(val < 0.0) polarAngleLimit = 0.0; 527 else if(val > pi) polarAngleLimit = pi; 528 else polarAngleLimit = val; 529 } 530 531 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 532 533 inline G4MscStepLimitType G4VMultipleScattering::StepLimitType() const 534 { 535 return stepLimit; 536 } 537 538 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 539 540 inline void G4VMultipleScattering::SetStepLimitType(G4MscStepLimitType val) 541 { 542 stepLimit = val; 543 if(val == fMinimal) facrange = 0.2; 544 } 545 546 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 547 548 inline void G4VMultipleScattering::SetBuildLambdaTable(G4bool val) 549 { 550 buildLambdaTable = val; 551 } 552 553 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 554 555 inline const G4ParticleDefinition* G4VMultipleScattering::Particle() const 556 { 557 return currentParticle; 558 } 559 560 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 561 562 inline G4PhysicsTable* G4VMultipleScattering::LambdaTable() const 563 { 564 return theLambdaTable; 565 } 566 567 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 568 569 inline 570 const G4MaterialCutsCouple* G4VMultipleScattering::CurrentMaterialCutsCouple() const 569 571 { 570 572 return currentCouple; … … 573 575 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 574 576 575 inline G4ParticleChangeForMSC* G4VMultipleScattering::GetParticleChange() 576 { 577 return &fParticleChange; 577 inline void G4VMultipleScattering::AddEmModel(G4int order, G4VEmModel* p, 578 const G4Region* region) 579 { 580 G4VEmFluctuationModel* fm = 0; 581 modelManager->AddEmModel(order, p, fm, region); 582 if(p) p->SetParticleChange(pParticleChange); 583 } 584 585 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 586 587 inline 588 G4VEmModel* G4VMultipleScattering::GetModelByIndex(G4int idx, G4bool ver) 589 { 590 return modelManager->GetModel(idx, ver); 578 591 } 579 592 -
trunk/source/processes/electromagnetic/utils/src/G4EmCalculator.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4EmCalculator.cc,v 1.4 6 2009/02/24 09:56:03vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4EmCalculator.cc,v 1.44 2008/08/03 18:47:15 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 755 755 if(currentProcess) currentProcessName = currentProcess->GetProcessName(); 756 756 757 if(p->GetParticleType() == "nucleus" 758 && currentParticleName != "deuteron" 759 && currentParticleName != "triton" 760 && currentParticleName != "alpha+" 761 && currentParticleName != "helium" 762 && currentParticleName != "hydrogen" 763 ) { 757 if(p->GetParticleType() == "nucleus" && 758 currentParticleName != "deuteron" && currentParticleName != "triton") { 764 759 baseParticle = theGenericIon; 765 760 massRatio = baseParticle->GetPDGMass()/p->GetPDGMass(); -
trunk/source/processes/electromagnetic/utils/src/G4EmConfigurator.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4EmConfigurator.cc,v 1. 4 2009/02/26 11:33:33vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4EmConfigurator.cc,v 1.3 2008/11/21 12:30:29 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 117 117 G4String fname = ""; 118 118 if(fm) fname = fm->GetName(); 119 G4String mname = ""; 120 if(mod) mname = mod->GetName(); 121 AddModelForRegion(particleName, processName, mname, regionName, 119 AddModelForRegion(particleName, processName, mod->GetName(), regionName, 122 120 emin, emax, fname); 123 121 } … … 205 203 206 204 for(G4int i=0; i<nm; i++) { 207 G4String mname = ""; 208 if(modelList[i]) mname = modelList[i]->GetName(); 209 G4String fname = ""; 210 if(flucModelList[i]) fname = flucModelList[i]->GetName(); 211 if(modelName == mname && flucModelName == fname && 205 if(modelName == modelList[i]->GetName() && 212 206 (particleList[i] == "" || particleList[i] == particleName) ) { 213 207 mod = modelList[i]; … … 220 214 221 215 if(!mod) { 222 223 // set fluctuation model for ionisation processes 224 if(fluc && ptype == eloss) { 225 G4VEnergyLossProcess* p = reinterpret_cast<G4VEnergyLossProcess*>(proc); 226 p->SetFluctModel(fluc); 227 228 } else { 229 G4cout << "### G4EmConfigurator WARNING: fails to find a model <" 230 << modelName << "> for process <" 231 << processName << "> and " << particleName 232 << G4endl; 233 if(flucModelName != "") { 234 G4cout << " fluctuation model <" 235 << flucModelName << G4endl; 236 } 237 } 216 G4cout << "### G4EmConfigurator WARNING: fails to find a model <" 217 << modelName << "> for process <" 218 << processName << "> and " << particleName 219 << G4endl; 220 if(flucModelName != "") 221 G4cout << " fluctuation model <" 222 << flucModelName << G4endl; 238 223 } else { 239 224 -
trunk/source/processes/electromagnetic/utils/src/G4EmProcessOptions.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4EmProcessOptions.cc,v 1.2 6 2009/02/18 14:43:27 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4EmProcessOptions.cc,v 1.24 2008/04/17 10:33:27 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 59 59 #include "G4VMultipleScattering.hh" 60 60 #include "G4Region.hh" 61 #include "G4RegionStore.hh"62 61 63 62 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... … … 393 392 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 394 393 395 void G4EmProcessOptions::ActivateDeexcitation(const G4String& pname, 396 G4bool val, 397 const G4String& reg) 398 { 399 G4RegionStore* regionStore = G4RegionStore::GetInstance(); 400 const G4Region* r = 0; 401 if(reg == "" || reg == "World") { 402 r = regionStore->GetRegion("DefaultRegionForTheWorld", false); 403 } else { 404 r = regionStore->GetRegion(reg, false); 405 } 406 if(!r) { 407 G4cout << "G4EmProcessOptions::ActivateDeexcitation ERROR: G4Region <" 408 << reg << "> not found, the command ignored" << G4endl; 409 return; 410 } 411 412 const std::vector<G4VEnergyLossProcess*>& v = 413 theManager->GetEnergyLossProcessVector(); 414 std::vector<G4VEnergyLossProcess*>::const_iterator itr; 415 for(itr = v.begin(); itr != v.end(); itr++) { 416 G4VEnergyLossProcess* p = *itr; 417 if(p) { 418 if(pname == p->GetProcessName()) p->ActivateDeexcitation(val,r); 419 } 420 } 421 const std::vector<G4VEmProcess*>& w = 422 theManager->GetEmProcessVector(); 423 std::vector<G4VEmProcess*>::const_iterator itp; 424 for(itp = w.begin(); itp != w.end(); itp++) { 425 G4VEmProcess* q = *itp; 426 if(q) { 427 if(pname == q->GetProcessName()) q->ActivateDeexcitation(val,r); 428 } 394 void G4EmProcessOptions::ActivateDeexcitation(G4bool val, const G4Region* r) 395 { 396 const std::vector<G4VEnergyLossProcess*>& v = 397 theManager->GetEnergyLossProcessVector(); 398 std::vector<G4VEnergyLossProcess*>::const_iterator itr; 399 for(itr = v.begin(); itr != v.end(); itr++) { 400 G4VEnergyLossProcess* p = *itr; 401 if(p) p->ActivateDeexcitation(val,r); 402 } 403 const std::vector<G4VEmProcess*>& w = 404 theManager->GetEmProcessVector(); 405 std::vector<G4VEmProcess*>::const_iterator itp; 406 for(itp = w.begin(); itp != w.end(); itp++) { 407 G4VEmProcess* q = *itp; 408 if(q) q->ActivateDeexcitation(val,r); 429 409 } 430 410 } -
trunk/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc
r961 r991 25 25 // 26 26 // 27 // $Id: G4EnergyLossMessenger.cc,v 1.3 7 2009/02/18 14:43:27vnivanch Exp $28 // GEANT4 tag $Name: geant4-09-02 -ref-02$27 // $Id: G4EnergyLossMessenger.cc,v 1.35 2008/10/20 13:27:45 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-02 $ 29 29 // 30 30 // ------------------------------------------------------------------- … … 178 178 aplCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 179 179 180 deexCmd = new G4UIcommand("/process/em/deexcitation",this);181 deexCmd->SetGuidance("Set deexcitation flag per process and G4Region.");182 deexCmd->SetGuidance(" procName : process name");183 deexCmd->SetGuidance(" flag : flag");184 deexCmd->SetGuidance(" regName : G4Region name");185 186 G4UIparameter* pName = new G4UIparameter("pName",'s',false);187 deexCmd->SetParameter(pName);188 189 G4UIparameter* flag = new G4UIparameter("flag",'s',false);190 deexCmd->SetParameter(flag);191 192 G4UIparameter* regName = new G4UIparameter("regName",'s',false);193 deexCmd->SetParameter(regName);194 195 180 dedxCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsDEDX",this); 196 181 dedxCmd->SetGuidance("Set number of bins for DEDX tables"); … … 274 259 delete MinSubSecCmd; 275 260 delete StepFuncCmd; 276 delete deexCmd;277 261 delete eLossDirectory; 278 262 delete mscDirectory; … … 336 320 } 337 321 338 if (command == deexCmd) {339 G4String s1 (""), s2(""), s3("");340 G4bool b = false;341 std::istringstream is(newValue);342 is >> s1 >> s2 >> s3;343 if(s2 == "true") b = true;344 opt->ActivateDeexcitation(s1,b,s3);345 }346 347 322 if (command == mscCmd) { 348 323 if(newValue == "Minimal") -
trunk/source/processes/electromagnetic/utils/src/G4LossTableBuilder.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LossTableBuilder.cc,v 1.2 8 2009/02/18 16:24:47vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4LossTableBuilder.cc,v 1.27 2008/07/22 15:55:15 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 132 132 G4double dedx1 = pv->GetValue(elow, b); 133 133 134 //G4cout << "nbins= " << nbins << " dedx1= " << dedx1 << G4endl;135 136 134 // protection for specific cases dedx=0 137 135 if(dedx1 == 0.0) { 138 for (size_t k=1; k<nbins -1; k++) {136 for (size_t k=1; k<nbins; k++) { 139 137 bin0++; 140 138 elow = pv->GetLowEdgeEnergy(k); … … 145 143 } 146 144 147 //G4cout << "nbins= " << nbins << " elow= " << elow << " ehigh= " << ehigh << G4endl;148 145 // initialisation of a new vector 149 146 G4PhysicsLogVector* v = new G4PhysicsLogVector(elow, ehigh, nbins); 150 // dedx is exect zero151 if(nbins <= 2) {152 v->PutValue(0,1000.);153 v->PutValue(1,2000.);154 G4PhysicsTableHelper::SetPhysicsVector(rangeTable, i, v);155 return;156 }157 147 v->SetSpline(splineFlag); 158 148 -
trunk/source/processes/electromagnetic/utils/src/G4VEmFluctuationModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEmFluctuationModel.cc,v 1. 4 2009/02/19 11:25:50vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VEmFluctuationModel.cc,v 1.3 2008/07/15 16:56:39 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 65 65 } 66 66 67 void G4VEmFluctuationModel::InitialiseMe(const G4ParticleDefinition*)68 {}69 67 70 void G4VEmFluctuationModel::SetParticleAndCharge(const G4ParticleDefinition*,71 G4double)72 {}73 74 -
trunk/source/processes/electromagnetic/utils/src/G4VEmModel.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEmModel.cc,v 1.2 5 2009/02/19 09:57:36 vnivanchExp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VEmModel.cc,v 1.20 2008/11/13 23:13:18 schaelic Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 41 41 // 25.10.2005 Set default highLimit=100.TeV (V.Ivanchenko) 42 42 // 06.02.2006 add method ComputeMeanFreePath() (mma) 43 // 16.02.2009 Move implementations of virtual methods to source (VI)44 43 // 45 44 // … … 61 60 fluc(0), name(nam), lowLimit(0.1*keV), highLimit(100.0*TeV), 62 61 polarAngleLimit(0.0),secondaryThreshold(DBL_MAX),theLPMflag(false), 63 pParticleChange(0),nuclearStopping(false), 64 currentCouple(0),currentElement(0), 65 nsec(5),flagDeexcitation(false) 62 pParticleChange(0),nuclearStopping(false),nsec(5) 66 63 { 67 64 xsec.resize(nsec); … … 85 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 86 83 84 G4double G4VEmModel::CrossSectionPerVolume(const G4Material* material, 85 const G4ParticleDefinition* p, 86 G4double ekin, 87 G4double emin, 88 G4double emax) 89 { 90 SetupForMaterial(p, material, ekin); 91 G4double cross = 0.0; 92 const G4ElementVector* theElementVector = material->GetElementVector(); 93 const G4double* theAtomNumDensityVector = material->GetVecNbOfAtomsPerVolume(); 94 G4int nelm = material->GetNumberOfElements(); 95 if(nelm > nsec) { 96 xsec.resize(nelm); 97 nsec = nelm; 98 } 99 for (G4int i=0; i<nelm; i++) { 100 cross += theAtomNumDensityVector[i]* 101 ComputeCrossSectionPerAtom(p,(*theElementVector)[i],ekin,emin,emax); 102 xsec[i] = cross; 103 } 104 return cross; 105 } 106 107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 108 109 G4double G4VEmModel::ComputeMeanFreePath(const G4ParticleDefinition* p, 110 G4double ekin, 111 const G4Material* material, 112 G4double emin, 113 G4double emax) 114 { 115 G4double mfp = DBL_MAX; 116 G4double cross = CrossSectionPerVolume(material,p,ekin,emin,emax); 117 if (cross > DBL_MIN) mfp = 1./cross; 118 return mfp; 119 } 120 121 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 122 87 123 void G4VEmModel::InitialiseElementSelectors(const G4ParticleDefinition* p, 88 124 const G4DataVector& cuts) 89 125 { 90 // initialise before run91 flagDeexcitation = false;92 93 126 G4int nbins = G4int(std::log10(highLimit/lowLimit) + 0.5); 94 127 if(nbins < 3) nbins = 3; … … 129 162 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 130 163 131 G4double G4VEmModel::ComputeDEDXPerVolume(const G4Material*,132 const G4ParticleDefinition*,133 G4double,G4double)134 {135 return 0.0;136 }137 164 138 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......139 140 G4double G4VEmModel::CrossSectionPerVolume(const G4Material* material,141 const G4ParticleDefinition* p,142 G4double ekin,143 G4double emin,144 G4double emax)145 {146 SetupForMaterial(p, material, ekin);147 G4double cross = 0.0;148 const G4ElementVector* theElementVector = material->GetElementVector();149 const G4double* theAtomNumDensityVector = material->GetVecNbOfAtomsPerVolume();150 G4int nelm = material->GetNumberOfElements();151 if(nelm > nsec) {152 xsec.resize(nelm);153 nsec = nelm;154 }155 for (G4int i=0; i<nelm; i++) {156 cross += theAtomNumDensityVector[i]*157 ComputeCrossSectionPerAtom(p,(*theElementVector)[i],ekin,emin,emax);158 xsec[i] = cross;159 }160 return cross;161 }162 163 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......164 165 G4double G4VEmModel::ComputeCrossSectionPerAtom(const G4ParticleDefinition*,166 G4double, G4double, G4double,167 G4double, G4double)168 {169 return 0.0;170 }171 172 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......173 174 G4double G4VEmModel::MinEnergyCut(const G4ParticleDefinition*,175 const G4MaterialCutsCouple*)176 {177 return 0.0;178 }179 180 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......181 182 G4double G4VEmModel::GetChargeSquareRatio(const G4ParticleDefinition* p,183 const G4Material*, G4double)184 {185 G4double q = p->GetPDGCharge()/CLHEP::eplus;186 return q*q;187 }188 189 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......190 191 G4double G4VEmModel::GetParticleCharge(const G4ParticleDefinition* p,192 const G4Material*, G4double)193 {194 return p->GetPDGCharge();195 }196 197 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......198 199 void G4VEmModel::CorrectionsAlongStep(const G4MaterialCutsCouple*,200 const G4DynamicParticle*,201 G4double&,G4double&,G4double)202 {}203 204 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......205 206 void G4VEmModel::SampleDeexcitationAlongStep(const G4Material*,207 const G4Track&,208 G4double& )209 {}210 211 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......212 213 G4double G4VEmModel::MaxSecondaryEnergy(const G4ParticleDefinition*,214 G4double kineticEnergy)215 {216 return kineticEnergy;217 }218 219 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......220 221 void G4VEmModel::SampleScattering(const G4DynamicParticle*, G4double)222 {}223 224 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......225 226 G4double G4VEmModel::ComputeTruePathLengthLimit(const G4Track&,227 G4PhysicsTable*,228 G4double)229 {230 return DBL_MAX;231 }232 233 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......234 235 G4double G4VEmModel::ComputeGeomPathLength(G4double truePathLength)236 {237 return truePathLength;238 }239 240 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......241 242 G4double G4VEmModel::ComputeTrueStepLength(G4double geomPathLength)243 {244 return geomPathLength;245 }246 247 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......248 249 void G4VEmModel::DefineForRegion(const G4Region*)250 {}251 252 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......253 254 void G4VEmModel::SetupForMaterial(const G4ParticleDefinition*,255 const G4Material*, G4double)256 {}257 258 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -
trunk/source/processes/electromagnetic/utils/src/G4VEmProcess.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEmProcess.cc,v 1.6 2 2009/02/19 09:57:36 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VEmProcess.cc,v 1.60 2008/10/17 14:46:16 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 91 91 applyCuts(false), 92 92 startFromNull(true), 93 useDeexcitation(false), 94 nDERegions(0), 95 idxDERegions(0), 96 currentModel(0), 93 nRegions(0), 94 selectedModel(0), 97 95 particle(0), 98 96 currentCouple(0) … … 137 135 delete modelManager; 138 136 (G4LossTableManager::Instance())->DeRegister(this); 139 }140 141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....142 143 void G4VEmProcess::Clear()144 {145 delete [] theEnergyOfCrossSectionMax;146 delete [] theCrossSectionMax;147 delete [] idxDERegions;148 theEnergyOfCrossSectionMax = 0;149 theCrossSectionMax = 0;150 idxDERegions = 0;151 currentCouple = 0;152 preStepLambda = 0.0;153 mfpKinEnergy = DBL_MAX;154 deRegions.clear();155 nDERegions = 0;156 137 } 157 138 … … 181 162 theLambdaTable = G4PhysicsTableHelper::PreparePhysicsTable(theLambdaTable); 182 163 } 183 // Sub Cutoff and Deexcitation 184 if (nDERegions>0) { 185 186 const G4ProductionCutsTable* theCoupleTable= 187 G4ProductionCutsTable::GetProductionCutsTable(); 188 size_t numOfCouples = theCoupleTable->GetTableSize(); 189 190 idxDERegions = new G4bool[numOfCouples]; 191 192 for (size_t j=0; j<numOfCouples; j++) { 193 194 const G4MaterialCutsCouple* couple = 195 theCoupleTable->GetMaterialCutsCouple(j); 196 const G4ProductionCuts* pcuts = couple->GetProductionCuts(); 197 G4bool reg = false; 198 for(G4int i=0; i<nDERegions; i++) { 199 if(deRegions[i]) { 200 if(pcuts == deRegions[i]->GetProductionCuts()) reg = true; 201 } 202 } 203 idxDERegions[j] = reg; 204 } 205 } 206 if (1 < verboseLevel && nDERegions>0) { 207 G4cout << " Deexcitation is activated for regions: " << G4endl; 208 for (G4int i=0; i<nDERegions; i++) { 209 const G4Region* r = deRegions[i]; 210 G4cout << " " << r->GetName() << G4endl; 211 } 212 } 164 } 165 166 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 167 168 void G4VEmProcess::Clear() 169 { 170 if(theEnergyOfCrossSectionMax) delete [] theEnergyOfCrossSectionMax; 171 if(theCrossSectionMax) delete [] theCrossSectionMax; 172 theEnergyOfCrossSectionMax = 0; 173 theCrossSectionMax = 0; 174 currentCouple = 0; 175 preStepLambda = 0.0; 176 mfpKinEnergy = DBL_MAX; 213 177 } 214 178 … … 273 237 G4cout << *theLambdaTable << G4endl; 274 238 } 275 }276 }277 278 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....279 280 void G4VEmProcess::PrintInfoDefinition()281 {282 if(verboseLevel > 0) {283 G4cout << G4endl << GetProcessName() << ": for "284 << particle->GetParticleName();285 if(integral) G4cout << ", integral: 1 ";286 if(applyCuts) G4cout << ", applyCuts: 1 ";287 G4cout << " SubType= " << GetProcessSubType() << G4endl;288 if(buildLambdaTable) {289 G4cout << " Lambda tables from "290 << G4BestUnit(minKinEnergy,"Energy")291 << " to "292 << G4BestUnit(maxKinEnergy,"Energy")293 << " in " << nLambdaBins << " bins, spline: "294 << (G4LossTableManager::Instance())->SplineFlag()295 << G4endl;296 }297 PrintInfo();298 modelManager->DumpModelList(verboseLevel);299 }300 301 if(verboseLevel > 2 && buildLambdaTable) {302 G4cout << " LambdaTable address= " << theLambdaTable << G4endl;303 if(theLambdaTable) G4cout << (*theLambdaTable) << G4endl;304 239 } 305 240 } … … 369 304 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 370 305 306 G4double G4VEmProcess::GetMeanFreePath(const G4Track& track, 307 G4double, 308 G4ForceCondition* condition) 309 { 310 *condition = NotForced; 311 return G4VEmProcess::MeanFreePath(track); 312 } 313 314 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 315 371 316 G4VParticleChange* G4VEmProcess::PostStepDoIt(const G4Track& track, 372 317 const G4Step&) … … 397 342 } 398 343 399 SelectModel(finalT); 400 if(useDeexcitation) { 401 currentModel->SetDeexcitationFlag(idxDERegions[currentMaterialIndex]); 402 } 344 G4VEmModel* currentModel = SelectModel(finalT); 345 403 346 /* 404 347 if(0 < verboseLevel) { … … 461 404 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 462 405 406 void G4VEmProcess::PrintInfoDefinition() 407 { 408 if(verboseLevel > 0) { 409 G4cout << G4endl << GetProcessName() << ": for " 410 << particle->GetParticleName(); 411 if(integral) G4cout << ", integral: 1 "; 412 if(applyCuts) G4cout << ", applyCuts: 1 "; 413 G4cout << " SubType= " << GetProcessSubType() << G4endl; 414 if(buildLambdaTable) { 415 G4cout << " Lambda tables from " 416 << G4BestUnit(minKinEnergy,"Energy") 417 << " to " 418 << G4BestUnit(maxKinEnergy,"Energy") 419 << " in " << nLambdaBins << " bins, spline: " 420 << (G4LossTableManager::Instance())->SplineFlag() 421 << G4endl; 422 } 423 PrintInfo(); 424 modelManager->DumpModelList(verboseLevel); 425 } 426 427 if(verboseLevel > 2 && buildLambdaTable) { 428 G4cout << " LambdaTable address= " << theLambdaTable << G4endl; 429 if(theLambdaTable) G4cout << (*theLambdaTable) << G4endl; 430 } 431 } 432 433 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 434 435 G4double G4VEmProcess::CrossSectionPerVolume(G4double kineticEnergy, 436 const G4MaterialCutsCouple* couple) 437 { 438 // Cross section per atom is calculated 439 DefineMaterial(couple); 440 G4double cross = 0.0; 441 G4bool b; 442 if(theLambdaTable) { 443 cross = (((*theLambdaTable)[currentMaterialIndex])-> 444 GetValue(kineticEnergy, b)); 445 } else { 446 G4VEmModel* model = SelectModel(kineticEnergy); 447 cross = 448 model->CrossSectionPerVolume(currentMaterial,particle,kineticEnergy); 449 } 450 451 return cross; 452 } 453 454 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 455 463 456 G4bool G4VEmProcess::StorePhysicsTable(const G4ParticleDefinition* part, 464 457 const G4String& directory, … … 528 521 529 522 return yes; 530 }531 532 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....533 534 void G4VEmProcess::ActivateDeexcitation(G4bool val, const G4Region* r)535 {536 G4RegionStore* regionStore = G4RegionStore::GetInstance();537 const G4Region* reg = r;538 if (!reg) {reg = regionStore->GetRegion("DefaultRegionForTheWorld", false);}539 540 // the region is in the list541 if (nDERegions) {542 for (G4int i=0; i<nDERegions; i++) {543 if (reg == deRegions[i]) {544 if(!val) deRegions[i] = 0;545 return;546 }547 }548 }549 550 // new region551 if(val) {552 useDeexcitation = true;553 deRegions.push_back(reg);554 nDERegions++;555 } else {556 useDeexcitation = false;557 }558 }559 560 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....561 562 G4double G4VEmProcess::CrossSectionPerVolume(G4double kineticEnergy,563 const G4MaterialCutsCouple* couple)564 {565 // Cross section per atom is calculated566 DefineMaterial(couple);567 G4double cross = 0.0;568 G4bool b;569 if(theLambdaTable) {570 cross = (((*theLambdaTable)[currentMaterialIndex])->571 GetValue(kineticEnergy, b));572 } else {573 SelectModel(kineticEnergy);574 cross = currentModel->CrossSectionPerVolume(currentMaterial,575 particle,kineticEnergy);576 }577 578 return cross;579 }580 581 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....582 583 G4double G4VEmProcess::GetMeanFreePath(const G4Track& track,584 G4double,585 G4ForceCondition* condition)586 {587 *condition = NotForced;588 return G4VEmProcess::MeanFreePath(track);589 523 } 590 524 -
trunk/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc
r961 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VEnergyLossProcess.cc,v 1.14 6 2009/02/19 11:25:50vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VEnergyLossProcess.cc,v 1.143 2008/10/17 14:46:16 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 150 150 secondaryParticle(0), 151 151 nSCoffRegions(0), 152 nDERegions(0),153 152 idxSCoffRegions(0), 154 idxDERegions(0),155 153 nProcesses(0), 156 154 theDEDXTable(0), … … 178 176 isIonisation(true), 179 177 useSubCutoff(false), 180 useDeexcitation(false),181 178 particle(0), 182 179 currentCouple(0), … … 240 237 << G4endl; 241 238 delete vstrag; 242 Clea n();239 Clear(); 243 240 244 241 if ( !baseParticle ) { … … 294 291 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 295 292 296 void G4VEnergyLossProcess::Clea n()293 void G4VEnergyLossProcess::Clear() 297 294 { 298 295 if(1 < verboseLevel) { … … 305 302 delete [] theCrossSectionMax; 306 303 delete [] idxSCoffRegions; 307 delete [] idxDERegions;308 304 309 305 theDEDXAtMaxEnergy = 0; … … 316 312 scProcesses.clear(); 317 313 nProcesses = 0; 318 }319 320 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....321 322 G4double G4VEnergyLossProcess::MinPrimaryEnergy(const G4ParticleDefinition*,323 const G4Material*,324 G4double cut)325 {326 return cut;327 314 } 328 315 … … 377 364 } 378 365 379 Clea n();366 Clear(); 380 367 381 368 // Base particle and set of models can be defined here … … 420 407 minSubRange, verboseLevel); 421 408 422 // Sub Cutoff and Deexcitation423 if (nSCoffRegions>0 || nDERegions>0) {409 // Sub Cutoff Regime 410 if (nSCoffRegions>0) { 424 411 theSubCuts = modelManager->SubCutoff(); 425 412 … … 427 414 G4ProductionCutsTable::GetProductionCutsTable(); 428 415 size_t numOfCouples = theCoupleTable->GetTableSize(); 429 430 if(nSCoffRegions>0) idxSCoffRegions = new G4bool[numOfCouples]; 431 if(nDERegions>0) idxDERegions = new G4bool[numOfCouples]; 416 idxSCoffRegions = new G4int[numOfCouples]; 432 417 433 418 for (size_t j=0; j<numOfCouples; j++) { … … 436 421 theCoupleTable->GetMaterialCutsCouple(j); 437 422 const G4ProductionCuts* pcuts = couple->GetProductionCuts(); 438 439 if(nSCoffRegions>0) { 440 G4bool reg = false; 441 for(G4int i=0; i<nSCoffRegions; i++) { 442 if( pcuts == scoffRegions[i]->GetProductionCuts()) reg = true; 443 } 444 idxSCoffRegions[j] = reg; 445 } 446 if(nDERegions>0) { 447 G4bool reg = false; 448 for(G4int i=0; i<nDERegions; i++) { 449 if( pcuts == deRegions[i]->GetProductionCuts()) reg = true; 450 } 451 idxDERegions[j] = reg; 452 } 423 G4int reg = 0; 424 for(G4int i=0; i<nSCoffRegions; i++) { 425 if( pcuts == scoffRegions[i]->GetProductionCuts()) reg = 1; 426 } 427 idxSCoffRegions[j] = reg; 453 428 } 454 429 } … … 470 445 } 471 446 } 472 if (nDERegions) {473 G4cout << " Deexcitation is ON for regions: " << G4endl;474 for (G4int i=0; i<nDERegions; i++) {475 const G4Region* r = deRegions[i];476 G4cout << " " << r->GetName() << G4endl;477 }478 }479 447 } 480 448 } … … 511 479 if(isIonisation) G4cout << " isIonisation flag = 1"; 512 480 G4cout << G4endl; 481 } 482 } 483 484 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 485 486 void G4VEnergyLossProcess::ActivateSubCutoff(G4bool val, const G4Region* r) 487 { 488 G4RegionStore* regionStore = G4RegionStore::GetInstance(); 489 if(val) { 490 useSubCutoff = true; 491 if (!r) {r = regionStore->GetRegion("DefaultRegionForTheWorld", false);} 492 if (nSCoffRegions) { 493 for (G4int i=0; i<nSCoffRegions; i++) { 494 if (r == scoffRegions[i]) return; 495 } 496 } 497 scoffRegions.push_back(r); 498 nSCoffRegions++; 499 } else { 500 useSubCutoff = false; 513 501 } 514 502 } … … 652 640 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 653 641 654 void G4VEnergyLossProcess::PrintInfoDefinition() 655 { 656 if(0 < verboseLevel) { 657 G4cout << G4endl << GetProcessName() << ": for " 658 << particle->GetParticleName() 659 << " SubType= " << GetProcessSubType() 660 << G4endl 661 << " dE/dx and range tables from " 662 << G4BestUnit(minKinEnergy,"Energy") 663 << " to " << G4BestUnit(maxKinEnergy,"Energy") 664 << " in " << nBins << " bins" << G4endl 665 << " Lambda tables from threshold to " 666 << G4BestUnit(maxKinEnergy,"Energy") 667 << " in " << nBins << " bins, spline: " 668 << (G4LossTableManager::Instance())->SplineFlag() 669 << G4endl; 670 if(theRangeTableForLoss && isIonisation) { 671 G4cout << " finalRange(mm)= " << finalRange/mm 672 << ", dRoverRange= " << dRoverRange 673 << ", integral: " << integral 674 << ", fluct: " << lossFluctuationFlag 675 << ", linLossLimit= " << linLossLimit 676 << G4endl; 677 } 678 PrintInfo(); 679 modelManager->DumpModelList(verboseLevel); 680 if(theCSDARangeTable && isIonisation) { 681 G4cout << " CSDA range table up" 682 << " to " << G4BestUnit(maxKinEnergyCSDA,"Energy") 683 << " in " << nBinsCSDA << " bins" << G4endl; 684 } 685 if(nSCoffRegions>0 && isIonisation) { 686 G4cout << " Subcutoff sampling in " << nSCoffRegions 687 << " regions" << G4endl; 688 } 689 if(2 < verboseLevel) { 690 G4cout << " DEDXTable address= " << theDEDXTable << G4endl; 691 if(theDEDXTable && isIonisation) G4cout << (*theDEDXTable) << G4endl; 692 G4cout << "non restricted DEDXTable address= " 693 << theDEDXunRestrictedTable << G4endl; 694 if(theDEDXunRestrictedTable && isIonisation) { 695 G4cout << (*theDEDXunRestrictedTable) << G4endl; 696 } 697 if(theDEDXSubTable && isIonisation) { 698 G4cout << (*theDEDXSubTable) << G4endl; 699 } 700 G4cout << " CSDARangeTable address= " << theCSDARangeTable 701 << G4endl; 702 if(theCSDARangeTable && isIonisation) { 703 G4cout << (*theCSDARangeTable) << G4endl; 704 } 705 G4cout << " RangeTableForLoss address= " << theRangeTableForLoss 706 << G4endl; 707 if(theRangeTableForLoss && isIonisation) { 708 G4cout << (*theRangeTableForLoss) << G4endl; 709 } 710 G4cout << " InverseRangeTable address= " << theInverseRangeTable 711 << G4endl; 712 if(theInverseRangeTable && isIonisation) { 713 G4cout << (*theInverseRangeTable) << G4endl; 714 } 715 G4cout << " LambdaTable address= " << theLambdaTable << G4endl; 716 if(theLambdaTable && isIonisation) { 717 G4cout << (*theLambdaTable) << G4endl; 718 } 719 G4cout << " SubLambdaTable address= " << theSubLambdaTable << G4endl; 720 if(theSubLambdaTable && isIonisation) { 721 G4cout << (*theSubLambdaTable) << G4endl; 722 } 723 } 724 } 725 } 726 727 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 728 729 void G4VEnergyLossProcess::ActivateSubCutoff(G4bool val, const G4Region* r) 730 { 731 G4RegionStore* regionStore = G4RegionStore::GetInstance(); 732 const G4Region* reg = r; 733 if (!reg) {reg = regionStore->GetRegion("DefaultRegionForTheWorld", false);} 734 735 // the region is in the list 736 if (nSCoffRegions) { 737 for (G4int i=0; i<nSCoffRegions; i++) { 738 if (reg == scoffRegions[i]) { 739 if(!val) deRegions[i] = 0; 740 return; 741 } 742 } 743 } 744 745 // new region 746 if(val) { 747 useSubCutoff = true; 748 scoffRegions.push_back(reg); 749 nSCoffRegions++; 750 } else { 751 useSubCutoff = false; 752 } 753 } 754 755 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 756 757 void G4VEnergyLossProcess::ActivateDeexcitation(G4bool val, const G4Region* r) 758 { 759 G4RegionStore* regionStore = G4RegionStore::GetInstance(); 760 const G4Region* reg = r; 761 if (!reg) {reg = regionStore->GetRegion("DefaultRegionForTheWorld", false);} 762 763 // the region is in the list 764 if (nDERegions) { 765 for (G4int i=0; i<nDERegions; i++) { 766 if (reg == deRegions[i]) { 767 if(!val) deRegions[i] = 0; 768 return; 769 } 770 } 771 } 772 773 // new region 774 if(val) { 775 useDeexcitation = true; 776 deRegions.push_back(reg); 777 nDERegions++; 778 } else { 779 useDeexcitation = false; 780 } 642 G4double G4VEnergyLossProcess::GetContinuousStepLimit( 643 const G4Track&, 644 G4double, G4double, G4double&) 645 { 646 return DBL_MAX; 781 647 } 782 648 … … 808 674 // <<" stepLimit= "<<x<<G4endl; 809 675 return x; 676 } 677 678 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 679 680 G4double G4VEnergyLossProcess::GetMeanFreePath( 681 const G4Track& track, 682 G4double, 683 G4ForceCondition* condition) 684 685 { 686 *condition = NotForced; 687 return MeanFreePath(track); 810 688 } 811 689 … … 928 806 if (length >= fRange) { 929 807 eloss = preStepKinEnergy; 930 if (useDeexcitation) { 931 if(idxDERegions[currentMaterialIndex]) { 932 currentModel->SampleDeexcitationAlongStep(currentMaterial, track, eloss); 933 if(eloss < 0.0) eloss = 0.0; 934 } 935 } 808 currentModel->CorrectionsAlongStep(currentCouple, dynParticle, 809 eloss, esecdep, length); 936 810 fParticleChange.SetProposedKineticEnergy(0.0); 937 fParticleChange.ProposeLocalEnergyDeposit( eloss);811 fParticleChange.ProposeLocalEnergyDeposit(preStepKinEnergy); 938 812 return &fParticleChange; 939 813 } … … 1060 934 G4double tmax = 1061 935 std::min(currentModel->MaxSecondaryKinEnergy(dynParticle),cut); 1062 G4double emean = eloss;1063 936 eloss = fluc->SampleFluctuations(currentMaterial,dynParticle, 1064 tmax,length,e mean);937 tmax,length,eloss); 1065 938 /* 1066 939 if(-1 < verboseLevel) … … 1077 950 eloss += esecdep; 1078 951 if(eloss < 0.0) eloss = 0.0; 1079 1080 // deexcitation1081 else if (useDeexcitation) {1082 if(idxDERegions[currentMaterialIndex]) {1083 currentModel->SampleDeexcitationAlongStep(currentMaterial, track, eloss);1084 if(eloss < 0.0) eloss = 0.0;1085 }1086 }1087 952 1088 953 // Energy balanse … … 1241 1106 1242 1107 SelectModel(postStepScaledEnergy); 1243 if(useDeexcitation) {1244 currentModel->SetDeexcitationFlag(idxDERegions[currentMaterialIndex]);1245 }1246 1247 1108 const G4DynamicParticle* dynParticle = track.GetDynamicParticle(); 1248 1109 G4double tcut = (*theCuts)[currentMaterialIndex]; … … 1279 1140 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1280 1141 1281 G4bool G4VEnergyLossProcess::StorePhysicsTable( 1282 const G4ParticleDefinition* part, const G4String& directory, 1283 G4bool ascii) 1284 { 1285 G4bool res = true; 1286 if ( baseParticle || part != particle ) return res; 1287 1288 if(!StoreTable(part,theDEDXTable,ascii,directory,"DEDX")) 1289 {res = false;} 1290 1291 if(!StoreTable(part,theDEDXunRestrictedTable,ascii,directory,"DEDXnr")) 1292 {res = false;} 1293 1294 if(!StoreTable(part,theDEDXSubTable,ascii,directory,"SubDEDX")) 1295 {res = false;} 1296 1297 if(!StoreTable(part,theIonisationTable,ascii,directory,"Ionisation")) 1298 {res = false;} 1299 1300 if(!StoreTable(part,theIonisationSubTable,ascii,directory,"SubIonisation")) 1301 {res = false;} 1302 1303 if(isIonisation && 1304 !StoreTable(part,theCSDARangeTable,ascii,directory,"CSDARange")) 1305 {res = false;} 1306 1307 if(isIonisation && 1308 !StoreTable(part,theRangeTableForLoss,ascii,directory,"Range")) 1309 {res = false;} 1310 1311 if(isIonisation && 1312 !StoreTable(part,theInverseRangeTable,ascii,directory,"InverseRange")) 1313 {res = false;} 1314 1315 if(!StoreTable(part,theLambdaTable,ascii,directory,"Lambda")) 1316 {res = false;} 1317 1318 if(!StoreTable(part,theSubLambdaTable,ascii,directory,"SubLambda")) 1319 {res = false;} 1320 1321 if ( res ) { 1322 if(0 < verboseLevel) { 1323 G4cout << "Physics tables are stored for " << particle->GetParticleName() 1324 << " and process " << GetProcessName() 1325 << " in the directory <" << directory 1326 << "> " << G4endl; 1327 } 1328 } else { 1329 G4cout << "Fail to store Physics Tables for " 1330 << particle->GetParticleName() 1331 << " and process " << GetProcessName() 1332 << " in the directory <" << directory 1333 << "> " << G4endl; 1334 } 1335 return res; 1336 } 1337 1338 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 1339 1340 G4bool G4VEnergyLossProcess::RetrievePhysicsTable( 1341 const G4ParticleDefinition* part, const G4String& directory, 1342 G4bool ascii) 1343 { 1344 G4bool res = true; 1345 const G4String particleName = part->GetParticleName(); 1346 1347 if(1 < verboseLevel) { 1348 G4cout << "G4VEnergyLossProcess::RetrievePhysicsTable() for " 1349 << particleName << " and process " << GetProcessName() 1350 << "; tables_are_built= " << tablesAreBuilt 1142 void G4VEnergyLossProcess::PrintInfoDefinition() 1143 { 1144 if(0 < verboseLevel) { 1145 G4cout << G4endl << GetProcessName() << ": for " 1146 << particle->GetParticleName() 1147 << " SubType= " << GetProcessSubType() 1148 << G4endl 1149 << " dE/dx and range tables from " 1150 << G4BestUnit(minKinEnergy,"Energy") 1151 << " to " << G4BestUnit(maxKinEnergy,"Energy") 1152 << " in " << nBins << " bins" << G4endl 1153 << " Lambda tables from threshold to " 1154 << G4BestUnit(maxKinEnergy,"Energy") 1155 << " in " << nBins << " bins, spline: " 1156 << (G4LossTableManager::Instance())->SplineFlag() 1351 1157 << G4endl; 1352 } 1353 if(particle == part) { 1354 1355 // G4bool yes = true; 1356 if ( !baseParticle ) { 1357 1358 G4bool fpi = true; 1359 if(!RetrieveTable(part,theDEDXTable,ascii,directory,"DEDX",fpi)) 1360 {fpi = false;} 1361 1362 if(!RetrieveTable(part,theIonisationTable,ascii,directory,"Ionisation",false)) 1363 {fpi = false;} 1364 1365 if(!RetrieveTable(part,theRangeTableForLoss,ascii,directory,"Range",fpi)) 1366 {res = false;} 1367 1368 if(!RetrieveTable(part,theDEDXunRestrictedTable,ascii,directory,"DEDXnr",false)) 1369 {res = false;} 1370 1371 if(!RetrieveTable(part,theCSDARangeTable,ascii,directory,"CSDARange",false)) 1372 {res = false;} 1373 1374 if(!RetrieveTable(part,theInverseRangeTable,ascii,directory,"InverseRange",fpi)) 1375 {res = false;} 1376 1377 if(!RetrieveTable(part,theLambdaTable,ascii,directory,"Lambda",true)) 1378 {res = false;} 1379 1380 G4bool yes = false; 1381 if(nSCoffRegions > 0) {yes = true;} 1382 1383 if(!RetrieveTable(part,theDEDXSubTable,ascii,directory,"SubDEDX",yes)) 1384 {res = false;} 1385 1386 if(!RetrieveTable(part,theSubLambdaTable,ascii,directory,"SubLambda",yes)) 1387 {res = false;} 1388 1389 if(!fpi) yes = false; 1390 if(!RetrieveTable(part,theIonisationSubTable,ascii,directory,"SubIonisation",yes)) 1391 {res = false;} 1392 } 1393 } 1394 1395 return res; 1396 } 1397 1398 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 1399 1400 G4bool G4VEnergyLossProcess::StoreTable(const G4ParticleDefinition* part, 1401 G4PhysicsTable* aTable, G4bool ascii, 1402 const G4String& directory, 1403 const G4String& tname) 1404 { 1405 G4bool res = true; 1406 if ( aTable ) { 1407 const G4String name = GetPhysicsTableFileName(part,directory,tname,ascii); 1408 if( !aTable->StorePhysicsTable(name,ascii)) res = false; 1409 } 1410 return res; 1411 } 1412 1413 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 1414 1415 G4bool G4VEnergyLossProcess::RetrieveTable(const G4ParticleDefinition* part, 1416 G4PhysicsTable* aTable, G4bool ascii, 1417 const G4String& directory, 1418 const G4String& tname, 1419 G4bool mandatory) 1420 { 1421 G4bool res = true; 1422 G4String filename = GetPhysicsTableFileName(part,directory,tname,ascii); 1423 G4bool yes = aTable->ExistPhysicsTable(filename); 1424 if(yes) { 1425 yes = G4PhysicsTableHelper::RetrievePhysicsTable(aTable,filename,ascii); 1426 if((G4LossTableManager::Instance())->SplineFlag()) { 1427 size_t n = aTable->length(); 1428 for(size_t i=0; i<n; i++) {(*aTable)[i]->SetSpline(true);} 1429 } 1430 } 1431 if(yes) { 1432 if (0 < verboseLevel) { 1433 G4cout << tname << " table for " << part->GetParticleName() 1434 << " is Retrieved from <" << filename << ">" 1158 if(theRangeTableForLoss && isIonisation) { 1159 G4cout << " finalRange(mm)= " << finalRange/mm 1160 << ", dRoverRange= " << dRoverRange 1161 << ", integral: " << integral 1162 << ", fluct: " << lossFluctuationFlag 1163 << ", linLossLimit= " << linLossLimit 1164 << G4endl; 1165 } 1166 PrintInfo(); 1167 modelManager->DumpModelList(verboseLevel); 1168 if(theCSDARangeTable && isIonisation) { 1169 G4cout << " CSDA range table up" 1170 << " to " << G4BestUnit(maxKinEnergyCSDA,"Energy") 1171 << " in " << nBinsCSDA << " bins" << G4endl; 1172 } 1173 if(nSCoffRegions>0 && isIonisation) { 1174 G4cout << " Subcutoff sampling in " << nSCoffRegions 1175 << " regions" << G4endl; 1176 } 1177 if(2 < verboseLevel) { 1178 G4cout << " DEDXTable address= " << theDEDXTable << G4endl; 1179 if(theDEDXTable && isIonisation) G4cout << (*theDEDXTable) << G4endl; 1180 G4cout << "non restricted DEDXTable address= " 1181 << theDEDXunRestrictedTable << G4endl; 1182 if(theDEDXunRestrictedTable && isIonisation) { 1183 G4cout << (*theDEDXunRestrictedTable) << G4endl; 1184 } 1185 if(theDEDXSubTable && isIonisation) { 1186 G4cout << (*theDEDXSubTable) << G4endl; 1187 } 1188 G4cout << " CSDARangeTable address= " << theCSDARangeTable 1435 1189 << G4endl; 1436 } 1437 } else { 1438 if(mandatory) res = false; 1439 if(mandatory || 1 < verboseLevel) { 1440 G4cout << tname << " table for " << part->GetParticleName() 1441 << " from file <" 1442 << filename << "> is not Retrieved" 1190 if(theCSDARangeTable && isIonisation) { 1191 G4cout << (*theCSDARangeTable) << G4endl; 1192 } 1193 G4cout << " RangeTableForLoss address= " << theRangeTableForLoss 1443 1194 << G4endl; 1444 } 1445 } 1446 return res; 1447 } 1448 1449 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1450 1451 G4double G4VEnergyLossProcess::GetDEDXDispersion( 1452 const G4MaterialCutsCouple *couple, 1453 const G4DynamicParticle* dp, 1454 G4double length) 1455 { 1456 DefineMaterial(couple); 1457 G4double ekin = dp->GetKineticEnergy(); 1458 SelectModel(ekin*massRatio); 1459 G4double tmax = currentModel->MaxSecondaryKinEnergy(dp); 1460 tmax = std::min(tmax,(*theCuts)[currentMaterialIndex]); 1461 G4double d = 0.0; 1462 G4VEmFluctuationModel* fm = currentModel->GetModelOfFluctuations(); 1463 if(fm) d = fm->Dispersion(currentMaterial,dp,tmax,length); 1464 return d; 1465 } 1466 1467 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1468 1469 G4double G4VEnergyLossProcess::CrossSectionPerVolume( 1470 G4double kineticEnergy, const G4MaterialCutsCouple* couple) 1471 { 1472 // Cross section per volume is calculated 1473 DefineMaterial(couple); 1474 G4double cross = 0.0; 1475 G4bool b; 1476 if(theLambdaTable) { 1477 cross = 1478 ((*theLambdaTable)[currentMaterialIndex])->GetValue(kineticEnergy, b); 1479 } else { 1480 SelectModel(kineticEnergy); 1481 cross = 1482 currentModel->CrossSectionPerVolume(currentMaterial, 1483 particle, kineticEnergy, 1484 (*theCuts)[currentMaterialIndex]); 1485 } 1486 1487 return cross; 1488 } 1489 1490 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1491 1492 G4double G4VEnergyLossProcess::MeanFreePath(const G4Track& track) 1493 { 1494 DefineMaterial(track.GetMaterialCutsCouple()); 1495 preStepLambda = GetLambdaForScaledEnergy(track.GetKineticEnergy()*massRatio); 1496 G4double x = DBL_MAX; 1497 if(DBL_MIN < preStepLambda) x = 1.0/preStepLambda; 1498 return x; 1499 } 1500 1501 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1502 1503 G4double G4VEnergyLossProcess::ContinuousStepLimit(const G4Track& track, 1504 G4double x, G4double y, 1505 G4double& z) 1506 { 1507 G4GPILSelection sel; 1508 return AlongStepGetPhysicalInteractionLength(track, x, y, z, &sel); 1509 } 1510 1511 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1512 1513 G4double G4VEnergyLossProcess::GetMeanFreePath( 1514 const G4Track& track, 1515 G4double, 1516 G4ForceCondition* condition) 1517 1518 { 1519 *condition = NotForced; 1520 return MeanFreePath(track); 1521 } 1522 1523 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1524 1525 G4double G4VEnergyLossProcess::GetContinuousStepLimit( 1526 const G4Track&, 1527 G4double, G4double, G4double&) 1528 { 1529 return DBL_MAX; 1530 } 1531 1532 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1533 1534 G4PhysicsVector* G4VEnergyLossProcess::LambdaPhysicsVector( 1535 const G4MaterialCutsCouple* couple, G4double cut) 1536 { 1537 // G4double cut = (*theCuts)[couple->GetIndex()]; 1538 // G4int nbins = nLambdaBins; 1539 G4double tmin = 1540 std::max(MinPrimaryEnergy(particle, couple->GetMaterial(), cut), 1541 minKinEnergy); 1542 if(tmin >= maxKinEnergy) tmin = 0.5*maxKinEnergy; 1543 G4PhysicsVector* v = new G4PhysicsLogVector(tmin, maxKinEnergy, nBins); 1544 v->SetSpline((G4LossTableManager::Instance())->SplineFlag()); 1545 1546 return v; 1547 } 1548 1549 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1550 1551 void G4VEnergyLossProcess::AddCollaborativeProcess( 1552 G4VEnergyLossProcess* p) 1553 { 1554 G4bool add = true; 1555 if(p->GetProcessName() != "eBrem") add = false; 1556 if(add && nProcesses > 0) { 1557 for(G4int i=0; i<nProcesses; i++) { 1558 if(p == scProcesses[i]) { 1559 add = false; 1560 break; 1561 } 1562 } 1563 } 1564 if(add) { 1565 scProcesses.push_back(p); 1566 nProcesses++; 1567 if (1 < verboseLevel) { 1568 G4cout << "### The process " << p->GetProcessName() 1569 << " is added to the list of collaborative processes of " 1570 << GetProcessName() << G4endl; 1195 if(theRangeTableForLoss && isIonisation) { 1196 G4cout << (*theRangeTableForLoss) << G4endl; 1197 } 1198 G4cout << " InverseRangeTable address= " << theInverseRangeTable 1199 << G4endl; 1200 if(theInverseRangeTable && isIonisation) { 1201 G4cout << (*theInverseRangeTable) << G4endl; 1202 } 1203 G4cout << " LambdaTable address= " << theLambdaTable << G4endl; 1204 if(theLambdaTable && isIonisation) { 1205 G4cout << (*theLambdaTable) << G4endl; 1206 } 1207 G4cout << " SubLambdaTable address= " << theSubLambdaTable << G4endl; 1208 if(theSubLambdaTable && isIonisation) { 1209 G4cout << (*theSubLambdaTable) << G4endl; 1210 } 1571 1211 } 1572 1212 } … … 1737 1377 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1738 1378 1379 G4PhysicsVector* G4VEnergyLossProcess::LambdaPhysicsVector( 1380 const G4MaterialCutsCouple* couple, G4double cut) 1381 { 1382 // G4double cut = (*theCuts)[couple->GetIndex()]; 1383 // G4int nbins = nLambdaBins; 1384 G4double tmin = 1385 std::max(MinPrimaryEnergy(particle, couple->GetMaterial(), cut), 1386 minKinEnergy); 1387 if(tmin >= maxKinEnergy) tmin = 0.5*maxKinEnergy; 1388 G4PhysicsVector* v = new G4PhysicsLogVector(tmin, maxKinEnergy, nBins); 1389 v->SetSpline((G4LossTableManager::Instance())->SplineFlag()); 1390 1391 return v; 1392 } 1393 1394 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1395 1396 G4double G4VEnergyLossProcess::CrossSectionPerVolume( 1397 G4double kineticEnergy, const G4MaterialCutsCouple* couple) 1398 { 1399 // Cross section per volume is calculated 1400 DefineMaterial(couple); 1401 G4double cross = 0.0; 1402 G4bool b; 1403 if(theLambdaTable) { 1404 cross = 1405 ((*theLambdaTable)[currentMaterialIndex])->GetValue(kineticEnergy, b); 1406 } else { 1407 SelectModel(kineticEnergy); 1408 cross = 1409 currentModel->CrossSectionPerVolume(currentMaterial, 1410 particle, kineticEnergy, 1411 (*theCuts)[currentMaterialIndex]); 1412 } 1413 1414 return cross; 1415 } 1416 1417 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1418 1419 G4bool G4VEnergyLossProcess::StorePhysicsTable( 1420 const G4ParticleDefinition* part, const G4String& directory, 1421 G4bool ascii) 1422 { 1423 G4bool res = true; 1424 if ( baseParticle || part != particle ) return res; 1425 1426 if(!StoreTable(part,theDEDXTable,ascii,directory,"DEDX")) 1427 {res = false;} 1428 1429 if(!StoreTable(part,theDEDXunRestrictedTable,ascii,directory,"DEDXnr")) 1430 {res = false;} 1431 1432 if(!StoreTable(part,theDEDXSubTable,ascii,directory,"SubDEDX")) 1433 {res = false;} 1434 1435 if(!StoreTable(part,theIonisationTable,ascii,directory,"Ionisation")) 1436 {res = false;} 1437 1438 if(!StoreTable(part,theIonisationSubTable,ascii,directory,"SubIonisation")) 1439 {res = false;} 1440 1441 if(isIonisation && 1442 !StoreTable(part,theCSDARangeTable,ascii,directory,"CSDARange")) 1443 {res = false;} 1444 1445 if(isIonisation && 1446 !StoreTable(part,theRangeTableForLoss,ascii,directory,"Range")) 1447 {res = false;} 1448 1449 if(isIonisation && 1450 !StoreTable(part,theInverseRangeTable,ascii,directory,"InverseRange")) 1451 {res = false;} 1452 1453 if(!StoreTable(part,theLambdaTable,ascii,directory,"Lambda")) 1454 {res = false;} 1455 1456 if(!StoreTable(part,theSubLambdaTable,ascii,directory,"SubLambda")) 1457 {res = false;} 1458 1459 if ( res ) { 1460 if(0 < verboseLevel) { 1461 G4cout << "Physics tables are stored for " << particle->GetParticleName() 1462 << " and process " << GetProcessName() 1463 << " in the directory <" << directory 1464 << "> " << G4endl; 1465 } 1466 } else { 1467 G4cout << "Fail to store Physics Tables for " 1468 << particle->GetParticleName() 1469 << " and process " << GetProcessName() 1470 << " in the directory <" << directory 1471 << "> " << G4endl; 1472 } 1473 return res; 1474 } 1475 1476 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 1477 1478 G4bool G4VEnergyLossProcess::StoreTable(const G4ParticleDefinition* part, 1479 G4PhysicsTable* aTable, G4bool ascii, 1480 const G4String& directory, 1481 const G4String& tname) 1482 { 1483 G4bool res = true; 1484 if ( aTable ) { 1485 const G4String name = GetPhysicsTableFileName(part,directory,tname,ascii); 1486 if( !aTable->StorePhysicsTable(name,ascii)) res = false; 1487 } 1488 return res; 1489 } 1490 1491 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 1492 1493 G4bool G4VEnergyLossProcess::RetrievePhysicsTable( 1494 const G4ParticleDefinition* part, const G4String& directory, 1495 G4bool ascii) 1496 { 1497 G4bool res = true; 1498 const G4String particleName = part->GetParticleName(); 1499 1500 if(1 < verboseLevel) { 1501 G4cout << "G4VEnergyLossProcess::RetrievePhysicsTable() for " 1502 << particleName << " and process " << GetProcessName() 1503 << "; tables_are_built= " << tablesAreBuilt 1504 << G4endl; 1505 } 1506 if(particle == part) { 1507 1508 // G4bool yes = true; 1509 if ( !baseParticle ) { 1510 1511 G4bool fpi = true; 1512 if(!RetrieveTable(part,theDEDXTable,ascii,directory,"DEDX",fpi)) 1513 {fpi = false;} 1514 1515 if(!RetrieveTable(part,theIonisationTable,ascii,directory,"Ionisation",false)) 1516 {fpi = false;} 1517 1518 if(!RetrieveTable(part,theRangeTableForLoss,ascii,directory,"Range",fpi)) 1519 {res = false;} 1520 1521 if(!RetrieveTable(part,theDEDXunRestrictedTable,ascii,directory,"DEDXnr",false)) 1522 {res = false;} 1523 1524 if(!RetrieveTable(part,theCSDARangeTable,ascii,directory,"CSDARange",false)) 1525 {res = false;} 1526 1527 if(!RetrieveTable(part,theInverseRangeTable,ascii,directory,"InverseRange",fpi)) 1528 {res = false;} 1529 1530 if(!RetrieveTable(part,theLambdaTable,ascii,directory,"Lambda",true)) 1531 {res = false;} 1532 1533 G4bool yes = false; 1534 if(nSCoffRegions > 0) {yes = true;} 1535 1536 if(!RetrieveTable(part,theDEDXSubTable,ascii,directory,"SubDEDX",yes)) 1537 {res = false;} 1538 1539 if(!RetrieveTable(part,theSubLambdaTable,ascii,directory,"SubLambda",yes)) 1540 {res = false;} 1541 1542 if(!fpi) yes = false; 1543 if(!RetrieveTable(part,theIonisationSubTable,ascii,directory,"SubIonisation",yes)) 1544 {res = false;} 1545 } 1546 } 1547 1548 return res; 1549 } 1550 1551 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... 1552 1553 G4bool G4VEnergyLossProcess::RetrieveTable(const G4ParticleDefinition* part, 1554 G4PhysicsTable* aTable, G4bool ascii, 1555 const G4String& directory, 1556 const G4String& tname, 1557 G4bool mandatory) 1558 { 1559 G4bool res = true; 1560 G4String filename = GetPhysicsTableFileName(part,directory,tname,ascii); 1561 G4bool yes = aTable->ExistPhysicsTable(filename); 1562 if(yes) { 1563 yes = G4PhysicsTableHelper::RetrievePhysicsTable(aTable,filename,ascii); 1564 if((G4LossTableManager::Instance())->SplineFlag()) { 1565 size_t n = aTable->length(); 1566 for(size_t i=0; i<n; i++) {(*aTable)[i]->SetSpline(true);} 1567 } 1568 } 1569 if(yes) { 1570 if (0 < verboseLevel) { 1571 G4cout << tname << " table for " << part->GetParticleName() 1572 << " is Retrieved from <" << filename << ">" 1573 << G4endl; 1574 } 1575 } else { 1576 if(mandatory) res = false; 1577 if(mandatory || 1 < verboseLevel) { 1578 G4cout << tname << " table for " << part->GetParticleName() 1579 << " from file <" 1580 << filename << "> is not Retrieved" 1581 << G4endl; 1582 } 1583 } 1584 return res; 1585 } 1586 1587 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1588 1589 void G4VEnergyLossProcess::AddCollaborativeProcess( 1590 G4VEnergyLossProcess* p) 1591 { 1592 G4bool add = true; 1593 if(p->GetProcessName() != "eBrem") add = false; 1594 if(add && nProcesses > 0) { 1595 for(G4int i=0; i<nProcesses; i++) { 1596 if(p == scProcesses[i]) { 1597 add = false; 1598 break; 1599 } 1600 } 1601 } 1602 if(add) { 1603 scProcesses.push_back(p); 1604 nProcesses++; 1605 if (1 < verboseLevel) { 1606 G4cout << "### The process " << p->GetProcessName() 1607 << " is added to the list of collaborative processes of " 1608 << GetProcessName() << G4endl; 1609 } 1610 } 1611 } 1612 1613 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1614 1615 G4double G4VEnergyLossProcess::GetDEDXDispersion( 1616 const G4MaterialCutsCouple *couple, 1617 const G4DynamicParticle* dp, 1618 G4double length) 1619 { 1620 DefineMaterial(couple); 1621 G4double ekin = dp->GetKineticEnergy(); 1622 SelectModel(ekin*massRatio); 1623 G4double tmax = currentModel->MaxSecondaryKinEnergy(dp); 1624 tmax = std::min(tmax,(*theCuts)[currentMaterialIndex]); 1625 G4double d = 0.0; 1626 G4VEmFluctuationModel* fm = currentModel->GetModelOfFluctuations(); 1627 if(fm) d = fm->Dispersion(currentMaterial,dp,tmax,length); 1628 return d; 1629 } 1630 1631 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1632 1633 void G4VEnergyLossProcess::ActivateDeexcitation(G4bool, const G4Region*) 1634 {} 1635 1636 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1637 -
trunk/source/processes/electromagnetic/utils/src/G4VMscModel.cc
r968 r991 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4VMscModel.cc,v 1. 10 2009/02/24 09:56:03vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-02 -ref-02$26 // $Id: G4VMscModel.cc,v 1.4 2008/03/10 18:39:45 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-02 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 49 49 50 50 #include "G4VMscModel.hh" 51 #include "G4ParticleChangeForMSC.hh"52 #include "G4TransportationManager.hh"53 51 54 52 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... … … 57 55 G4VMscModel::G4VMscModel(const G4String& nam): 58 56 G4VEmModel(nam), 59 safetyHelper(0),60 57 facrange(0.02), 61 58 facgeom(2.5), … … 64 61 dtrl(0.05), 65 62 lambdalimit(mm), 66 geommax(1.e50*mm),67 63 steppingAlgorithm(fUseSafety), 68 64 samplez(false), … … 76 72 77 73 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 78 79 void G4VMscModel::InitialiseSafetyHelper()80 {81 if(!safetyHelper) {82 safetyHelper = G4TransportationManager::GetTransportationManager()83 ->GetSafetyHelper();84 safetyHelper->InitialiseHelper();85 }86 }87 88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......89 90 void G4VMscModel::ComputeDisplacement(G4ParticleChangeForMSC* fParticleChange,91 const G4ThreeVector& dir,92 G4double displacement,93 G4double postsafety)94 {95 const G4ThreeVector* pos = fParticleChange->GetProposedPosition();96 G4double r = displacement;97 if(r > postsafety) {98 G4double newsafety = safetyHelper->ComputeSafety(*pos);99 if(r > newsafety) r = newsafety;100 }101 if(r > 0.) {102 103 // compute new endpoint of the Step104 G4ThreeVector newPosition = *pos + r*dir;105 106 // definitely not on boundary107 if(displacement == r) {108 safetyHelper->ReLocateWithinVolume(newPosition);109 110 } else {111 // check safety after displacement112 G4double postsafety = safetyHelper->ComputeSafety(newPosition);113 114 // displacement to boundary115 if(postsafety <= 0.0) {116 safetyHelper->Locate(newPosition,117 *fParticleChange->GetProposedMomentumDirection());118 119 // not on the boundary120 } else {121 safetyHelper->ReLocateWithinVolume(newPosition);122 }123 }124 fParticleChange->ProposePosition(newPosition);125 }126 }127 128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......129 130 void G4VMscModel::SampleSecondaries(std::vector<G4DynamicParticle*>*,131 const G4MaterialCutsCouple*,132 const G4DynamicParticle*,133 G4double, G4double)134 {}135 136 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Note:
See TracChangeset
for help on using the changeset viewer.
