Import Geant4 9.4.0 source tree
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4processes
|
||||
# Package: Geant4.src.G4processes
|
||||
#
|
||||
# Top level CMakeLists.txt for a Geant4 Global Library
|
||||
# or collection of sublibraries
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.2 2010/11/19 08:43:44 gcosmo Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
add_subdirectory(biasing)
|
||||
add_subdirectory(cuts)
|
||||
add_subdirectory(decay)
|
||||
add_subdirectory(electromagnetic)
|
||||
add_subdirectory(hadronic)
|
||||
add_subdirectory(management)
|
||||
add_subdirectory(optical)
|
||||
add_subdirectory(parameterisation)
|
||||
add_subdirectory(scoring)
|
||||
add_subdirectory(transportation)
|
||||
|
||||
if(NOT GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GLOBAL_LIBRARY_TARGET(NAME G4processes
|
||||
COMPONENTS
|
||||
biasing/sources.cmake
|
||||
cuts/sources.cmake
|
||||
decay/sources.cmake
|
||||
electromagnetic/adjoint/sources.cmake
|
||||
electromagnetic/highenergy/sources.cmake
|
||||
electromagnetic/lowenergy/sources.cmake
|
||||
electromagnetic/muons/sources.cmake
|
||||
electromagnetic/pii/sources.cmake
|
||||
electromagnetic/polarisation/sources.cmake
|
||||
electromagnetic/standard/sources.cmake
|
||||
electromagnetic/utils/sources.cmake
|
||||
electromagnetic/xrays/sources.cmake
|
||||
hadronic/cross_sections/sources.cmake
|
||||
hadronic/management/sources.cmake
|
||||
hadronic/models/abrasion/sources.cmake
|
||||
hadronic/models/binary_cascade/sources.cmake
|
||||
hadronic/models/cascade/cascade/sources.cmake
|
||||
hadronic/models/cascade/evaporation/sources.cmake
|
||||
hadronic/models/cascade/utils/sources.cmake
|
||||
hadronic/models/chiral_inv_phase_space/body/sources.cmake
|
||||
hadronic/models/chiral_inv_phase_space/cross_sections/sources.cmake
|
||||
hadronic/models/chiral_inv_phase_space/fragmentation/sources.cmake
|
||||
hadronic/models/chiral_inv_phase_space/interface/sources.cmake
|
||||
hadronic/models/chiral_inv_phase_space/processes/sources.cmake
|
||||
hadronic/models/coherent_elastic/sources.cmake
|
||||
hadronic/models/de_excitation/ablation/sources.cmake
|
||||
hadronic/models/de_excitation/evaporation/sources.cmake
|
||||
hadronic/models/de_excitation/fermi_breakup/sources.cmake
|
||||
hadronic/models/de_excitation/fission/sources.cmake
|
||||
hadronic/models/de_excitation/gem_evaporation/sources.cmake
|
||||
hadronic/models/de_excitation/handler/sources.cmake
|
||||
hadronic/models/de_excitation/management/sources.cmake
|
||||
hadronic/models/de_excitation/multifragmentation/sources.cmake
|
||||
hadronic/models/de_excitation/photon_evaporation/sources.cmake
|
||||
hadronic/models/de_excitation/util/sources.cmake
|
||||
hadronic/models/em_dissociation/sources.cmake
|
||||
hadronic/models/high_energy/sources.cmake
|
||||
hadronic/models/im_r_matrix/sources.cmake
|
||||
hadronic/models/incl/sources.cmake
|
||||
hadronic/models/isotope_production/sources.cmake
|
||||
hadronic/models/lll_fission/sources.cmake
|
||||
hadronic/models/low_energy/sources.cmake
|
||||
hadronic/models/management/sources.cmake
|
||||
hadronic/models/neutron_hp/sources.cmake
|
||||
hadronic/models/parton_string/diffraction/sources.cmake
|
||||
hadronic/models/parton_string/hadronization/sources.cmake
|
||||
hadronic/models/parton_string/management/sources.cmake
|
||||
hadronic/models/parton_string/qgsm/sources.cmake
|
||||
hadronic/models/photolepton_hadron/muon_nuclear/sources.cmake
|
||||
hadronic/models/pre_equilibrium/exciton_model/sources.cmake
|
||||
hadronic/models/qmd/sources.cmake
|
||||
hadronic/models/radioactive_decay/sources.cmake
|
||||
hadronic/models/rpg/sources.cmake
|
||||
hadronic/models/theo_high_energy/sources.cmake
|
||||
hadronic/models/util/sources.cmake
|
||||
hadronic/processes/sources.cmake
|
||||
hadronic/stopping/sources.cmake
|
||||
hadronic/util/sources.cmake
|
||||
management/sources.cmake
|
||||
optical/sources.cmake
|
||||
parameterisation/sources.cmake
|
||||
scoring/sources.cmake
|
||||
transportation/sources.cmake
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.46 2009/11/20 11:12:04 gcosmo Exp $
|
||||
# $Id: GNUmakefile,v 1.48 2010/11/19 08:43:44 gcosmo Exp $
|
||||
# ----------------------------------------------------------------------
|
||||
# GNUmakefile for processes library, Gabriele Cosmo 27-Jun-1998
|
||||
# ----------------------------------------------------------------------
|
||||
@@ -20,6 +20,7 @@ SUBDIRS += electromagnetic/utils
|
||||
SUBDIRS += electromagnetic/xrays
|
||||
SUBDIRS += electromagnetic/lowenergy
|
||||
SUBDIRS += electromagnetic/highenergy
|
||||
SUBDIRS += electromagnetic/pii
|
||||
SUBDIRS += electromagnetic/polarisation
|
||||
|
||||
SUBLIBS = G4procman
|
||||
@@ -37,6 +38,7 @@ SUBLIBS += G4xrays
|
||||
SUBLIBS += G4emlowenergy
|
||||
SUBLIBS += G4emhighenergy
|
||||
SUBLIBS += G4emadjoint
|
||||
SUBLIBS += G4empii
|
||||
SUBLIBS += G4empolar
|
||||
|
||||
GLOBLIBS = libG4digits_hits.lib libG4track.lib libG4particles.lib libG4geometry.lib
|
||||
@@ -71,7 +73,6 @@ SUBDIRS += hadronic/models/high_energy
|
||||
SUBDIRS += hadronic/models/im_r_matrix
|
||||
SUBDIRS += hadronic/models/incl
|
||||
SUBDIRS += hadronic/models/isotope_production
|
||||
SUBDIRS += hadronic/models/leading_particle
|
||||
SUBDIRS += hadronic/models/lll_fission
|
||||
SUBDIRS += hadronic/models/low_energy
|
||||
SUBDIRS += hadronic/models/management
|
||||
@@ -102,7 +103,6 @@ SUBLIBS += G4hadronic_coherent_elastic
|
||||
SUBLIBS += G4hadronic_HE
|
||||
SUBLIBS += G4had_im_r_matrix
|
||||
SUBLIBS += G4hadronic_iso
|
||||
SUBLIBS += G4hadronic_leading_particle
|
||||
SUBLIBS += G4hadronic_LE
|
||||
SUBLIBS += G4hadronic_RPG
|
||||
SUBLIBS += G4hadronic_qmd
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4biasing
|
||||
# Package: Geant4.src.G4processes.G4biasing
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010/09/29 18:51:35 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.19 2008/04/22 09:29:35 ahoward Exp $
|
||||
$Id: History,v 1.20 2010/07/02 11:02:40 gcosmo Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,11 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
June 2nd, 2010 Gabriele Cosmo (procbiasing-V09-03-00)
|
||||
- G4WeightWindowProcess: corrected call to G4WeightWindowStore::GetLowerWeight()
|
||||
after correction of mispelling in name...
|
||||
- Requires tag geombias-V09-03-00.
|
||||
|
||||
April 22nd, 2008 Alex Howard (procbiasing-V09-01-02)
|
||||
- Removed G4CellFinder and associated dependency in G4WeigthCutOffProcess and
|
||||
G4WeightCutOffConfigurator- was a hang-up from previous implementation
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4biasing
|
||||
# Package: Geant4.src.G4processes.G4biasing
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.1 2010/09/29 18:51:43 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# List external includes needed.
|
||||
include_directories(${CLHEP_INCLUDE_DIRS})
|
||||
|
||||
# List internal includes needed.
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/digits_hits/detector/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/digits_hits/hits/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/biasing/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/magneticfield/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/navigation/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/volumes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPRandom/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/intercoms/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/materials/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/cuts/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/electromagnetic/utils/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/transportation/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/track/include)
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
include(Geant4MacroDefineModule)
|
||||
GEANT4_DEFINE_MODULE(NAME G4biasing
|
||||
HEADERS
|
||||
G4GeometrySampler.hh
|
||||
G4ImportanceConfigurator.hh
|
||||
G4ImportanceProcess.hh
|
||||
G4PlaceOfAction.hh
|
||||
G4ProcessPlacer.hh
|
||||
G4SamplingPostStepAction.hh
|
||||
G4TrackTerminator.hh
|
||||
G4VProcessPlacer.hh
|
||||
G4VSampler.hh
|
||||
G4VSamplerConfigurator.hh
|
||||
G4WeightCutOffConfigurator.hh
|
||||
G4WeightCutOffProcess.hh
|
||||
G4WeightWindowConfigurator.hh
|
||||
G4WeightWindowProcess.hh
|
||||
SOURCES
|
||||
G4GeometrySampler.cc
|
||||
G4ImportanceConfigurator.cc
|
||||
G4ImportanceProcess.cc
|
||||
G4ProcessPlacer.cc
|
||||
G4SamplingPostStepAction.cc
|
||||
G4VProcessPlacer.cc
|
||||
G4VSampler.cc
|
||||
G4VSamplerConfigurator.cc
|
||||
G4WeightCutOffConfigurator.cc
|
||||
G4WeightCutOffProcess.cc
|
||||
G4WeightWindowConfigurator.cc
|
||||
G4WeightWindowProcess.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4cuts
|
||||
G4detector
|
||||
G4emutils
|
||||
G4geombias
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4hits
|
||||
G4intercoms
|
||||
G4magneticfield
|
||||
G4materials
|
||||
G4navigation
|
||||
G4partman
|
||||
G4procman
|
||||
G4track
|
||||
G4transportation
|
||||
G4volumes
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4digits_hits
|
||||
G4geometry
|
||||
G4global
|
||||
G4intercoms
|
||||
G4materials
|
||||
G4particles
|
||||
G4track
|
||||
LINK_LIBRARIES
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4WeightWindowProcess.cc,v 1.4 2008/04/21 09:10:29 ahoward Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4WeightWindowProcess.cc,v 1.5 2010/07/02 11:02:40 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
// GEANT 4 class source file
|
||||
@@ -259,7 +259,7 @@ G4WeightWindowProcess::PostStepDoIt(const G4Track &aTrack,
|
||||
fGhostPostStepPoint->GetTouchable()->GetReplicaNumber());
|
||||
G4Nsplit_Weight nw =
|
||||
fWeightWindowAlgorithm.Calculate(aTrack.GetWeight(),
|
||||
fWeightWindowStore.GetLowerWeitgh(postCell,
|
||||
fWeightWindowStore.GetLowerWeight(postCell,
|
||||
aTrack.GetKineticEnergy()));
|
||||
fPostStepAction->DoIt(aTrack, fParticleChange, nw);
|
||||
}
|
||||
@@ -278,7 +278,7 @@ G4WeightWindowProcess::PostStepDoIt(const G4Track &aTrack,
|
||||
|
||||
G4Nsplit_Weight nw =
|
||||
fWeightWindowAlgorithm.Calculate(aTrack.GetWeight(),
|
||||
fWeightWindowStore.GetLowerWeitgh(postCell,
|
||||
fWeightWindowStore.GetLowerWeight(postCell,
|
||||
aTrack.GetKineticEnergy()));
|
||||
fPostStepAction->DoIt(aTrack, fParticleChange, nw);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4cuts
|
||||
# Package: Geant4.src.G4processes.G4cuts
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010/09/29 18:51:51 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.33 2009/11/12 00:20:03 kurasige Exp $
|
||||
$Id: History,v 1.35 2010/10/07 15:33:46 kurasige Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,12 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
Oct. 7th, 2010 - H.Kurashige (procuts-V09-03-01)
|
||||
- Fixed a possible memory leak soource
|
||||
|
||||
Jan. 22th, 2010 - H.Kurashige (procuts-V09-03-00)
|
||||
- Fixed G4ProductionCutTable to solve problems with zero range for protons
|
||||
|
||||
Nov. 12th, 2009 - H.Kurashige (procuts-V09-02-08)
|
||||
- Correfct spelling of /cuts/setMaxCutEnergy command
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4cuts
|
||||
# Package: Geant4.src.G4processes.G4cuts
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.1 2010/09/29 18:52:00 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# List external includes needed.
|
||||
include_directories(${CLHEP_INCLUDE_DIRS})
|
||||
|
||||
# List internal includes needed.
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/intercoms/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/materials/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
include(Geant4MacroDefineModule)
|
||||
GEANT4_DEFINE_MODULE(NAME G4cuts
|
||||
HEADERS
|
||||
G4MCCIndexConversionTable.hh
|
||||
G4MaterialCutsCouple.hh
|
||||
G4PhysicsTableHelper.hh
|
||||
G4ProductionCuts.hh
|
||||
G4ProductionCutsTable.hh
|
||||
G4ProductionCutsTableMessenger.hh
|
||||
G4RToEConvForElectron.hh
|
||||
G4RToEConvForGamma.hh
|
||||
G4RToEConvForPositron.hh
|
||||
G4RToEConvForProton.hh
|
||||
G4VRangeToEnergyConverter.hh
|
||||
SOURCES
|
||||
G4MCCIndexConversionTable.cc
|
||||
G4MaterialCutsCouple.cc
|
||||
G4PhysicsTableHelper.cc
|
||||
G4ProductionCuts.cc
|
||||
G4ProductionCutsTable.cc
|
||||
G4ProductionCutsTableMessenger.cc
|
||||
G4RToEConvForElectron.cc
|
||||
G4RToEConvForGamma.cc
|
||||
G4RToEConvForPositron.cc
|
||||
G4RToEConvForProton.cc
|
||||
G4VRangeToEnergyConverter.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4intercoms
|
||||
G4materials
|
||||
G4partman
|
||||
G4procman
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4geometry
|
||||
G4global
|
||||
G4intercoms
|
||||
G4materials
|
||||
G4particles
|
||||
LINK_LIBRARIES
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PhysicsTableHelper.cc,v 1.6 2009/08/01 07:57:13 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4PhysicsTableHelper.cc,v 1.7 2010/10/07 15:27:56 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
@@ -142,6 +142,7 @@ G4bool G4PhysicsTableHelper::RetrievePhysicsTable(G4PhysicsTable* physTable,
|
||||
G4cerr << "Fail to retreive from "<< fileName << G4endl;
|
||||
}
|
||||
#endif
|
||||
delete tempTable;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -160,6 +161,7 @@ G4bool G4PhysicsTableHelper::RetrievePhysicsTable(G4PhysicsTable* physTable,
|
||||
G4cerr << G4endl;
|
||||
}
|
||||
#endif
|
||||
delete tempTable;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4ProductionCutsTable.cc,v 1.25 2009/11/11 03:20:22 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4ProductionCutsTable.cc,v 1.27 2010/01/22 11:10:26 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
@@ -251,9 +251,9 @@ void G4ProductionCutsTable::UpdateCoupleTable(G4VPhysicalVolume* currentWorld)
|
||||
}
|
||||
if (verboseLevel>2) {
|
||||
timer.Stop();
|
||||
std::cout << "G4ProductionCutsTable::UpdateCoupleTable "
|
||||
G4cout << "G4ProductionCutsTable::UpdateCoupleTable "
|
||||
<< " elapsed time for calculation of energy cuts " << G4endl;
|
||||
std::cout << timer <<G4endl;
|
||||
G4cout << timer <<G4endl;
|
||||
}
|
||||
|
||||
// resize Range/Energy cuts double vectors if new couple is made
|
||||
@@ -290,7 +290,8 @@ G4double G4ProductionCutsTable::ConvertRangeToEnergy(
|
||||
if (material ==0) return -1.0;
|
||||
|
||||
// check range
|
||||
if (range <=0.0) return -1.0;
|
||||
if (range ==0.0) return 0.0;
|
||||
if (range <0.0) return -1.0;
|
||||
|
||||
// check particle
|
||||
G4int index = G4ProductionCuts::GetIndex(particle);
|
||||
@@ -921,9 +922,12 @@ G4ProductionCutsTable::CheckMaterialCutsCoupleInfo(const G4String& directory,
|
||||
G4ProductionCuts* aCut = aCouple->GetProductionCuts();
|
||||
G4bool fRatio = true;
|
||||
for (size_t j=0; j< NumberOfG4CutIndex; j++) {
|
||||
G4double ratio = cutValues[j]/aCut->GetProductionCut(j);
|
||||
fRatio = fRatio && (0.999<ratio) && (ratio<1.001) ;
|
||||
}
|
||||
// check ratio only if values are not the same
|
||||
if (cutValues[j] != aCut->GetProductionCut(j)) {
|
||||
G4double ratio = cutValues[j]/aCut->GetProductionCut(j);
|
||||
fRatio = fRatio && (0.999<ratio) && (ratio<1.001) ;
|
||||
}
|
||||
}
|
||||
if (!fRatio) continue;
|
||||
// MCC matched
|
||||
fOK = true;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4decay
|
||||
# Package: Geant4.src.G4processes.G4decay
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010/09/29 18:52:08 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.34 2008/11/14 15:55:47 kurasige Exp $
|
||||
$Id: History,v 1.36 2010/10/30 07:45:38 kurasige Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -16,6 +16,12 @@ committal in the CVS repository !
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
-Oct. 30 2010 H.Kurashige (decay-V09-03-01)
|
||||
- Fix minor bugs reported by Coverity
|
||||
|
||||
-Aug. 10 2010 H.Kurashige (decay-V09-03-00)
|
||||
- Use const pointer to G4ParticleDefinition because it should not be modified.
|
||||
|
||||
-Sep. 19 2008 H.Kurashige (decay-V09-01-04)
|
||||
- modify process sub type enumeration
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4decay
|
||||
# Package: Geant4.src.G4processes.G4decay
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.1 2010/09/29 18:52:16 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# List external includes needed.
|
||||
include_directories(${CLHEP_INCLUDE_DIRS})
|
||||
|
||||
# List internal includes needed.
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/magneticfield/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/navigation/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/solids/CSG/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/volumes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPRandom/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/intercoms/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/materials/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/track/include)
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
include(Geant4MacroDefineModule)
|
||||
GEANT4_DEFINE_MODULE(NAME G4decay
|
||||
HEADERS
|
||||
G4Decay.hh
|
||||
G4DecayProcessType.hh
|
||||
G4DecayWithSpin.hh
|
||||
G4PionDecayMakeSpin.hh
|
||||
G4UnknownDecay.hh
|
||||
G4VExtDecayer.hh
|
||||
SOURCES
|
||||
G4Decay.cc
|
||||
G4DecayWithSpin.cc
|
||||
G4PionDecayMakeSpin.cc
|
||||
G4UnknownDecay.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4csg
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4intercoms
|
||||
G4magneticfield
|
||||
G4materials
|
||||
G4navigation
|
||||
G4partman
|
||||
G4procman
|
||||
G4track
|
||||
G4volumes
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4geometry
|
||||
G4global
|
||||
G4intercoms
|
||||
G4materials
|
||||
G4particles
|
||||
G4track
|
||||
LINK_LIBRARIES
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4Decay.cc,v 1.30 2008/09/19 03:19:53 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4Decay.cc,v 1.32 2010/10/30 06:51:05 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
@@ -61,6 +61,7 @@ G4Decay::G4Decay(const G4String& processName)
|
||||
:G4VRestDiscreteProcess(processName, fDecay),
|
||||
verboseLevel(1),
|
||||
HighestValue(20.0),
|
||||
fRemainderLifeTime(-1.0),
|
||||
pExtDecayer(0)
|
||||
{
|
||||
// set Process Sub Type
|
||||
@@ -102,7 +103,7 @@ G4double G4Decay::GetMeanLifeTime(const G4Track& aTrack ,
|
||||
|
||||
// get particle
|
||||
const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
|
||||
G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
|
||||
const G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
|
||||
G4double aLife = aParticleDef->GetPDGLifeTime();
|
||||
|
||||
// check if the particle is stable?
|
||||
@@ -126,7 +127,7 @@ G4double G4Decay::GetMeanFreePath(const G4Track& aTrack,G4double, G4ForceConditi
|
||||
{
|
||||
// get particle
|
||||
const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
|
||||
G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
|
||||
const G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
|
||||
G4double aMass = aParticle->GetMass();
|
||||
G4double aLife = aParticleDef->GetPDGLifeTime();
|
||||
|
||||
@@ -185,7 +186,7 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& )
|
||||
|
||||
// get particle
|
||||
const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
|
||||
G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
|
||||
const G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
|
||||
|
||||
// check if the particle is stable
|
||||
if (aParticleDef->GetPDGStable()) return &fParticleChangeForDecay ;
|
||||
|
||||
@@ -61,7 +61,7 @@ G4VParticleChange* G4DecayWithSpin::DecayIt(const G4Track& aTrack, const G4Step&
|
||||
|
||||
// get particle
|
||||
const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
|
||||
G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
|
||||
const G4ParticleDefinition* aParticleDef = aParticle->GetDefinition();
|
||||
|
||||
// get parent_polarization
|
||||
G4ThreeVector parent_polarization = aParticle->GetPolarization();
|
||||
|
||||
@@ -95,7 +95,7 @@ void G4PionDecayMakeSpin::DaughterPolarization(const G4Track& aTrack,
|
||||
for (G4int index=0; index < numberOfSecondaries; index++)
|
||||
{
|
||||
G4DynamicParticle* aSecondary = (*products)[index];
|
||||
G4ParticleDefinition* aSecondaryDef = aSecondary->GetDefinition();
|
||||
const G4ParticleDefinition* aSecondaryDef = aSecondary->GetDefinition();
|
||||
|
||||
if (aSecondaryDef == aMuonPlus ||
|
||||
aSecondaryDef == aMuonMinus ) {
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4electromagnetic
|
||||
# Package: Geant4.src.G4processes.G4electromagnetic
|
||||
#
|
||||
# Intermediate level CMakeLists.txt - just process subdirectories
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.2 2010/11/19 08:39:52 gcosmo Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
add_subdirectory(adjoint)
|
||||
add_subdirectory(highenergy)
|
||||
add_subdirectory(lowenergy)
|
||||
add_subdirectory(muons)
|
||||
add_subdirectory(pii)
|
||||
add_subdirectory(polarisation)
|
||||
add_subdirectory(standard)
|
||||
add_subdirectory(utils)
|
||||
add_subdirectory(xrays)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.7 2008/11/14 19:54:40 gcosmo Exp $
|
||||
# $Id: GNUmakefile,v 1.9 2010/11/19 08:44:20 gcosmo Exp $
|
||||
# ------------------------------------------------------------------
|
||||
# GNUmakefile for electromagnetic library. Gabriele Cosmo, 18/9/96.
|
||||
# ------------------------------------------------------------------
|
||||
@@ -7,8 +7,8 @@ MAKEFLAGS= --no-print-directory
|
||||
|
||||
name := G4electromagnetic
|
||||
|
||||
SUBDIRS = muons standard utils xrays lowenergy highenergy adjoint polarisation
|
||||
SUBLIBS = G4muons G4emstandard G4emutils G4xrays G4emlowenergy G4emhighenergy G4emadjoint G4polar
|
||||
SUBDIRS = muons standard utils xrays lowenergy highenergy adjoint polarisation pii
|
||||
SUBLIBS = G4muons G4emstandard G4emutils G4xrays G4emlowenergy G4emhighenergy G4emadjoint G4empolar G4empii
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4emadjoint
|
||||
# Package: Geant4.src.G4processes.G4electromagnetic.G4emadjoint
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010/09/29 18:52:32 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.5 2009/11/23 09:02:35 gcosmo Exp $
|
||||
$Id: History,v 1.8 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,23 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
11 Nov 2010: L. Desorgher (emadjoint-V09-03-02)
|
||||
-G4AdjointBremsstrahlungModel: add a G4EmModelManager to initialise properly,
|
||||
the G4eBremsstrahlungModel used as forward model. This allows to fix the
|
||||
floating point exception detected when compiling with G4FPE_DEBUG=1.
|
||||
-G4AdjointhIonisation:
|
||||
Remove a negative term in the expression of the adjoint
|
||||
cross section (AdjointCrossSection method) and adapt the RapidSampleSecondaries method.
|
||||
-G4VEmAdjointModel:
|
||||
Add a check on null cross section to avoid FPE.
|
||||
|
||||
3 Sep 2010: G.Cosmo (emadjoint-V09-03-01)
|
||||
- G4AdjointAlongStepWeightCorrection: get rid of call to non-Standard isnan(),
|
||||
replaced by explicit validity test.
|
||||
|
||||
12 Apr 2010: V.Ivanchenko (emadjoint-V09-03-00)
|
||||
- G4AdjointhMultipleScattering: removed obsolete unused header.
|
||||
|
||||
23 Nov 2009: G.Cosmo (emadjoint-V09-02-02)
|
||||
- Corrected compilation error on Windows for G4AdjointAlongStepWeightCorrection.
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointBremsstrahlungModel.hh,v 1.4 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointBremsstrahlungModel.hh,v 1.5 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Class: G4AdjointBremsstrahlungModel
|
||||
@@ -59,7 +59,7 @@
|
||||
#include "G4eBremsstrahlungModel.hh"
|
||||
//#include "G4PenelopeBremsstrahlungModel.hh"
|
||||
#include "G4PhysicsTable.hh"
|
||||
//#include "G4EmModelManager.hh"
|
||||
#include "G4EmModelManager.hh"
|
||||
class G4Timer;
|
||||
class G4AdjointBremsstrahlungModel: public G4VEmAdjointModel
|
||||
|
||||
@@ -91,14 +91,19 @@ public:
|
||||
);
|
||||
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase);
|
||||
G4bool IsScatProjToProjCase);
|
||||
virtual G4double GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase);
|
||||
|
||||
|
||||
// private void InitialiseFwdModels();
|
||||
|
||||
|
||||
private:
|
||||
private:
|
||||
G4eBremsstrahlungModel* theDirectStdBremModel;
|
||||
G4EmModelManager* theEmModelManagerForFwdModels;
|
||||
G4bool isDirectModelInitialised ;
|
||||
//G4PenelopeBremsstrahlungModel* theDirectPenelopeBremModel;
|
||||
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointCSManager.hh,v 1.4 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointCSManager.hh,v 1.5 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Class: G4AdjointCSManager
|
||||
@@ -79,7 +79,7 @@ class G4AdjointCSManager
|
||||
|
||||
//Registration of the different models and processes
|
||||
|
||||
void RegisterEmAdjointModel(G4VEmAdjointModel*);
|
||||
size_t RegisterEmAdjointModel(G4VEmAdjointModel*);
|
||||
|
||||
void RegisterEmProcess(G4VEmProcess* aProcess, G4ParticleDefinition* aPartDef);
|
||||
|
||||
@@ -101,6 +101,8 @@ class G4AdjointCSManager
|
||||
G4double GetTotalForwardCS(G4ParticleDefinition* aPartDef, G4double Ekin,
|
||||
const G4MaterialCutsCouple* aCouple);
|
||||
|
||||
G4double GetAdjointSigma(G4double Ekin_nuc, size_t index_model,G4bool is_scat_proj_to_proj,
|
||||
const G4MaterialCutsCouple* aCouple);
|
||||
|
||||
void GetEminForTotalCS(G4ParticleDefinition* aPartDef,
|
||||
const G4MaterialCutsCouple* aCouple, G4double& emin_adj, G4double& emin_fwd);
|
||||
@@ -205,8 +207,13 @@ class G4AdjointCSManager
|
||||
std::vector< std::vector<G4double> > EminForAdjSigmaTables;
|
||||
std::vector< std::vector<G4double> > EkinofFwdSigmaMax;
|
||||
std::vector< std::vector<G4double> > EkinofAdjSigmaMax;
|
||||
G4bool TotalSigmaTableAreBuilt;
|
||||
|
||||
//Sigma tavle for each G4VAdjointEMModel
|
||||
std::vector<G4PhysicsTable*> listSigmaTableForAdjointModelScatProjToProj;
|
||||
std::vector<G4PhysicsTable*> listSigmaTableForAdjointModelProdToProj;
|
||||
|
||||
|
||||
|
||||
|
||||
//list of forward G4VEMLossProcess and of G4VEMProcess for the different adjoint particle
|
||||
@@ -265,6 +272,7 @@ class G4AdjointCSManager
|
||||
void DefineCurrentMaterial(const G4MaterialCutsCouple* couple);
|
||||
void DefineCurrentParticle(const G4ParticleDefinition* aPartDef);
|
||||
G4double ComputeAdjointCS(G4double aPrimEnergy, G4AdjointCSMatrix* anAdjointCSMatrix, G4double Tcut);
|
||||
size_t eindex;
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointComptonModel.hh,v 1.5 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointComptonModel.hh,v 1.6 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Class: G4AdjointComptonModel
|
||||
@@ -86,6 +86,10 @@ public:
|
||||
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase);
|
||||
|
||||
virtual G4double GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointPhotoElectricModel.hh,v 1.4 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointPhotoElectricModel.hh,v 1.5 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Module: G4AdjointPhotoElectricModel
|
||||
@@ -76,6 +76,9 @@ public:
|
||||
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase);
|
||||
virtual G4double GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase);
|
||||
|
||||
G4double AdjointCrossSectionPerAtom(const G4Element* anElement,G4double electronEnergy);
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ContinuousGainOfEnergy.hh,v 1.4 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4ContinuousGainOfEnergy.hh,v 1.5 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Class: G4ContinuousGainOfEnergy
|
||||
@@ -161,6 +161,7 @@ private:
|
||||
G4VEmModel* currentModel;
|
||||
G4double preStepChargeSqRatio;
|
||||
G4double preStepScaledKinEnergy;
|
||||
G4double preStepRange;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEmAdjointModel.hh,v 1.4 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4VEmAdjointModel.hh,v 1.5 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Module: G4VEMAdjointModel
|
||||
@@ -98,6 +98,10 @@ public: // public methods
|
||||
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase);
|
||||
|
||||
virtual G4double GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase);
|
||||
|
||||
virtual G4double DiffCrossSectionPerAtomPrimToSecond(
|
||||
G4double kinEnergyProj, // kinetic energy of the primary particle before the interaction
|
||||
@@ -313,8 +317,10 @@ protected: //attributes
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//For ions
|
||||
//---------
|
||||
G4double mass_ratio_product;
|
||||
G4double mass_ratio_projectile;
|
||||
|
||||
|
||||
//Energy limits
|
||||
@@ -341,6 +347,8 @@ protected: //attributes
|
||||
//------------
|
||||
size_t indexOfUsedCrossSectionMatrix;
|
||||
|
||||
size_t model_index;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4emadjoint
|
||||
# Package: Geant4.src.G4processes.G4electromagnetic.G4emadjoint
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.1 2010/09/29 18:52:40 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# List external includes needed.
|
||||
include_directories(${CLHEP_INCLUDE_DIRS})
|
||||
|
||||
# List internal includes needed.
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/navigation/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/volumes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPNumerics/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPRandom/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/intercoms/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/materials/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/adjoint/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/bosons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/barions/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/ions/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/mesons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/leptons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/cuts/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/electromagnetic/standard/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/electromagnetic/utils/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/track/include)
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
include(Geant4MacroDefineModule)
|
||||
GEANT4_DEFINE_MODULE(NAME G4emadjoint
|
||||
HEADERS
|
||||
G4AdjointAlongStepWeightCorrection.hh
|
||||
G4AdjointBremsstrahlungModel.hh
|
||||
G4AdjointCSManager.hh
|
||||
G4AdjointCSMatrix.hh
|
||||
G4AdjointComptonModel.hh
|
||||
G4AdjointInterpolator.hh
|
||||
G4AdjointIonIonisationModel.hh
|
||||
G4AdjointPhotoElectricModel.hh
|
||||
G4AdjointProcessEquivalentToDirectProcess.hh
|
||||
G4AdjointeIonisationModel.hh
|
||||
G4AdjointhIonisationModel.hh
|
||||
G4AdjointhMultipleScattering.hh
|
||||
G4ContinuousGainOfEnergy.hh
|
||||
G4InversePEEffect.hh
|
||||
G4IonInverseIonisation.hh
|
||||
G4VAdjointReverseReaction.hh
|
||||
G4VEmAdjointModel.hh
|
||||
G4eInverseBremsstrahlung.hh
|
||||
G4eInverseCompton.hh
|
||||
G4eInverseIonisation.hh
|
||||
G4hInverseIonisation.hh
|
||||
SOURCES
|
||||
G4AdjointAlongStepWeightCorrection.cc
|
||||
G4AdjointBremsstrahlungModel.cc
|
||||
G4AdjointCSManager.cc
|
||||
G4AdjointCSMatrix.cc
|
||||
G4AdjointComptonModel.cc
|
||||
G4AdjointInterpolator.cc
|
||||
G4AdjointIonIonisationModel.cc
|
||||
G4AdjointPhotoElectricModel.cc
|
||||
G4AdjointProcessEquivalentToDirectProcess.cc
|
||||
G4AdjointeIonisationModel.cc
|
||||
G4AdjointhIonisationModel.cc
|
||||
G4AdjointhMultipleScattering.cc
|
||||
G4ContinuousGainOfEnergy.cc
|
||||
G4InversePEEffect.cc
|
||||
G4IonInverseIonisation.cc
|
||||
G4VAdjointReverseReaction.cc
|
||||
G4VEmAdjointModel.cc
|
||||
G4eInverseBremsstrahlung.cc
|
||||
G4eInverseCompton.cc
|
||||
G4eInverseIonisation.cc
|
||||
G4hInverseIonisation.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4baryons
|
||||
G4bosons
|
||||
G4cuts
|
||||
G4emstandard
|
||||
G4emutils
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4hepnumerics
|
||||
G4intercoms
|
||||
G4ions
|
||||
G4leptons
|
||||
G4materials
|
||||
G4mesons
|
||||
G4navigation
|
||||
G4partadj
|
||||
G4partman
|
||||
G4procman
|
||||
G4track
|
||||
G4volumes
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4geometry
|
||||
G4global
|
||||
G4intercoms
|
||||
G4materials
|
||||
G4particles
|
||||
G4track
|
||||
LINK_LIBRARIES
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointAlongStepWeightCorrection.cc,v 1.5 2009/11/23 09:02:35 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointAlongStepWeightCorrection.cc,v 1.6 2010/09/03 14:33:21 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4AdjointAlongStepWeightCorrection.hh"
|
||||
#include "G4Step.hh"
|
||||
@@ -89,11 +89,7 @@ G4VParticleChange* G4AdjointAlongStepWeightCorrection::AlongStepDoIt(const G4Tra
|
||||
//When the new weight is 0 it will be later on consider as nan by G4.
|
||||
//Therefore we do put a lower limit of 1.e-300. for new_weight
|
||||
//Correction by L.Desorgher on 15 July 2009
|
||||
#ifdef WIN32
|
||||
if (!!_isnan(new_weight) || new_weight==0){
|
||||
#else
|
||||
if (std::isnan(new_weight) || new_weight==0){
|
||||
#endif
|
||||
if (new_weight==0 || (new_weight<=0 && new_weight>0)){
|
||||
//G4cout<<new_weight<<'\t'<<weight_correction<<'\t'<<track.GetWeight()<<G4endl;
|
||||
new_weight=1.e-300;
|
||||
}
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointBremsstrahlungModel.cc,v 1.5 2009/12/16 17:50:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointBremsstrahlungModel.cc,v 1.6 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4AdjointBremsstrahlungModel.hh"
|
||||
#include "G4AdjointCSManager.hh"
|
||||
@@ -50,6 +50,11 @@ G4AdjointBremsstrahlungModel::G4AdjointBremsstrahlungModel():
|
||||
|
||||
theDirectStdBremModel = new G4eBremsstrahlungModel(G4Electron::Electron(),"TheDirecteBremModel");
|
||||
theDirectEMModel=theDirectStdBremModel;
|
||||
theEmModelManagerForFwdModels = new G4EmModelManager();
|
||||
isDirectModelInitialised = false;
|
||||
G4VEmFluctuationModel* f=0;
|
||||
G4Region* r=0;
|
||||
theEmModelManagerForFwdModels->AddEmModel(1, theDirectStdBremModel, f, r);
|
||||
// theDirectPenelopeBremModel =0;
|
||||
|
||||
SetApplyCutInRange(true);
|
||||
@@ -277,11 +282,11 @@ G4double G4AdjointBremsstrahlungModel::DiffCrossSectionPerVolumePrimToSecond(con
|
||||
G4double kinEnergyProj, // kinetic energy of the primary particle before the interaction
|
||||
G4double kinEnergyProd // kinetic energy of the secondary particle
|
||||
)
|
||||
{/*if (UsePenelopeModel && !isPenelopeModelInitialised) {
|
||||
theEmModelManagerForFwdModels->Initialise(G4Electron::Electron(),G4Gamma::Gamma(),1.,0);
|
||||
isPenelopeModelInitialised =true;
|
||||
}
|
||||
*/
|
||||
{if (!isDirectModelInitialised) {
|
||||
theEmModelManagerForFwdModels->Initialise(G4Electron::Electron(),G4Gamma::Gamma(),1.,0);
|
||||
isDirectModelInitialised =true;
|
||||
}
|
||||
|
||||
return DiffCrossSectionPerVolumePrimToSecondApproximated2(aMaterial,
|
||||
kinEnergyProj,
|
||||
kinEnergyProd);
|
||||
@@ -304,8 +309,8 @@ G4double G4AdjointBremsstrahlungModel::DiffCrossSectionPerVolumePrimToSecondAppr
|
||||
|
||||
|
||||
//In this approximation we consider that the secondary gammas are sampled with 1/Egamma energy distribution
|
||||
//This is what is applied in the discrete standard model before the rejection test that make a cooerction
|
||||
//The application of the same rejection function is not possble here.
|
||||
//This is what is applied in the discrete standard model before the rejection test that make a correction
|
||||
//The application of the same rejection function is not possible here.
|
||||
//The differentiation of the CS over Ecut does not produce neither a good differential CS. That is due to the
|
||||
// fact that in the discrete model the differential CS and the integrated CS are both fitted but separatly and
|
||||
// therefore do not allow a correct numerical differentiation of the integrated CS to get the differential one.
|
||||
@@ -364,11 +369,10 @@ G4double G4AdjointBremsstrahlungModel::DiffCrossSectionPerVolumePrimToSecondAppr
|
||||
G4double G4AdjointBremsstrahlungModel::AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase)
|
||||
{/* if (UsePenelopeModel && !isPenelopeModelInitialised) {
|
||||
{ if (!isDirectModelInitialised) {
|
||||
theEmModelManagerForFwdModels->Initialise(G4Electron::Electron(),G4Gamma::Gamma(),1.,0);
|
||||
isPenelopeModelInitialised =true;
|
||||
isDirectModelInitialised =true;
|
||||
}
|
||||
*/
|
||||
if (UseMatrix) return G4VEmAdjointModel::AdjointCrossSection(aCouple,primEnergy,IsScatProjToProjCase);
|
||||
DefineCurrentMaterial(aCouple);
|
||||
G4double Cross=0.;
|
||||
@@ -388,7 +392,15 @@ G4double G4AdjointBremsstrahlungModel::AdjointCrossSection(const G4MaterialCutsC
|
||||
return Cross;
|
||||
}
|
||||
|
||||
|
||||
G4double G4AdjointBremsstrahlungModel::GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase)
|
||||
{
|
||||
return AdjointCrossSection(aCouple, primEnergy,IsScatProjToProjCase);
|
||||
lastCZ=theDirectEMModel->CrossSectionPerVolume(aCouple->GetMaterial(),theDirectPrimaryPartDef,100.*MeV,100.*MeV/std::exp(1.));//this give the constant above
|
||||
return G4VEmAdjointModel::GetAdjointCrossSection(aCouple, primEnergy,IsScatProjToProjCase);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointCSManager.cc,v 1.5 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointCSManager.cc,v 1.6 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4AdjointCSManager.hh"
|
||||
#include "G4AdjointCSMatrix.hh"
|
||||
@@ -67,6 +67,7 @@ G4AdjointCSManager* G4AdjointCSManager::GetAdjointCSManager()
|
||||
//
|
||||
G4AdjointCSManager::G4AdjointCSManager()
|
||||
{ CrossSectionMatrixesAreBuilt=false;
|
||||
TotalSigmaTableAreBuilt=false;
|
||||
theTotalForwardSigmaTableVector.clear();
|
||||
theTotalAdjointSigmaTableVector.clear();
|
||||
listOfForwardEmProcess.clear();
|
||||
@@ -76,9 +77,11 @@ G4AdjointCSManager::G4AdjointCSManager()
|
||||
EminForAdjSigmaTables.clear();
|
||||
EkinofFwdSigmaMax.clear();
|
||||
EkinofAdjSigmaMax.clear();
|
||||
listSigmaTableForAdjointModelScatProjToProj.clear();
|
||||
listSigmaTableForAdjointModelProdToProj.clear();
|
||||
Tmin=0.1*keV;
|
||||
Tmax=100.*TeV;
|
||||
nbins=360; //probably this should be decrease, that was choosen to avoid error in the CS value closed to CS jump.(For example at Tcut)
|
||||
nbins=320; //probably this should be decrease, that was choosen to avoid error in the CS value closed to CS jump.(For example at Tcut)
|
||||
|
||||
RegisterAdjointParticle(G4AdjointElectron::AdjointElectron());
|
||||
RegisterAdjointParticle(G4AdjointGamma::AdjointGamma());
|
||||
@@ -106,8 +109,12 @@ G4AdjointCSManager::~G4AdjointCSManager()
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
void G4AdjointCSManager::RegisterEmAdjointModel(G4VEmAdjointModel* aModel)
|
||||
size_t G4AdjointCSManager::RegisterEmAdjointModel(G4VEmAdjointModel* aModel)
|
||||
{listOfAdjointEMModel.push_back(aModel);
|
||||
listSigmaTableForAdjointModelScatProjToProj.push_back(new G4PhysicsTable);
|
||||
listSigmaTableForAdjointModelProdToProj.push_back(new G4PhysicsTable);
|
||||
return listOfAdjointEMModel.size() -1;
|
||||
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -249,8 +256,24 @@ void G4AdjointCSManager::BuildCrossSectionMatrices()
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
void G4AdjointCSManager::BuildTotalSigmaTables()
|
||||
{
|
||||
{ if (TotalSigmaTableAreBuilt) return;
|
||||
|
||||
|
||||
const G4ProductionCutsTable* theCoupleTable= G4ProductionCutsTable::GetProductionCutsTable();
|
||||
|
||||
|
||||
//Prepare the Sigma table for all AdjointEMModel, will be filled later on
|
||||
for (size_t i=0; i<listOfAdjointEMModel.size();i++){
|
||||
listSigmaTableForAdjointModelScatProjToProj[i]->clearAndDestroy();
|
||||
listSigmaTableForAdjointModelProdToProj[i]->clearAndDestroy();
|
||||
for (size_t j=0;j<theCoupleTable->GetTableSize();j++){
|
||||
listSigmaTableForAdjointModelScatProjToProj[i]->push_back(new G4PhysicsLogVector(Tmin, Tmax, nbins));
|
||||
listSigmaTableForAdjointModelProdToProj[i]->push_back(new G4PhysicsLogVector(Tmin, Tmax, nbins));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
for (size_t i=0;i<theListOfAdjointParticlesInAction.size();i++){
|
||||
G4ParticleDefinition* thePartDef = theListOfAdjointParticlesInAction[i];
|
||||
DefineCurrentParticle(thePartDef);
|
||||
@@ -333,10 +356,10 @@ void G4AdjointCSManager::BuildTotalSigmaTables()
|
||||
e_sigma_max =0.;
|
||||
ind=0;
|
||||
G4PhysicsVector* aVector1 = new G4PhysicsLogVector(Tmin, Tmax, nbins);
|
||||
for(size_t l=0; l<aVector->GetVectorLength(); l++) {
|
||||
G4double e=aVector->GetLowEdgeEnergy(l);
|
||||
for(eindex=0; eindex<aVector->GetVectorLength(); eindex++) {
|
||||
G4double e=aVector->GetLowEdgeEnergy(eindex);
|
||||
G4double totCS =ComputeTotalAdjointCS(couple,thePartDef,e*0.9999999/massRatio); //massRatio needed for ions
|
||||
aVector1->PutValue(l,totCS);
|
||||
aVector1->PutValue(eindex,totCS);
|
||||
if (totCS>sigma_max){
|
||||
sigma_max=totCS;
|
||||
e_sigma_max = e;
|
||||
@@ -357,6 +380,7 @@ void G4AdjointCSManager::BuildTotalSigmaTables()
|
||||
|
||||
}
|
||||
}
|
||||
TotalSigmaTableAreBuilt =true;
|
||||
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
@@ -382,7 +406,15 @@ G4double G4AdjointCSManager::GetTotalForwardCS(G4ParticleDefinition* aPartDef, G
|
||||
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
G4double G4AdjointCSManager::GetAdjointSigma(G4double Ekin_nuc, size_t index_model,G4bool is_scat_proj_to_proj,
|
||||
const G4MaterialCutsCouple* aCouple)
|
||||
{ DefineCurrentMaterial(aCouple);
|
||||
G4bool b;
|
||||
if (is_scat_proj_to_proj) return (((*listSigmaTableForAdjointModelScatProjToProj[index_model])[currentMatIndex])->GetValue(Ekin_nuc, b));
|
||||
else return (((*listSigmaTableForAdjointModelProdToProj[index_model])[currentMatIndex])->GetValue(Ekin_nuc, b));
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
void G4AdjointCSManager::GetEminForTotalCS(G4ParticleDefinition* aPartDef,
|
||||
@@ -655,6 +687,7 @@ G4double G4AdjointCSManager::ComputeTotalAdjointCS(const G4MaterialCutsCouple* a
|
||||
|
||||
|
||||
std::vector<G4double> CS_Vs_Element;
|
||||
G4double CS;
|
||||
for (size_t i=0; i<listOfAdjointEMModel.size();i++){
|
||||
|
||||
G4double Tlow=0;
|
||||
@@ -673,20 +706,28 @@ G4double G4AdjointCSManager::ComputeTotalAdjointCS(const G4MaterialCutsCouple* a
|
||||
|
||||
|
||||
}
|
||||
|
||||
if ( Ekin<=listOfAdjointEMModel[i]->GetHighEnergyLimit() && Ekin>=listOfAdjointEMModel[i]->GetLowEnergyLimit()){
|
||||
if (aPartDef == listOfAdjointEMModel[i]->GetAdjointEquivalentOfDirectPrimaryParticleDefinition()){
|
||||
TotalCS += ComputeAdjointCS(currentMaterial,
|
||||
CS=ComputeAdjointCS(currentMaterial,
|
||||
listOfAdjointEMModel[i],
|
||||
Ekin, Tlow,true,CS_Vs_Element);
|
||||
Ekin, Tlow,true,CS_Vs_Element);
|
||||
TotalCS += CS;
|
||||
(*listSigmaTableForAdjointModelScatProjToProj[i])[currentMatIndex]->PutValue(eindex,CS);
|
||||
}
|
||||
if (aPartDef == listOfAdjointEMModel[i]->GetAdjointEquivalentOfDirectSecondaryParticleDefinition()){
|
||||
TotalCS += ComputeAdjointCS(currentMaterial,
|
||||
CS = ComputeAdjointCS(currentMaterial,
|
||||
listOfAdjointEMModel[i],
|
||||
Ekin, Tlow,false, CS_Vs_Element);
|
||||
TotalCS += CS;
|
||||
(*listSigmaTableForAdjointModelProdToProj[i])[currentMatIndex]->PutValue(eindex,CS);
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
(*listSigmaTableForAdjointModelScatProjToProj[i])[currentMatIndex]->PutValue(eindex,0.);
|
||||
(*listSigmaTableForAdjointModelProdToProj[i])[currentMatIndex]->PutValue(eindex,0.);
|
||||
|
||||
}
|
||||
}
|
||||
return TotalCS;
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointComptonModel.cc,v 1.6 2009/12/16 17:50:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointComptonModel.cc,v 1.7 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4AdjointComptonModel.hh"
|
||||
#include "G4AdjointCSManager.hh"
|
||||
@@ -45,7 +45,7 @@ G4AdjointComptonModel::G4AdjointComptonModel():
|
||||
G4VEmAdjointModel("AdjointCompton")
|
||||
|
||||
{ SetApplyCutInRange(false);
|
||||
SetUseMatrix(true);
|
||||
SetUseMatrix(false);
|
||||
SetUseMatrixPerElement(true);
|
||||
SetUseOnlyOneMatrixForAllElements(true);
|
||||
theAdjEquivOfDirectPrimPartDef =G4AdjointGamma::AdjointGamma();
|
||||
@@ -170,6 +170,7 @@ void G4AdjointComptonModel::RapidSampleSecondaries(const G4Track& aTrack,
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4double diffCSUsed=currentMaterial->GetElectronDensity()*twopi_mc2_rcl2;
|
||||
G4double gammaE1=0.;
|
||||
G4double gammaE2=0.;
|
||||
@@ -380,15 +381,15 @@ G4double G4AdjointComptonModel::AdjointCrossSection(const G4MaterialCutsCouple*
|
||||
DefineCurrentMaterial(aCouple);
|
||||
|
||||
|
||||
G4double Cross=0.;
|
||||
G4double Emax_proj =0.;
|
||||
G4double Emin_proj =0.;
|
||||
float Cross=0.;
|
||||
float Emax_proj =0.;
|
||||
float Emin_proj =0.;
|
||||
if (!IsScatProjToProjCase ){
|
||||
Emax_proj = GetSecondAdjEnergyMaxForProdToProjCase(primEnergy);
|
||||
Emin_proj = GetSecondAdjEnergyMinForProdToProjCase(primEnergy);
|
||||
if (Emax_proj>Emin_proj ){
|
||||
Cross= std::log((Emax_proj-primEnergy)*Emin_proj/Emax_proj/(Emin_proj-primEnergy))
|
||||
*(1.+2.*std::log(1.+electron_mass_c2/primEnergy));
|
||||
Cross= std::log((Emax_proj-float (primEnergy))*Emin_proj/Emax_proj/(Emin_proj-primEnergy))
|
||||
*(1.+2.*std::log(float(1.+electron_mass_c2/primEnergy)));
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -404,5 +405,13 @@ G4double G4AdjointComptonModel::AdjointCrossSection(const G4MaterialCutsCouple*
|
||||
|
||||
Cross*=currentMaterial->GetElectronDensity()*twopi_mc2_rcl2;
|
||||
lastCS=Cross;
|
||||
return Cross;
|
||||
return double(Cross);
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
G4double G4AdjointComptonModel::GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase)
|
||||
{ return AdjointCrossSection(aCouple, primEnergy,IsScatProjToProjCase);
|
||||
//return G4VEmAdjointModel::GetAdjointCrossSection(aCouple, primEnergy,IsScatProjToProjCase);
|
||||
}
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointIonIonisationModel.cc,v 1.2 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointIonIonisationModel.cc,v 1.3 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4AdjointIonIonisationModel.hh"
|
||||
#include "G4AdjointCSManager.hh"
|
||||
@@ -314,6 +314,7 @@ void G4AdjointIonIonisationModel::DefineProjectileProperty()
|
||||
|
||||
mass = theDirectPrimaryPartDef->GetPDGMass();
|
||||
massRatio= G4GenericIon::GenericIon()->GetPDGMass()/mass;
|
||||
mass_ratio_projectile = massRatio;
|
||||
spin = theDirectPrimaryPartDef->GetPDGSpin();
|
||||
G4double q = theDirectPrimaryPartDef->GetPDGCharge()/eplus;
|
||||
chargeSquare = q*q;
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointPhotoElectricModel.cc,v 1.5 2009/12/16 17:50:05 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointPhotoElectricModel.cc,v 1.6 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4AdjointPhotoElectricModel.hh"
|
||||
#include "G4AdjointCSManager.hh"
|
||||
@@ -214,6 +214,14 @@ G4double G4AdjointPhotoElectricModel::AdjointCrossSection(const G4MaterialCutsCo
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
G4double G4AdjointPhotoElectricModel::GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double electronEnergy,
|
||||
G4bool IsScatProjToProjCase)
|
||||
{ return AdjointCrossSection(aCouple,electronEnergy,IsScatProjToProjCase);
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
G4double G4AdjointPhotoElectricModel::AdjointCrossSectionPerAtom(const G4Element* anElement,G4double electronEnergy)
|
||||
{
|
||||
G4int nShells = anElement->GetNbOfAtomicShells();
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointhIonisationModel.cc,v 1.3 2009/12/16 17:50:07 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointhIonisationModel.cc,v 1.4 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4AdjointhIonisationModel.hh"
|
||||
#include "G4AdjointCSManager.hh"
|
||||
@@ -203,9 +203,9 @@ void G4AdjointhIonisationModel::RapidSampleSecondaries(const G4Track& aTrack,
|
||||
|
||||
G4double t1=adjointPrimKinEnergy*(1./diff1-1./diff2);
|
||||
G4double t2=adjointPrimKinEnergy*(1./Emin-1./Emax);
|
||||
G4double f31=diff1/Emin;
|
||||
G4double f32=diff2/Emax/f31;
|
||||
G4double t3=2.*std::log(f32);
|
||||
/*G4double f31=diff1/Emin;
|
||||
G4double f32=diff2/Emax/f31;*/
|
||||
G4double t3=2.*std::log(Emax/Emin);
|
||||
G4double sum_t=t1+t2+t3;
|
||||
newCS=newCS*sum_t/adjointPrimKinEnergy/adjointPrimKinEnergy;
|
||||
G4double t=G4UniformRand()*sum_t;
|
||||
@@ -219,7 +219,7 @@ void G4AdjointhIonisationModel::RapidSampleSecondaries(const G4Track& aTrack,
|
||||
projectileKinEnergy =1./(1./Emin-q);
|
||||
}
|
||||
else {
|
||||
projectileKinEnergy=adjointPrimKinEnergy/(1.-f31*std::pow(f32,G4UniformRand()));
|
||||
projectileKinEnergy=Emin*std::pow(Emax/Emin,G4UniformRand());
|
||||
|
||||
}
|
||||
eEnergy=projectileKinEnergy-adjointPrimKinEnergy;
|
||||
@@ -414,6 +414,7 @@ void G4AdjointhIonisationModel::DefineProjectileProperty()
|
||||
}
|
||||
|
||||
mass = theDirectPrimaryPartDef->GetPDGMass();
|
||||
mass_ratio_projectile = proton_mass_c2/theDirectPrimaryPartDef->GetPDGMass();;
|
||||
spin = theDirectPrimaryPartDef->GetPDGSpin();
|
||||
G4double q = theDirectPrimaryPartDef->GetPDGCharge()/eplus;
|
||||
chargeSquare = q*q;
|
||||
@@ -469,7 +470,8 @@ G4double G4AdjointhIonisationModel::AdjointCrossSection(const G4MaterialCutsCoup
|
||||
G4double diff1=Emin_proj-primEnergy;
|
||||
G4double diff2=Emax_proj-primEnergy;
|
||||
G4double t1=(1./diff1+1./Emin_proj-1./diff2-1./Emax_proj)/primEnergy;
|
||||
G4double t2=2.*std::log(diff2*Emin_proj/Emax_proj/diff1)/primEnergy/primEnergy;
|
||||
//G4double t2=2.*std::log(diff2*Emin_proj/Emax_proj/diff1)/primEnergy/primEnergy;
|
||||
G4double t2=2.*std::log(Emax_proj/Emin_proj)/primEnergy/primEnergy;
|
||||
Cross*=(t1+t2);
|
||||
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AdjointhMultipleScattering.cc,v 1.2 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4AdjointhMultipleScattering.cc,v 1.3 2010/04/12 18:57:15 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
//
|
||||
@@ -42,7 +42,6 @@
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4AdjointhMultipleScattering.hh"
|
||||
#include "G4UrbanMscModel.hh"
|
||||
#include "G4UrbanMscModel90.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ContinuousGainOfEnergy.cc,v 1.4 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4ContinuousGainOfEnergy.cc,v 1.5 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4ContinuousGainOfEnergy.hh"
|
||||
#include "G4Step.hh"
|
||||
@@ -136,15 +136,14 @@ G4VParticleChange* G4ContinuousGainOfEnergy::AlongStepDoIt(const G4Track& track,
|
||||
*dynParticle = *(track.GetDynamicParticle());
|
||||
dynParticle->SetDefinition(theDirectPartDef);
|
||||
G4double Tkin = dynParticle->GetKineticEnergy();
|
||||
G4double Tkin1=Tkin*0.001;
|
||||
|
||||
|
||||
size_t n=1;
|
||||
if (is_integral ) n=10;
|
||||
n=1;
|
||||
G4double dlength= length/n;
|
||||
for (size_t i=0;i<n;i++) {
|
||||
G4double factor_dE=1.;
|
||||
if (Tkin != preStepKinEnergy && IsIon) {
|
||||
if (Tkin != preStepKinEnergy && IsIon) {
|
||||
chargeSqRatio = currentModel->GetChargeSquareRatio(theDirectPartDef,currentMaterial,Tkin);
|
||||
theDirectEnergyLossProcess->SetDynamicMassCharge(massRatio,chargeSqRatio);
|
||||
|
||||
@@ -152,9 +151,7 @@ G4VParticleChange* G4ContinuousGainOfEnergy::AlongStepDoIt(const G4Track& track,
|
||||
|
||||
G4double r = theDirectEnergyLossProcess->GetRange(Tkin, currentCouple);
|
||||
if( dlength <= linLossLimit * r ) {
|
||||
degain = DEDX_before*dlength;
|
||||
G4double degain1 = dlength*theDirectEnergyLossProcess->GetDEDX(Tkin1, currentCouple);
|
||||
factor_dE=1.+(degain1-degain)/(Tkin1-Tkin);
|
||||
degain = DEDX_before*dlength;
|
||||
}
|
||||
else {
|
||||
G4double x = r + dlength;
|
||||
@@ -172,10 +169,7 @@ G4VParticleChange* G4ContinuousGainOfEnergy::AlongStepDoIt(const G4Track& track,
|
||||
|
||||
}
|
||||
}
|
||||
G4double r1 = theDirectEnergyLossProcess->GetRange(Tkin1, currentCouple);
|
||||
G4double x1 = r1 + dlength;
|
||||
G4double E1 = theDirectEnergyLossProcess->GetKineticEnergy(x1,currentCouple);
|
||||
factor_dE=(E1-E)/(Tkin1-Tkin);
|
||||
|
||||
degain=E-Tkin;
|
||||
|
||||
|
||||
@@ -279,7 +273,7 @@ G4double G4ContinuousGainOfEnergy::GetContinuousStepLimit(const G4Track& track,
|
||||
|
||||
maxE=std::min(emax_model*1.001,maxE);
|
||||
|
||||
G4double r = theDirectEnergyLossProcess->GetRange(preStepKinEnergy, currentCouple);
|
||||
preStepRange = theDirectEnergyLossProcess->GetRange(preStepKinEnergy, currentCouple);
|
||||
|
||||
if (IsIon) {
|
||||
G4double chargeSqRatioAtEmax = currentModel->GetChargeSquareRatio(theDirectPartDef,currentMaterial,maxE);
|
||||
@@ -292,8 +286,8 @@ G4double G4ContinuousGainOfEnergy::GetContinuousStepLimit(const G4Track& track,
|
||||
|
||||
|
||||
|
||||
x=r1-r;
|
||||
x=std::max(r1-r,0.001*mm);
|
||||
x=r1-preStepRange;
|
||||
x=std::max(r1-preStepRange,0.001*mm);
|
||||
|
||||
return x;
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VAdjointReverseReaction.cc,v 1.2 2009/11/20 10:31:20 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4VAdjointReverseReaction.cc,v 1.3 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4VAdjointReverseReaction.hh"
|
||||
#include "G4AdjointCSManager.hh"
|
||||
@@ -108,9 +108,11 @@ G4double G4VAdjointReverseReaction::GetMeanFreePath(const G4Track& track,
|
||||
{ *condition = NotForced;
|
||||
G4double preStepKinEnergy = track.GetKineticEnergy();
|
||||
|
||||
G4double Sigma =
|
||||
theAdjointEMModel->AdjointCrossSection(track.GetMaterialCutsCouple(),preStepKinEnergy,IsScatProjToProjCase);
|
||||
/*G4double Sigma =
|
||||
theAdjointEMModel->AdjointCrossSection(track.GetMaterialCutsCouple(),preStepKinEnergy,IsScatProjToProjCase);*/
|
||||
|
||||
G4double Sigma =
|
||||
theAdjointEMModel->GetAdjointCrossSection(track.GetMaterialCutsCouple(),preStepKinEnergy,IsScatProjToProjCase);
|
||||
G4double fwd_TotCS;
|
||||
Sigma *= theAdjointCSManager->GetCrossSectionCorrection(track.GetDefinition(),preStepKinEnergy,track.GetMaterialCutsCouple(),IsFwdCSUsed, fwd_TotCS);
|
||||
//G4cout<<fwd_TotCS<<G4endl;
|
||||
@@ -135,4 +137,3 @@ G4double G4VAdjointReverseReaction::GetMeanFreePath(const G4Track& track,
|
||||
|
||||
return mean_free_path;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEmAdjointModel.cc,v 1.5 2009/12/16 17:50:09 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4VEmAdjointModel.cc,v 1.6 2010/11/11 11:51:56 ldesorgh Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
#include "G4VEmAdjointModel.hh"
|
||||
#include "G4AdjointCSManager.hh"
|
||||
@@ -32,6 +32,8 @@
|
||||
#include "G4TrackStatus.hh"
|
||||
#include "G4ParticleChange.hh"
|
||||
#include "G4AdjointElectron.hh"
|
||||
#include "G4AdjointGamma.hh"
|
||||
#include "G4AdjointPositron.hh"
|
||||
#include "G4AdjointInterpolator.hh"
|
||||
#include "G4PhysicsTable.hh"
|
||||
|
||||
@@ -41,9 +43,11 @@ G4VEmAdjointModel::G4VEmAdjointModel(const G4String& nam):
|
||||
name(nam)
|
||||
// lowLimit(0.1*keV), highLimit(100.0*TeV), fluc(0), name(nam), pParticleChange(0)
|
||||
{
|
||||
G4AdjointCSManager::GetAdjointCSManager()->RegisterEmAdjointModel(this);
|
||||
model_index = G4AdjointCSManager::GetAdjointCSManager()->RegisterEmAdjointModel(this);
|
||||
second_part_of_same_type =false;
|
||||
theDirectEMModel=0;
|
||||
mass_ratio_product=1.;
|
||||
mass_ratio_projectile=1.;
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -73,7 +77,49 @@ G4double G4VEmAdjointModel::AdjointCrossSection(const G4MaterialCutsCouple* aCou
|
||||
|
||||
return lastCS;
|
||||
|
||||
}
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
G4double G4VEmAdjointModel::GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
|
||||
G4double primEnergy,
|
||||
G4bool IsScatProjToProjCase)
|
||||
{
|
||||
return AdjointCrossSection(aCouple, primEnergy,
|
||||
IsScatProjToProjCase);
|
||||
|
||||
//To continue
|
||||
DefineCurrentMaterial(aCouple);
|
||||
preStepEnergy=primEnergy;
|
||||
if (IsScatProjToProjCase){
|
||||
G4double ekin=primEnergy*mass_ratio_projectile;
|
||||
lastCS = G4AdjointCSManager::GetAdjointCSManager()->GetAdjointSigma(ekin, model_index,true, aCouple);
|
||||
lastAdjointCSForScatProjToProjCase = lastCS;
|
||||
//G4cout<<ekin<<std::endl;
|
||||
}
|
||||
else {
|
||||
G4double ekin=primEnergy*mass_ratio_product;
|
||||
lastCS = G4AdjointCSManager::GetAdjointCSManager()->GetAdjointSigma(ekin, model_index,false, aCouple);
|
||||
lastAdjointCSForProdToProjCase = lastCS;
|
||||
//G4cout<<ekin<<std::endl;
|
||||
}
|
||||
|
||||
/* G4double ratio=lastCS;
|
||||
G4cout<<"Model name"<<name;
|
||||
G4cout<<" LastCS Get "<<lastCS;
|
||||
G4cout<<" Energy "<<primEnergy;*/
|
||||
/*G4double lastCS1 = AdjointCrossSection(aCouple,
|
||||
primEnergy,
|
||||
IsScatProjToProjCase);
|
||||
if (lastCS1 >0) {
|
||||
G4double ratio=lastCS/lastCS1;
|
||||
G4double diff = std::abs(1-ratio)*100.;
|
||||
if (diff >1) G4cout<<primEnergy <<" diff"<<diff<<'\t'<<lastCS<<'\t'<<lastCS1<<'\t'<<name<<'\t'<<IsScatProjToProjCase<<std::endl;
|
||||
}
|
||||
//G4cout<<" LastCS Compute "<<lastCS1<<std::endl;
|
||||
*/
|
||||
|
||||
return lastCS;
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
//General implementation correct for energy loss process, for the photoelectric and compton scattering the method should be redefine
|
||||
@@ -601,10 +647,10 @@ void G4VEmAdjointModel::CorrectPostStepWeight(G4ParticleChange* fParticleChange,
|
||||
|
||||
lastCS=lastAdjointCSForScatProjToProjCase;
|
||||
if ( !IsScatProjToProjCase) lastCS=lastAdjointCSForProdToProjCase;
|
||||
if (adjointPrimKinEnergy !=preStepEnergy){ //Is that in all cases needed???
|
||||
if ((adjointPrimKinEnergy-preStepEnergy)/preStepEnergy>0.001){ //Is that in all cases needed???
|
||||
G4double post_stepCS=AdjointCrossSection(currentCouple, adjointPrimKinEnergy
|
||||
,IsScatProjToProjCase );
|
||||
w_corr*=post_stepCS/lastCS;
|
||||
if (post_stepCS>0 && lastCS>0) w_corr*=post_stepCS/lastCS;
|
||||
}
|
||||
|
||||
new_weight*=w_corr;
|
||||
@@ -654,36 +700,18 @@ void G4VEmAdjointModel::DefineCurrentMaterial(const G4MaterialCutsCouple* coupl
|
||||
currentCoupleIndex = couple->GetIndex();
|
||||
currentMaterialIndex = currentMaterial->GetIndex();
|
||||
size_t idx=56;
|
||||
currentTcutForDirectPrim =0.00000000001;
|
||||
if (theAdjEquivOfDirectPrimPartDef) {
|
||||
if (theAdjEquivOfDirectPrimPartDef->GetParticleName() == "adj_gamma") idx = 0;
|
||||
else if (theAdjEquivOfDirectPrimPartDef->GetParticleName() == "adj_e-") idx = 1;
|
||||
else if (theAdjEquivOfDirectPrimPartDef->GetParticleName() == "adj_e+") idx = 2;
|
||||
currentTcutForDirectSecond =0.00000000001;
|
||||
if (theAdjEquivOfDirectSecondPartDef) {
|
||||
if (theAdjEquivOfDirectSecondPartDef == G4AdjointGamma::AdjointGamma()) idx = 0;
|
||||
else if (theAdjEquivOfDirectSecondPartDef == G4AdjointElectron::AdjointElectron()) idx = 1;
|
||||
else if (theAdjEquivOfDirectSecondPartDef == G4AdjointPositron::AdjointPositron()) idx = 2;
|
||||
if (idx <56){
|
||||
const std::vector<G4double>* aVec = G4ProductionCutsTable::GetProductionCutsTable()->GetEnergyCutsVector(idx);
|
||||
currentTcutForDirectPrim=(*aVec)[currentCoupleIndex];
|
||||
currentTcutForDirectSecond=(*aVec)[currentCoupleIndex];
|
||||
}
|
||||
}
|
||||
|
||||
currentTcutForDirectSecond =0.00000000001;
|
||||
if (theAdjEquivOfDirectPrimPartDef == theAdjEquivOfDirectSecondPartDef) {
|
||||
currentTcutForDirectSecond = currentTcutForDirectPrim;
|
||||
}
|
||||
else {
|
||||
if (theAdjEquivOfDirectSecondPartDef){
|
||||
if (theAdjEquivOfDirectSecondPartDef->GetParticleName() == "adj_gamma") idx = 0;
|
||||
else if (theAdjEquivOfDirectSecondPartDef->GetParticleName() == "adj_e-") idx = 1;
|
||||
else if (theAdjEquivOfDirectSecondPartDef->GetParticleName() == "adj_e+") idx = 2;
|
||||
const std::vector<G4double>* aVec = G4ProductionCutsTable::GetProductionCutsTable()->GetEnergyCutsVector(idx);
|
||||
currentTcutForDirectSecond=(*aVec)[currentCoupleIndex];
|
||||
if (idx <56){
|
||||
const std::vector<G4double>* aVec = G4ProductionCutsTable::GetProductionCutsTable()->GetEnergyCutsVector(idx);
|
||||
currentTcutForDirectPrim=(*aVec)[currentCoupleIndex];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4emhighenergy
|
||||
# Package: Geant4.src.G4processes.G4electromagnetic.G4emhighenergy
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010/09/29 18:52:52 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.34 2009/11/11 17:13:47 vnivanch Exp $
|
||||
$Id: History,v 1.37 2010/10/26 15:40:03 vnivanch Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,21 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
26 October 10: V.Ivanchenko (emhighenergy-V09-03-02)
|
||||
- Fixed problem reported by the Coverity tools (mainly pedantic
|
||||
initialisation)
|
||||
- Added G4mplIonisationWithDeltaModel which is substituted
|
||||
G4mplIonisationModel by default - delat-ray production is required
|
||||
both by ATLAS and CMS
|
||||
|
||||
04 March 10: V.Ivanchenko (emhighenergy-V09-03-01)
|
||||
- G4ICRU73NoDeltaModel - new model derived from G4ICRU73QOModel
|
||||
|
||||
28 March 10: V.Ivanchenko (emhighenergy-V09-03-00)
|
||||
- G4mplIonisation - fixed IsApplicable method - always "true"
|
||||
(CMS report crash in the case when several types
|
||||
of monopoles are instantiated)
|
||||
|
||||
11 November 09: V.Ivanchenko (emhighenergy-V09-02-03)
|
||||
- G4eeTo3PiModel - fixed vector product in matrix element
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4GammaConversionToMuons.hh,v 1.2 2006/06/29 19:32:18 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4GammaConversionToMuons.hh,v 1.3 2010/10/26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// ------------ G4GammaConversionToMuons physics process ------
|
||||
// by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
|
||||
@@ -131,8 +131,6 @@ class G4GammaConversionToMuons : public G4VDiscreteProcess
|
||||
G4double LowestEnergyLimit ; // low energy limit of the tables
|
||||
G4double HighestEnergyLimit ; // high energy limit of the tables
|
||||
|
||||
G4double fminimalEnergy; // minimalEnergy of produced particles
|
||||
|
||||
G4double MeanFreePath; // actual MeanFreePath (current medium)
|
||||
G4double CrossSecFactor; // factor to artificially increase
|
||||
// the cross section
|
||||
|
||||
+47
-33
@@ -23,49 +23,63 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ICRU73NoDeltaModel.hh,v 1.1 2010/06/04 10:23:31 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// $Id: G4PartonStringAnnihilator.hh,v 1.2 2006/06/29 20:56:11 gunter Exp $
|
||||
// -----------------------------------------------------------------------------
|
||||
// GEANT 4 class implementation file
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// History: first implementation, Maxim Komogorov, 9-Oct-1998
|
||||
// -----------------------------------------------------------------------------
|
||||
#ifndef G4PartonStringAnnihilator_h
|
||||
#define G4PartonStringAnnihilator_h 1
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4ICRU73NoDeltaModel
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
// Creation date: 04.10.2010
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Implementation of G4ICRU73QOModel without delta-ray
|
||||
|
||||
#include "G4KineticTrack.hh"
|
||||
#include "G4ExcitedString.hh"
|
||||
#include "G4MesonSplitter.hh"
|
||||
#include "G4BaryonSplitter.hh"
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4ICRU73NoDeltaModel_h
|
||||
#define G4ICRU73NoDeltaModel_h 1
|
||||
|
||||
#include "G4ICRU73QOModel.hh"
|
||||
|
||||
class G4ICRU73NoDeltaModel : public G4ICRU73QOModel
|
||||
{
|
||||
|
||||
class G4PartonStringAnnihilator
|
||||
{
|
||||
public:
|
||||
G4PartonStringAnnihilator();
|
||||
|
||||
public:
|
||||
|
||||
G4double GetCrossSection(G4KineticTrack& aTarget, G4KineticTrack& aProjectile);
|
||||
G4ExcitedString* GetString(G4KineticTrack& Target, G4KineticTrack& Projectile);
|
||||
|
||||
G4bool SplitUpBarion(G4int Encoding, G4int* q_or_qqbar, G4int* qbar_or_qq); //!
|
||||
|
||||
G4bool isMeson(G4int Encoding);
|
||||
G4bool isBarion(G4int Encoding);
|
||||
G4bool isAntiParticle(G4int Encoding);
|
||||
G4ICRU73NoDeltaModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "ICRU73QONoD");
|
||||
|
||||
private:
|
||||
G4bool GetStringEnds(G4int Projectile, G4int Target, G4int* Left, G4int* Right);
|
||||
G4bool FindDiquark(G4int Encoding, G4int Quark, G4int* Diquark);
|
||||
G4bool FindQuark(G4int Encoding, G4int Diquark, G4int* Quark);
|
||||
virtual ~G4ICRU73NoDeltaModel();
|
||||
|
||||
virtual G4double ComputeDEDXPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy,
|
||||
G4double maxEnergy);
|
||||
private:
|
||||
|
||||
G4double widthOfPtSquare;
|
||||
G4MesonSplitter theMesonSplitter;
|
||||
G4BaryonSplitter theBaryonSplitter;
|
||||
};
|
||||
// hide assignment operator
|
||||
G4ICRU73NoDeltaModel & operator=(const G4ICRU73NoDeltaModel &right);
|
||||
G4ICRU73NoDeltaModel(const G4ICRU73NoDeltaModel&);
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
// *************************************************************************************************
|
||||
#endif
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4hhIonisation.hh,v 1.6 2009/02/20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4hhIonisation.hh,v 1.7 2010/10/26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -89,17 +89,12 @@ private:
|
||||
|
||||
G4double mass;
|
||||
G4double ratio;
|
||||
G4double minKinEnergy;
|
||||
G4double maxKinEnergy;
|
||||
|
||||
const G4ParticleDefinition* theParticle;
|
||||
const G4ParticleDefinition* theBaseParticle;
|
||||
G4VEmFluctuationModel* flucModel;
|
||||
|
||||
G4bool isInitialised;
|
||||
|
||||
G4double eth;
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4mplIonisationModel.hh,v 1.7 2009/02/20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4mplIonisationModel.hh,v 1.8 2010/10/26 15:40:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -108,12 +108,10 @@ private:
|
||||
G4double betalim;
|
||||
G4double beta2lim;
|
||||
G4double bg2lim;
|
||||
G4double factlow;
|
||||
G4double chargeSquare;
|
||||
G4double dedxlim;
|
||||
G4int nmpl;
|
||||
G4double pi_hbarc2_over_mc2;
|
||||
G4double approxConst;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4mplIonisationWithDeltaModel.hh,v 1.1 2010/10/26 15:40:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4mplIonisationWithDeltaModel
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
// Creation date: 06.09.2005
|
||||
//
|
||||
// Modifications:
|
||||
// 12.08.2007 ComputeDEDXAhlen function added (M. Vladymyrov)
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Implementation of model of energy loss of the magnetic monopole
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4mplIonisationWithDeltaModel_h
|
||||
#define G4mplIonisationWithDeltaModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4VEmFluctuationModel.hh"
|
||||
|
||||
class G4ParticleChangeForLoss;
|
||||
|
||||
class G4mplIonisationWithDeltaModel : public G4VEmModel, public G4VEmFluctuationModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4mplIonisationWithDeltaModel(G4double mCharge, const G4String& nam = "mplIonisationWithDelta");
|
||||
|
||||
virtual ~G4mplIonisationWithDeltaModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeDEDXPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerElectron(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy,
|
||||
G4double maxEnergy);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double Z, G4double A,
|
||||
G4double cutEnergy,
|
||||
G4double maxEnergy);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
|
||||
virtual G4double SampleFluctuations(const G4Material*,
|
||||
const G4DynamicParticle*,
|
||||
G4double& tmax,
|
||||
G4double& length,
|
||||
G4double& meanLoss);
|
||||
|
||||
virtual G4double Dispersion(const G4Material*,
|
||||
const G4DynamicParticle*,
|
||||
G4double& tmax,
|
||||
G4double& length);
|
||||
|
||||
protected:
|
||||
|
||||
virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
|
||||
G4double kinEnergy);
|
||||
|
||||
private:
|
||||
|
||||
void SetParticle(const G4ParticleDefinition* p);
|
||||
|
||||
G4double ComputeDEDXAhlen(const G4Material* material, G4double bg2, G4double cut);
|
||||
|
||||
// hide assignment operator
|
||||
G4mplIonisationWithDeltaModel & operator=(const G4mplIonisationWithDeltaModel &right);
|
||||
G4mplIonisationWithDeltaModel(const G4mplIonisationWithDeltaModel&);
|
||||
|
||||
const G4ParticleDefinition* monopole;
|
||||
G4ParticleDefinition* theElectron;
|
||||
G4ParticleChangeForLoss* fParticleChange;
|
||||
|
||||
G4double mass;
|
||||
G4double magCharge;
|
||||
G4double twoln10;
|
||||
G4double betalow;
|
||||
G4double betalim;
|
||||
G4double beta2lim;
|
||||
G4double bg2lim;
|
||||
G4double chargeSquare;
|
||||
G4double dedxlim;
|
||||
G4int nmpl;
|
||||
G4double pi_hbarc2_over_mc2;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -0,0 +1,125 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# sources.cmake
|
||||
# Module : G4emhighenergy
|
||||
# Package: Geant4.src.G4processes.G4electromagnetic.G4emhighenergy
|
||||
#
|
||||
# Sources description for a library.
|
||||
# Lists the sources and headers of the code explicitely.
|
||||
# Lists include paths needed.
|
||||
# Lists the internal granular and global dependencies of the library.
|
||||
# Source specific properties should be added at the end.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: sources.cmake,v 1.2 2010/10/26 16:42:12 gcosmo Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# List external includes needed.
|
||||
include_directories(${CLHEP_INCLUDE_DIRS})
|
||||
|
||||
# List internal includes needed.
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/geometry/volumes/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPGeometry/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPNumerics/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/HEPRandom/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/global/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/intercoms/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/materials/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/bosons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/barions/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/ions/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/hadrons/mesons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/leptons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/particles/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/cuts/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/electromagnetic/muons/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/electromagnetic/standard/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/electromagnetic/utils/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/track/include)
|
||||
|
||||
#
|
||||
# Define the Geant4 Module.
|
||||
#
|
||||
include(Geant4MacroDefineModule)
|
||||
GEANT4_DEFINE_MODULE(NAME G4emhighenergy
|
||||
HEADERS
|
||||
G4AnnihiToMuPair.hh
|
||||
G4BetheBlochNoDeltaModel.hh
|
||||
G4BraggNoDeltaModel.hh
|
||||
G4GammaConversionToMuons.hh
|
||||
G4ICRU73NoDeltaModel.hh
|
||||
G4Vee2hadrons.hh
|
||||
G4ee2KChargedModel.hh
|
||||
G4ee2KNeutralModel.hh
|
||||
G4eeCrossSections.hh
|
||||
G4eeTo3PiModel.hh
|
||||
G4eeToHadrons.hh
|
||||
G4eeToHadronsModel.hh
|
||||
G4eeToHadronsMultiModel.hh
|
||||
G4eeToPGammaModel.hh
|
||||
G4eeToTwoPiModel.hh
|
||||
G4hBremsstrahlung.hh
|
||||
G4hBremsstrahlungModel.hh
|
||||
G4hPairProduction.hh
|
||||
G4hPairProductionModel.hh
|
||||
G4hhIonisation.hh
|
||||
G4mplIonisation.hh
|
||||
G4mplIonisationModel.hh
|
||||
G4mplIonisationWithDeltaModel.hh
|
||||
SOURCES
|
||||
G4AnnihiToMuPair.cc
|
||||
G4BetheBlochNoDeltaModel.cc
|
||||
G4BraggNoDeltaModel.cc
|
||||
G4GammaConversionToMuons.cc
|
||||
G4ICRU73NoDeltaModel.cc
|
||||
G4ee2KChargedModel.cc
|
||||
G4ee2KNeutralModel.cc
|
||||
G4eeCrossSections.cc
|
||||
G4eeTo3PiModel.cc
|
||||
G4eeToHadrons.cc
|
||||
G4eeToHadronsModel.cc
|
||||
G4eeToHadronsMultiModel.cc
|
||||
G4eeToPGammaModel.cc
|
||||
G4eeToTwoPiModel.cc
|
||||
G4hBremsstrahlung.cc
|
||||
G4hBremsstrahlungModel.cc
|
||||
G4hPairProduction.cc
|
||||
G4hPairProductionModel.cc
|
||||
G4hhIonisation.cc
|
||||
G4mplIonisation.cc
|
||||
G4mplIonisationModel.cc
|
||||
G4mplIonisationWithDeltaModel.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4baryons
|
||||
G4bosons
|
||||
G4cuts
|
||||
G4emstandard
|
||||
G4emutils
|
||||
G4geometrymng
|
||||
G4globman
|
||||
G4hepnumerics
|
||||
G4intercoms
|
||||
G4ions
|
||||
G4leptons
|
||||
G4materials
|
||||
G4mesons
|
||||
G4muons
|
||||
G4partman
|
||||
G4procman
|
||||
G4track
|
||||
G4volumes
|
||||
GLOBAL_DEPENDENCIES
|
||||
G4geometry
|
||||
G4global
|
||||
G4intercoms
|
||||
G4materials
|
||||
G4particles
|
||||
G4track
|
||||
LINK_LIBRARIES
|
||||
)
|
||||
|
||||
# List any source specific properties here
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4GammaConversionToMuons.cc,v 1.7 2008/10/16 14:29:48 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4GammaConversionToMuons.cc,v 1.8 2010/10/26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// ------------ G4GammaConversionToMuons physics process ------
|
||||
// by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
|
||||
@@ -52,6 +52,7 @@ G4GammaConversionToMuons::G4GammaConversionToMuons(const G4String& processName,
|
||||
CrossSecFactor(1.)
|
||||
{
|
||||
SetProcessSubType(15);
|
||||
MeanFreePath = DBL_MAX;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ICRU73NoDeltaModel.cc,v 1.1 2010/06/04 10:23:31 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4ICRU73NoDeltaModel
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
// Creation date: 04.06.2010
|
||||
//
|
||||
// Modifications:
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Ionisation of heavy negatively charged particles
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4ICRU73NoDeltaModel.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4ICRU73NoDeltaModel::G4ICRU73NoDeltaModel(const G4ParticleDefinition*p,
|
||||
const G4String& nam) :
|
||||
G4ICRU73QOModel(p, nam)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4ICRU73NoDeltaModel::~G4ICRU73NoDeltaModel()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double G4ICRU73NoDeltaModel::ComputeDEDXPerVolume(
|
||||
const G4Material* material,
|
||||
const G4ParticleDefinition* pd,
|
||||
G4double kinEnergy, G4double)
|
||||
{
|
||||
return
|
||||
G4ICRU73QOModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double G4ICRU73NoDeltaModel::CrossSectionPerVolume(
|
||||
const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double, G4double, G4double)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeToHadronsModel.cc,v 1.9 2008/07/10 18:06:39 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4eeToHadronsModel.cc,v 1.10 2010/10/26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -75,6 +75,12 @@ G4eeToHadronsModel::G4eeToHadronsModel(G4Vee2hadrons* m, G4int ver,
|
||||
verbose(ver)
|
||||
{
|
||||
theGamma = G4Gamma::Gamma();
|
||||
highKinEnergy = HighEnergyLimit();
|
||||
lowKinEnergy = LowEnergyLimit();
|
||||
emin = lowKinEnergy;
|
||||
emax = highKinEnergy;
|
||||
peakKinEnergy = highKinEnergy;
|
||||
epeak = emax;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -91,7 +97,7 @@ G4eeToHadronsModel::~G4eeToHadronsModel()
|
||||
void G4eeToHadronsModel::Initialise(const G4ParticleDefinition*,
|
||||
const G4DataVector&)
|
||||
{
|
||||
if(isInitialised) return;
|
||||
if(isInitialised) { return; }
|
||||
isInitialised = true;
|
||||
|
||||
// Lab system
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4eeToHadronsMultiModel.cc,v 1.8 2009/04/12 17:48:21 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4eeToHadronsMultiModel.cc,v 1.9 2010/10/26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -67,7 +67,10 @@ G4eeToHadronsMultiModel::G4eeToHadronsMultiModel(G4int ver, const G4String& name
|
||||
nModels(0),
|
||||
verbose(ver),
|
||||
isInitialised(false)
|
||||
{}
|
||||
{
|
||||
thKineticEnergy = DBL_MAX;
|
||||
maxKineticEnergy = 1.2*GeV;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -90,9 +93,6 @@ void G4eeToHadronsMultiModel::Initialise(const G4ParticleDefinition*,
|
||||
if(!isInitialised) {
|
||||
isInitialised = true;
|
||||
|
||||
thKineticEnergy = DBL_MAX;
|
||||
maxKineticEnergy = 1.2*GeV;
|
||||
|
||||
cross = new G4eeCrossSections();
|
||||
|
||||
G4eeToTwoPiModel* m2pi = new G4eeToTwoPiModel(cross);
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4hhIonisation.cc,v 1.9 2009/02/20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4hhIonisation.cc,v 1.11 2010/10/26 14:15:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -50,6 +50,7 @@
|
||||
#include "G4hhIonisation.hh"
|
||||
#include "G4BraggNoDeltaModel.hh"
|
||||
#include "G4BetheBlochNoDeltaModel.hh"
|
||||
#include "G4ICRU73NoDeltaModel.hh"
|
||||
#include "G4UniversalFluctuation.hh"
|
||||
#include "G4BohrFluctuations.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
@@ -100,30 +101,35 @@ G4double G4hhIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
|
||||
void G4hhIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* part,
|
||||
const G4ParticleDefinition* bpart)
|
||||
{
|
||||
if(isInitialised) return;
|
||||
if(isInitialised) { return; }
|
||||
|
||||
theParticle = part;
|
||||
if(bpart) G4cout << "G4hhIonisation::InitialiseEnergyLossProcess WARNING: no "
|
||||
<< "base particle should be defined for the process "
|
||||
<< GetProcessName() << G4endl;
|
||||
|
||||
if(bpart) {
|
||||
G4cout << "G4hhIonisation::InitialiseEnergyLossProcess WARNING: no "
|
||||
<< "base particle should be defined for the process "
|
||||
<< GetProcessName() << G4endl;
|
||||
}
|
||||
SetBaseParticle(0);
|
||||
SetSecondaryParticle(G4Electron::Electron());
|
||||
//G4double q = theParticle->GetPDGCharge();
|
||||
mass = theParticle->GetPDGMass();
|
||||
ratio = electron_mass_c2/mass;
|
||||
eth = 2.0*MeV*mass/proton_mass_c2;
|
||||
G4double eth = 2*MeV*mass/proton_mass_c2;
|
||||
flucModel = new G4BohrFluctuations();
|
||||
|
||||
G4int nm = 1;
|
||||
|
||||
minKinEnergy = MinKinEnergy();
|
||||
G4double minKinEnergy = MinKinEnergy();
|
||||
|
||||
if(eth > minKinEnergy) {
|
||||
G4VEmModel* em = new G4BraggNoDeltaModel();
|
||||
G4VEmModel* em;
|
||||
em = new G4BraggNoDeltaModel();
|
||||
//if(q > 0.0) { em = new G4BraggNoDeltaModel(); }
|
||||
//else { em = new G4ICRU73NoDeltaModel(); }
|
||||
em->SetLowEnergyLimit(minKinEnergy);
|
||||
em->SetHighEnergyLimit(eth);
|
||||
AddEmModel(nm, em, flucModel);
|
||||
nm++;
|
||||
++nm;
|
||||
}
|
||||
|
||||
if(eth < MaxKinEnergy()) {
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4mplIonisation.cc,v 1.8 2009/02/20 16:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4mplIonisation.cc,v 1.11 2010/10/26 15:40:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "G4mplIonisation.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4mplIonisationModel.hh"
|
||||
#include "G4mplIonisationWithDeltaModel.hh"
|
||||
#include "G4BohrFluctuations.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -74,9 +75,9 @@ G4mplIonisation::~G4mplIonisation()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition& p)
|
||||
G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition&)
|
||||
{
|
||||
return (p.GetParticleName() == "monopole");
|
||||
return true;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -84,12 +85,13 @@ G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition& p)
|
||||
void G4mplIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition*,
|
||||
const G4ParticleDefinition*)
|
||||
{
|
||||
if(isInitialised) return;
|
||||
if(isInitialised) { return; }
|
||||
|
||||
SetBaseParticle(0);
|
||||
SetSecondaryParticle(G4Electron::Electron());
|
||||
|
||||
G4mplIonisationModel* ion = new G4mplIonisationModel(magneticCharge,"PAI");
|
||||
G4mplIonisationWithDeltaModel* ion =
|
||||
new G4mplIonisationWithDeltaModel(magneticCharge,"PAI");
|
||||
ion->SetLowEnergyLimit(MinKinEnergy());
|
||||
ion->SetHighEnergyLimit(MaxKinEnergy());
|
||||
AddEmModel(0,ion,ion);
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4mplIonisationModel.cc,v 1.7 2009/04/12 17:35:41 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4mplIonisationModel.cc,v 1.8 2010/10/26 15:40:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -73,12 +73,13 @@ G4mplIonisationModel::G4mplIonisationModel(G4double mCharge, const G4String& nam
|
||||
bg2lim(beta2lim*(1.0 + beta2lim))
|
||||
{
|
||||
nmpl = G4int(abs(magCharge) * 2 * fine_structure_const + 0.5);
|
||||
if(nmpl > 6) nmpl = 6;
|
||||
else if(nmpl < 1) nmpl = 1;
|
||||
if(nmpl > 6) { nmpl = 6; }
|
||||
else if(nmpl < 1) { nmpl = 1; }
|
||||
pi_hbarc2_over_mc2 = pi * hbarc * hbarc / electron_mass_c2;
|
||||
chargeSquare = magCharge * magCharge;
|
||||
dedxlim = 45.*nmpl*nmpl*GeV*cm2/g;
|
||||
fParticleChange = 0;
|
||||
mass = 0.0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -93,7 +94,7 @@ void G4mplIonisationModel::Initialise(const G4ParticleDefinition* p,
|
||||
{
|
||||
monopole = p;
|
||||
mass = monopole->GetPDGMass();
|
||||
if(!fParticleChange) fParticleChange = GetParticleChangeForLoss();
|
||||
if(!fParticleChange) { fParticleChange = GetParticleChangeForLoss(); }
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -0,0 +1,330 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4mplIonisationWithDeltaModel.cc,v 1.1 2010/10/26 15:40:03 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4mplIonisationWithDeltaModel
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
// Creation date: 06.09.2005
|
||||
//
|
||||
// Modifications:
|
||||
// 12.08.2007 Changing low energy approximation and extrapolation.
|
||||
// Small bug fixing and refactoring (M. Vladymyrov)
|
||||
// 13.11.2007 Use low-energy asymptotic from [3] (V.Ivanchenko)
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// References
|
||||
// [1] Steven P. Ahlen: Energy loss of relativistic heavy ionizing particles,
|
||||
// S.P. Ahlen, Rev. Mod. Phys 52(1980), p121
|
||||
// [2] K.A. Milton arXiv:hep-ex/0602040
|
||||
// [3] S.P. Ahlen and K. Kinoshita, Phys. Rev. D26 (1982) 2347
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4mplIonisationWithDeltaModel.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4ParticleChangeForLoss.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4DynamicParticle.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
using namespace std;
|
||||
|
||||
G4mplIonisationWithDeltaModel::G4mplIonisationWithDeltaModel(G4double mCharge, const G4String& nam)
|
||||
: G4VEmModel(nam),G4VEmFluctuationModel(nam),
|
||||
magCharge(mCharge),
|
||||
twoln10(log(100.0)),
|
||||
betalow(0.01),
|
||||
betalim(0.1),
|
||||
beta2lim(betalim*betalim),
|
||||
bg2lim(beta2lim*(1.0 + beta2lim))
|
||||
{
|
||||
nmpl = G4int(abs(magCharge) * 2 * fine_structure_const + 0.5);
|
||||
if(nmpl > 6) { nmpl = 6; }
|
||||
else if(nmpl < 1) { nmpl = 1; }
|
||||
pi_hbarc2_over_mc2 = pi * hbarc * hbarc / electron_mass_c2;
|
||||
chargeSquare = magCharge * magCharge;
|
||||
dedxlim = 45.*nmpl*nmpl*GeV*cm2/g;
|
||||
fParticleChange = 0;
|
||||
theElectron = G4Electron::Electron();
|
||||
G4cout << "### Monopole ionisation model with d-electron production, Gmag= "
|
||||
<< magCharge/eplus << G4endl;
|
||||
mass = 0.0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4mplIonisationWithDeltaModel::~G4mplIonisationWithDeltaModel()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void
|
||||
G4mplIonisationWithDeltaModel::Initialise(const G4ParticleDefinition* p,
|
||||
const G4DataVector&)
|
||||
{
|
||||
monopole = p;
|
||||
mass = monopole->GetPDGMass();
|
||||
if(!fParticleChange) { fParticleChange = GetParticleChangeForLoss(); }
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double
|
||||
G4mplIonisationWithDeltaModel::ComputeDEDXPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double kineticEnergy,
|
||||
G4double maxEnergy)
|
||||
{
|
||||
G4double tmax = MaxSecondaryEnergy(p,kineticEnergy);
|
||||
G4double cutEnergy = std::min(tmax, maxEnergy);
|
||||
G4double tau = kineticEnergy / mass;
|
||||
G4double gam = tau + 1.0;
|
||||
G4double bg2 = tau * (tau + 2.0);
|
||||
G4double beta2 = bg2 / (gam * gam);
|
||||
G4double beta = sqrt(beta2);
|
||||
|
||||
// low-energy asymptotic formula
|
||||
G4double dedx = dedxlim*beta*material->GetDensity();
|
||||
|
||||
// above asymptotic
|
||||
if(beta > betalow) {
|
||||
|
||||
// high energy
|
||||
if(beta >= betalim) {
|
||||
dedx = ComputeDEDXAhlen(material, bg2, cutEnergy);
|
||||
|
||||
} else {
|
||||
|
||||
G4double dedx1 = dedxlim*betalow*material->GetDensity();
|
||||
G4double dedx2 = ComputeDEDXAhlen(material, bg2lim, cutEnergy);
|
||||
|
||||
// extrapolation between two formula
|
||||
G4double kapa2 = beta - betalow;
|
||||
G4double kapa1 = betalim - beta;
|
||||
dedx = (kapa1*dedx1 + kapa2*dedx2)/(kapa1 + kapa2);
|
||||
}
|
||||
}
|
||||
return dedx;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double
|
||||
G4mplIonisationWithDeltaModel::ComputeDEDXAhlen(const G4Material* material,
|
||||
G4double bg2,
|
||||
G4double cutEnergy)
|
||||
{
|
||||
G4double eDensity = material->GetElectronDensity();
|
||||
G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy();
|
||||
|
||||
// Ahlen's formula for nonconductors, [1]p157, f(5.7)
|
||||
G4double dedx =
|
||||
0.5*(log(2.0 * electron_mass_c2 * bg2*cutEnergy / (eexc*eexc)) - 1.0);
|
||||
|
||||
// Kazama et al. cross-section correction
|
||||
G4double k = 0.406;
|
||||
if(nmpl > 1) { k = 0.346; }
|
||||
|
||||
// Bloch correction
|
||||
const G4double B[7] = { 0.0, 0.248, 0.672, 1.022, 1.243, 1.464, 1.685};
|
||||
|
||||
dedx += 0.5 * k - B[nmpl];
|
||||
|
||||
// density effect correction
|
||||
G4double x = log(bg2)/twoln10;
|
||||
dedx -= material->GetIonisation()->DensityCorrection(x);
|
||||
|
||||
// now compute the total ionization loss
|
||||
dedx *= pi_hbarc2_over_mc2 * eDensity * nmpl * nmpl;
|
||||
|
||||
if (dedx < 0.0) { dedx = 0; }
|
||||
return dedx;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double
|
||||
G4mplIonisationWithDeltaModel::ComputeCrossSectionPerElectron(
|
||||
const G4ParticleDefinition* p,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy,
|
||||
G4double maxKinEnergy)
|
||||
{
|
||||
G4double cross = 0.0;
|
||||
G4double tmax = MaxSecondaryEnergy(p, kineticEnergy);
|
||||
G4double maxEnergy = min(tmax,maxKinEnergy);
|
||||
if(cutEnergy < maxEnergy) {
|
||||
cross = (1.0/cutEnergy - 1.0/maxEnergy)*twopi_mc2_rcl2*chargeSquare;
|
||||
}
|
||||
return cross;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double
|
||||
G4mplIonisationWithDeltaModel::ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition* p,
|
||||
G4double kineticEnergy,
|
||||
G4double Z, G4double,
|
||||
G4double cutEnergy,
|
||||
G4double maxEnergy)
|
||||
{
|
||||
G4double cross =
|
||||
Z*ComputeCrossSectionPerElectron(p,kineticEnergy,cutEnergy,maxEnergy);
|
||||
return cross;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void
|
||||
G4mplIonisationWithDeltaModel::SampleSecondaries(vector<G4DynamicParticle*>* vdp,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle* dp,
|
||||
G4double minKinEnergy,
|
||||
G4double maxEnergy)
|
||||
{
|
||||
G4double kineticEnergy = dp->GetKineticEnergy();
|
||||
G4double tmax = MaxSecondaryEnergy(dp->GetDefinition(),kineticEnergy);
|
||||
|
||||
G4double maxKinEnergy = std::min(maxEnergy,tmax);
|
||||
if(minKinEnergy >= maxKinEnergy) { return; }
|
||||
|
||||
//G4cout << "G4mplIonisationWithDeltaModel::SampleSecondaries: E(GeV)= "
|
||||
// << kineticEnergy/GeV << " M(GeV)= " << mass/GeV
|
||||
// << " tmin(MeV)= " << minKinEnergy/MeV << G4endl;
|
||||
|
||||
G4double totEnergy = kineticEnergy + mass;
|
||||
G4double etot2 = totEnergy*totEnergy;
|
||||
G4double beta2 = kineticEnergy*(kineticEnergy + 2.0*mass)/etot2;
|
||||
|
||||
// sampling without nuclear size effect
|
||||
G4double q = G4UniformRand();
|
||||
G4double deltaKinEnergy = minKinEnergy*maxKinEnergy
|
||||
/(minKinEnergy*(1.0 - q) + maxKinEnergy*q);
|
||||
|
||||
// delta-electron is produced
|
||||
G4double totMomentum = totEnergy*sqrt(beta2);
|
||||
G4double deltaMomentum =
|
||||
sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0*electron_mass_c2));
|
||||
G4double cost = deltaKinEnergy * (totEnergy + electron_mass_c2) /
|
||||
(deltaMomentum * totMomentum);
|
||||
if(cost > 1.0) { cost = 1.0; }
|
||||
|
||||
G4double sint = sqrt((1.0 - cost)*(1.0 + cost));
|
||||
|
||||
G4double phi = twopi * G4UniformRand() ;
|
||||
|
||||
G4ThreeVector deltaDirection(sint*cos(phi),sint*sin(phi), cost);
|
||||
G4ThreeVector direction = dp->GetMomentumDirection();
|
||||
deltaDirection.rotateUz(direction);
|
||||
|
||||
// create G4DynamicParticle object for delta ray
|
||||
G4DynamicParticle* delta =
|
||||
new G4DynamicParticle(theElectron,deltaDirection,deltaKinEnergy);
|
||||
|
||||
vdp->push_back(delta);
|
||||
|
||||
// Change kinematics of primary particle
|
||||
kineticEnergy -= deltaKinEnergy;
|
||||
G4ThreeVector finalP = direction*totMomentum - deltaDirection*deltaMomentum;
|
||||
finalP = finalP.unit();
|
||||
|
||||
fParticleChange->SetProposedKineticEnergy(kineticEnergy);
|
||||
fParticleChange->SetProposedMomentumDirection(finalP);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double G4mplIonisationWithDeltaModel::SampleFluctuations(
|
||||
const G4Material* material,
|
||||
const G4DynamicParticle* dp,
|
||||
G4double& tmax,
|
||||
G4double& length,
|
||||
G4double& meanLoss)
|
||||
{
|
||||
G4double siga = Dispersion(material,dp,tmax,length);
|
||||
G4double loss = meanLoss;
|
||||
siga = sqrt(siga);
|
||||
G4double twomeanLoss = meanLoss + meanLoss;
|
||||
|
||||
if(twomeanLoss < siga) {
|
||||
G4double x;
|
||||
do {
|
||||
loss = twomeanLoss*G4UniformRand();
|
||||
x = (loss - meanLoss)/siga;
|
||||
} while (1.0 - 0.5*x*x < G4UniformRand());
|
||||
} else {
|
||||
do {
|
||||
loss = G4RandGauss::shoot(meanLoss,siga);
|
||||
} while (0.0 > loss || loss > twomeanLoss);
|
||||
}
|
||||
return loss;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double
|
||||
G4mplIonisationWithDeltaModel::Dispersion(const G4Material* material,
|
||||
const G4DynamicParticle* dp,
|
||||
G4double& tmax,
|
||||
G4double& length)
|
||||
{
|
||||
G4double siga = 0.0;
|
||||
G4double tau = dp->GetKineticEnergy()/mass;
|
||||
if(tau > 0.0) {
|
||||
G4double electronDensity = material->GetElectronDensity();
|
||||
G4double gam = tau + 1.0;
|
||||
G4double invbeta2 = (gam*gam)/(tau * (tau+2.0));
|
||||
siga = (invbeta2 - 0.5) * twopi_mc2_rcl2 * tmax * length
|
||||
* electronDensity * chargeSquare;
|
||||
}
|
||||
return siga;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4double
|
||||
G4mplIonisationWithDeltaModel::MaxSecondaryEnergy(const G4ParticleDefinition*,
|
||||
G4double kinEnergy)
|
||||
{
|
||||
G4double tau = kinEnergy/mass;
|
||||
return 2.0*electron_mass_c2*tau*(tau + 2.);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -0,0 +1,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CMakeLists.txt
|
||||
# Module : G4emlowenergy
|
||||
# Package: Geant4.src.G4processes.G4electromagnetic.G4emlowenergy
|
||||
#
|
||||
# CMakeLists.txt for building a single granular library.
|
||||
#
|
||||
# Generated on : 24/9/2010
|
||||
#
|
||||
# $Id: CMakeLists.txt,v 1.1 2010/09/29 18:53:09 bmorgan Exp $
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if(GEANT4_BUILD_GRANULAR_LIBS)
|
||||
include(Geant4MacroLibraryTargets)
|
||||
GEANT4_GRANULAR_LIBRARY_TARGET(COMPONENT sources.cmake)
|
||||
endif()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.407 2009/12/10 12:26:05 sincerti Exp $
|
||||
$Id: History,v 1.477 2010/12/02 18:02:33 vnivanch Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,283 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
02.12.2010 V.Ivanchenko, tag emlowen-V09-03-69
|
||||
fixed minor memory leaks in G4VCrossSectinDataSet, G4EMDataSet,
|
||||
G4LivermoreBremsstrahlungModel, G4LivermoreIonisationModel
|
||||
|
||||
01.12.2010, L.Pandola, tag emlowen-V09-03-68
|
||||
Address Coverity reports for a few Penelope/Livermore
|
||||
models.
|
||||
|
||||
26.11.2010, L.Pandola, tag emlowen-V09-03-67
|
||||
Address Coverity reports for a few Penelope/Livermore
|
||||
|
||||
25.11.2010 tag emlowen-V09-03-66
|
||||
V.Ivanchenko fixed initialisation in
|
||||
G4UAtomicDeexcitation: delete objects, use consistent names
|
||||
|
||||
25.11.2010, L.Pandola, tag emlowen-V09-03-65
|
||||
Address Coverity reports for a few Penelope/Livermore
|
||||
classes
|
||||
|
||||
22.11.2010, A.Mantero, tag emlowen-V09-03-64
|
||||
changed default for PIXE model
|
||||
|
||||
22.11.2010, A.Mantero, tag emlowen-V09-03-63
|
||||
minor fixes
|
||||
|
||||
22.11.2010, A.Mantero, tag emlowen-V09-03-62
|
||||
units management in PIXE fixed
|
||||
calculation bug in G4UAtomicDeexcitation fixed
|
||||
|
||||
19.11.2010, A.Mantero, tag emlowen-V09-03-61
|
||||
bug removal from G4LivermoreIonisation
|
||||
bug removal from G4LivermorePolarizedPhotoElectricModel
|
||||
|
||||
12.11.2010, A.Mantero, tag emlowen-V09-03-60
|
||||
minor fixes and added a test for G4UAtomicDeexcitation
|
||||
in test subdir
|
||||
|
||||
12.11.2010, A.Mantero, tag emlowen-V09-03-59
|
||||
Creation of G4UAtomicDeexcitation class,
|
||||
derived from G4VAtomicDeexcitation in Utils.
|
||||
It will replace G4AtomicDeexcitation class.
|
||||
Updated G4hLowEnergyIonisation to use G4UAtomicDeexcitation
|
||||
instead of G4AtomicDeexcitation.
|
||||
|
||||
|
||||
12.11.2010, V. Ivanchenko, tag emlowen-V09-03-58
|
||||
G4BoldyshevTripletModel - F.Longo substitute asinh,
|
||||
because it is abcent at Windows
|
||||
|
||||
12.11.2010, S. Incerti, tag emlowen-V09-03-57
|
||||
Renamed inline function in Sanche excitation model
|
||||
|
||||
11.11.2010, S. Incerti, tag emlowen-V09-03-56
|
||||
Added new control of low energy limit of G4DNA e- models
|
||||
Energy ranges adapted accordingly.
|
||||
|
||||
10.11.2010, V. Ivanchenko, tag emlowen-V09-03-55
|
||||
F.Longo and G.Depaiola provided new models:
|
||||
G4BoldyshevTripletModel, G4LivermoreGammaConversionModelRC,
|
||||
G4LivermoreNuclearGammaConversionModel;
|
||||
G4LivermorePolarizedGammaConversionModel - fixed element
|
||||
selection and initialisation
|
||||
|
||||
04.11.2010, S. Incerti, tag emlowen-V09-03-54
|
||||
- removed warnings in Rudd ionization classes (SI)
|
||||
- G4IonParametrisedLossModel - (VI) moved few virtual methods from
|
||||
inline to source, minor cleanup of initialisation
|
||||
|
||||
03.11.2010, S. Incerti, tag emlowen-V09-03-53
|
||||
restricted momentum conservation to electrons
|
||||
in G4DNA ionisation
|
||||
|
||||
03.11.2010, S. Incerti, tag emlowen-V09-03-52
|
||||
new preliminary Geant4-DNA ionisation class for ions by Z. Francis
|
||||
to be used with G4LEDATA 6.18
|
||||
|
||||
17.10.2010, S. Incerti, tag emlowen-V09-03-51
|
||||
extended low energy coverage of G4DNA electron models
|
||||
to be used with G4LEDATA 6.17
|
||||
|
||||
14.10.2010, V. Ivanchenko, tag emlowen-V09-03-50
|
||||
G4GeneratorBS - optimise computations to speedup, fixed comments
|
||||
G4GeneratorBN - fixed comments
|
||||
G4VBremAngularDistribution - moved to utils
|
||||
G4ModifiedTsai - moved to standard
|
||||
|
||||
13.10.2010, L. Pandola, tag emlowen-V09-03-49
|
||||
Update G4LivermoreIonisationModel to produce fluorescence AlongStep
|
||||
only if above the production cuts. Stricter check for energy
|
||||
conservation
|
||||
|
||||
08.10.2010, S. Incerti, tag emlowen-V09-03-48
|
||||
Added new excitation model for H
|
||||
|
||||
15.09.2010, S. Incerti, tag emlowen-V09-03-47
|
||||
Added protection in xs file opening for G4DNA Sanche excitation
|
||||
|
||||
15.09.2010, S. Incerti, tag emlowen-V09-03-46
|
||||
Corrected data file names in G4DNA Melton and Sanche
|
||||
|
||||
08.09.2010, S. Incerti, tag emlowen-V09-03-45
|
||||
Updated high energy limits of G4DNAExcitation and G4DNAIonisation
|
||||
|
||||
08.09.2010, S. Incerti, tag emlowen-V09-03-44
|
||||
Set high energy limit of G4DNAScreenedRutherfordModel to 1 MeV
|
||||
|
||||
08.09.2010, S. Incerti, tag emlowen-V09-03-43
|
||||
Added new G4DNA processes and models for vib. exc & attachment
|
||||
Provided by Z. Francis et al. - Appl. Rad. Isot. (2010)
|
||||
http://dx.doi.org/10.1016/j.apradiso.2010.08.011
|
||||
to be used with G4LEDATA 6.16
|
||||
|
||||
08.09.2010, S. Incerti, tag emlowen-V09-03-42
|
||||
Decreased low energy limit of G4DNAScreenedRutherfordModel
|
||||
|
||||
05.09.2010, S. Incerti, tag emlowen-V09-03-41
|
||||
Bugzilla 1120
|
||||
Modified G4PhotoElectricAngularGeneratorSauterGavrila.cc
|
||||
as proposed by J. Goldberg
|
||||
|
||||
25.08.2010, S. Incerti, tag emlowen-V09-03-40
|
||||
- updated & extended Rudd and Miller & Green models
|
||||
- to be used with G4LEDATA 6.15
|
||||
|
||||
25.08.2010, S. Incerti, tag emlowen-V09-03-39
|
||||
-Adapted all high energy limits of G4DNA electron models
|
||||
|
||||
24.08.2010, S. Incerti, tag emlowen-V09-03-38
|
||||
-Changed low energy limit of G4DNA elastic scattering models for e-
|
||||
-Switched default excitation model for e- to Born
|
||||
-to be used with G4LEDATA 6.14
|
||||
|
||||
28.07.2010, L. Pandola, tag emlowen-V09-03-37
|
||||
First full version of G4Penelope08IonisationModel, model for e+/e-
|
||||
ionisation according to Penelope v2008. Still beta version.
|
||||
|
||||
26.07.2010, L. Pandola, tag emlowen-V09-03-36
|
||||
Added class G4PenelopeCrossSection to store/handle cross sections
|
||||
(and higher momenta, like stopping powers) for the updated
|
||||
Penelope08 e+/e- models (ionisation and bremsstrahlung).
|
||||
|
||||
15.06.2010, G. Cosmo, tag emlowen-V09-03-35
|
||||
Corrected return value case in method GetPhotoElectronDirection()
|
||||
in G4PhotoElectricAngularGeneratorSauterGavrila; addressing problem
|
||||
report #1120.
|
||||
Added missing virtual destructor to G4VecpssrKModel and
|
||||
G4VecpssrLiModel base classes.
|
||||
|
||||
14.06.2010, A. Lechner, tag emlowen-V09-03-34
|
||||
Made desctructor of base class G4VIonDEDXScalingAlgorithm virtual
|
||||
(avoids also compiler warnings).
|
||||
|
||||
10.06.2010, A. Mantero, tag emlowen-V09-03-33
|
||||
Fix in G4AugerTransition to cure crash on Windows.
|
||||
|
||||
09.06.2010, A. Mantero, tag emlowen-V09-03-32
|
||||
Fixed compilation warning in G4AnalyticalEcpssrKCrossSection.
|
||||
|
||||
08.06.2010, S. Incerti, tag emlowen-V09-03-31
|
||||
modified initialisation of e- Emfietzoglou excitation
|
||||
model in G4DNAEmfietzoglouExcitationModel.cc and
|
||||
in G4DNAMillerGreenExcitationModel.cc
|
||||
|
||||
07.06.2010, A. Mantero, tag emlowen-V09-03-30
|
||||
added analytical (ecpssr) and empirical (Paul and Orlic)
|
||||
models for the calculation of hadronc shell ionisation CS
|
||||
|
||||
29.04.2010, L. Pandola, tag emlowen-V09-03-29
|
||||
Removed the compiler warning in G4PenelopeIonisationModel.cc which
|
||||
caused the rejection of emlowen-V09-03-28
|
||||
|
||||
23.04.2010, L. Pandola, tag emlowen-V09-03-28
|
||||
Removed useless call in G4PenelopeIonisationModel which triggered fake
|
||||
warning messages
|
||||
|
||||
15.04.2010, L. Pandola, tag emlowen-V09-03-27
|
||||
Added MinEnergyCut() method to G4PenelopeIonisationModel. Small (minor)
|
||||
changes to other G4Penelope models (mainly clean-up)
|
||||
|
||||
08.04.2010, S. Incerti, tag emlowen-V09-03-26
|
||||
Changed computation of scattering angle in G4DNAChampionElasticModel.cc
|
||||
G4EMLOW 6.12 version needed
|
||||
|
||||
07.04.2010, S. Incerti, tag emlowen-V09-03-25
|
||||
Fixed memory leak in G4DNARuddIonisationModel.cc
|
||||
|
||||
06.04.2010, S. Incerti, tag emlowen-V09-03-24
|
||||
Replaced hard coded masses in G4DNADingfelderCharge*.cc
|
||||
|
||||
31.03.2010, L. Pandola, tag emlowen-V09-03-23
|
||||
Removed G4cout's used for debugging in G4Penelope08ComptonModel and
|
||||
G4Penelope08PhotoElectricModel
|
||||
|
||||
27.03.2010, S. Incerti, tag emlowen-V09-03-22
|
||||
Modified G4DNABornIonisationModel.hh
|
||||
|
||||
27.03.2010, S. Incerti, tag emlowen-V09-03-21
|
||||
Modified method declaration in G4DNABornExcitation.hh
|
||||
|
||||
27.03.2010, S. Incerti, tag emlowen-V09-03-20
|
||||
Added new excitation model for electrons in G4DNABornExcitationModel
|
||||
|
||||
26.03.2010, S. Incerti, tag emlowen-V09-03-19
|
||||
Modified electron correction in G4DNAMillerGreenExcitation.cc
|
||||
|
||||
26.03.2010, S. Incerti, tag emlowen-V09-03-18
|
||||
Extended range of search for maximum of DCS in G4DNARuddIonisationModel.cc
|
||||
|
||||
26.03.2010, S. Incerti, tag emlowen-V09-03-17
|
||||
Changed default parameters of G4DNAEmfietzoglouExcitationModel.hh
|
||||
|
||||
26.03.2010, tag emlowen-V09-03-16
|
||||
- S. Incerti : corrected G4DNABornIonisationModel.cc class
|
||||
for maximum kinetic energy transfer
|
||||
- A. Mantero: fixed bugs in G4AtomicDeexcitation.cc, G4AugerTransition.cc
|
||||
|
||||
26.03.2010, L. Pandola, tag emlowen-V09-03-15
|
||||
Changed order in some models' constructor to get rid of a valgrind
|
||||
warning (conditional jump or move depends on unitialized value(s)).
|
||||
|
||||
25.03.2010, S. Incerti, tag emlowen-V09-03-14
|
||||
Modified hydrogen correction in G4DNARuddIonisation.cc
|
||||
|
||||
25.03.2010, S. Incerti, tag emlowen-V09-03-13
|
||||
Dummy tag
|
||||
|
||||
18.03.2010, S. Incerti, tag emlowen-V09-03-12
|
||||
- Re-added vapor water shell constants to G4DNARuddIonisationModel.cc
|
||||
as suggested by Ziad.
|
||||
|
||||
18.03.2010, S. Incerti, tag emlowen-V09-03-11
|
||||
Extended low energy cover of G4DNA charge change processes
|
||||
|
||||
17.03.2010, L. Pandola, tag emlowen-V09-03-10
|
||||
Added four new models (gamma ray models Compton, GammaConversion,
|
||||
PhotoElectric, Rayleigh), upgrades of G4Penelope from version2001 to
|
||||
version 2008. For now, 2008 models named as G4Penelope08xxxxModel
|
||||
** to be used with G4LEDATA version 6.10 **
|
||||
|
||||
16.03.2010, L. Pandola, tag emlowen-V09-03-09
|
||||
Modified public interface of G4PenelopeOscillatorManager (info to be used for
|
||||
PenelopeIonisation)
|
||||
|
||||
15.03.2010, S. Incerti, tag emlowen-V09-03-08
|
||||
Modified electron correction in G4DNARuddIonisationModel.cc
|
||||
|
||||
15.03.2010, L. Pandola tag emlowen-V09-03-07
|
||||
Updated public interface of G4LivermorePhotoElectricModel. Removed
|
||||
possibility to use custom cuts for fluorescence/Auger. Main cuts from
|
||||
G4ProductionCutsTable are always used - for consistency.
|
||||
|
||||
15.03.2010, L. Pandola tag emlowen-V09-03-06
|
||||
Clean-up in Penelope models (explicitely set Auger flag to false in
|
||||
constructor)
|
||||
|
||||
19.02.2010, L. Pandola tag emlowen-V09-03-05
|
||||
Modification in calculations made by G4PenelopeOscillatorManager (Hartree
|
||||
factors for Penelope Compton Scattering)
|
||||
|
||||
17.02.2010, L. Pandola tag emlowen-V09-03-04
|
||||
Updated interface for G4PenelopeOscillatorManager. Still *beta*
|
||||
|
||||
05.02.2010, S. Incerti, tag emlowen-V09-03-03
|
||||
Added initialisation to atomTotalCrossSection in G4hShellCrossSectionDoubleExp.cc.
|
||||
|
||||
07.01.2010, S. Incerti, tag emlowen-V09-03-02
|
||||
Improved way of testing material in Geant4-DNA models.
|
||||
|
||||
21.12.2009, L. Pandola, tag emlowen-V09-03-01
|
||||
Added classes G4PenelopeOscillator* to manage multi-element atomic oscillators used
|
||||
in Penelope Compton and Ionisation models. Already compliant with Penelope2008.
|
||||
**Beta version at the moment**
|
||||
|
||||
21.12.2009, L. Pandola, tag emlowen-V09-03-00
|
||||
Added a dummy ComputeCrossSectionPerAtom() method in G4PenelopeRayleighModel.
|
||||
Never inkoved by tracking, issues a warning if users access it via G4EmCalculator.
|
||||
|
||||
10.12.2009, S. Incerti, tag emlowen-V09-02-68
|
||||
- Added vapor water shell constants to G4DNARuddIonisationModel.cc
|
||||
as suggested by Ziad.
|
||||
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AnalyticalEcpssrKCrossSection.hh,v 1.1 2010/06/06 23:40:35 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
|
||||
#ifndef G4ANALYTICALECPSSRKCROSSSECTION_HH
|
||||
#define G4ANALYTICALECPSSRKCROSSSECTION_HH 1
|
||||
|
||||
#include "G4VecpssrKModel.hh"
|
||||
#include "globals.hh"
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include "G4DNACrossSectionDataSet.hh"
|
||||
|
||||
|
||||
class G4AnalyticalEcpssrKCrossSection : public G4VecpssrKModel
|
||||
{
|
||||
public:
|
||||
|
||||
G4AnalyticalEcpssrKCrossSection();
|
||||
|
||||
~G4AnalyticalEcpssrKCrossSection();
|
||||
|
||||
|
||||
G4double CalculateCrossSection(G4int, G4double, G4double);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double ExpIntFunction(G4int n,G4double x);//Exponential Integral Function
|
||||
|
||||
private:
|
||||
|
||||
G4AnalyticalEcpssrKCrossSection(const G4AnalyticalEcpssrKCrossSection&);
|
||||
G4AnalyticalEcpssrKCrossSection & operator = (const G4AnalyticalEcpssrKCrossSection &right);
|
||||
|
||||
G4double FunctionFK(G4double k, G4double theta);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double QuadInterpolator(G4double e11,
|
||||
G4double e12,
|
||||
G4double e21,
|
||||
G4double e22,
|
||||
G4double x11,
|
||||
G4double x12,
|
||||
G4double x21,
|
||||
G4double x22,
|
||||
G4double t1,
|
||||
G4double t2,
|
||||
G4double t,
|
||||
G4double e);
|
||||
|
||||
typedef std::map<double, std::map<double, double> > TriDimensionMap;
|
||||
|
||||
TriDimensionMap FKData;
|
||||
std::vector<double> dummyVec;
|
||||
|
||||
typedef std::map<double, std::vector<double> > VecMap;
|
||||
VecMap aVecMap;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
G4DNACrossSectionDataSet* tableC1;
|
||||
G4DNACrossSectionDataSet* tableC2;
|
||||
G4DNACrossSectionDataSet* tableC3;
|
||||
};
|
||||
|
||||
#endif
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AnalyticalEcpssrLiCrossSection.hh,v 1.2 2010/06/25 09:41:09 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 23 Apr 2008 H. Ben Abdelouahed 1st implementation
|
||||
// 28 Apr 2008 MGP Major revision according to a design iteration
|
||||
// 29 Apr 2009 ALF Updated Desing for Integration
|
||||
// 01 Sep 2009 ALF Updated to G4AnalyticalEcpssrLiCrossSection
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p and alpha ionisation, L shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4ANALYTICALECPSSRLICROSSSECTION_HH
|
||||
#define G4ANALYTICALECPSSRLICROSSSECTION_HH 1
|
||||
|
||||
#include "G4VecpssrLiModel.hh"
|
||||
#include "globals.hh"
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
class G4AnalyticalEcpssrLiCrossSection : public G4VecpssrLiModel
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
G4AnalyticalEcpssrLiCrossSection();
|
||||
|
||||
~G4AnalyticalEcpssrLiCrossSection();
|
||||
|
||||
G4double CalculateL1CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double CalculateL2CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double CalculateL3CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double CalculateVelocity(G4int subShell, G4int zTarget,G4double massIncident, G4double energyIncident);
|
||||
|
||||
G4double ExpIntFunction(G4int n,G4double x);//Exponential Integral Function
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
G4AnalyticalEcpssrLiCrossSection(const G4AnalyticalEcpssrLiCrossSection&);
|
||||
G4AnalyticalEcpssrLiCrossSection & operator = (const G4AnalyticalEcpssrLiCrossSection &right);
|
||||
|
||||
G4double FunctionFL1(G4double k, G4double theta);
|
||||
|
||||
G4double FunctionFL2(G4double k, G4double theta);
|
||||
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLinInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double QuadInterpolator(G4double e11,
|
||||
G4double e12,
|
||||
G4double e21,
|
||||
G4double e22,
|
||||
G4double x11,
|
||||
G4double x12,
|
||||
G4double x21,
|
||||
G4double x22,
|
||||
G4double t1,
|
||||
G4double t2,
|
||||
G4double t,
|
||||
G4double e);
|
||||
|
||||
typedef std::map<double, std::map<double, double> > TriDimensionMap;
|
||||
|
||||
TriDimensionMap FL1Data;
|
||||
|
||||
TriDimensionMap FL2Data;
|
||||
std::vector<double> dummyVec1;
|
||||
std::vector<double> dummyVec2;
|
||||
|
||||
|
||||
|
||||
typedef std::map<double, std::vector<double> > VecMap;
|
||||
VecMap aVecMap1;
|
||||
VecMap aVecMap2;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,95 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BoldyshevTripletModel.hh,v 1.1 2010/11/10 17:09:16 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4BoldyshevTripletModel_h
|
||||
#define G4BoldyshevTripletModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4CrossSectionHandler.hh"
|
||||
#include "G4ForceCondition.hh"
|
||||
#include "G4CompositeEMDataSet.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
class G4BoldyshevTripletModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4BoldyshevTripletModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "BoldyshevTriplet");
|
||||
|
||||
virtual ~G4BoldyshevTripletModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
private:
|
||||
|
||||
const G4double smallEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
G4BoldyshevTripletModel & operator=(const G4BoldyshevTripletModel &right);
|
||||
G4BoldyshevTripletModel(const G4BoldyshevTripletModel&);
|
||||
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAAttachment.hh,v 1.1 2010/09/08 13:46:45 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Created by Z. Francis
|
||||
|
||||
#ifndef G4DNAAttachment_h
|
||||
#define G4DNAAttachment_h 1
|
||||
|
||||
#include "G4VEmProcess.hh"
|
||||
|
||||
// Available models
|
||||
#include "G4DNAMeltonAttachmentModel.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4DNAAttachment : public G4VEmProcess
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
G4DNAAttachment(const G4String& processName ="DNAAttachment",
|
||||
G4ProcessType type = fElectromagnetic);
|
||||
|
||||
virtual ~G4DNAAttachment();
|
||||
|
||||
virtual G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void PrintInfo();
|
||||
|
||||
protected:
|
||||
|
||||
virtual void InitialiseProcess(const G4ParticleDefinition*);
|
||||
|
||||
private:
|
||||
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNABornExcitationModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNABornExcitationModel.hh,v 1.4 2010/03/27 12:46:51 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNABornExcitationModel_h
|
||||
@@ -36,6 +36,7 @@
|
||||
|
||||
#include "G4DNACrossSectionDataSet.hh"
|
||||
#include "G4LogLogInterpolation.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4WaterExcitationStructure.hh"
|
||||
|
||||
@@ -49,7 +50,7 @@ public:
|
||||
|
||||
virtual ~G4DNABornExcitationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()) );
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
@@ -69,30 +70,30 @@ protected:
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
|
||||
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
|
||||
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
G4DNACrossSectionDataSet* table;
|
||||
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
|
||||
MapFile tableFile;
|
||||
|
||||
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
|
||||
MapData tableData;
|
||||
|
||||
// Partial cross section
|
||||
|
||||
G4int RandomSelect(G4double energy);
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
// Final state
|
||||
|
||||
G4WaterExcitationStructure waterStructure;
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
|
||||
G4DNABornExcitationModel & operator=(const G4DNABornExcitationModel &right);
|
||||
G4DNABornExcitationModel(const G4DNABornExcitationModel&);
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNABornIonisationModel.hh,v 1.3 2009/06/26 10:15:19 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNABornIonisationModel.hh,v 1.5 2010/03/28 18:33:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNABornIonisationModel_h
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
|
||||
virtual ~G4DNABornIonisationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()));
|
||||
|
||||
virtual G4double CrossSectionPerVolume( const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
@@ -67,6 +67,8 @@ public:
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -97,8 +99,6 @@ private:
|
||||
void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
|
||||
outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
|
||||
|
||||
double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double QuadInterpolator( G4double e11,
|
||||
@@ -128,11 +128,6 @@ private:
|
||||
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNABornIonisationModel & operator=(const G4DNABornIonisationModel &right);
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAChampionElasticModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNAChampionElasticModel.hh,v 1.4 2010/11/11 22:32:22 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4DNAChampionElasticModel_h
|
||||
@@ -44,23 +44,26 @@ class G4DNAChampionElasticModel : public G4VEmModel
|
||||
public:
|
||||
|
||||
G4DNAChampionElasticModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "DNAChampionElasticModel");
|
||||
const G4String& nam = "DNAChampionElasticModel");
|
||||
|
||||
virtual ~G4DNAChampionElasticModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
inline void SetKillBelowThreshold (G4double threshold);
|
||||
G4double GetKillBelowThreshold () { return killBelowEnergy; }
|
||||
|
||||
protected:
|
||||
|
||||
@@ -70,7 +73,6 @@ private:
|
||||
|
||||
G4double killBelowEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double lowEnergyLimitOfModel;
|
||||
G4double highEnergyLimit;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
@@ -85,12 +87,16 @@ private:
|
||||
|
||||
// Final state
|
||||
|
||||
G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double theta);
|
||||
//G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double theta);
|
||||
|
||||
G4double Theta(G4ParticleDefinition * aParticleDefinition, G4double k, G4double integrDiff);
|
||||
|
||||
G4double LinLinInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LinLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
|
||||
|
||||
G4double QuadInterpolator(G4double e11,
|
||||
G4double e12,
|
||||
G4double e21,
|
||||
@@ -114,11 +120,6 @@ private:
|
||||
|
||||
G4double RandomizeCosTheta(G4double k);
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNAChampionElasticModel & operator=(const G4DNAChampionElasticModel &right);
|
||||
@@ -126,6 +127,18 @@ private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
inline void G4DNAChampionElasticModel::SetKillBelowThreshold (G4double threshold)
|
||||
{
|
||||
killBelowEnergy = threshold;
|
||||
|
||||
if (threshold < 1*eV)
|
||||
G4Exception ("*** WARNING : the G4DNAChampionElasticModel class is not validated below 1 eV !","",JustWarning,"") ;
|
||||
|
||||
if (threshold < 0.025*eV) threshold = 0.025*eV;
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
|
||||
+2
-7
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNADingfelderChargeDecreaseModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNADingfelderChargeDecreaseModel.hh,v 1.2 2010/01/07 18:10:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNADingfelderChargeDecreaseModel_h
|
||||
@@ -103,11 +103,6 @@ private:
|
||||
|
||||
G4double OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNADingfelderChargeDecreaseModel & operator=(const G4DNADingfelderChargeDecreaseModel &right);
|
||||
|
||||
+2
-7
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNADingfelderChargeIncreaseModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNADingfelderChargeIncreaseModel.hh,v 1.2 2010/01/07 18:10:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNADingfelderChargeIncreaseModel_h
|
||||
@@ -106,11 +106,6 @@ private:
|
||||
|
||||
G4double IncomingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNADingfelderChargeIncreaseModel & operator=(const G4DNADingfelderChargeIncreaseModel &right);
|
||||
|
||||
+3
-8
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAEmfietzoglouExcitationModel.hh,v 1.1 2009/01/12 14:26:02 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNAEmfietzoglouExcitationModel.hh,v 1.3 2010/03/26 19:52:44 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNAEmfietzoglouExcitationModel_h
|
||||
@@ -49,7 +49,7 @@ public:
|
||||
|
||||
virtual ~G4DNAEmfietzoglouExcitationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()) );
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
@@ -88,11 +88,6 @@ private:
|
||||
|
||||
G4WaterExcitationStructure waterExcitation;
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNAEmfietzoglouExcitationModel & operator=(const G4DNAEmfietzoglouExcitationModel &right);
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAMeltonAttachmentModel.hh,v 1.1 2010/09/08 13:46:45 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Created by Z. Francis
|
||||
|
||||
#ifndef G4DNAMeltonAttachmentModel_h
|
||||
#define G4DNAMeltonAttachmentModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
#include "G4DNACrossSectionDataSet.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4LogLogInterpolation.hh"
|
||||
|
||||
class G4DNAMeltonAttachmentModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4DNAMeltonAttachmentModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "DNAMeltonAttachmentModel");
|
||||
|
||||
virtual ~G4DNAMeltonAttachmentModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
G4double lowEnergyLimitOfModel;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
|
||||
MapFile tableFile;
|
||||
|
||||
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
|
||||
MapData tableData;
|
||||
|
||||
//
|
||||
|
||||
G4DNAMeltonAttachmentModel & operator=(const G4DNAMeltonAttachmentModel &right);
|
||||
G4DNAMeltonAttachmentModel(const G4DNAMeltonAttachmentModel&);
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+2
-9
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAMillerGreenExcitationModel.hh,v 1.1 2009/01/12 14:26:03 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNAMillerGreenExcitationModel.hh,v 1.2 2010/01/07 18:10:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNAMillerGreenExcitationModel_h
|
||||
@@ -114,13 +114,6 @@ private:
|
||||
G4double slaterEffectiveCharge[3][4];
|
||||
G4double sCoefficient[3][4];
|
||||
|
||||
// Final state
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNAMillerGreenExcitationModel & operator=(const G4DNAMillerGreenExcitationModel &right);
|
||||
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNARuddIonisationExtendedModel.hh,v 1.1 2010/11/03 10:44:26 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4DNARuddIonisationExtendedModel_h
|
||||
#define G4DNARuddIonisationExtendedModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
#include "G4DNACrossSectionDataSet.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4LogLogInterpolation.hh"
|
||||
|
||||
#include "G4WaterIonisationStructure.hh"
|
||||
|
||||
class G4DNARuddIonisationExtendedModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4DNARuddIonisationExtendedModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "DNARuddIonisationExtendedModel");
|
||||
|
||||
virtual ~G4DNARuddIonisationExtendedModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume( const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
|
||||
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
|
||||
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
|
||||
// ZF 26-10-2010
|
||||
std::map<G4double,G4double> lowEnergyLimitForA, lowEnergyLimitOfModelForA, killBelowEnergyForA;
|
||||
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
|
||||
MapFile tableFile;
|
||||
|
||||
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
|
||||
MapData tableData;
|
||||
|
||||
// Final state
|
||||
|
||||
G4WaterIonisationStructure waterStructure;
|
||||
|
||||
G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition* particleDefinition,
|
||||
G4double incomingParticleEnergy,
|
||||
G4int shell);
|
||||
|
||||
void RandomizeEjectedElectronDirection(G4ParticleDefinition* particleDefinition,
|
||||
G4double incomingParticleEnergy,
|
||||
G4double outgoingParticleEnergy,
|
||||
G4double & cosTheta,
|
||||
G4double & phi, G4int shell);
|
||||
|
||||
G4double RejectionFunction(G4ParticleDefinition* particle,
|
||||
G4double k,
|
||||
G4double proposed_ws,
|
||||
G4int ionizationLevelIndex);
|
||||
|
||||
G4double ProposedSampledEnergy(G4ParticleDefinition* particle,
|
||||
G4double k,
|
||||
G4int ionizationLevelIndex);
|
||||
|
||||
G4double CorrectionFactor(G4ParticleDefinition* particleDefinition, G4double k, G4int shell);
|
||||
|
||||
G4double S_1s(G4double t,
|
||||
G4double energyTransferred,
|
||||
G4double slaterEffectiveChg,
|
||||
G4double shellNumber);
|
||||
|
||||
G4double S_2s(G4double t,
|
||||
G4double energyTransferred,
|
||||
G4double slaterEffectiveChg,
|
||||
G4double shellNumber);
|
||||
|
||||
|
||||
G4double S_2p(G4double t,
|
||||
G4double energyTransferred,
|
||||
G4double slaterEffectiveChg,
|
||||
G4double shellNumber);
|
||||
|
||||
G4double R(G4double t,
|
||||
G4double energyTransferred,
|
||||
G4double slaterEffectiveChg,
|
||||
G4double shellNumber) ;
|
||||
|
||||
G4double slaterEffectiveCharge[3];
|
||||
G4double sCoefficient[3];
|
||||
|
||||
// Partial cross section
|
||||
|
||||
G4double PartialCrossSection(const G4Track& track);
|
||||
|
||||
G4double Sum(G4double energy, const G4String& particle);
|
||||
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNARuddIonisationExtendedModel & operator=(const G4DNARuddIonisationExtendedModel &right);
|
||||
G4DNARuddIonisationExtendedModel(const G4DNARuddIonisationExtendedModel&);
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNARuddIonisationModel.hh,v 1.3 2009/06/26 09:42:32 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNARuddIonisationModel.hh,v 1.4 2010/01/07 18:10:19 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
|
||||
#ifndef G4DNARuddIonisationModel_h
|
||||
@@ -147,11 +147,6 @@ private:
|
||||
|
||||
G4int RandomSelect(G4double energy,const G4String& particle );
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNARuddIonisationModel & operator=(const G4DNARuddIonisationModel &right);
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNASancheExcitationModel.hh,v 1.3 2010/11/11 23:43:35 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Created by Z. Francis
|
||||
|
||||
#ifndef G4DNASancheExcitationModel_h
|
||||
#define G4DNASancheExcitationModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include <deque>
|
||||
#include "G4Electron.hh"
|
||||
|
||||
class G4DNASancheExcitationModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4DNASancheExcitationModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "DNASancheExcitationModel");
|
||||
|
||||
virtual ~G4DNASancheExcitationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
// Cross section
|
||||
|
||||
G4double PartialCrossSection(G4double energy,G4int level);
|
||||
|
||||
inline void ExtendLowEnergyLimit (G4double /*threshold*/);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
|
||||
private:
|
||||
|
||||
G4double killBelowEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
|
||||
// Cross section
|
||||
|
||||
G4int RandomSelect(G4double energy);
|
||||
G4int nLevels;
|
||||
G4double VibrationEnergy(G4int level);
|
||||
G4double Sum(G4double k);
|
||||
G4double LinInterpolate(G4double e1,
|
||||
G4double e2,
|
||||
G4double e,
|
||||
G4double xs1,
|
||||
G4double xs2);
|
||||
|
||||
//
|
||||
typedef std::map<double, std::map<double, double> > TriDimensionMap;
|
||||
TriDimensionMap map1;
|
||||
std::vector<double> tdummyVec;
|
||||
|
||||
//
|
||||
G4DNASancheExcitationModel & operator=(const G4DNASancheExcitationModel &right);
|
||||
G4DNASancheExcitationModel(const G4DNASancheExcitationModel&);
|
||||
|
||||
};
|
||||
|
||||
inline void G4DNASancheExcitationModel::ExtendLowEnergyLimit (G4double threshold)
|
||||
{
|
||||
lowEnergyLimit = threshold;
|
||||
if (lowEnergyLimit < 2*eV)
|
||||
G4Exception ("*** WARNING : the G4DNASancheExcitationModel class is not validated below 2 eV !","",JustWarning,"") ;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+13
-9
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DNAScreenedRutherfordElasticModel.hh,v 1.1 2009/01/12 14:26:03 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4DNAScreenedRutherfordElasticModel.hh,v 1.4 2010/11/11 22:32:22 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4DNAScreenedRutherfordElasticModel_h
|
||||
@@ -58,6 +58,9 @@ public:
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
inline void SetKillBelowThreshold (G4double threshold);
|
||||
G4double GetKillBelowThreshold () { return killBelowEnergy; }
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChangeForGamma;
|
||||
@@ -66,8 +69,7 @@ private:
|
||||
|
||||
G4double killBelowEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double lowEnergyLimitOfModel;
|
||||
G4double intermediateEnergyLimit;
|
||||
G4double intermediateEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
G4bool isInitialised;
|
||||
G4int verboseLevel;
|
||||
@@ -92,11 +94,6 @@ private:
|
||||
|
||||
G4double ScreenedRutherfordRandomizeCosTheta(G4double k, G4double z);
|
||||
|
||||
// Test water material
|
||||
|
||||
G4bool flagMaterialIsWater;
|
||||
G4double densityWater;
|
||||
|
||||
//
|
||||
|
||||
G4DNAScreenedRutherfordElasticModel & operator=(const G4DNAScreenedRutherfordElasticModel &right);
|
||||
@@ -104,6 +101,13 @@ private:
|
||||
|
||||
};
|
||||
|
||||
inline void G4DNAScreenedRutherfordElasticModel::SetKillBelowThreshold (G4double threshold)
|
||||
{
|
||||
killBelowEnergy = threshold;
|
||||
if (threshold < 9*eV)
|
||||
G4Exception ("*** WARNING : the G4DNAScreenedRutherfordElasticModel class is not validated below 9 eV !","",JustWarning,"") ;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
|
||||
+34
-29
@@ -23,40 +23,45 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Pekka Kaitaniemi, HIP
|
||||
// Aatos Heikkinen
|
||||
// $Id: G4DNAVibExcitation.hh,v 1.1 2010/09/08 13:46:45 sincerti Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
|
||||
#ifndef G4ELASTICCASCADEINTERFACE_H
|
||||
#define G4ELASTICCASCADEINTERFACE_H 1
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4Nucleon.hh"
|
||||
#include "G4Nucleus.hh"
|
||||
#include "G4VIntraNuclearTransportModel.hh"
|
||||
#include "G4KineticTrackVector.hh"
|
||||
#include "G4FragmentVector.hh"
|
||||
#include "G4ParticleChange.hh"
|
||||
#include "G4ReactionProductVector.hh"
|
||||
#include "G4ReactionProduct.hh"
|
||||
// Created by Z. Francis
|
||||
|
||||
class G4ElasticCascadeInterface : public G4VIntraNuclearTransportModel {
|
||||
public:
|
||||
G4ElasticCascadeInterface();
|
||||
~G4ElasticCascadeInterface(){}
|
||||
#ifndef G4DNAVibExcitation_h
|
||||
#define G4DNAVibExcitation_h 1
|
||||
|
||||
G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus);
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack, G4Nucleus& theNucleus);
|
||||
#include "G4VEmProcess.hh"
|
||||
|
||||
// Available models
|
||||
#include "G4DNASancheExcitationModel.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4DNAVibExcitation : public G4VEmProcess
|
||||
{
|
||||
public:
|
||||
|
||||
G4DNAVibExcitation(const G4String& processName ="DNAVibrationalExcitation",
|
||||
G4ProcessType type = fElectromagnetic);
|
||||
|
||||
virtual ~G4DNAVibExcitation();
|
||||
|
||||
virtual G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
|
||||
virtual void PrintInfo();
|
||||
|
||||
protected:
|
||||
|
||||
virtual void InitialiseProcess(const G4ParticleDefinition*);
|
||||
|
||||
private:
|
||||
G4int operator==(G4ElasticCascadeInterface& right) {
|
||||
return (this == &right);
|
||||
}
|
||||
|
||||
G4int operator!=(G4ElasticCascadeInterface& right) {
|
||||
return (this != &right);
|
||||
}
|
||||
|
||||
G4int verboseLevel;
|
||||
G4HadFinalState theResult;
|
||||
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
#endif
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -23,6 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Generator2BN.hh,v 1.4 2010/10/14 14:00:29 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -62,9 +64,9 @@ class G4Generator2BN : public G4VBremAngularDistribution
|
||||
|
||||
public:
|
||||
|
||||
G4Generator2BN(const G4String& name);
|
||||
G4Generator2BN(const G4String& name = "");
|
||||
|
||||
~G4Generator2BN();
|
||||
virtual ~G4Generator2BN();
|
||||
|
||||
G4double PolarAngle(const G4double initial_energy,
|
||||
const G4double final_energy,
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Generator2BS.hh,v 1.5 2010/10/14 14:00:29 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -38,13 +40,15 @@
|
||||
// Creation date: 2 June 2003
|
||||
//
|
||||
// Modifications:
|
||||
// 02 Jun 2003 First implementation acording with new design
|
||||
// 02 Jun 2003 First implementation acording with new design
|
||||
// 12 Oct 2010 V.Ivanchenko moved RejectionFunction inline
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// Concrete class for Bremsstrahlung Angular Distribution Generation - 2BS Distribution
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
// Concrete class for Bremsstrahlung Angular Distribution Generation
|
||||
// 2BS Distribution
|
||||
//
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -56,14 +60,16 @@
|
||||
#include "globals.hh"
|
||||
#include "G4VBremAngularDistribution.hh"
|
||||
|
||||
class G4Pow;
|
||||
|
||||
class G4Generator2BS : public G4VBremAngularDistribution
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Generator2BS(const G4String& name);
|
||||
G4Generator2BS(const G4String& name="");
|
||||
|
||||
~G4Generator2BS();
|
||||
virtual ~G4Generator2BS();
|
||||
|
||||
G4double PolarAngle(const G4double initial_energy,
|
||||
const G4double final_energy,
|
||||
@@ -73,18 +79,28 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
G4double RejectionFunction(G4double value) const;
|
||||
inline G4double RejectionFunction(G4double value) const;
|
||||
|
||||
private:
|
||||
|
||||
G4double z;
|
||||
G4double rejection_argument1, rejection_argument2, rejection_argument3;
|
||||
G4double EnergyRatio;
|
||||
|
||||
G4Pow* g4pow;
|
||||
|
||||
// hide assignment operator
|
||||
G4Generator2BS & operator=(const G4Generator2BS &right);
|
||||
G4Generator2BS(const G4Generator2BS&);
|
||||
G4Generator2BS & operator=(const G4Generator2BS &right);
|
||||
G4Generator2BS(const G4Generator2BS&);
|
||||
|
||||
};
|
||||
|
||||
inline G4double G4Generator2BS::RejectionFunction(G4double value) const
|
||||
{
|
||||
G4double argument = (1+value)*(1+value);
|
||||
return (4+std::log(rejection_argument3+(z/argument)))*
|
||||
((4*EnergyRatio*value/argument)-rejection_argument1)+rejection_argument2;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4IonParametrisedLossModel.hh,v 1.8 2010/11/04 12:21:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// ===========================================================================
|
||||
// GEANT4 class header file
|
||||
@@ -135,7 +136,7 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
G4double); // Length of current step
|
||||
|
||||
// Function, which computes the mean energy transfer rate to delta rays
|
||||
G4double DeltaRayMeanEnergyTransferRate(
|
||||
inline G4double DeltaRayMeanEnergyTransferRate(
|
||||
const G4Material*, // Target Material
|
||||
const G4ParticleDefinition*, // Projectile
|
||||
G4double, // Kinetic energy of projectile
|
||||
@@ -182,7 +183,7 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
|
||||
// Function checking the applicability of physics tables to ion-material
|
||||
// combinations (Note: the energy range of tables is not checked)
|
||||
LossTableList::iterator IsApplicable(
|
||||
inline LossTableList::iterator IsApplicable(
|
||||
const G4ParticleDefinition*, // Projectile (ion)
|
||||
const G4Material*); // Target material
|
||||
|
||||
@@ -207,9 +208,11 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
G4bool); // Logarithmic scaling of energy
|
||||
|
||||
// Function for setting energy loss limit for stopping power integration
|
||||
void SetEnergyLossLimit(G4double ionEnergyLossLimit);
|
||||
inline void SetEnergyLossLimit(G4double ionEnergyLossLimit);
|
||||
|
||||
protected:
|
||||
|
||||
virtual
|
||||
G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
|
||||
G4double); // Kinetic energy of projectile
|
||||
|
||||
@@ -230,7 +233,7 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
const G4MaterialCutsCouple*); // Target material
|
||||
|
||||
// Function, which updates parameters concering particle properties
|
||||
void UpdateCache(
|
||||
inline void UpdateCache(
|
||||
const G4ParticleDefinition*); // Projectile (ion)
|
||||
|
||||
// Function, which builds range vs energy (and energy vs range) vectors
|
||||
@@ -286,13 +289,10 @@ class G4IonParametrisedLossModel : public G4VEmModel {
|
||||
// ######################################################################
|
||||
|
||||
// Pointer to particle change object, which is used to set e.g. the
|
||||
// energy loss due to nuclear stopping
|
||||
// energy loss and secondary delta-electron
|
||||
// used indicating if model is initialized
|
||||
G4ParticleChangeForLoss* particleChangeLoss;
|
||||
|
||||
// Flag indicating if model is initialized (i.e. if
|
||||
// G4ParticleChangeForLoss was created)
|
||||
G4bool modelIsInitialised;
|
||||
|
||||
// ######################################################################
|
||||
// # Corrections and energy loss limit
|
||||
// #
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4IonParametrisedLossModel.icc,v 1.7 2010/11/04 12:21:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// ===========================================================================
|
||||
// GEANT4 class
|
||||
@@ -42,6 +43,7 @@
|
||||
// (tables are now built in initialisation phase),
|
||||
// Minor bug fix in ComputeDEDXPerVolume (AL)
|
||||
// 20. 11. 2009 - Added set-method for energy loss limit (AL)
|
||||
// 04. 11. 2010 - Moved virtual methods to the source (VI)
|
||||
//
|
||||
// Class description:
|
||||
// Model for computing the energy loss of ions by employing a
|
||||
@@ -54,7 +56,6 @@
|
||||
//
|
||||
// ===========================================================================
|
||||
|
||||
|
||||
inline G4double G4IonParametrisedLossModel::DeltaRayMeanEnergyTransferRate(
|
||||
const G4Material* material,
|
||||
const G4ParticleDefinition* particle,
|
||||
@@ -115,35 +116,6 @@ inline G4double G4IonParametrisedLossModel::DeltaRayMeanEnergyTransferRate(
|
||||
return meanRate;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
G4double G4IonParametrisedLossModel::MaxSecondaryEnergy(
|
||||
const G4ParticleDefinition* particle,
|
||||
G4double kineticEnergy) {
|
||||
|
||||
// ############## Maximum energy of secondaries ##########################
|
||||
// Function computes maximum energy of secondary electrons which are
|
||||
// released by an ion
|
||||
//
|
||||
// See Geant4 physics reference manual (version 9.1), section 9.1.1
|
||||
//
|
||||
// Ref.: W.M. Yao et al, Jour. of Phys. G 33 (2006) 1.
|
||||
// C.Caso et al. (Part. Data Group), Europ. Phys. Jour. C 3 1 (1998).
|
||||
// B. Rossi, High energy particles, New York, NY: Prentice-Hall (1952).
|
||||
//
|
||||
// (Implementation adapted from G4BraggIonModel)
|
||||
|
||||
if(particle != cacheParticle) UpdateCache(particle);
|
||||
|
||||
G4double tau = kineticEnergy/cacheMass;
|
||||
G4double tmax = 2.0 * electron_mass_c2 * tau * (tau + 2.) /
|
||||
(1. + 2.0 * (tau + 1.) * cacheElecMassRatio +
|
||||
cacheElecMassRatio * cacheElecMassRatio);
|
||||
|
||||
return tmax;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
void G4IonParametrisedLossModel::UpdateCache(
|
||||
const G4ParticleDefinition* particle) {
|
||||
@@ -155,35 +127,6 @@ void G4IonParametrisedLossModel::UpdateCache(
|
||||
cacheChargeSquare = q * q;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
G4double G4IonParametrisedLossModel::GetChargeSquareRatio(
|
||||
const G4ParticleDefinition* particle,
|
||||
const G4Material* material,
|
||||
G4double kineticEnergy) { // Kinetic energy
|
||||
|
||||
G4double chargeSquareRatio = corrections ->
|
||||
EffectiveChargeSquareRatio(particle,
|
||||
material,
|
||||
kineticEnergy);
|
||||
corrFactor = chargeSquareRatio *
|
||||
corrections -> EffectiveChargeCorrection(particle,
|
||||
material,
|
||||
kineticEnergy);
|
||||
return corrFactor;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
G4double G4IonParametrisedLossModel::GetParticleCharge(
|
||||
const G4ParticleDefinition* particle,
|
||||
const G4Material* material,
|
||||
G4double kineticEnergy) { // Kinetic energy
|
||||
|
||||
return corrections -> GetParticleCharge(particle, material, kineticEnergy);
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
LossTableList::iterator G4IonParametrisedLossModel::IsApplicable(
|
||||
const G4ParticleDefinition* particle, // Projectile (ion)
|
||||
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LivermoreGammaConversionModelRC.hh,v 1.1 2010/11/10 17:12:21 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4LivermoreGammaConversionModelRC_h
|
||||
#define G4LivermoreGammaConversionModelRC_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4CrossSectionHandler.hh"
|
||||
#include "G4ForceCondition.hh"
|
||||
#include "G4CompositeEMDataSet.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
class G4LivermoreGammaConversionModelRC : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LivermoreGammaConversionModelRC(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "LivermoreConversion");
|
||||
|
||||
virtual ~G4LivermoreGammaConversionModelRC();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
private:
|
||||
|
||||
const G4double smallEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4double ScreenFunction1(G4double screenVariable);
|
||||
G4double ScreenFunction2(G4double screenVariable);
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
G4LivermoreGammaConversionModelRC & operator=(const G4LivermoreGammaConversionModelRC &right);
|
||||
G4LivermoreGammaConversionModelRC(const G4LivermoreGammaConversionModelRC&);
|
||||
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LivermoreNuclearGammaConversionModel.hh,v 1.1 2010/11/10 17:09:16 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4LivermoreNuclearGammaConversionModel_h
|
||||
#define G4LivermoreNuclearGammaConversionModel_h 1
|
||||
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4CrossSectionHandler.hh"
|
||||
#include "G4ForceCondition.hh"
|
||||
#include "G4CompositeEMDataSet.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
class G4LivermoreNuclearGammaConversionModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4LivermoreNuclearGammaConversionModel(const G4ParticleDefinition* p = 0,
|
||||
const G4String& nam = "LivermoreNuclearGammaConversion");
|
||||
|
||||
virtual ~G4LivermoreNuclearGammaConversionModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
private:
|
||||
|
||||
const G4double smallEnergy;
|
||||
G4double lowEnergyLimit;
|
||||
G4double highEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4double ScreenFunction1(G4double screenVariable);
|
||||
G4double ScreenFunction2(G4double screenVariable);
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VEMDataSet* meanFreePathTable;
|
||||
|
||||
G4LivermoreNuclearGammaConversionModel & operator=(const G4LivermoreNuclearGammaConversionModel &right);
|
||||
G4LivermoreNuclearGammaConversionModel(const G4LivermoreNuclearGammaConversionModel&);
|
||||
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
+8
-14
@@ -23,9 +23,13 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LivermorePhotoElectricModel.hh,v 1.3 2009/04/17 10:29:20 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4LivermorePhotoElectricModel.hh,v 1.4 2010/03/15 09:02:29 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// 15-Mar-2010 L. Pandola, removed methods to set explicitely fluorescence cuts.
|
||||
// Main cuts from G4ProductionCutsTable are always used
|
||||
//
|
||||
|
||||
|
||||
#ifndef G4LivermorePhotoElectricModel_h
|
||||
#define G4LivermorePhotoElectricModel_h 1
|
||||
@@ -75,10 +79,6 @@ public:
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetCutForLowEnSecPhotons(G4double);
|
||||
|
||||
void SetCutForLowEnSecElectrons(G4double);
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
void SetAngularGenerator(G4VPhotoElectricAngularDistribution* distribution);
|
||||
@@ -88,11 +88,8 @@ public:
|
||||
protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
/*
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
*/
|
||||
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
@@ -106,9 +103,6 @@ private:
|
||||
G4VCrossSectionHandler* crossSectionHandler;
|
||||
G4VCrossSectionHandler* shellCrossSectionHandler;
|
||||
|
||||
G4double cutForLowEnergySecondaryPhotons;
|
||||
G4double cutForLowEnergySecondaryElectrons;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
|
||||
G4VPhotoElectricAngularDistribution* ElectronAngularGenerator;
|
||||
|
||||
+10
-10
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LivermorePolarizedPhotoElectricModel.hh,v 1.1 2009/10/30 14:52:05 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4LivermorePolarizedPhotoElectricModel.hh,v 1.2 2010/11/23 16:42:15 flongo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
|
||||
#ifndef G4LivermorePolarizedPhotoElectricModel_h
|
||||
@@ -43,7 +43,7 @@
|
||||
#include "G4AtomicShell.hh"
|
||||
#include "G4ProductionCutsTable.hh"
|
||||
#include "G4ForceCondition.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
class G4LivermorePolarizedPhotoElectricModel : public G4VEmModel
|
||||
{
|
||||
@@ -72,10 +72,9 @@ public:
|
||||
G4double maxEnergy);
|
||||
|
||||
|
||||
void SetCutForLowEnSecPhotons(G4double);
|
||||
|
||||
void SetCutForLowEnSecElectrons(G4double);
|
||||
|
||||
// void SetCutForLowEnSecPhotons(G4double);
|
||||
// void SetCutForLowEnSecElectrons(G4double);
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
|
||||
@@ -84,9 +83,10 @@ protected:
|
||||
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
//G4double GetMeanFreePath(const G4Track& aTrack,
|
||||
//G4double previousStepSize,
|
||||
// G4ForceCondition* condition);
|
||||
|
||||
private:
|
||||
|
||||
G4double lowEnergyLimit;
|
||||
|
||||
+14
-10
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4OrlicLCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4OrlicLiCrossSection.hh,v 1.2 2009/06/11 15:46:18 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
//
|
||||
@@ -33,6 +33,8 @@
|
||||
// -----------
|
||||
// 23 Apr 2008 H. Ben Abdelouahed 1st implementation
|
||||
// 28 Apr 2008 MGP Major revision according to a design iteration
|
||||
// 21 Apr 2009 ALF Some correction for compatibility to G4VShellCrossSection
|
||||
// and changed name to G4OrlicLiCrossSection
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -43,20 +45,20 @@
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4ORLICLCROSSSECTION_HH
|
||||
#define G4ORLICLCROSSSECTION_HH 1
|
||||
#ifndef G4ORLICLICROSSSECTION_HH
|
||||
#define G4ORLICLICROSSSECTION_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4AtomicTransitionManager.hh"
|
||||
|
||||
|
||||
class G4OrlicLCrossSection
|
||||
class G4OrlicLiCrossSection
|
||||
|
||||
{
|
||||
public:
|
||||
|
||||
G4OrlicLCrossSection();
|
||||
G4OrlicLiCrossSection();
|
||||
|
||||
virtual ~G4OrlicLCrossSection();
|
||||
virtual ~G4OrlicLiCrossSection();
|
||||
|
||||
|
||||
//according to I.ORLIC, C.H.SOW and S.M.TANG,International Journal of PIXE.Vol.4(1997) 217-230
|
||||
@@ -70,8 +72,10 @@ public:
|
||||
private:
|
||||
|
||||
|
||||
G4OrlicLCrossSection(const G4OrlicLCrossSection&);
|
||||
G4OrlicLCrossSection & operator = (const G4OrlicLCrossSection &right);
|
||||
G4OrlicLiCrossSection(const G4OrlicLiCrossSection&);
|
||||
G4OrlicLiCrossSection & operator = (const G4OrlicLiCrossSection &right);
|
||||
|
||||
G4AtomicTransitionManager* transitionManager;
|
||||
|
||||
};
|
||||
|
||||
@@ -24,13 +24,29 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 21 Apr 2008 H. Abdelohauwed - 1st implementation
|
||||
// 29 Apr 2009 ALF Major Design Revision
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p ionisation, K shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4PAULKCROSSSECTION_HH
|
||||
#define G4PAULKCROSSSECTION_HH 1
|
||||
|
||||
//#include "G4VDataSetAlgorithm.hh"
|
||||
#include "globals.hh"
|
||||
#include <map>
|
||||
|
||||
class G4VDataSetAlgorithm;
|
||||
class G4VEMDataSet;
|
||||
|
||||
class G4PaulKCrossSection
|
||||
|
||||
@@ -41,18 +57,22 @@ public:
|
||||
|
||||
virtual ~G4PaulKCrossSection();
|
||||
|
||||
G4double CalculateKCrossSection(G4int zTarget,G4int zIncident, G4double energyIncident);
|
||||
G4double CalculateKCrossSection(G4int zTarget,G4double massIncident, G4double energyIncident);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
G4PaulKCrossSection(const G4PaulKCrossSection&);
|
||||
G4PaulKCrossSection & operator = (const G4PaulKCrossSection &right);
|
||||
|
||||
G4VDataSetAlgorithm* interpolation;
|
||||
|
||||
std::map< G4int , G4VEMDataSet* > protonDataSetMap;
|
||||
|
||||
std::map< G4int , G4VEMDataSet* > alphaDataSetMap;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Penelope08ComptonModel.hh,v 1.2 2010/03/19 11:33:24 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 15 Feb 2010 L. Pandola 1st implementation.
|
||||
// 18 Mar 2010 L. Pandola Removed GetAtomsPerMolecule(), now demanded
|
||||
// to G4PenelopeOscillatorManager
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//*
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Compton Scattering
|
||||
// with Penelope Model, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08COMPTONMODEL_HH
|
||||
#define G4PENELOPE08COMPTONMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PenelopeOscillatorManager;
|
||||
class G4PenelopeOscillator;
|
||||
|
||||
class G4Penelope08ComptonModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Penelope08ComptonModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenCompton");
|
||||
|
||||
virtual ~G4Penelope08ComptonModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy = 0.0,
|
||||
G4double maxEnergy = DBL_MAX);
|
||||
|
||||
//This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//a warning if one tries to get Cross Sections per Atom via the
|
||||
//G4EmCalculator.
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
//Differential cross section which is numerically integrated
|
||||
G4double DifferentialCrossSection (G4double cdt,G4double energy,
|
||||
G4PenelopeOscillator* osc);
|
||||
|
||||
G4double OscillatorTotalCrossSection(G4double energy,
|
||||
G4PenelopeOscillator* osc);
|
||||
|
||||
G4double KleinNishinaCrossSection(G4double energy,const G4Material*);
|
||||
|
||||
G4Penelope08ComptonModel & operator=(const G4Penelope08ComptonModel &right);
|
||||
G4Penelope08ComptonModel(const G4Penelope08ComptonModel&);
|
||||
|
||||
//Intrinsic energy limits of the model:
|
||||
//cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
G4bool isInitialised;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
|
||||
G4PenelopeOscillatorManager* oscManager;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Penelope08GammaConversionModel.hh,v 1.1 2010/03/17 14:19:04 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 13 Jan 2010 L. Pandola First implementation
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Gamma Conversion
|
||||
// with Penelope Model, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08GAMMACONVERSIONMODEL_HH
|
||||
#define G4PENELOPE08GAMMACONVERSIONMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PhysicsFreeVector;
|
||||
|
||||
class G4Penelope08GammaConversionModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Penelope08GammaConversionModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenConversion");
|
||||
|
||||
virtual ~G4Penelope08GammaConversionModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
G4Penelope08GammaConversionModel & operator=(const
|
||||
G4Penelope08GammaConversionModel &right);
|
||||
G4Penelope08GammaConversionModel(const G4Penelope08GammaConversionModel&);
|
||||
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
//Use a quicker sampling algorithm if E < smallEnergy
|
||||
G4double fSmallEnergy;
|
||||
|
||||
std::map<const G4int,G4PhysicsFreeVector*> *logAtomicCrossSection;
|
||||
void ReadDataFile(const G4int Z);
|
||||
|
||||
void InitializeScreeningRadii();
|
||||
G4double fAtomicScreeningRadius[99];
|
||||
|
||||
void InitializeScreeningFunctions(const G4Material*);
|
||||
//Effective (scalar) properties attached to materials:
|
||||
// effective charge
|
||||
std::map<const G4Material*,G4double> *fEffectiveCharge;
|
||||
// 2/Rs (Rs = screening radius), BCB array in Penelope
|
||||
std::map<const G4Material*,G4double> *fMaterialInvScreeningRadius;
|
||||
// Parameters of screening functions
|
||||
std::map<const G4Material*,std::pair<G4double,G4double> > *fScreeningFunction;
|
||||
|
||||
std::pair<G4double,G4double> GetScreeningFunctions(G4double);
|
||||
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Penelope08IonisationModel.hh,v 1.1 2010/07/28 07:12:13 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 30 Mar 2010 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, e+ and e- ionisation
|
||||
// with Penelope Model, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08IONISATIONMODEL_HH
|
||||
#define G4PENELOPE08IONISATIONMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForLoss.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
|
||||
class G4PhysicsFreeVector;
|
||||
class G4PhysicsLogVector;
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PenelopeOscillatorManager;
|
||||
class G4PenelopeOscillator;
|
||||
class G4PenelopeCrossSection;
|
||||
|
||||
class G4Penelope08IonisationModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Penelope08IonisationModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenIoni");
|
||||
|
||||
virtual ~G4Penelope08IonisationModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
//*This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//*a warning if one tries to get Cross Sections per Atom via the
|
||||
//*G4EmCalculator.
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* theParticle,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy,
|
||||
G4double maxEnergy = DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
virtual G4double ComputeDEDXPerVolume(const G4Material*,
|
||||
const G4ParticleDefinition*,
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy);
|
||||
|
||||
// Min cut in kinetic energy allowed by the model
|
||||
virtual G4double MinEnergyCut(const G4ParticleDefinition*,
|
||||
const G4MaterialCutsCouple*);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
G4double GetDensityCorrection(const G4Material*,G4double energy);
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForLoss* fParticleChange;
|
||||
|
||||
private:
|
||||
void ClearTables();
|
||||
|
||||
G4Penelope08IonisationModel & operator=(const G4Penelope08IonisationModel &right);
|
||||
G4Penelope08IonisationModel(const G4Penelope08IonisationModel&);
|
||||
|
||||
G4PenelopeCrossSection* GetCrossSectionTableForCouple(const G4ParticleDefinition*,
|
||||
const G4Material*,G4double cut);
|
||||
|
||||
void BuildXSTable(const G4Material*,G4double cut,
|
||||
const G4ParticleDefinition*);
|
||||
|
||||
|
||||
void BuildDeltaTable(const G4Material*);
|
||||
|
||||
G4DataVector* ComputeShellCrossSectionsElectron(G4PenelopeOscillator* ,
|
||||
G4double energy,G4double cut,
|
||||
G4double delta);
|
||||
|
||||
G4DataVector* ComputeShellCrossSectionsPositron(G4PenelopeOscillator* ,
|
||||
G4double energy,G4double cut,
|
||||
G4double delta);
|
||||
|
||||
void SampleFinalStateElectron(const G4Material*,G4double cutEnergy,G4double kineticEnergy);
|
||||
void SampleFinalStatePositron(const G4Material*,G4double cutEnergy,G4double kineticEnergy);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
|
||||
G4bool isInitialised;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
|
||||
G4double kineticEnergy1;
|
||||
G4double cosThetaPrimary;
|
||||
G4double energySecondary;
|
||||
G4double cosThetaSecondary;
|
||||
G4int targetOscillator;
|
||||
|
||||
G4PenelopeOscillatorManager* oscManager;
|
||||
|
||||
//G4PenelopeCrossSection takes care of the logs
|
||||
std::map< std::pair<const G4Material*,G4double>, G4PenelopeCrossSection*> *XSTableElectron;
|
||||
std::map< std::pair<const G4Material*,G4double>, G4PenelopeCrossSection*> *XSTablePositron;
|
||||
|
||||
//delta vs. log(energy)
|
||||
std::map<const G4Material*,G4PhysicsFreeVector*> *theDeltaTable;
|
||||
G4PhysicsLogVector* energyGrid;
|
||||
|
||||
size_t nBins;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Penelope08PhotoElectricModel.hh,v 1.1 2010/03/17 14:19:04 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 08 Jan 2010 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Photo-electric effect
|
||||
// with Penelope Model, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08PHOTOELECTRICMODEL_HH
|
||||
#define G4PENELOPE08PHOTOELECTRICMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
#include "G4AtomicDeexcitation.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
|
||||
class G4Penelope08PhotoElectricModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4Penelope08PhotoElectricModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenPhotoElec");
|
||||
|
||||
virtual ~G4Penelope08PhotoElectricModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
void ActivateAuger(G4bool);
|
||||
|
||||
//testing purposes
|
||||
size_t GetNumberOfShellXS(G4int);
|
||||
G4double GetShellCrossSection(G4int Z,size_t shellID,G4double energy);
|
||||
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
G4Penelope08PhotoElectricModel & operator=(const G4Penelope08PhotoElectricModel &right);
|
||||
G4Penelope08PhotoElectricModel(const G4Penelope08PhotoElectricModel&);
|
||||
|
||||
G4double SampleElectronDirection(G4double energy);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
G4AtomicDeexcitation deexcitationManager;
|
||||
|
||||
void ReadDataFile(G4int Z);
|
||||
|
||||
//For each Z, the PhysicsTable contains nShell+1 physics vectors
|
||||
//with log(E) vs. log(XS)
|
||||
//Element [0] of the table is the total XS, element [iS] is the
|
||||
//partial cross section for shell iS-1
|
||||
std::map<const G4int,G4PhysicsTable*> *logAtomicShellXS;
|
||||
|
||||
size_t SelectRandomShell(G4int Z,G4double energy);
|
||||
G4String WriteTargetShell(size_t shellID);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4Penelope08RayleighModel.hh,v 1.1 2010/03/17 14:19:04 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 03 Dec 2009 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Rayleigh Scattering
|
||||
// with the model from Penelope, version 2008
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPE08RAYLEIGHMODEL_HH
|
||||
#define G4PENELOPE08RAYLEIGHMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmModel.hh"
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4ParticleChangeForGamma.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4DynamicParticle;
|
||||
class G4MaterialCutsCouple;
|
||||
class G4Material;
|
||||
class G4PhysicsFreeVector;
|
||||
class G4PenelopeSamplingData;
|
||||
|
||||
class G4Penelope08RayleighModel : public G4VEmModel
|
||||
{
|
||||
|
||||
public:
|
||||
G4Penelope08RayleighModel(const G4ParticleDefinition* p=0,
|
||||
const G4String& processName ="PenRayleigh");
|
||||
|
||||
virtual ~G4Penelope08RayleighModel();
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double kinEnergy,
|
||||
G4double Z,
|
||||
G4double A=0,
|
||||
G4double cut=0,
|
||||
G4double emax=DBL_MAX);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
G4double tmin,
|
||||
G4double maxEnergy);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
//Testing purposes
|
||||
void DumpFormFactorTable(const G4Material*);
|
||||
|
||||
protected:
|
||||
G4ParticleChangeForGamma* fParticleChange;
|
||||
|
||||
private:
|
||||
G4Penelope08RayleighModel& operator=(const G4Penelope08RayleighModel &right);
|
||||
G4Penelope08RayleighModel(const G4Penelope08RayleighModel&);
|
||||
|
||||
//Intrinsic energy limits of the model: cannot be extended by
|
||||
//the parent process
|
||||
G4double fIntrinsicLowEnergyLimit;
|
||||
G4double fIntrinsicHighEnergyLimit;
|
||||
|
||||
G4int verboseLevel;
|
||||
G4bool isInitialised;
|
||||
|
||||
//Internal tables and manager methods
|
||||
std::map<const G4int,G4PhysicsFreeVector*> *logAtomicCrossSection;
|
||||
std::map<const G4int,G4PhysicsFreeVector*> *atomicFormFactor;
|
||||
|
||||
|
||||
G4DataVector logQSquareGrid; //log(Q^2) grid for interpolation
|
||||
std::map<const G4Material*,G4PhysicsFreeVector*> *logFormFactorTable; //log(Q^2) vs. log(F^2)
|
||||
|
||||
G4DataVector logEnergyGridPMax; //energy grid for PMac (and originally for the x-section)
|
||||
std::map<const G4Material*,G4PhysicsFreeVector*> *pMaxTable; //E vs. Pmax
|
||||
|
||||
std::map<const G4Material*,G4PenelopeSamplingData*> *samplingTable;
|
||||
|
||||
//Helper methods
|
||||
void ReadDataFile(G4int);
|
||||
void ClearTables();
|
||||
void BuildFormFactorTable(const G4Material*);
|
||||
void GetPMaxTable(const G4Material*);
|
||||
|
||||
G4double GetFSquared(const G4Material*,const G4double);
|
||||
void InitializeSamplingAlgorithm(const G4Material*);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeCrossSection.hh,v 1.1 2010/07/26 09:56:42 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 18 Mar 2010 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// This class is a container for cross sections and transport momenta
|
||||
// calculated by Penelope models (ionisation, bremsstrahlung). It stores
|
||||
// PhysicsTables/PhysicsVectors of
|
||||
// a) the "hard quantities" (above the threshold), 0-th order (cross section)
|
||||
// 1-st order (= stopping XS), 2-nd order (= straggling XS)
|
||||
// b) the "soft quantities" (below threshold), 0-th order (cross section)
|
||||
// 1-st order (= stopping XS), 2-nd order (= straggling XS)
|
||||
// c) total hard cross sections for individual oscillators
|
||||
// vs. energy.
|
||||
//
|
||||
// The interface *always* uses energy and cross sections, while internally
|
||||
// log(energy) and log(XS) are used.
|
||||
//
|
||||
// One instance per each cut-material couple should be created by the
|
||||
// calling class.
|
||||
//
|
||||
// Public method to retrieve hard cross section, soft stopping power,
|
||||
// total cross section and hard shell cross sections.
|
||||
//
|
||||
// The method NormalizeShellCrossSections() normalizes the
|
||||
// shell cross sections by retrieving the total hard cross section.
|
||||
// Used for sampling.
|
||||
//
|
||||
// Notice: all quantities stored here are *per molecule*
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPECROSSSECTION_HH
|
||||
#define G4PENELOPECROSSSECTION_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4PhysicsTable;
|
||||
class G4DataVector;
|
||||
|
||||
class G4PenelopeCrossSection
|
||||
{
|
||||
|
||||
public:
|
||||
//constructor: one has to give the number of points in each PhysicsVector
|
||||
//(= dimension of the energy grid) and the number of shells (0 is the
|
||||
//default).
|
||||
G4PenelopeCrossSection(size_t nOfEnergyPoints,size_t nOfShells=0);
|
||||
//
|
||||
~G4PenelopeCrossSection();
|
||||
|
||||
G4double GetTotalCrossSection(G4double energy);
|
||||
G4double GetHardCrossSection(G4double energy);
|
||||
G4double GetSoftStoppingPower(G4double energy);
|
||||
G4double GetShellCrossSection(size_t shellID,G4double energy);
|
||||
|
||||
size_t GetNumberOfShells(){return numberOfShells;};
|
||||
|
||||
void AddCrossSectionPoint(size_t binNumber,
|
||||
G4double energy,G4double XH0, G4double XH1,
|
||||
G4double XH2,
|
||||
G4double XS0, G4double XS1, G4double XS2);
|
||||
|
||||
void AddShellCrossSectionPoint(size_t binNumber,
|
||||
size_t shellID,G4double energy,G4double xs);
|
||||
|
||||
void NormalizeShellCrossSections();
|
||||
|
||||
private:
|
||||
G4PenelopeCrossSection & operator=(const G4PenelopeCrossSection &right);
|
||||
G4PenelopeCrossSection(const G4PenelopeCrossSection&);
|
||||
|
||||
G4bool isNormalized;
|
||||
|
||||
size_t numberOfEnergyPoints;
|
||||
size_t numberOfShells;
|
||||
|
||||
//all tables are log. XS vs. log E
|
||||
|
||||
//XS0, XS1, XS2 in Penelope nomenclature
|
||||
G4PhysicsTable* softCrossSections;
|
||||
|
||||
//XH0, XH1, XH2 in Penelope nomenclature
|
||||
G4PhysicsTable* hardCrossSections;
|
||||
|
||||
//XS for individual shells
|
||||
G4PhysicsTable* shellCrossSections;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeIonisationModel.hh,v 1.3 2009/10/21 14:56:47 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
// $Id: G4PenelopeIonisationModel.hh,v 1.5 2010/04/15 10:02:10 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -35,6 +35,10 @@
|
||||
// 21 Oct 2009 L. Pandola Remove un-necessary methods and variables to handle
|
||||
// AtomicDeexcitationFlag - now demanded to G4VEmModel
|
||||
// Add ActivateAuger() method
|
||||
// 29 Mar 2010 L. Pandola Added a dummy ComputeCrossSectioPerAtom() method issueing a
|
||||
// warning if users try to access atomic cross sections via
|
||||
// G4EmCalculator
|
||||
// 15 Apr 2010 L. Pandola Implemented model's own version of MinEnergyCut()
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -72,6 +76,16 @@ public:
|
||||
|
||||
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
|
||||
|
||||
//*This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//*a warning if one tries to get Cross Sections per Atom via the
|
||||
//*G4EmCalculator.
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double);
|
||||
|
||||
virtual G4double CrossSectionPerVolume(const G4Material* material,
|
||||
const G4ParticleDefinition* theParticle,
|
||||
G4double kineticEnergy,
|
||||
@@ -89,6 +103,10 @@ public:
|
||||
G4double kineticEnergy,
|
||||
G4double cutEnergy);
|
||||
|
||||
// Min cut in kinetic energy allowed by the model
|
||||
virtual G4double MinEnergyCut(const G4ParticleDefinition*,
|
||||
const G4MaterialCutsCouple*);
|
||||
|
||||
void SetVerbosityLevel(G4int lev){verboseLevel = lev;};
|
||||
G4int GetVerbosityLevel(){return verboseLevel;};
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 18 Dec 2008 L. Pandola First implementation
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Class designed to contain data of atomic oscillators that are used by
|
||||
// several Penelope models. Objects of G4PenelopeOscillators are managed
|
||||
// by a dedicated G4PenelopeOscillatorManager.
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPEOSCILLATOR_HH
|
||||
#define G4PENELOPEOSCILLATOR_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4PenelopeOscillator
|
||||
{
|
||||
|
||||
public:
|
||||
G4PenelopeOscillator();
|
||||
G4PenelopeOscillator(const G4PenelopeOscillator&);
|
||||
|
||||
~G4PenelopeOscillator(){;};
|
||||
|
||||
//I need to overload the following operators: > < == =
|
||||
const G4PenelopeOscillator& operator=(const G4PenelopeOscillator&);
|
||||
int operator==(const G4PenelopeOscillator&) const;
|
||||
int operator>(const G4PenelopeOscillator&) const;
|
||||
int operator<(const G4PenelopeOscillator&) const;
|
||||
|
||||
//Setters and getters
|
||||
G4double GetHartreeFactor() {return hartreeFactor;};
|
||||
void SetHartreeFactor(G4double hf) {hartreeFactor = hf;};
|
||||
//
|
||||
G4double GetIonisationEnergy() {return ionisationEnergy;};
|
||||
void SetIonisationEnergy(G4double ie) {ionisationEnergy = ie;};
|
||||
//
|
||||
G4double GetResonanceEnergy() const {return resonanceEnergy;};
|
||||
void SetResonanceEnergy(G4double re) {resonanceEnergy = re;};
|
||||
//
|
||||
G4double GetOscillatorStrength() {return oscillatorStrength;};
|
||||
void SetOscillatorStrength(G4double ostr) {oscillatorStrength=ostr;};
|
||||
//
|
||||
G4int GetShellFlag() {return shellFlag;};
|
||||
void SetShellFlag(G4int theflag) {shellFlag=theflag;};
|
||||
//
|
||||
G4double GetParentZ() {return parentZ;};
|
||||
void SetParentZ(G4double parZ) {parentZ = parZ;};
|
||||
//
|
||||
G4int GetParentShellID() {return parentShellID;};
|
||||
void SetParentShellID(G4int psID) {parentShellID = psID;};
|
||||
//
|
||||
G4double GetCutoffRecoilResonantEnergy(){return cutoffRecoilResonantEnergy;};
|
||||
void SetCutoffRecoilResonantEnergy(G4double ene){cutoffRecoilResonantEnergy = ene;};
|
||||
|
||||
private:
|
||||
G4double hartreeFactor;
|
||||
G4double ionisationEnergy;
|
||||
G4double resonanceEnergy;
|
||||
G4double oscillatorStrength;
|
||||
G4int shellFlag;
|
||||
G4double parentZ;
|
||||
G4int parentShellID; //necessary for interface to AtomicDeexcitationManager
|
||||
G4double cutoffRecoilResonantEnergy;
|
||||
};
|
||||
|
||||
struct G4PenelopeOscillatorResEnergyComparator
|
||||
{
|
||||
public:
|
||||
int operator()(const G4PenelopeOscillator& left,
|
||||
const G4PenelopeOscillator& right)
|
||||
{return ((left.GetResonanceEnergy() < right.GetResonanceEnergy()) ? 1 : 0);};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// Authors: Luciano Pandola (luciano.pandola at lngs.infn.it)
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
//
|
||||
// 03 Dec 2009 First implementation, Luciano Pandola
|
||||
// 16 Feb 2010 Added methods to calculate and store also A and Z
|
||||
// for molecules. Luciano Pandola
|
||||
// 16 Mar 2010 Added methods to calculate and store mean exc energy
|
||||
// and plasma energy (used for Ionisation). L Pandola
|
||||
// 18 Mar 2010 Added method to retrieve number of atoms per
|
||||
// molecule. L. Pandola
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
//! Class description:
|
||||
//! Fills and manages G4PenelopeOscillator objects and takes care of
|
||||
//! building and managing the G4PenelopeOscillatorTables for the materials
|
||||
//! in the geometry. G4PenelopeOscillatorManager is a singleton.
|
||||
//! This is compliant with Penelope2008, so different tables (with different
|
||||
//! grouping factors) are created for Ionisation and Compton processes.
|
||||
//
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PenelopeOscillatorManager_h
|
||||
#define G4PenelopeOscillatorManager_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4PenelopeOscillator.hh"
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
class G4Material;
|
||||
|
||||
typedef std::vector<G4PenelopeOscillator*> G4PenelopeOscillatorTable ;
|
||||
|
||||
// This class is a singleton
|
||||
class G4PenelopeOscillatorManager {
|
||||
|
||||
public:
|
||||
|
||||
// The only way to get an instance of this class is to call the
|
||||
// function GetOscillatorManager()
|
||||
static G4PenelopeOscillatorManager* GetOscillatorManager();
|
||||
|
||||
//Clear() is invoked by Initialise() of the processes, if required
|
||||
void Clear();
|
||||
void Dump(const G4Material*);
|
||||
|
||||
//For ionisation
|
||||
G4PenelopeOscillatorTable* GetOscillatorTableIonisation(const G4Material*);
|
||||
G4PenelopeOscillator* GetOscillatorIonisation(const G4Material*,G4int);
|
||||
|
||||
//For Compton
|
||||
G4PenelopeOscillatorTable* GetOscillatorTableCompton(const G4Material*);
|
||||
G4PenelopeOscillator* GetOscillatorCompton(const G4Material*,G4int);
|
||||
|
||||
void SetVerbosityLevel(G4int vl){verbosityLevel = vl;};
|
||||
G4int GetVerbosityLevel(){return verbosityLevel;};
|
||||
|
||||
//These are cumulative for the molecule
|
||||
G4double GetTotalZ(const G4Material*);
|
||||
G4double GetTotalA(const G4Material*);
|
||||
G4double GetMeanExcitationEnergy(const G4Material*);
|
||||
G4double GetPlasmaEnergySquared(const G4Material*);
|
||||
G4double GetAtomsPerMolecule(const G4Material*);
|
||||
|
||||
protected:
|
||||
G4PenelopeOscillatorManager();
|
||||
~G4PenelopeOscillatorManager();
|
||||
|
||||
private:
|
||||
// Hide copy constructor and assignment operator
|
||||
G4PenelopeOscillatorManager& operator=(const
|
||||
G4PenelopeOscillatorManager& right);
|
||||
G4PenelopeOscillatorManager(const G4PenelopeOscillatorManager&);
|
||||
|
||||
static G4PenelopeOscillatorManager* instance;
|
||||
|
||||
//In Penelope2008, the Ionisation and Compton oscillator tables are
|
||||
//slightly different!
|
||||
std::map<const G4Material*,G4PenelopeOscillatorTable*>
|
||||
*oscillatorStoreIonisation;
|
||||
|
||||
std::map<const G4Material*,G4PenelopeOscillatorTable*>
|
||||
*oscillatorStoreCompton;
|
||||
|
||||
std::map<const G4Material*,G4double> *atomicNumber;
|
||||
std::map<const G4Material*,G4double> *atomicMass;
|
||||
|
||||
std::map<const G4Material*,G4double> *excitationEnergy;
|
||||
std::map<const G4Material*,G4double> *plasmaSquared;
|
||||
|
||||
std::map<const G4Material*,G4double> *atomsPerMolecule;
|
||||
|
||||
//create both tables simultaneously
|
||||
void CheckForTablesCreated();
|
||||
|
||||
void ReadElementData();
|
||||
G4double elementData[5][2000];
|
||||
G4bool fReadElementData;
|
||||
|
||||
void BuildOscillatorTable(const G4Material*);
|
||||
|
||||
G4int verbosityLevel;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeRayleighModel.hh,v 1.1 2008/10/28 08:50:21 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4PenelopeRayleighModel.hh,v 1.3 2010/04/15 10:02:25 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
@@ -32,12 +32,15 @@
|
||||
// -----------
|
||||
// 13 Oct 2008 L. Pandola 1st implementation. Migration from EM process
|
||||
// to EM model
|
||||
// 18 Dec 2009 L. Pandola Added a dummy ComputeCrossSectioPerAtom() method issueing a
|
||||
// warning if users try to access atomic cross sections via
|
||||
// G4EmCalculator
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Rayleigh Scattering
|
||||
// with Penelope Model
|
||||
// with Penelope v2001 Model
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPERAYLEIGHMODEL_HH
|
||||
@@ -70,6 +73,16 @@ public:
|
||||
G4double cutEnergy = 0.0,
|
||||
G4double maxEnergy = DBL_MAX);
|
||||
|
||||
//*This is a dummy method. Never inkoved by the tracking, it just issues
|
||||
//*a warning if one tries to get Cross Sections per Atom via the
|
||||
//*G4EmCalculator.
|
||||
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double,
|
||||
G4double);
|
||||
|
||||
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
|
||||
const G4MaterialCutsCouple*,
|
||||
const G4DynamicParticle*,
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PenelopeSamplingData.hh,v 1.1 2010/03/17 14:19:04 pandola Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Luciano Pandola
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 09 Dec 2009 L. Pandola 1st implementation.
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// This is a container of data that are used for sampling algorithm
|
||||
// of Penelope08 Rayleigh scattering
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PENELOPESAMPLINGDATA_HH
|
||||
#define G4PENELOPESAMPLINGDATA_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4DataVector.hh"
|
||||
//
|
||||
//This is a container of data that are used for sampling algoritm
|
||||
//
|
||||
class G4PenelopeSamplingData
|
||||
{
|
||||
|
||||
public:
|
||||
G4PenelopeSamplingData(G4int npoints=150);
|
||||
~G4PenelopeSamplingData();
|
||||
|
||||
void AddPoint(G4double x0,G4double pac0,G4double a0,G4double b0,size_t ITTL0,
|
||||
size_t ITTU0);
|
||||
size_t GetNumberOfStoredPoints();
|
||||
void Clear();
|
||||
void DumpTable();
|
||||
|
||||
G4double GetX(size_t index);
|
||||
G4double GetPAC(size_t index);
|
||||
G4double GetA(size_t index);
|
||||
G4double GetB(size_t index);
|
||||
|
||||
G4double SampleValue(G4double rndm);
|
||||
|
||||
private:
|
||||
G4PenelopeSamplingData & operator=(const G4PenelopeSamplingData &right);
|
||||
G4PenelopeSamplingData(const G4PenelopeSamplingData&);
|
||||
|
||||
//G4double xlow;
|
||||
//G4double xhigh;
|
||||
|
||||
G4DataVector* x; //grid points, in increasing order
|
||||
G4DataVector* pac; //value of the cumulative pdf at x_i
|
||||
G4DataVector* a; // rational inverse cumulative inverse distribution parameters
|
||||
G4DataVector* b;
|
||||
|
||||
std::vector<size_t> *ITTL; //largest j for which pac(j) < (i-1)/(np-1)
|
||||
std::vector<size_t> *ITTU; //smallest k for which pac(k) > i/(np-1)
|
||||
|
||||
G4int np; //number of grid points
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4AtomicTransitionManager.hh,v 1.2 ????
|
||||
// GEANT4 tag $Name: geant4-09-04 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Geant4 Header G4UAtomicDeexcitation
|
||||
//
|
||||
// Authors: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
|
||||
//
|
||||
// Created 22 April 2010 from old G4AtomicDeexcitation class
|
||||
//
|
||||
// Modified:
|
||||
// ---------
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// Class description:
|
||||
// Implementation of atomic deexcitation
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4UAtomicDeexcitation_h
|
||||
#define G4UAtomicDeexcitation_h 1
|
||||
|
||||
#include "G4VAtomDeexcitation.hh"
|
||||
#include "G4AtomicShell.hh"
|
||||
#include "globals.hh"
|
||||
#include <vector>
|
||||
#include "G4DynamicParticle.hh"
|
||||
//#include "G4VhShellCrossSection.hh"
|
||||
#include "G4teoCrossSection.hh"
|
||||
#include "G4empCrossSection.hh"
|
||||
class G4AtomicTransitionManager;
|
||||
class G4VhShellCrossSection;
|
||||
//class G4teoCrossSection;
|
||||
//class G4empCrossSection;
|
||||
class G4UAtomicDeexcitation : public G4VAtomDeexcitation
|
||||
{
|
||||
public:
|
||||
|
||||
G4UAtomicDeexcitation();
|
||||
virtual ~G4UAtomicDeexcitation();
|
||||
|
||||
//=================================================================
|
||||
// methods that are requested to be implemented by the interface
|
||||
//=================================================================
|
||||
|
||||
// initialisation methods
|
||||
virtual void InitialiseForNewRun();
|
||||
virtual void InitialiseForExtraAtom(G4int Z);
|
||||
|
||||
|
||||
// Set threshold energy for fluorescence
|
||||
void SetCutForSecondaryPhotons(G4double cut);
|
||||
|
||||
// Set threshold energy for Auger electron production
|
||||
void SetCutForAugerElectrons(G4double cut);
|
||||
|
||||
|
||||
// Get atomic shell by shell index, used by discrete processes
|
||||
// (for example, photoelectric), when shell vacancy sampled by the model
|
||||
virtual
|
||||
const G4AtomicShell* GetAtomicShell(G4int Z,
|
||||
G4AtomicShellEnumerator shell);
|
||||
|
||||
// generation of deexcitation for given atom, shell vacancy and cuts
|
||||
virtual void GenerateParticles(std::vector<G4DynamicParticle*>* secVect,
|
||||
const G4AtomicShell*,
|
||||
G4int Z,
|
||||
G4double gammaCut,
|
||||
G4double eCut);
|
||||
|
||||
// access or compute PIXE cross section
|
||||
virtual
|
||||
G4double GetShellIonisationCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4int Z,
|
||||
G4AtomicShellEnumerator shell,
|
||||
G4double kinE);
|
||||
|
||||
// access or compute PIXE cross section
|
||||
virtual
|
||||
G4double ComputeShellIonisationCrossSectionPerAtom(const G4ParticleDefinition*,
|
||||
G4int Z,
|
||||
G4AtomicShellEnumerator shell,
|
||||
G4double kinE);
|
||||
|
||||
//=================================================================
|
||||
// concrete methods of the deextation class
|
||||
//=================================================================
|
||||
|
||||
private:
|
||||
|
||||
// Decides wether a radiative transition is possible and, if it is,
|
||||
// returns the identity of the starting shell for the transition
|
||||
G4int SelectTypeOfTransition(G4int Z, G4int shellId);
|
||||
|
||||
// Generates a particle from a radiative transition and returns it
|
||||
G4DynamicParticle* GenerateFluorescence(G4int Z, G4int shellId,
|
||||
G4int provShellId);
|
||||
|
||||
// Generates a particle from a non-radiative transition and returns it
|
||||
G4DynamicParticle* GenerateAuger(G4int Z, G4int shellId);
|
||||
|
||||
// copy constructor and hide assignment operator
|
||||
G4UAtomicDeexcitation(G4UAtomicDeexcitation &);
|
||||
G4UAtomicDeexcitation & operator=(const G4UAtomicDeexcitation &right);
|
||||
|
||||
const G4AtomicTransitionManager* transitionManager;
|
||||
|
||||
// Data member which stores the shells to be filled by
|
||||
// the radiative transition
|
||||
G4int newShellId;
|
||||
|
||||
G4double minGammaEnergy;
|
||||
G4double minElectronEnergy;
|
||||
// G4bool fAuger;
|
||||
|
||||
// Data member wich stores the id of the shell where is the vacancy
|
||||
// left from the Auger electron
|
||||
G4int augerVacancyId;
|
||||
|
||||
// Data member for the calculation of the proton and alpha ionisation XS
|
||||
|
||||
G4VhShellCrossSection* PIXEshellCS;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ class G4VIonDEDXScalingAlgorithm {
|
||||
|
||||
public:
|
||||
G4VIonDEDXScalingAlgorithm();
|
||||
~G4VIonDEDXScalingAlgorithm();
|
||||
virtual ~G4VIonDEDXScalingAlgorithm();
|
||||
|
||||
// Function for scaling the kinetic energy (no scaling by default).
|
||||
// Returns scaling factor for a given ion.
|
||||
|
||||
Regular → Executable
+25
-23
@@ -24,43 +24,45 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Author: Alfonso Mantero
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 01 Sep 2009 Alf Created
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4DummyProbability_hh
|
||||
#define G4DummyProbability_hh
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p and alpha ionisation, L shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4VECPSSRKMODEL_HH
|
||||
#define G4VECPSSRKMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VEmissionProbability.hh"
|
||||
#include "G4Fragment.hh"
|
||||
#include "G4VLevelDensityParameter.hh"
|
||||
|
||||
class G4DummyProbability : public G4VEmissionProbability
|
||||
class G4VecpssrKModel
|
||||
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4DummyProbability() {};
|
||||
G4VecpssrKModel();
|
||||
|
||||
~G4DummyProbability();
|
||||
|
||||
G4double EmissionProbability(const G4Fragment& frag, const G4double excite);
|
||||
G4double EmissionProbDensity(const G4Fragment& frag, const G4double ePhoton);
|
||||
virtual ~G4VecpssrKModel();
|
||||
|
||||
virtual G4double CalculateCrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) = 0;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// G4DummyProbability() {};
|
||||
|
||||
G4DummyProbability(const G4DummyProbability& right);
|
||||
|
||||
const G4DummyProbability& operator=(const G4DummyProbability& right);
|
||||
G4bool operator==(const G4DummyProbability& right) const;
|
||||
G4bool operator!=(const G4DummyProbability& right) const;
|
||||
G4VecpssrKModel(const G4VecpssrKModel&);
|
||||
G4VecpssrKModel & operator = (const G4VecpssrKModel &right);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VecpssrLiModel.hh,v 1.4 2010/06/25 09:41:13 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 23 Apr 2008 H. Ben Abdelouahed 1st implementation
|
||||
// 28 Apr 2008 MGP Major revision according to a design iteration
|
||||
// 29 Apr 2009 ALF Updated Desing for Integration
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
// Class description:
|
||||
// Low Energy Electromagnetic Physics, Cross section, p and alpha ionisation, L shell
|
||||
// Further documentation available from http://www.ge.infn.it/geant4/lowE
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4VECPSSRLIMODEL_HH
|
||||
#define G4VECPSSRLIMODEL_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
class G4VecpssrLiModel
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
G4VecpssrLiModel();
|
||||
|
||||
virtual ~G4VecpssrLiModel();
|
||||
|
||||
virtual G4double CalculateL1CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) = 0;//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
virtual G4double CalculateL2CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) = 0;//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
virtual G4double CalculateL3CrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) = 0;//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
G4VecpssrLiModel(const G4VecpssrLiModel&);
|
||||
G4VecpssrLiModel & operator = (const G4VecpssrLiModel &right);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Regular → Executable
+36
-23
@@ -23,16 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ecpssrCrossSection.hh,v 1.3 2008/06/03 07:29:15 gcosmo Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4empCrossSection.hh,v 1.1 2009/06/17 16:39:55 mantero Exp $
|
||||
// GEANT4 tag $Name: geant4-09-04-beta-01 $
|
||||
//
|
||||
// Author: Haifa Ben Abdelouahed
|
||||
//
|
||||
//
|
||||
// History:
|
||||
// -----------
|
||||
// 21 Apr 2008 H. Ben Abdelouahed 1st implementation
|
||||
// 21 Apr 2008 MGP Major revision according to a design iteration
|
||||
// 21 Apr 2009 ALF 1st implementation
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -43,35 +41,50 @@
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef G4ECPSSRCROSSSECTION_HH
|
||||
#define G4ECPSSRCROSSSECTION_HH 1
|
||||
#ifndef G4EMPCROSSSECTION_HH
|
||||
#define G4EMPCROSSSECTION_HH 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VhShellCrossSection.hh"
|
||||
#include "G4PaulKCrossSection.hh"
|
||||
#include "G4OrlicLiCrossSection.hh"
|
||||
|
||||
|
||||
class G4ecpssrCrossSection
|
||||
|
||||
class G4empCrossSection : public G4VhShellCrossSection
|
||||
{
|
||||
public:
|
||||
|
||||
G4ecpssrCrossSection();
|
||||
G4empCrossSection();
|
||||
|
||||
virtual ~G4ecpssrCrossSection();
|
||||
~G4empCrossSection();
|
||||
|
||||
G4double CalculateCrossSection(G4int zTarget,G4int zIncident, G4double energyIncident);//according to W.Brandt and G.Lapicki, Phys.Rev.A23(1981)
|
||||
|
||||
G4double CalculateVelocity(G4int zTarget,G4int zIncident, G4double energyIncident);
|
||||
|
||||
G4double ExpIntFunction(G4int n,G4double x);//Exponential Integral Function
|
||||
|
||||
|
||||
std::vector<G4double> GetCrossSection(G4int Z,
|
||||
G4double incidentEnergy,
|
||||
G4double mass,
|
||||
G4double deltaEnergy,
|
||||
G4bool testFlag = false) const;
|
||||
|
||||
std::vector<G4double> Probabilities(G4int Z,
|
||||
G4double incidentEnergy,
|
||||
G4double mass,
|
||||
G4double deltaEnergy) const;
|
||||
|
||||
|
||||
void SetTotalCS(G4double);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
G4ecpssrCrossSection(const G4ecpssrCrossSection&);
|
||||
G4ecpssrCrossSection & operator = (const G4ecpssrCrossSection &right);
|
||||
|
||||
|
||||
G4double totalCS;
|
||||
|
||||
G4PaulKCrossSection* paulShellK;
|
||||
G4OrlicLiCrossSection* orlicShellLi;
|
||||
|
||||
|
||||
G4empCrossSection(const G4empCrossSection&);
|
||||
G4empCrossSection & operator = (const G4empCrossSection &right);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user