Import Geant4 10.1.0 source tree
This commit is contained in:
@@ -84,11 +84,11 @@ This demonstrates a customised "flat" physics implementation with the addition
|
||||
of biasing. Complementary approach to the modular physics lists of B01 and B02
|
||||
|
||||
|
||||
\section biasing_s2 Generic biasing examples GB01, GB02
|
||||
\section biasing_s2 Generic biasing examples GB01, GB02, GB03, GB04
|
||||
|
||||
These examples illustrate the usage of a biasing scheme implemented since
|
||||
version Geant4 10.0.
|
||||
The scheme is meant to be extensible, not limited to these two examples.
|
||||
The scheme is meant to be extensible, not limited to these four examples.
|
||||
|
||||
\link ExampleGB01 Example GB01 \endlink
|
||||
|
||||
@@ -98,6 +98,13 @@ This example illustrates how to bias process cross-sections in this scheme.
|
||||
|
||||
Illustrates a force collision scheme similar to the MCNP one.
|
||||
|
||||
\link ExampleGB03 Example GB03 \endlink
|
||||
|
||||
Illustrates geometry based biasing.
|
||||
|
||||
\link ExampleGB04 Example GB04 \endlink
|
||||
|
||||
Illustrates a bremsstrahlung splitting.
|
||||
|
||||
\section biasing_s3 Reverse MonteCarlo Technique example
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -17,6 +17,10 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
Nov 20th, 2014 M. Asai - B03-V10-00-00
|
||||
- B03PhysicsList.cc : replace obsolete G4ParallelWorldScoringProcess
|
||||
with G4ParallelWorldProcess.
|
||||
|
||||
Nov 24th, 2013 A. Howard - B03-V09-06-04
|
||||
- Set default number of MT cores back to two
|
||||
|
||||
|
||||
@@ -1,319 +1,582 @@
|
||||
**********************************************
|
||||
Geant4 version $Name: not supported by cvs2svn $
|
||||
(31-Jul-2002)
|
||||
Copyright : Geant4 Collaboration
|
||||
**********************************************
|
||||
|
||||
phot: Total cross sections from Sandia parametrisation.
|
||||
B02PhysicsList::SetCuts:CutLength : 1 (mm)
|
||||
############################################
|
||||
!!! WARNING - FPE detection is activated !!!
|
||||
############################################
|
||||
|
||||
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
|
||||
e+e- energies according Bethe-Heitler
|
||||
PhysicsTables from 1.022 MeV to 100 GeV in 100 bins.
|
||||
*************************************************************
|
||||
Geant4 version Name: geant4-10-01-ref-00 (5-December-2014)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
*************************************************************
|
||||
|
||||
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
|
||||
Scattered gamma energy according Klein-Nishina.
|
||||
PhysicsTables from 1 keV to 100 GeV in 80 bins.
|
||||
constructing parallel world
|
||||
B03ImportanceDetectorConstruction:: ghostWorldName = ParallelBiasingWorld
|
||||
G4PhysicsListHelper::AddTransportation()--- G4CoupledTransportation is used
|
||||
Preparing Importance Sampling with GhostWorld ParallelBiasingWorld
|
||||
G4IStore:: Creating new Parallel IStore ParallelBiasingWorld
|
||||
G4IStore:: ParallelWorldName = ParallelBiasingWorld
|
||||
G4IStore:: fParallelWorldVolume = ParallelBiasingWorld
|
||||
G4GeometrySampler:: preparing importance sampling WorldName is
|
||||
G4ImportanceConfigurator:: entering importance configure, paraflag 1
|
||||
|
||||
msc: Tables of transport mean free paths.
|
||||
New model of MSC , computes the lateral
|
||||
displacement of the particle , too.
|
||||
PhysicsTables from 100 eV to 100 TeV in 100 bins.
|
||||
|
||||
eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV.
|
||||
delta ray energy sampled from differential Xsection.
|
||||
PhysicsTables from 1 keV to 100 TeV in 100 bins.
|
||||
|
||||
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
log scale extrapolation above 100 GeV
|
||||
Gamma energy sampled from a parametrised formula.
|
||||
PhysicsTables from 1 keV to 100 TeV in 100 bins.
|
||||
G4ImportanceProcess:: Creating
|
||||
G4ImportanceProcess:: importance process paraflag is: 1
|
||||
|
||||
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
|
||||
gamma energies sampled according Heitler
|
||||
PhysicsTables from 10 keV to 10 TeV in 100 bins.
|
||||
|
||||
msc: Tables of transport mean free paths.
|
||||
New model of MSC , computes the lateral
|
||||
displacement of the particle , too.
|
||||
PhysicsTables from 100 eV to 100 TeV in 100 bins.
|
||||
|
||||
hIoni: Knock-on electron cross sections .
|
||||
Good description above the mean excitation energy.
|
||||
delta ray energy sampled from differential Xsection.
|
||||
PhysicsTables from 1 keV to 100 TeV in 100 bins.
|
||||
|
||||
msc: Tables of transport mean free paths.
|
||||
New model of MSC , computes the lateral
|
||||
displacement of the particle , too.
|
||||
PhysicsTables from 100 eV to 100 TeV in 100 bins.
|
||||
|
||||
MuIoni: Knock-on electron cross sections .
|
||||
Good description above the mean excitation energy.
|
||||
delta ray energy sampled from differential Xsection.
|
||||
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
|
||||
|
||||
MuBrems: theoretical cross section
|
||||
Good description up to 1000 PeV.
|
||||
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
|
||||
|
||||
MuPairProd: theoretical cross sections
|
||||
Good description up to 1000 PeV.
|
||||
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
|
||||
+++ G4ProcessPlacer::G4ProcessPlacer: for: neutron
|
||||
=== G4ProcessPlacer::AddProcessAsSecondDoIt ===
|
||||
ProcessName: PScoreProcess
|
||||
The initial Vectors:
|
||||
G4ImportanceProcess:: SetParallelWorld name = ParallelBiasingWorld
|
||||
=== G4ProcessPlacer::AddProcessAsSecondDoIt: for: neutron
|
||||
Modifying Process Order for ProcessName: ImportanceProcess
|
||||
The initial AlongStep Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
inelastic
|
||||
LElastic
|
||||
Transportation
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
CoupledTransportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
LElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
Decay
|
||||
The final Vectors:
|
||||
CoupledTransportation
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
The initial PostStep Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
inelastic
|
||||
LElastic
|
||||
PScoreProcess
|
||||
Transportation
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
CoupledTransportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
PScoreProcess
|
||||
LElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
Decay
|
||||
CoupledTransportation
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
The final AlongStep Vectors:
|
||||
GPIL Vector:
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
ImportanceProcess
|
||||
CoupledTransportation
|
||||
DoIt Vector:
|
||||
CoupledTransportation
|
||||
ImportanceProcess
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
The final PostStep Vectors:
|
||||
GPIL Vector:
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
ImportanceProcess
|
||||
CoupledTransportation
|
||||
DoIt Vector:
|
||||
CoupledTransportation
|
||||
ImportanceProcess
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
================================================
|
||||
=== G4ProcessPlacer::AddProcessAsSecondDoIt ===
|
||||
ProcessName: ParallelTransport
|
||||
The initial Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
inelastic
|
||||
LElastic
|
||||
PScoreProcess
|
||||
Transportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
PScoreProcess
|
||||
LElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
Decay
|
||||
The final Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
inelastic
|
||||
LElastic
|
||||
PScoreProcess
|
||||
ParallelTransport
|
||||
Transportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
ParallelTransport
|
||||
PScoreProcess
|
||||
LElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
Decay
|
||||
================================================
|
||||
output pScorer, scoring detector, neutron
|
||||
Volume name = score_worldCylinder_phys, Replica number = -1
|
||||
HistorysEntering
|
||||
entries : 331
|
||||
Sum(w) : 331
|
||||
Sum(w*x) : 331
|
||||
Sum(w*x*x) : 331
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 331
|
||||
Sum(x^2) : 331
|
||||
EnergyEnteringHistory
|
||||
entries : 331
|
||||
Sum(w) : 331
|
||||
Sum(w*x) : 2868.82
|
||||
Sum(w*x*x) : 26144.9
|
||||
mean=Sum(w*x) / Sum(w) : 8.66714
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 1.96678
|
||||
Sum(x) : 2868.82
|
||||
Sum(x^2) : 26144.9
|
||||
Volume name = scorecell: M1, Replica number = 0
|
||||
HistorysEntering
|
||||
entries : 1794
|
||||
Sum(w) : 1794
|
||||
Sum(w*x) : 1794
|
||||
Sum(w*x*x) : 1794
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 1794
|
||||
Sum(x^2) : 1794
|
||||
EnergyEnteringHistory
|
||||
entries : 1794
|
||||
Sum(w) : 1794
|
||||
Sum(w*x) : 17426.6
|
||||
Sum(w*x*x) : 171284
|
||||
mean=Sum(w*x) / Sum(w) : 9.71383
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 1.05729
|
||||
Sum(x) : 17426.6
|
||||
Sum(x^2) : 171284
|
||||
Collisions
|
||||
entries : 1263
|
||||
Sum(w) : 1263
|
||||
Sum(w*x) : 1263
|
||||
Sum(w*x*x) : 1263
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 1263
|
||||
Sum(x^2) : 1263
|
||||
Volume name = scorecell: D1, Replica number = 0
|
||||
HistorysEntering
|
||||
entries : 858
|
||||
Sum(w) : 858
|
||||
Sum(w*x) : 858
|
||||
Sum(w*x*x) : 858
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 858
|
||||
Sum(x^2) : 858
|
||||
EnergyEnteringHistory
|
||||
entries : 858
|
||||
Sum(w) : 858
|
||||
Sum(w*x) : 8292.88
|
||||
Sum(w*x*x) : 81250.1
|
||||
mean=Sum(w*x) / Sum(w) : 9.66536
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 1.13047
|
||||
Sum(x) : 8292.88
|
||||
Sum(x^2) : 81250.1
|
||||
Collisions
|
||||
entries : 512
|
||||
Sum(w) : 512
|
||||
Sum(w*x) : 512
|
||||
Sum(w*x*x) : 512
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 512
|
||||
Sum(x^2) : 512
|
||||
Volume name = scorecell: M2, Replica number = 0
|
||||
HistorysEntering
|
||||
entries : 845
|
||||
Sum(w) : 845
|
||||
Sum(w*x) : 845
|
||||
Sum(w*x*x) : 845
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 845
|
||||
Sum(x^2) : 845
|
||||
EnergyEnteringHistory
|
||||
entries : 845
|
||||
Sum(w) : 845
|
||||
Sum(w*x) : 7918.1
|
||||
Sum(w*x*x) : 76692.5
|
||||
mean=Sum(w*x) / Sum(w) : 9.37053
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 1.71858
|
||||
Sum(x) : 7918.1
|
||||
Sum(x^2) : 76692.5
|
||||
Collisions
|
||||
entries : 696
|
||||
Sum(w) : 696
|
||||
Sum(w*x) : 696
|
||||
Sum(w*x*x) : 696
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 696
|
||||
Sum(x^2) : 696
|
||||
Volume name = scorecell: D2, Replica number = 0
|
||||
HistorysEntering
|
||||
entries : 392
|
||||
Sum(w) : 392
|
||||
Sum(w*x) : 392
|
||||
Sum(w*x*x) : 392
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 392
|
||||
Sum(x^2) : 392
|
||||
EnergyEnteringHistory
|
||||
entries : 392
|
||||
Sum(w) : 392
|
||||
Sum(w*x) : 3630.15
|
||||
Sum(w*x*x) : 34992.4
|
||||
mean=Sum(w*x) / Sum(w) : 9.26058
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 1.87297
|
||||
Sum(x) : 3630.15
|
||||
Sum(x^2) : 34992.4
|
||||
Collisions
|
||||
entries : 233
|
||||
Sum(w) : 233
|
||||
Sum(w*x) : 233
|
||||
Sum(w*x*x) : 233
|
||||
mean=Sum(w*x) / Sum(w) : 1
|
||||
sigma=sqrt(Sum(w*x*x)/Sum(w)-mean^2): 0
|
||||
Sum(x) : 233
|
||||
Sum(x^2) : 233
|
||||
GeomSampler Configured!!!
|
||||
Running in singlethreaded mode!!!
|
||||
B03PhysicsList::SetCuts:CutLength : 1 (mm)
|
||||
ghost world: ParallelBiasingWorld
|
||||
adding cell: 1 replica: 0 name: cell_01
|
||||
adding cell: 2 replica: 0 name: cell_02
|
||||
adding cell: 3 replica: 0 name: cell_03
|
||||
adding cell: 4 replica: 0 name: cell_04
|
||||
adding cell: 5 replica: 0 name: cell_05
|
||||
adding cell: 6 replica: 0 name: cell_06
|
||||
adding cell: 7 replica: 0 name: cell_07
|
||||
adding cell: 8 replica: 0 name: cell_08
|
||||
adding cell: 9 replica: 0 name: cell_09
|
||||
adding cell: 10 replica: 0 name: cell_10
|
||||
adding cell: 11 replica: 0 name: cell_11
|
||||
adding cell: 12 replica: 0 name: cell_12
|
||||
adding cell: 13 replica: 0 name: cell_13
|
||||
adding cell: 14 replica: 0 name: cell_14
|
||||
adding cell: 15 replica: 0 name: cell_15
|
||||
adding cell: 16 replica: 0 name: cell_16
|
||||
adding cell: 17 replica: 0 name: cell_17
|
||||
adding cell: 18 replica: 0 name: cell_18
|
||||
|
||||
----------------------------------------------
|
||||
Volume name | AV E/Track | sigma | Coll_Ent.Tr|
|
||||
score_worldCylinder_phys. | 8.66714 | 1.96678 | 0 |
|
||||
scorecell: M1............ | 9.71383 | 1.05729 | 0.704013 |
|
||||
scorecell: D1............ | 9.66536 | 1.13047 | 0.596737 |
|
||||
scorecell: M2............ | 9.37053 | 1.71858 | 0.823669 |
|
||||
scorecell: D2............ | 9.26058 | 1.87297 | 0.594388 |
|
||||
+++ G4ProcessPlacer::G4ProcessPlacer: for: neutron
|
||||
ProcessName: PScoreProcess, will be removed!
|
||||
The initial Vectors:
|
||||
conv: for gamma SubType= 14 BuildTable= 1
|
||||
Lambda table from 1.022 MeV to 10 TeV, 20 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BetheHeitler : Emin= 0 eV Emax= 80 GeV
|
||||
BetheHeitlerLPM : Emin= 80 GeV Emax= 10 TeV
|
||||
|
||||
compt: for gamma SubType= 13 BuildTable= 1
|
||||
Lambda table from 100 eV to 1 MeV, 7 bins per decade, spline: 1
|
||||
LambdaPrime table from 1 MeV to 10 TeV in 49 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Klein-Nishina : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
phot: for gamma SubType= 12 BuildTable= 0
|
||||
LambdaPrime table from 200 keV to 10 TeV in 54 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
PhotoElectric : Emin= 0 eV Emax= 10 TeV AngularGenSauterGavrila
|
||||
|
||||
msc: for e- SubType= 10
|
||||
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
eIoni: for e- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MollerBhabha : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
eBrem: for e- SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
LPM flag: 1 for E > 1 GeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eBremSB : Emin= 0 eV Emax= 1 GeV DipBustGen
|
||||
eBremLPM : Emin= 1 GeV Emax= 10 TeV DipBustGen
|
||||
|
||||
msc: for e+ SubType= 10
|
||||
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
eIoni: for e+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MollerBhabha : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
eBrem: for e+ SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
LPM flag: 1 for E > 1 GeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eBremSB : Emin= 0 eV Emax= 1 GeV DipBustGen
|
||||
eBremLPM : Emin= 1 GeV Emax= 10 TeV DipBustGen
|
||||
|
||||
annihil: for e+, integral: 1 SubType= 5 BuildTable= 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eplus2gg : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for proton SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for proton SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 10 TeV
|
||||
|
||||
msc: for GenericIon SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for GenericIon SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 10 TeV
|
||||
|
||||
msc: for alpha SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for alpha SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 7.9452 MeV
|
||||
BetheBloch : Emin= 7.9452 MeV Emax= 10 TeV
|
||||
|
||||
msc: for anti_proton SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for anti_proton SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 10 TeV
|
||||
|
||||
msc: for kaon+ SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for kaon+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 1.05231 MeV
|
||||
BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV
|
||||
|
||||
msc: for kaon- SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for kaon- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 1.05231 MeV
|
||||
BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV
|
||||
|
||||
msc: for mu+ SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
muIoni: for mu+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 200 keV
|
||||
BetheBloch : Emin= 200 keV Emax= 1 GeV
|
||||
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
|
||||
|
||||
muBrems: for mu+ SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MuBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
muPairProd: for mu+ SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 17x1001 from 1 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
muPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for mu- SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
muIoni: for mu- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 200 keV
|
||||
BetheBloch : Emin= 200 keV Emax= 1 GeV
|
||||
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
|
||||
|
||||
muBrems: for mu- SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MuBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
muPairProd: for mu- SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 17x1001 from 1 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
muPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for pi+ SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for pi+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 297.505 keV
|
||||
BetheBloch : Emin= 297.505 keV Emax= 10 TeV
|
||||
|
||||
msc: for pi- SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for pi- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 297.505 keV
|
||||
BetheBloch : Emin= 297.505 keV Emax= 10 TeV
|
||||
|
||||
====================================================================
|
||||
HADRONIC PROCESSES SUMMARY (verbose level 1)
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for alpha
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV ---> 110 MeV
|
||||
Model: QMDModel: 100 MeV ---> 10 GeV
|
||||
Cr_sctns: TripathiLightIons: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Tripathi: 0 eV ---> 100 TeV
|
||||
Cr_sctns: IonsShen: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for anti_neutron
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: ANTI-FTFP: 0 eV ---> 20 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for anti_proton
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: ANTI-FTFP: 0 eV ---> 20 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for deuteron
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV ---> 110 MeV
|
||||
Model: QMDModel: 100 MeV ---> 10 GeV
|
||||
Cr_sctns: TripathiLightIons: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Tripathi: 0 eV ---> 100 TeV
|
||||
Cr_sctns: IonsShen: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for kaon+
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: BertiniCascade: 0 eV ---> 22 MeV
|
||||
Model: TheoFSGenerator: 19 GeV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for kaon-
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: BertiniCascade: 0 eV ---> 22 MeV
|
||||
Model: TheoFSGenerator: 19 GeV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for lambda
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: BertiniCascade: 0 eV ---> 22 MeV
|
||||
Model: TheoFSGenerator: 19 GeV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for neutron
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: BertiniCascade: 0 eV ---> 22 MeV
|
||||
Model: TheoFSGenerator: 19 GeV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: nFission
|
||||
Model: G4LFission: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaFissionXS: 0 eV ---> 100 TeV
|
||||
|
||||
Process: nCapture
|
||||
Model: nRadCapture: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaCaptureXS: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for pi+
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: BertiniCascade: 0 eV ---> 22 MeV
|
||||
Model: TheoFSGenerator: 19 GeV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for pi-
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: BertiniCascade: 0 eV ---> 22 MeV
|
||||
Model: TheoFSGenerator: 19 GeV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for proton
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: BertiniCascade: 0 eV ---> 22 MeV
|
||||
Model: TheoFSGenerator: 19 GeV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for triton
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: inelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV ---> 110 MeV
|
||||
Model: QMDModel: 100 MeV ---> 10 GeV
|
||||
Cr_sctns: TripathiLightIons: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Tripathi: 0 eV ---> 100 TeV
|
||||
Cr_sctns: IonsShen: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
================================================================
|
||||
++ ConcreteSD/Collisions id 0
|
||||
++ ConcreteSD/CollWeight id 1
|
||||
++ ConcreteSD/Population id 2
|
||||
++ ConcreteSD/TrackEnter id 3
|
||||
++ ConcreteSD/SL id 4
|
||||
++ ConcreteSD/SLW id 5
|
||||
++ ConcreteSD/SLWE id 6
|
||||
++ ConcreteSD/SLW_V id 7
|
||||
++ ConcreteSD/SLWE_V id 8
|
||||
### Run 0 start.
|
||||
|
||||
-------- WWWW ------- G4Exception-START -------- WWWW -------
|
||||
*** G4Exception : GeomBias1001
|
||||
issued by : G4ImportanceAlgorithm::Warning()
|
||||
Calculate() - ipre_over_ipost ! in [0.25, 4].
|
||||
ipre_over_ipost = 256.
|
||||
*** This is just a warning message. ***
|
||||
-------- WWWW -------- G4Exception-END --------- WWWW -------
|
||||
|
||||
###### EndOfRunAction
|
||||
getting hits map ConcreteSD/Collisions
|
||||
getting hits map ConcreteSD/CollWeight
|
||||
getting hits map ConcreteSD/Population
|
||||
getting hits map ConcreteSD/TrackEnter
|
||||
getting hits map ConcreteSD/SL
|
||||
getting hits map ConcreteSD/SLW
|
||||
getting hits map ConcreteSD/SLWE
|
||||
getting hits map ConcreteSD/SLW_V
|
||||
getting hits map ConcreteSD/SLWE_V
|
||||
|
||||
--------------------End of Global Run-----------------------
|
||||
Number of event processed : 100
|
||||
=============================================================
|
||||
=============================================================
|
||||
Volume | Tr.Entering | Population | Collisions | Coll*WGT | NumWGTedE | FluxWGTedE | Av.Tr.WGT | SL | SLW | SLW_v | SLWE | SLWE_v |
|
||||
cell_00 | 28 | 126 | 0 | 0 | 0.24653 | 1.12975 | 1 | 6123.56 | 6123.56 | 1535.16 | 6918.11 | 378.463 |
|
||||
cell_01 | 157 | 196 | 589 | 589 | 0.519157 | 3.98663 | 1 | 25100.1 | 25100.1 | 5503.47 | 100065 | 2857.16 |
|
||||
cell_02 | 187 | 301 | 1308 | 654 | 0.298906 | 2.69296 | 0.5 | 49727.2 | 24863.6 | 7364.84 | 66956.6 | 2201.4 |
|
||||
cell_03 | 274 | 402 | 1994 | 498.5 | 0.211892 | 2.25769 | 0.25 | 70502.9 | 17625.7 | 6468.67 | 39793.4 | 1370.66 |
|
||||
cell_04 | 347 | 545 | 2738 | 342.25 | 0.169715 | 1.81031 | 0.125 | 89955 | 11244.4 | 4464.54 | 20355.9 | 757.701 |
|
||||
cell_05 | 323 | 515 | 2896 | 181 | 0.130864 | 1.70198 | 0.0625 | 88009.2 | 5500.57 | 2576.55 | 9361.86 | 337.177 |
|
||||
cell_06 | 322 | 518 | 2853 | 89.1562 | 0.132658 | 1.6839 | 0.03125 | 88842.5 | 2776.33 | 1272.82 | 4675.06 | 168.849 |
|
||||
cell_07 | 340 | 537 | 2958 | 46.2188 | 0.143564 | 1.62176 | 0.015625 | 93941.7 | 1467.84 | 620.432 | 2380.48 | 89.0716 |
|
||||
cell_08 | 376 | 572 | 3033 | 23.6953 | 0.13496 | 1.67955 | 0.0078125 | 95409.4 | 745.386 | 339.046 | 1251.91 | 45.7577 |
|
||||
cell_09 | 389 | 598 | 3263 | 12.7461 | 0.126354 | 1.68231 | 0.00390625 | 105212 | 410.983 | 200.556 | 691.4 | 25.3409 |
|
||||
cell_10 | 383 | 578 | 3116 | 6.08594 | 0.139875 | 1.62876 | 0.00195312 | 98837.3 | 193.042 | 84.7017 | 314.419 | 11.8477 |
|
||||
cell_11 | 372 | 600 | 3403 | 3.32324 | 0.137027 | 1.59122 | 0.000976562 | 103050 | 100.635 | 43.7067 | 160.132 | 5.98898 |
|
||||
cell_12 | 325 | 535 | 2692 | 1.31445 | 0.14033 | 1.76076 | 0.000488281 | 86835.7 | 42.4003 | 19.3945 | 74.6567 | 2.72162 |
|
||||
cell_13 | 330 | 528 | 2782 | 0.679199 | 0.146267 | 1.82682 | 0.000244141 | 92000.7 | 22.4611 | 10.274 | 41.0325 | 1.50274 |
|
||||
cell_14 | 375 | 575 | 3190 | 0.389404 | 0.136959 | 1.55763 | 0.00012207 | 99527.3 | 12.1493 | 5.336 | 18.9241 | 0.730815 |
|
||||
cell_15 | 390 | 593 | 3234 | 0.197388 | 0.120701 | 1.50083 | 6.10352e-05 | 104329 | 6.36771 | 3.08747 | 9.55686 | 0.372661 |
|
||||
cell_16 | 378 | 572 | 3035 | 0.0926208 | 0.129377 | 1.46981 | 3.05176e-05 | 94395 | 2.88071 | 1.31929 | 4.23408 | 0.170686 |
|
||||
cell_17 | 343 | 529 | 3033 | 0.0462799 | 0.115232 | 1.2854 | 1.52588e-05 | 91999.7 | 1.4038 | 0.663498 | 1.80445 | 0.076456 |
|
||||
cell_18 | 197 | 398 | 1990 | 0.0151825 | 0.133304 | 1.45563 | 7.62939e-06 | 62381.4 | 0.475933 | 0.213064 | 0.692782 | 0.0284023 |
|
||||
cell_19 | 122 | 122 | 0 | 0 | 0.258259 | 2.36529 | 7.62939e-06 | 18021.4 | 0.137492 | 0.0453717 | 0.325208 | 0.0117177 |
|
||||
=============================================
|
||||
=== G4ProcessPlacer::RemoveProcess: for: neutron
|
||||
ProcessName: ImportanceProcess, will be removed!
|
||||
The initial AlongStep Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
inelastic
|
||||
LElastic
|
||||
PScoreProcess
|
||||
ParallelTransport
|
||||
Transportation
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
ImportanceProcess
|
||||
CoupledTransportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
ParallelTransport
|
||||
PScoreProcess
|
||||
LElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
Decay
|
||||
The final Vectors:
|
||||
CoupledTransportation
|
||||
ImportanceProcess
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
The initial PostStep Vectors:
|
||||
GPIL Vector:
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
nCapture
|
||||
nFission
|
||||
inelastic
|
||||
LElastic
|
||||
ParallelTransport
|
||||
Transportation
|
||||
hadElastic
|
||||
ImportanceProcess
|
||||
CoupledTransportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
ParallelTransport
|
||||
LElastic
|
||||
CoupledTransportation
|
||||
ImportanceProcess
|
||||
hadElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
nFission
|
||||
nCapture
|
||||
Decay
|
||||
WARNING - Attempt to delete the physical volume store while geometry closed !
|
||||
WARNING - Attempt to delete the logical volume store while geometry closed !
|
||||
WARNING - Attempt to delete the solid store while geometry closed !
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
The final AlongStep Vectors:
|
||||
GPIL Vector:
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
CoupledTransportation
|
||||
DoIt Vector:
|
||||
CoupledTransportation
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
The final PostStep Vectors:
|
||||
GPIL Vector:
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
Decay
|
||||
nCapture
|
||||
nFission
|
||||
inelastic
|
||||
hadElastic
|
||||
CoupledTransportation
|
||||
DoIt Vector:
|
||||
CoupledTransportation
|
||||
hadElastic
|
||||
inelastic
|
||||
nFission
|
||||
nCapture
|
||||
Decay
|
||||
ParaWorldProc_ParallelBiasingWorld
|
||||
================================================
|
||||
Total navigation history collections cleaned: 42
|
||||
|
||||
@@ -639,29 +639,26 @@ void B03PhysicsList::SetCuts()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4ParallelWorldScoringProcess.hh"
|
||||
#include "G4ParallelWorldProcess.hh"
|
||||
void B03PhysicsList::AddScoringProcess(){
|
||||
|
||||
G4int npw = fParaWorldName.size();
|
||||
for ( G4int i = 0; i < npw; i++){
|
||||
G4ParallelWorldScoringProcess* theParallelWorldScoringProcess
|
||||
= new G4ParallelWorldScoringProcess("ParaWorldScoringProc");
|
||||
theParallelWorldScoringProcess->SetParallelWorld(fParaWorldName[i]);
|
||||
G4String procName = "ParaWorldProc_"+fParaWorldName[i];
|
||||
G4ParallelWorldProcess* theParallelWorldProcess
|
||||
= new G4ParallelWorldProcess(procName);
|
||||
theParallelWorldProcess->SetParallelWorld(fParaWorldName[i]);
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
if ( !particle->IsShortLived() ){
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
pmanager->AddProcess(theParallelWorldScoringProcess);
|
||||
pmanager->SetProcessOrderingToLast(theParallelWorldScoringProcess
|
||||
,idxAtRest);
|
||||
pmanager->SetProcessOrdering(theParallelWorldScoringProcess
|
||||
,idxAlongStep,1);
|
||||
pmanager->SetProcessOrderingToLast(theParallelWorldScoringProcess
|
||||
,idxPostStep);
|
||||
}
|
||||
}
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
pmanager->AddProcess(theParallelWorldProcess);
|
||||
if(theParallelWorldProcess->IsAtRestRequired(particle))
|
||||
{pmanager->SetProcessOrdering(theParallelWorldProcess, idxAtRest, 9999);}
|
||||
pmanager->SetProcessOrdering(theParallelWorldProcess, idxAlongStep, 1);
|
||||
pmanager->SetProcessOrdering(theParallelWorldProcess, idxPostStep, 9999);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ add_subdirectory(B02)
|
||||
add_subdirectory(B03)
|
||||
add_subdirectory(GB01)
|
||||
add_subdirectory(GB02)
|
||||
add_subdirectory(GB03)
|
||||
add_subdirectory(GB04)
|
||||
add_subdirectory(ReverseMC01)
|
||||
|
||||
@@ -17,6 +17,21 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
Nov 14, 2014, M. Verderi
|
||||
- Fix in GB01BOptrChangeCrossSection, which was not properly using the
|
||||
new cross-section value in case of an UpdateForStep(...). A trick
|
||||
is used with operation->UpdateForStep( 0.0 ) to make it working.
|
||||
- GB01-V10-00-02
|
||||
|
||||
Nov 09, 2014, M. Verderi
|
||||
- Fix compilation warnings in GB01BOptrChangeCrossSection.
|
||||
- GB01-V10-00-01
|
||||
|
||||
Nov 07, 2014, M. Verderi
|
||||
- Adapt to MT
|
||||
- Adapt to evolved generic biasing scheme
|
||||
- tag : GB01-V10-00-00
|
||||
|
||||
Nov 29, 2013, I. Hrivnacova
|
||||
- Added GNUmakefile, .README
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -47,7 +47,6 @@
|
||||
#include "G4VBiasingOperator.hh"
|
||||
class G4BOptnChangeCrossSection;
|
||||
class G4ParticleDefinition;
|
||||
class G4VProcess;
|
||||
#include <map>
|
||||
|
||||
|
||||
@@ -59,6 +58,8 @@ public:
|
||||
GB01BOptrChangeCrossSection(G4String particleToBias, G4String name = "ChangeXS");
|
||||
virtual ~GB01BOptrChangeCrossSection();
|
||||
|
||||
// -- method called at beginning of run:
|
||||
virtual void StartRun();
|
||||
|
||||
private:
|
||||
// -----------------------------
|
||||
@@ -95,7 +96,6 @@ private:
|
||||
// -- List of associations between processes and biasing operations:
|
||||
std::map< const G4BiasingProcessInterface*,
|
||||
G4BOptnChangeCrossSection* > fChangeCrossSectionOperations;
|
||||
const G4VProcess *fFirstProcess, *fLastProcess;
|
||||
G4bool fSetup;
|
||||
const G4ParticleDefinition* fParticleToBias;
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ public:
|
||||
public:
|
||||
|
||||
virtual G4VPhysicalVolume* Construct();
|
||||
virtual void ConstructSDandField();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
|
||||
#include "Randomize.hh"
|
||||
|
||||
#include "G4InteractionLawPhysical.hh"
|
||||
|
||||
GB01BOptrChangeCrossSection::GB01BOptrChangeCrossSection(G4String particleName,
|
||||
G4String name)
|
||||
: G4VBiasingOperator(name),
|
||||
fFirstProcess(0),
|
||||
fLastProcess(0),
|
||||
fSetup(true)
|
||||
{
|
||||
fParticleToBias = G4ParticleTable::GetParticleTable()->FindParticle(particleName);
|
||||
@@ -61,40 +61,49 @@ GB01BOptrChangeCrossSection::~GB01BOptrChangeCrossSection()
|
||||
it++ ) delete (*it).second;
|
||||
}
|
||||
|
||||
|
||||
void GB01BOptrChangeCrossSection::StartRun()
|
||||
{
|
||||
// --------------
|
||||
// -- Setup stage:
|
||||
// ---------------
|
||||
// -- Start by collecting processes under biasing, create needed biasing
|
||||
// -- operations and associate these operations to the processes:
|
||||
if ( fSetup )
|
||||
{
|
||||
const G4ProcessManager* processManager = fParticleToBias->GetProcessManager();
|
||||
const G4BiasingProcessSharedData* sharedData =
|
||||
G4BiasingProcessInterface::GetSharedData( processManager );
|
||||
if ( sharedData ) // -- sharedData tested, as is can happen a user attaches an operator to a
|
||||
// -- volume but without defined BiasingProcessInterface processes.
|
||||
{
|
||||
for ( size_t i = 0 ; i < (sharedData->GetPhysicsBiasingProcessInterfaces()).size(); i++ )
|
||||
{
|
||||
const G4BiasingProcessInterface* wrapperProcess =
|
||||
(sharedData->GetPhysicsBiasingProcessInterfaces())[i];
|
||||
G4String operationName = "XSchange-" +
|
||||
wrapperProcess->GetWrappedProcess()->GetProcessName();
|
||||
fChangeCrossSectionOperations[wrapperProcess] =
|
||||
new G4BOptnChangeCrossSection(operationName);
|
||||
}
|
||||
}
|
||||
fSetup = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
G4VBiasingOperation*
|
||||
GB01BOptrChangeCrossSection::ProposeOccurenceBiasingOperation(const G4Track* track,
|
||||
const G4BiasingProcessInterface*
|
||||
callingProcess)
|
||||
{
|
||||
|
||||
// -----------------------------------------------------
|
||||
// -- Check if current particle type is the one to bias:
|
||||
// -----------------------------------------------------
|
||||
if ( track->GetDefinition() != fParticleToBias ) return 0;
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// -- Setup stage ( Might consider moving this in a less called method. ):
|
||||
// -----------------------------------------------------------------------
|
||||
// -- Start by collecting processes under biasing, create needed biasing operations
|
||||
// -- and assocation operations to these processes:
|
||||
if ( fSetup )
|
||||
{
|
||||
if ( ( fFirstProcess == 0 ) &&
|
||||
( callingProcess->GetIsFirstPostStepGPILInterface() ) ) fFirstProcess = callingProcess;
|
||||
if ( fLastProcess == 0 )
|
||||
{
|
||||
G4String operationName = "XSchange-" +
|
||||
callingProcess->GetWrappedProcess()->GetProcessName();
|
||||
fChangeCrossSectionOperations[callingProcess] =
|
||||
new G4BOptnChangeCrossSection(operationName);
|
||||
if ( callingProcess->GetIsLastPostStepGPILInterface() )
|
||||
{
|
||||
fLastProcess = callingProcess;
|
||||
fSetup = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// -- select and setup the biasing operation for current callingProcess:
|
||||
// ---------------------------------------------------------------------
|
||||
@@ -154,14 +163,17 @@ GB01BOptrChangeCrossSection::ProposeOccurenceBiasingOperation(const G4Track*
|
||||
}
|
||||
else
|
||||
{
|
||||
// -- update the 'interaction length' and underneath 'number of interaction lengths'
|
||||
// -- for past step (this takes into accout the previous step cross-section value)
|
||||
operation->UpdateForStep( callingProcess->GetPreviousStepSize() );
|
||||
// -- update the cross-section value:
|
||||
operation->SetBiasedCrossSection( XStransformation * analogXS );
|
||||
// -- forces recomputation of the 'interaction length' taking into account above
|
||||
// -- new cross-section value [tricky : to be improved]
|
||||
operation->UpdateForStep( 0.0 );
|
||||
}
|
||||
}
|
||||
|
||||
// operation->SetBiasedCrossSection( XStransformation * analogXS );
|
||||
// operation->Sample();
|
||||
|
||||
return operation;
|
||||
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
GB01BOptrMultiParticleChangeCrossSection::GB01BOptrMultiParticleChangeCrossSection()
|
||||
: G4VBiasingOperator("TestManyExponentialTransform")
|
||||
{}
|
||||
@@ -60,14 +62,14 @@ GB01BOptrMultiParticleChangeCrossSection::
|
||||
ProposeOccurenceBiasingOperation(const G4Track* track,
|
||||
const G4BiasingProcessInterface* callingProcess)
|
||||
{
|
||||
// -- examples of limitations imposed to applied the biasing:
|
||||
// -- examples of limitations imposed to apply the biasing:
|
||||
// -- limit application of biasing to primary particles only:
|
||||
if ( track->GetParentID() != 0 ) return 0;
|
||||
// -- limit to at most 5 biased interactions:
|
||||
if ( fnInteractions > 4 ) return 0;
|
||||
// -- and limit to a weight of at least 0.05:
|
||||
if ( track->GetWeight() < 0.05 ) return 0;
|
||||
|
||||
|
||||
if ( fCurrentOperator ) return fCurrentOperator->
|
||||
GetProposedOccurenceBiasingOperation(track, callingProcess);
|
||||
else return 0;
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4UniformMagField.hh"
|
||||
#include "G4LogicalVolumeStore.hh"
|
||||
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
@@ -62,17 +63,17 @@ G4VPhysicalVolume* GB01DetectorConstruction::Construct()
|
||||
|
||||
G4VSolid* solidWorld = new G4Box("World", 10*m, 10*m, 10*m );
|
||||
|
||||
G4LogicalVolume* logicWorld = new G4LogicalVolume(solidWorld, //its solid
|
||||
worldMaterial, //its material
|
||||
"World"); //its name
|
||||
G4LogicalVolume* logicWorld = new G4LogicalVolume(solidWorld, // its solid
|
||||
worldMaterial, // its material
|
||||
"World"); // its name
|
||||
|
||||
G4PVPlacement* physiWorld = new G4PVPlacement(0, //no rotation
|
||||
G4ThreeVector(), //at (0,0,0)
|
||||
logicWorld, //its logical volume
|
||||
"World", //its name
|
||||
0, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
G4PVPlacement* physiWorld = new G4PVPlacement(0, // no rotation
|
||||
G4ThreeVector(), // at (0,0,0)
|
||||
logicWorld, // its logical volume
|
||||
"World", // its name
|
||||
0, // its mother volume
|
||||
false, // no boolean operation
|
||||
0); // copy number
|
||||
|
||||
// -----------------------------------
|
||||
// -- volume where biasing is applied:
|
||||
@@ -80,19 +81,28 @@ G4VPhysicalVolume* GB01DetectorConstruction::Construct()
|
||||
G4double halfZ = 10*cm;
|
||||
G4VSolid* solidTest = new G4Box("test.solid", 1*m, 1*m, halfZ );
|
||||
|
||||
G4LogicalVolume* logicTest = new G4LogicalVolume(solidTest, //its solid
|
||||
defaultMaterial, //its material
|
||||
"test.logical"); //its name
|
||||
G4LogicalVolume* logicTest = new G4LogicalVolume(solidTest, // its solid
|
||||
defaultMaterial, // its material
|
||||
"test.logical"); // its name
|
||||
|
||||
new G4PVPlacement(0, // no rotation
|
||||
G4ThreeVector(0,0, halfZ), // volume entrance at (0,0,0)
|
||||
logicTest, // its logical volume
|
||||
"test.phys", // its name
|
||||
logicWorld, // its mother volume
|
||||
false, // no boolean operation
|
||||
0); // copy number
|
||||
new G4PVPlacement(0, // no rotation
|
||||
G4ThreeVector(0,0, halfZ), // volume entrance at (0,0,0)
|
||||
logicTest, // its logical volume
|
||||
"test.phys", // its name
|
||||
logicWorld, // its mother volume
|
||||
false, // no boolean operation
|
||||
0); // copy number
|
||||
|
||||
|
||||
return physiWorld;
|
||||
}
|
||||
|
||||
|
||||
void GB01DetectorConstruction::ConstructSDandField()
|
||||
{
|
||||
// -- Fetch volume for biasing:
|
||||
G4LogicalVolume* logicTest = G4LogicalVolumeStore::GetInstance()->GetVolume("test.logical");
|
||||
|
||||
// ----------------------------------------------
|
||||
// -- operator creation and attachment to volume:
|
||||
// ----------------------------------------------
|
||||
@@ -104,6 +114,4 @@ G4VPhysicalVolume* GB01DetectorConstruction::Construct()
|
||||
G4cout << " Attaching biasing operator " << testMany->GetName()
|
||||
<< " to logical volume " << logicTest->GetName()
|
||||
<< G4endl;
|
||||
|
||||
return physiWorld;
|
||||
}
|
||||
|
||||
@@ -17,6 +17,11 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
Oct 14, 2014, M. Verderi
|
||||
- Adapt to evolved biasing generic scheme
|
||||
- requires proc-biasgen-V10-00-00 and proc-biasmng-V10-00-00
|
||||
- tag : GB02-V10-00-00
|
||||
|
||||
Nov 29, 2013, I. Hrivnacova
|
||||
- Added GNUmakefile, .README
|
||||
|
||||
|
||||
@@ -119,9 +119,9 @@ int main(int argc,char** argv)
|
||||
biasingPhysics->Bias("kaon0L");
|
||||
biasingPhysics->Bias("kaon0S");
|
||||
physicsList->RegisterPhysics(biasingPhysics);
|
||||
G4cout << " ********************************************* " << G4endl;
|
||||
G4cout << " ********** processes are wrapped ************ " << G4endl;
|
||||
G4cout << " ********************************************* " << G4endl;
|
||||
G4cout << " ********************************************************* " << G4endl;
|
||||
G4cout << " ********** processes are wrapped for biasing ************ " << G4endl;
|
||||
G4cout << " ********************************************************* " << G4endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -51,11 +51,11 @@ private:
|
||||
ProposeNonPhysicsBiasingOperation(const G4Track* track,
|
||||
const G4BiasingProcessInterface* callingProcess);
|
||||
virtual G4VBiasingOperation*
|
||||
ProposeOccurenceBiasingOperation(const G4Track* track,
|
||||
const G4BiasingProcessInterface* callingProcess);
|
||||
ProposeOccurenceBiasingOperation (const G4Track* track,
|
||||
const G4BiasingProcessInterface* callingProcess);
|
||||
virtual G4VBiasingOperation*
|
||||
ProposeFinalStateBiasingOperation(const G4Track*,
|
||||
const G4BiasingProcessInterface*) {return 0;}
|
||||
ProposeFinalStateBiasingOperation(const G4Track* track,
|
||||
const G4BiasingProcessInterface* callingProcess);
|
||||
|
||||
private:
|
||||
// -- Avoid compiler complaining for (wrong) method shadowing,
|
||||
|
||||
@@ -76,6 +76,16 @@ ProposeNonPhysicsBiasingOperation(const G4Track* track,
|
||||
else return 0;
|
||||
}
|
||||
|
||||
G4VBiasingOperation*
|
||||
GB02BOptrMultiParticleForceCollision::
|
||||
ProposeFinalStateBiasingOperation(const G4Track* track,
|
||||
const G4BiasingProcessInterface* callingProcess)
|
||||
{
|
||||
if ( fCurrentOperator ) return fCurrentOperator->
|
||||
GetProposedFinalStateBiasingOperation(track, callingProcess);
|
||||
else return 0;
|
||||
}
|
||||
|
||||
|
||||
void GB02BOptrMultiParticleForceCollision::StartTracking( const G4Track* track )
|
||||
{
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
//$Id$
|
||||
|
||||
///\file "biasing/GB03/.README"
|
||||
///\brief Example GB03 README page
|
||||
|
||||
/*! \page ExampleGB03 Example GB03
|
||||
|
||||
\section ExampleGB03_s1 Geometry based biasing
|
||||
|
||||
This example illustrates a use of generic biasing classes to implement a
|
||||
technique near to "geometry importance biasing".
|
||||
|
||||
The geometry is the same than in EM tests, with the sampling calorimeter
|
||||
made of a series of layers of absorber and gap.
|
||||
|
||||
The biasing applies to neutrons only.
|
||||
|
||||
Instead of explicitely assigning "importance" values to the layers, we
|
||||
split neutrons moving forward and kill the ones moving backward, when they
|
||||
reach the exit of an absorber volume.
|
||||
|
||||
The splitting factor can be controlled by command line, eg:
|
||||
\verbatim
|
||||
/GB03/biasing/setSplittingFactor 2
|
||||
\endverbatim
|
||||
|
||||
which also determines the killing probability : 1/(splitting factor).
|
||||
|
||||
It can be seen than when defining 10 layers (see exampleGB03.in), a
|
||||
splitting factor 2 works fine : we don't suffer from under- or over-splitting.
|
||||
If going to 20 layers, then a splitting with a factor 2 is too large,
|
||||
and the biasing suffers from over-splitting. (And we can not go lower than
|
||||
"2", which would mean "1" and hence, no biasing...)
|
||||
|
||||
To alleviate the over-splitting, we introduce a probability to apply the
|
||||
splitting (and killing) (this is one solution, others can be considered), that
|
||||
can be changed as:
|
||||
|
||||
\verbatim
|
||||
/GB03/biasing/setApplyProbability 0.5
|
||||
\endverbatim
|
||||
|
||||
With above value, we can see that we recover a satisfactory biasing scheme,
|
||||
with neutrons penetrating the entire setup, without over-splitting.
|
||||
|
||||
|
||||
The classes involved are:
|
||||
|
||||
- GB03BOptnSplitOrKillOnBoundary : which is the biasing operation making
|
||||
the splitting and killing;
|
||||
- GB03BOptrGeometryBasedBiasing : which is the biasing operator, making
|
||||
decision to use above operation, and configuring it, passing it the
|
||||
splitting factor and probability to apply the biasing.
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,66 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Setup the project
|
||||
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
|
||||
project(GB03project)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Find Geant4 package, activating all available UI and Vis drivers by default
|
||||
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
|
||||
# to build a batch mode only executable
|
||||
#
|
||||
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
|
||||
if(WITH_GEANT4_UIVIS)
|
||||
find_package(Geant4 REQUIRED ui_all vis_all)
|
||||
else()
|
||||
find_package(Geant4 REQUIRED)
|
||||
endif()
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Setup Geant4 include directories and compile definitions
|
||||
#
|
||||
include(${Geant4_USE_FILE})
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Locate sources and headers for this project
|
||||
#
|
||||
include_directories(${PROJECT_SOURCE_DIR}/include
|
||||
${Geant4_INCLUDE_DIR})
|
||||
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
|
||||
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Add the executable, and link it to the Geant4 libraries
|
||||
#
|
||||
add_executable(exampleGB03 exampleGB03.cc ${sources} ${headers})
|
||||
target_link_libraries(exampleGB03 ${Geant4_LIBRARIES} )
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Copy all scripts to the build directory, i.e. the directory in which we build
|
||||
# GB03project. This is so that we can run the executable directly
|
||||
# because it relies on these scripts being in the current working directory.
|
||||
#
|
||||
set(GB03project_SCRIPTS
|
||||
exampleGB03.in
|
||||
exampleGB03.out
|
||||
vis.mac
|
||||
)
|
||||
|
||||
foreach(_script ${GB03project_SCRIPTS})
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/${_script}
|
||||
${PROJECT_BINARY_DIR}/${_script}
|
||||
COPYONLY
|
||||
)
|
||||
endforeach()
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Add program to the project targets
|
||||
# (this avoids the need of typing the program name after make)
|
||||
#
|
||||
add_custom_target(GB03project DEPENDS exampleGB03)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
|
||||
#
|
||||
install(TARGETS exampleGB03 DESTINATION bin)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# $Id: GNUmakefile 66241 2012-12-13 18:34:42Z gunter $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := exampleGB03
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
@@ -0,0 +1,45 @@
|
||||
$Id: History 70477 2013-05-31 08:35:08Z ahoward $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Category History file
|
||||
---------------------
|
||||
This file should be used by G4 developers and category coordinators
|
||||
to briefly summarize all major modifications introduced in the code
|
||||
and keep track of all category-tags.
|
||||
It DOES NOT substitute the CVS log-message one should put at every
|
||||
committal in the CVS repository !
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
Nov 29, 2014, I. Hrivnacova
|
||||
- Fixed .README
|
||||
- tag GB03-V10-00-05
|
||||
|
||||
Nov 10, 2014, M. Verderi
|
||||
- update exampleGB03.out
|
||||
- tag GB03-V10-00-04
|
||||
|
||||
Nov 10, 2014, M. Verderi
|
||||
- Typo in GB03BOptnSplitOrKillOnBoundary: GetApplyProbabilty()
|
||||
(missing "i" : Probability())
|
||||
- tag GB03-V10-00-03
|
||||
|
||||
Nov 9, 2014, I. Hrivnacova
|
||||
- Added GNUmakefile
|
||||
- tag GB03-V10-00-02
|
||||
|
||||
Nov 8, 2014, I. Hrivnacova
|
||||
- Added .README, files descriptions and separators
|
||||
- tag GB03-V10-00-01
|
||||
|
||||
Nov 7, 2014, M. Verderi
|
||||
- Creation
|
||||
- tag GB03-V10-00-00
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
Example GB03 : geometry based biasing
|
||||
-------------------------------------
|
||||
|
||||
This example illustrates a use of generic biasing classes to implement a
|
||||
technique near to "geometry importance biasing".
|
||||
|
||||
The geometry is the same than in EM tests, with the sampling calorimeter
|
||||
made of a series of layers of absorber and gap.
|
||||
|
||||
The biasing applies to neutrons only.
|
||||
|
||||
Instead of explicitely assigning "importance" values to the layers, we
|
||||
split neutrons moving forward and kill the ones moving backward, when they
|
||||
reach the exit of an absorber volume.
|
||||
|
||||
The splitting factor can be controlled by command line, eg:
|
||||
|
||||
/GB03/biasing/setSplittingFactor 2
|
||||
|
||||
which also determines the killing probability : 1/(splitting factor).
|
||||
|
||||
It can be seen than when defining 10 layers (see exampleGB03.in), a
|
||||
splitting factor 2 works fine : we don't suffer from under- or over-splitting.
|
||||
If going to 20 layers, then a splitting with a factor 2 is too large,
|
||||
and the biasing suffers from over-splitting. (And we can not go lower than
|
||||
"2", which would mean "1" and hence, no biasing...)
|
||||
|
||||
To alleviate the over-splitting, we introduce a probability to apply the
|
||||
splitting (and killing) (this is one solution, others can be considered), that
|
||||
can be changed as:
|
||||
|
||||
/GB03/biasing/setApplyProbability 0.5
|
||||
|
||||
With above value, we can see that we recover a satisfactory biasing scheme,
|
||||
with neutrons penetrating the entire setup, without over-splitting.
|
||||
|
||||
|
||||
The classes involved are:
|
||||
|
||||
- GB03BOptnSplitOrKillOnBoundary : which is the biasing operation making
|
||||
the splitting and killing;
|
||||
- GB03BOptrGeometryBasedBiasing : which is the biasing operator, making
|
||||
decision to use above operation, and configuring it, passing it the
|
||||
splitting factor and probability to apply the biasing.
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#ifdef G4MULTITHREADED
|
||||
#include "G4MTRunManager.hh"
|
||||
#else
|
||||
#include "G4RunManager.hh"
|
||||
#endif
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
#include "G4VisExecutive.hh"
|
||||
#endif
|
||||
|
||||
#ifdef G4UI_USE
|
||||
#include "G4UIExecutive.hh"
|
||||
#endif
|
||||
|
||||
#include "G4UImanager.hh"
|
||||
|
||||
#include "GB03DetectorConstruction.hh"
|
||||
#include "GB03PrimaryGeneratorAction.hh"
|
||||
#include "GB03ActionInitialization.hh"
|
||||
#include "FTFP_BERT.hh"
|
||||
#include "G4GenericBiasingPhysics.hh"
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
|
||||
// -- Construct the run manager : MT or sequential one
|
||||
#ifdef G4MULTITHREADED
|
||||
G4MTRunManager * runManager = new G4MTRunManager;
|
||||
G4cout << " ********** Run Manager constructed in MT mode ************ " << G4endl;
|
||||
// -- Choose 4 threads:
|
||||
runManager->SetNumberOfThreads(4);
|
||||
#else
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
G4cout << " ********** Run Manager constructed in sequential mode ************ " << G4endl;
|
||||
#endif
|
||||
|
||||
|
||||
// -- Set mandatory initialization classes
|
||||
G4VUserDetectorConstruction* detector = new GB03DetectorConstruction;
|
||||
runManager->SetUserInitialization(detector);
|
||||
G4VModularPhysicsList* physicsList = new FTFP_BERT;
|
||||
// -- Setup biasing for neutron only. As will not bias any
|
||||
// -- physics process, require the G4GenericBiasingPhysics()
|
||||
// -- to modify the physics list just for "non-physics" biasing:
|
||||
G4GenericBiasingPhysics* biasingPhysics = new G4GenericBiasingPhysics();
|
||||
biasingPhysics->NonPhysicsBias("neutron");
|
||||
physicsList->RegisterPhysics(biasingPhysics);
|
||||
runManager->SetUserInitialization(physicsList);
|
||||
|
||||
// -- Set user action initialization class
|
||||
G4VUserActionInitialization* actions = new GB03ActionInitialization;
|
||||
runManager->SetUserInitialization(actions);
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
// Visualization manager
|
||||
//
|
||||
G4VisManager* visManager = new G4VisExecutive;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
|
||||
// Initialize G4 kernel
|
||||
//
|
||||
runManager->Initialize();
|
||||
|
||||
// Get the pointer to the User Interface manager
|
||||
//
|
||||
G4UImanager* UImanager = G4UImanager::GetUIpointer();
|
||||
|
||||
if (argc==1) // Define UI session for interactive mode
|
||||
{
|
||||
#ifdef G4UI_USE
|
||||
G4UIExecutive * ui = new G4UIExecutive(argc,argv);
|
||||
#ifdef G4VIS_USE
|
||||
UImanager->ApplyCommand("/control/execute vis.mac");
|
||||
#endif
|
||||
ui->SessionStart();
|
||||
delete ui;
|
||||
#endif
|
||||
}
|
||||
else // Batch mode
|
||||
{
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UImanager->ApplyCommand(command+fileName);
|
||||
}
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
delete runManager;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
/run/verbose 2
|
||||
/GB03/verbose 2
|
||||
|
||||
/gun/particle neutron
|
||||
|
||||
# 10 layers, splitting with factor 2 is fine:
|
||||
/GB03/numberOfLayers 10
|
||||
/GB03/biasing/setSplittingFactor 2
|
||||
/GB03/biasing/setApplyProbability 1.0
|
||||
/run/beamOn 10
|
||||
|
||||
# 20 layers, splitting with factor 2 is too high
|
||||
# to alleviate the "over-splitting", apply
|
||||
# splitting in only 50% of the cases:
|
||||
/GB03/numberOfLayers 20
|
||||
/GB03/biasing/setApplyProbability 0.5
|
||||
/run/beamOn 10
|
||||
|
||||
@@ -0,0 +1,880 @@
|
||||
|
||||
############################################
|
||||
!!! WARNING - FPE detection is activated !!!
|
||||
############################################
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: geant4-10-01-ref-00 (5-December-2014)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
*************************************************************
|
||||
|
||||
********** Run Manager constructed in sequential mode ************
|
||||
<<< Geant4 Physics List simulation engine: FTFP_BERT 2.0
|
||||
|
||||
Visualization Manager instantiating with verbosity "warnings (3)"...
|
||||
Visualization Manager initialising...
|
||||
Registering graphics systems...
|
||||
|
||||
You have successfully registered the following graphics systems.
|
||||
Current available graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRep (HepRepXML)
|
||||
G4HepRepFile (HepRepFile)
|
||||
OpenGLImmediateX (OGLIX)
|
||||
OpenGLImmediateXm (OGLI, OGLIXm)
|
||||
OpenGLStoredX (OGLSX)
|
||||
OpenGLStoredXm (OGL, OGLS, OGLSXm)
|
||||
RayTracer (RayTracer)
|
||||
RayTracerX (RayTracerX)
|
||||
VRML1FILE (VRML1FILE)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
|
||||
Registering model factories...
|
||||
|
||||
You have successfully registered the following model factories.
|
||||
Registered model factories:
|
||||
generic
|
||||
drawByCharge
|
||||
drawByParticleID
|
||||
drawByOriginVolume
|
||||
drawByAttribute
|
||||
|
||||
Registered filter factories:
|
||||
chargeFilter
|
||||
particleFilter
|
||||
originVolumeFilter
|
||||
attributeFilter
|
||||
|
||||
You have successfully registered the following user vis actions.
|
||||
Run Duration User Vis Actions: none
|
||||
End of Event User Vis Actions: none
|
||||
End of Run User Vis Actions: none
|
||||
|
||||
Some /vis commands (optionally) take a string to specify colour.
|
||||
Available colours:
|
||||
black, blue, brown, cyan, gray, green, grey, magenta, red, white, yellow
|
||||
|
||||
--------------------------------------------------------
|
||||
Absorber is made of Lead
|
||||
Gap is made of Scintillator
|
||||
--------------------------------------------------------
|
||||
G4SDManager::AddNewCollection : the collection <Calor_abs/eDep> is registered at 1
|
||||
G4SDManager::AddNewCollection : the collection <Calor_abs/nNeutral> is registered at 2
|
||||
G4SDManager::AddNewCollection : the collection <Calor_abs/nCharged> is registered at 3
|
||||
New sensitive detector <Calor_abs> is registored at /
|
||||
G4SDManager::AddNewCollection : the collection <Calor_gap/eDep> is registered at 4
|
||||
G4SDManager::AddNewCollection : the collection <Calor_gap/nNeutral> is registered at 5
|
||||
G4SDManager::AddNewCollection : the collection <Calor_gap/nCharged> is registered at 6
|
||||
New sensitive detector <Calor_gap> is registored at /
|
||||
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
|
||||
|
||||
phot: for gamma SubType= 12 BuildTable= 0
|
||||
LambdaPrime table from 200 keV to 10 TeV in 54 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
PhotoElectric : Emin= 0 eV Emax= 10 TeV AngularGenSauterGavrila FluoActive
|
||||
|
||||
compt: for gamma SubType= 13 BuildTable= 1
|
||||
Lambda table from 100 eV to 1 MeV, 7 bins per decade, spline: 1
|
||||
LambdaPrime table from 1 MeV to 10 TeV in 49 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Klein-Nishina : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
conv: for gamma SubType= 14 BuildTable= 1
|
||||
Lambda table from 1.022 MeV to 10 TeV, 20 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BetheHeitler : Emin= 0 eV Emax= 80 GeV
|
||||
BetheHeitlerLPM : Emin= 80 GeV Emax= 10 TeV
|
||||
|
||||
msc: for e- SubType= 10
|
||||
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
|
||||
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
|
||||
|
||||
eIoni: for e- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MollerBhabha : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
eBrem: for e- SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
LPM flag: 1 for E > 1 GeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eBremSB : Emin= 0 eV Emax= 1 GeV DipBustGen
|
||||
eBremLPM : Emin= 1 GeV Emax= 10 TeV DipBustGen
|
||||
|
||||
CoulombScat: for e-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from 100 MeV to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 100 MeV Emax= 10 TeV
|
||||
|
||||
msc: for e+ SubType= 10
|
||||
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
|
||||
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
|
||||
|
||||
eIoni: for e+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MollerBhabha : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
eBrem: for e+ SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
LPM flag: 1 for E > 1 GeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eBremSB : Emin= 0 eV Emax= 1 GeV DipBustGen
|
||||
eBremLPM : Emin= 1 GeV Emax= 10 TeV DipBustGen
|
||||
|
||||
annihil: for e+, integral: 1 SubType= 5 BuildTable= 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eplus2gg : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for e+, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from 100 MeV to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 100 MeV Emax= 10 TeV
|
||||
|
||||
msc: for proton SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for proton SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 10 TeV
|
||||
|
||||
hBrems: for proton SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
hPairProd: for proton SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for proton, integral: 1 SubType= 1 BuildTable= 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for GenericIon SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
ionIoni: for GenericIon SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02
|
||||
Stopping Power data for 17 ion/material pairs
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BraggIon : Emin= 0 eV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 10 TeV
|
||||
|
||||
msc: for alpha SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
ionIoni: for alpha SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BraggIon : Emin= 0 eV Emax= 7.9452 MeV
|
||||
BetheBloch : Emin= 7.9452 MeV Emax= 10 TeV
|
||||
|
||||
msc: for anti_proton SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for anti_proton SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 10 TeV
|
||||
|
||||
hBrems: for anti_proton SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
hPairProd: for anti_proton SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for anti_proton, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for kaon+ SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for kaon+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 1.05231 MeV
|
||||
BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV
|
||||
|
||||
hBrems: for kaon+ SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
hPairProd: for kaon+ SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for kaon+, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for kaon- SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for kaon- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 1.05231 MeV
|
||||
BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV
|
||||
|
||||
hBrems: for kaon- SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
hPairProd: for kaon- SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for kaon-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for mu+ SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
muIoni: for mu+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 200 keV
|
||||
BetheBloch : Emin= 200 keV Emax= 1 GeV
|
||||
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
|
||||
|
||||
muBrems: for mu+ SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MuBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
muPairProd: for mu+ SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 17x1001 from 1 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
muPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for mu+, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for mu- SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
muIoni: for mu- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 200 keV
|
||||
BetheBloch : Emin= 200 keV Emax= 1 GeV
|
||||
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
|
||||
|
||||
muBrems: for mu- SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MuBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
muPairProd: for mu- SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 17x1001 from 1 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
muPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for mu-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for pi+ SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for pi+ SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 297.505 keV
|
||||
BetheBloch : Emin= 297.505 keV Emax= 10 TeV
|
||||
|
||||
hBrems: for pi+ SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
hPairProd: for pi+ SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for pi+, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
msc: for pi- SubType= 10
|
||||
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 180
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for pi- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 297.505 keV
|
||||
BetheBloch : Emin= 297.505 keV Emax= 10 TeV
|
||||
|
||||
hBrems: for pi- SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hBrem : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
hPairProd: for pi- SubType= 4
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Lambda table from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
====================================================================
|
||||
HADRONIC PROCESSES SUMMARY (verbose level 1)
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for neutron
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticCHIPS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: ChipsNeutronElasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: neutronInelastic
|
||||
Model: FTFP: 4 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 5 GeV
|
||||
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: nCapture
|
||||
Model: nRadCapture: 0 eV ---> 100 TeV
|
||||
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaCaptureXS: 0 eV ---> 100 TeV
|
||||
|
||||
Process: nKiller
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for GenericIon
|
||||
|
||||
Process: ionInelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
|
||||
Model: FTFP: 2 GeV ---> 100 TeV
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for He3
|
||||
|
||||
Process: He3Inelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
|
||||
Model: FTFP: 2 GeV ---> 100 TeV
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for alpha
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: alphaInelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
|
||||
Model: FTFP: 2 GeV ---> 100 TeV
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for anti_He3
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
|
||||
Model: AntiAElastic: 100 MeV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_He3Inelastic
|
||||
Model: FTFP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for anti_alpha
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
|
||||
Model: AntiAElastic: 100 MeV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_alphaInelastic
|
||||
Model: FTFP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for anti_deuteron
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
|
||||
Model: AntiAElastic: 100 MeV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_deuteronInelastic
|
||||
Model: FTFP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for anti_neutron
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_neutronInelastic
|
||||
Model: FTFP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for anti_proton
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
|
||||
Model: AntiAElastic: 100 MeV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_protonInelastic
|
||||
Model: FTFP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for anti_triton
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
|
||||
Model: AntiAElastic: 100 MeV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_tritonInelastic
|
||||
Model: FTFP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for deuteron
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: dInelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
|
||||
Model: FTFP: 2 GeV ---> 100 TeV
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for e+
|
||||
|
||||
Process: positronNuclear
|
||||
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
|
||||
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for e-
|
||||
|
||||
Process: electronNuclear
|
||||
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
|
||||
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for gamma
|
||||
|
||||
Process: photonNuclear
|
||||
Model: BertiniCascade: 0 eV ---> 3.5 GeV
|
||||
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
|
||||
Cr_sctns: PhotoNuclearXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for kaon+
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: kaon+Inelastic
|
||||
Model: FTFP: 4 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 5 GeV
|
||||
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for kaon-
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: kaon-Inelastic
|
||||
Model: FTFP: 4 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 5 GeV
|
||||
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hBertiniCaptureAtRest
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for lambda
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: lambdaInelastic
|
||||
Model: BertiniCascade: 0 eV ---> 6 GeV
|
||||
Model: FTFP: 2 GeV ---> 100 TeV
|
||||
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for mu+
|
||||
|
||||
Process: muonNuclear
|
||||
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
|
||||
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for mu-
|
||||
|
||||
Process: muonNuclear
|
||||
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
|
||||
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
|
||||
|
||||
Process: muMinusCaptureAtRest
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for pi+
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
|
||||
Model: hElasticGlauber: 1 GeV ---> 100 TeV
|
||||
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: pi+Inelastic
|
||||
Model: FTFP: 4 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 5 GeV
|
||||
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
|
||||
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
|
||||
below 91 GeV, Glauber-Gribov above
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for pi-
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
|
||||
Model: hElasticGlauber: 1 GeV ---> 100 TeV
|
||||
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: pi-Inelastic
|
||||
Model: FTFP: 4 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 5 GeV
|
||||
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
|
||||
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
|
||||
below 91 GeV, Glauber-Gribov above
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hBertiniCaptureAtRest
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for proton
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticCHIPS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: ChipsProtonElasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: protonInelastic
|
||||
Model: FTFP: 4 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 5 GeV
|
||||
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for triton
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: tInelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
|
||||
Model: FTFP: 2 GeV ---> 100 TeV
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
================================================================
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- -- appears in <World> world volume
|
||||
This region is in the mass world.
|
||||
Root logical volume(s) : World
|
||||
Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0]
|
||||
Materials : Galactic Lead Scintillator
|
||||
Production cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
|
||||
Region <DefaultRegionForParallelWorld> -- -- is not associated to any world.
|
||||
Root logical volume(s) :
|
||||
Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0]
|
||||
Materials :
|
||||
Production cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
|
||||
========= Table of registered couples ==============================
|
||||
|
||||
Index : 0 used in the geometry : Yes
|
||||
Material : Galactic
|
||||
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV proton 70 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 1 used in the geometry : Yes
|
||||
Material : Lead
|
||||
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
Energy thresholds : gamma 94.5861 keV e- 1.00386 MeV e+ 951.321 keV proton 70 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 2 used in the geometry : Yes
|
||||
Material : Scintillator
|
||||
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
Energy thresholds : gamma 2.09434 keV e- 281.891 keV e+ 276.265 keV proton 70 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
====================================================================
|
||||
|
||||
Start closing geometry.
|
||||
G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
|
||||
Total memory consumed for geometry optimisation: 0 kByte
|
||||
Total CPU time elapsed for geometry optimisation: 0 seconds
|
||||
|
||||
Voxelisation: top CPU users:
|
||||
Percent Total CPU System CPU Memory Volume
|
||||
------- ---------- ---------- -------- ----------
|
||||
0.00 0.00 0.00 1k Calor
|
||||
|
||||
Voxelisation: top memory users:
|
||||
Percent Memory Heads Nodes Pointers Total CPU Volume
|
||||
------- -------- ------ ------ -------- ---------- ----------
|
||||
100.00 0k 1 10 10 0.00 Calor
|
||||
GB03BOptrGeometryBasedBiasing : starting run with splitting factor = 2, and probability for applying the technique 1 .
|
||||
### Run 0 starts.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=0.17s Real=0.17s Sys=0s
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- -- appears in <World> world volume
|
||||
This region is in the mass world.
|
||||
Root logical volume(s) : World
|
||||
Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0]
|
||||
Materials : Galactic Lead Scintillator
|
||||
Production cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
|
||||
Region <DefaultRegionForParallelWorld> -- -- is not associated to any world.
|
||||
Root logical volume(s) :
|
||||
Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0]
|
||||
Materials :
|
||||
Production cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
|
||||
========= Table of registered couples ==============================
|
||||
|
||||
Index : 0 used in the geometry : Yes
|
||||
Material : Galactic
|
||||
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV proton 70 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 1 used in the geometry : Yes
|
||||
Material : Lead
|
||||
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
Energy thresholds : gamma 94.5861 keV e- 1.00386 MeV e+ 951.321 keV proton 70 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 2 used in the geometry : Yes
|
||||
Material : Scintillator
|
||||
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
|
||||
Energy thresholds : gamma 2.09434 keV e- 281.891 keV e+ 276.265 keV proton 70 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
====================================================================
|
||||
|
||||
Start closing geometry.
|
||||
G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
|
||||
Total memory consumed for geometry optimisation: 1 kByte
|
||||
Total CPU time elapsed for geometry optimisation: 0 seconds
|
||||
|
||||
Voxelisation: top CPU users:
|
||||
Percent Total CPU System CPU Memory Volume
|
||||
------- ---------- ---------- -------- ----------
|
||||
0.00 0.00 0.00 1k Calor
|
||||
|
||||
Voxelisation: top memory users:
|
||||
Percent Memory Heads Nodes Pointers Total CPU Volume
|
||||
------- -------- ------ ------ -------- ---------- ----------
|
||||
100.00 1k 1 20 20 0.00 Calor
|
||||
GB03BOptrGeometryBasedBiasing : starting run with splitting factor = 2, and probability for applying the technique 0.5 .
|
||||
### Run 1 starts.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=1.27s Real=1.28s Sys=0.01s
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
G4 kernel has come to Quit state.
|
||||
UserDetectorConstruction deleted.
|
||||
UserPhysicsList deleted.
|
||||
UserActionInitialization deleted.
|
||||
UserPrimaryGenerator deleted.
|
||||
RunManager is deleting RunManagerKernel.
|
||||
G4SDManager deleted.
|
||||
EventManager deleted.
|
||||
Units table cleared.
|
||||
Total navigation history collections cleaned: 95
|
||||
================== Deleting memory pools ===================
|
||||
Number of memory pools allocated: 12 of which, static: 0
|
||||
Dynamic pools deleted: 12 / Total memory freed: 0.16 Mb
|
||||
============================================================
|
||||
G4Allocator objects are deleted.
|
||||
UImanager deleted.
|
||||
StateManager deleted.
|
||||
RunManagerKernel is deleted. Good bye :)
|
||||
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03ActionInitialization.hh
|
||||
/// \brief Definition of the GB03ActionInitialization class
|
||||
|
||||
#ifndef GB03ActionInitialization_H
|
||||
#define GB03ActionInitialization_H 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VUserActionInitialization.hh"
|
||||
|
||||
class GB03ActionInitialization : public G4VUserActionInitialization
|
||||
{
|
||||
public:
|
||||
GB03ActionInitialization();
|
||||
virtual ~GB03ActionInitialization();
|
||||
|
||||
virtual void Build() const;
|
||||
virtual void BuildForMaster() const;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03BOptnSplitOrKillOnBoundary.hh
|
||||
/// \brief Definition of the GB03BOptnSplitOrKillOnBoundary class
|
||||
|
||||
#ifndef GB03BOptnSplitOrKillOnBoundary_hh
|
||||
#define GB03BOptnSplitOrKillOnBoundary_hh 1
|
||||
|
||||
#include "G4VBiasingOperation.hh"
|
||||
#include "G4ParticleChange.hh"
|
||||
#include "G4ParticleChangeForNothing.hh"
|
||||
class G4LogicalVolume;
|
||||
|
||||
|
||||
class GB03BOptnSplitOrKillOnBoundary : public G4VBiasingOperation {
|
||||
public:
|
||||
// -- Constructor :
|
||||
GB03BOptnSplitOrKillOnBoundary(G4String name);
|
||||
// -- destructor:
|
||||
virtual ~GB03BOptnSplitOrKillOnBoundary();
|
||||
|
||||
public:
|
||||
// ----------------------------------------------
|
||||
// -- Methods from G4VBiasingOperation interface:
|
||||
// ----------------------------------------------
|
||||
// -- Unused:
|
||||
virtual const G4VBiasingInteractionLaw*
|
||||
ProvideOccurenceBiasingInteractionLaw( const G4BiasingProcessInterface*,
|
||||
G4ForceCondition& ) {return 0;}
|
||||
virtual G4VParticleChange*
|
||||
ApplyFinalStateBiasing ( const G4BiasingProcessInterface*,
|
||||
const G4Track*,
|
||||
const G4Step*,
|
||||
G4bool& ) {return 0;}
|
||||
|
||||
// -- Used methods ("non-physics biasing methods"):
|
||||
// ------------------------------------------------
|
||||
// -- Method to return the distance or the condition under which
|
||||
// -- requesting the biasing. The "condition" flag will be indeed
|
||||
// -- used to apply the operation on the geometry boundary.
|
||||
virtual G4double
|
||||
DistanceToApplyOperation ( const G4Track*,
|
||||
G4double,
|
||||
G4ForceCondition* condition );
|
||||
// -- Method the generate the final state, ie, either the final states
|
||||
// -- corresponding to the splitting or killing cases:
|
||||
virtual G4VParticleChange*
|
||||
GenerateBiasingFinalState ( const G4Track*,
|
||||
const G4Step* );
|
||||
|
||||
// -- Specific to this example:
|
||||
// ----------------------------
|
||||
// -- Set the integer splitting factor (should be >= 2):
|
||||
// -- This determines also the killing probability : 1/splittingFactor
|
||||
void SetSplittingFactor( G4int splittingFactor )
|
||||
{ fSplittingFactor = splittingFactor; }
|
||||
// -- An "invention" (?) of this example: defines a probability
|
||||
// -- to apply the splitting(killing) techniques:
|
||||
// -- - If proba == 1, the technique is applied normally
|
||||
// -- - if proba < 1 (say 70%) then the splitting(killing) is
|
||||
// -- applied in only 70% of the cases.
|
||||
// -- This "trick" is useful when the desired splitting factor
|
||||
// -- would rather be a non-integer value, ie in case where:
|
||||
// -- splittingFactor = k is (a bit) too small
|
||||
// -- splittingFactor = k+1 is (a bit) too large
|
||||
// -- then the proba can allow to tune an in between application
|
||||
// -- of the technique.
|
||||
// -- Specially useful when wanting to split between "1 and 2".
|
||||
void SetApplyProbability( G4double proba )
|
||||
{ fApplyProbability = proba; }
|
||||
|
||||
G4int GetSplittingFactor() const { return fSplittingFactor; }
|
||||
G4double GetApplyProbability() const { return fApplyProbability; }
|
||||
|
||||
private:
|
||||
G4ParticleChange fParticleChange;
|
||||
G4ParticleChangeForNothing fParticleChangeForNothing;
|
||||
G4int fSplittingFactor;
|
||||
G4double fApplyProbability;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,91 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03BOptrGeometryBasedBiasing.hh
|
||||
/// \brief Definition of the GB03BOptrGeometryBasedBiasing class
|
||||
|
||||
#ifndef GB03BOptrGeometryBasedBiasing_h
|
||||
#define GB03BOptrGeometryBasedBiasing_h 1
|
||||
|
||||
#include "G4VBiasingOperator.hh"
|
||||
#include "GB03BOptnSplitOrKillOnBoundary.hh"
|
||||
class G4GenericMessenger;
|
||||
|
||||
/// Biasing operator class.
|
||||
|
||||
class GB03BOptrGeometryBasedBiasing : public G4VBiasingOperator
|
||||
{
|
||||
public:
|
||||
GB03BOptrGeometryBasedBiasing();
|
||||
virtual ~GB03BOptrGeometryBasedBiasing();
|
||||
|
||||
public:
|
||||
// ------------------------------
|
||||
// Method added for this example:
|
||||
// ------------------------------
|
||||
GB03BOptnSplitOrKillOnBoundary* GetSplitAndKillOperation() const
|
||||
{ return fSplitAndKillOperation; }
|
||||
|
||||
// -------------------------
|
||||
// Optional from base class:
|
||||
// -------------------------
|
||||
void StartRun();
|
||||
|
||||
private:
|
||||
// --------------------------
|
||||
// Mandatory from base class:
|
||||
// --------------------------
|
||||
// Used for splitting/killing:
|
||||
virtual G4VBiasingOperation*
|
||||
ProposeNonPhysicsBiasingOperation( const G4Track* track,
|
||||
const G4BiasingProcessInterface* callingProcess );
|
||||
|
||||
// Not used here:
|
||||
virtual G4VBiasingOperation*
|
||||
ProposeOccurenceBiasingOperation( const G4Track*,
|
||||
const G4BiasingProcessInterface* ) { return 0; }
|
||||
// Not used here:
|
||||
virtual G4VBiasingOperation*
|
||||
ProposeFinalStateBiasingOperation( const G4Track*,
|
||||
const G4BiasingProcessInterface* ) { return 0; }
|
||||
|
||||
|
||||
private:
|
||||
GB03BOptnSplitOrKillOnBoundary* fSplitAndKillOperation;
|
||||
G4int fSplittingFactor;
|
||||
G4double fApplyProbability;
|
||||
// Messengers to change the
|
||||
G4GenericMessenger* fSplittingFactorMessenger;
|
||||
G4GenericMessenger* fApplyProbabilityMessenger;
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03DetectorConstruction.hh
|
||||
/// \brief Definition of the GB03DetectorConstruction class
|
||||
|
||||
#ifndef GB03DetectorConstruction_h
|
||||
#define GB03DetectorConstruction_h 1
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4LogicalVolume;
|
||||
class G4VPhysicalVolume;
|
||||
class G4PVReplica;
|
||||
class G4Material;
|
||||
class G4Box;
|
||||
class GB03DetectorMessenger;
|
||||
|
||||
class GB03DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
GB03DetectorConstruction();
|
||||
virtual ~GB03DetectorConstruction();
|
||||
|
||||
virtual G4VPhysicalVolume* Construct();
|
||||
virtual void ConstructSDandField();
|
||||
|
||||
void PrintCalorParameters() const;
|
||||
void SetAbsorberMaterial(G4String materialChoice);
|
||||
G4String GetAbsorberMaterial() const;
|
||||
void SetGapMaterial(G4String materialChoice);
|
||||
G4String GetGapMaterial() const;
|
||||
void SetNumberOfLayers(G4int nl);
|
||||
static G4int GetNumberOfLayers() { return fNumberOfLayers; }
|
||||
|
||||
G4int GetVerboseLevel() const { return fVerboseLevel; }
|
||||
void SetVerboseLevel(G4int val) { fVerboseLevel = val; }
|
||||
|
||||
private:
|
||||
void DefineMaterials();
|
||||
void SetupGeometry();
|
||||
void SetupDetectors();
|
||||
void SetupBiasing();
|
||||
|
||||
// data members
|
||||
static G4int fNumberOfLayers;
|
||||
|
||||
G4double fTotalThickness; /// total thinkness of one calorimeter
|
||||
G4double fLayerThickness; /// = fTotalThickness / fNumberOfLayers
|
||||
|
||||
G4bool fConstructed;
|
||||
static G4ThreadLocal G4bool fConstructedSDandField;
|
||||
|
||||
G4String fCalName;
|
||||
|
||||
G4Material* fWorldMaterial;
|
||||
G4Material* fAbsorberMaterial;
|
||||
G4Material* fGapMaterial;
|
||||
|
||||
G4Box* fLayerSolid;
|
||||
G4Box* fGapSolid;
|
||||
|
||||
G4LogicalVolume* fWorldLogical;
|
||||
G4LogicalVolume* fCalorLogical;
|
||||
G4LogicalVolume* fLayerLogical;
|
||||
G4LogicalVolume* fGapLogical;
|
||||
|
||||
G4VPhysicalVolume* fWorldPhysical;
|
||||
G4VPhysicalVolume* fCalorPhysical;
|
||||
G4PVReplica* fLayerPhysical;
|
||||
G4VPhysicalVolume* fGapPhysical;
|
||||
|
||||
GB03DetectorMessenger* fDetectorMessenger;
|
||||
|
||||
G4int fVerboseLevel;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03DetectorMessenger.hh
|
||||
/// \brief Definition of the GB03DetectorMessenger class
|
||||
|
||||
#ifndef GB03DetectorMessenger_h
|
||||
#define GB03DetectorMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class GB03DetectorConstruction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithABool;
|
||||
class G4UIcmdWithAnInteger;
|
||||
|
||||
class GB03DetectorMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
GB03DetectorMessenger(GB03DetectorConstruction* );
|
||||
virtual ~GB03DetectorMessenger();
|
||||
|
||||
virtual void SetNewValue(G4UIcommand*, G4String);
|
||||
virtual G4String GetCurrentValue(G4UIcommand * command);
|
||||
|
||||
private:
|
||||
GB03DetectorConstruction* fDetector;
|
||||
|
||||
G4UIdirectory* fDirectory;
|
||||
G4UIcmdWithAString* fAbsMaterialCmd;
|
||||
G4UIcmdWithAString* fGapMaterialCmd;
|
||||
G4UIcmdWithAnInteger* fNumLayerCmd;
|
||||
G4UIcmdWithAnInteger* fVerboseCmd;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03PrimaryGeneratorAction.hh
|
||||
/// \brief Definition of the GB03PrimaryGeneratorAction class
|
||||
|
||||
#ifndef GB03PrimaryGeneratorAction_h
|
||||
#define GB03PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4ParticleGun;
|
||||
class G4Event;
|
||||
|
||||
class GB03PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
GB03PrimaryGeneratorAction();
|
||||
virtual ~GB03PrimaryGeneratorAction();
|
||||
|
||||
virtual void GeneratePrimaries(G4Event*);
|
||||
|
||||
private:
|
||||
G4ParticleGun* fParticleGun;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03ActionInitialization.cc
|
||||
/// \brief Implementation of the GB03ActionInitialization class
|
||||
|
||||
#include "GB03ActionInitialization.hh"
|
||||
#include "GB03PrimaryGeneratorAction.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03ActionInitialization::GB03ActionInitialization()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03ActionInitialization::~GB03ActionInitialization()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03ActionInitialization::Build() const
|
||||
{
|
||||
SetUserAction(new GB03PrimaryGeneratorAction);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03ActionInitialization::BuildForMaster() const
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,171 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03BOptnSplitOrKillOnBoundary.cc
|
||||
/// \brief Implementation of the GB03BOptnSplitOrKillOnBoundary class
|
||||
|
||||
#include "Randomize.hh"
|
||||
#include "GB03BOptnSplitOrKillOnBoundary.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03BOptnSplitOrKillOnBoundary::GB03BOptnSplitOrKillOnBoundary(G4String name)
|
||||
: G4VBiasingOperation(name),
|
||||
fParticleChange(),
|
||||
fParticleChangeForNothing()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03BOptnSplitOrKillOnBoundary::~GB03BOptnSplitOrKillOnBoundary()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double GB03BOptnSplitOrKillOnBoundary::
|
||||
DistanceToApplyOperation( const G4Track*,
|
||||
G4double,
|
||||
G4ForceCondition* condition)
|
||||
{
|
||||
// -- return "infinite" distance for interaction, but asks for GenerateBiasingFinalState
|
||||
// -- being called anyway at the end of the step, by returning the "Forced" condition
|
||||
// -- flag.
|
||||
*condition = Forced;
|
||||
return DBL_MAX;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VParticleChange*
|
||||
GB03BOptnSplitOrKillOnBoundary::GenerateBiasingFinalState( const G4Track* track,
|
||||
const G4Step* step )
|
||||
{
|
||||
|
||||
// Check if step is limited by the geometry: as we attached the biasing operator
|
||||
// to the absorber layer, this volume boundary is the one of the absorber.
|
||||
// (check of current step # of track is inelegant, but is to fix a "feature"
|
||||
// that a cloned track can wrongly be seen in the wrong volume, because of numerical
|
||||
// precision issue. In this case it makes a tiny step, which should be disregarded).
|
||||
if ( ( step->GetPostStepPoint()->GetStepStatus() == fGeomBoundary ) &&
|
||||
( track->GetCurrentStepNumber() != 1 ) )
|
||||
{
|
||||
|
||||
// -- Before deciding for killing or splitting, we make decision on applying
|
||||
// -- the technique or not:
|
||||
G4double trial = G4UniformRand(); // -- Note: G4UniformRand() is thread-safe
|
||||
// -- engine for random numbers
|
||||
if ( trial <= fApplyProbability )
|
||||
{
|
||||
// -- Get z component of track, to see if it moves forward or backward:
|
||||
G4double pz = track->GetMomentum().z();
|
||||
|
||||
if ( pz > 0.0 )
|
||||
{
|
||||
// -------------------------------------------------
|
||||
// Here, we are moving "forward". We do "splitting":
|
||||
// -------------------------------------------------
|
||||
|
||||
// Get track weight:
|
||||
G4double initialWeight = track->GetWeight();
|
||||
// Define the tracks weight:
|
||||
G4double weightOfTrack = initialWeight/fSplittingFactor;
|
||||
|
||||
// The "particle change" is the object to be used to communicate to
|
||||
// the tracking the update of the primary state and/or creation
|
||||
// secondary tracks.
|
||||
fParticleChange.Initialize(*track);
|
||||
|
||||
// ask currect track weight to be changed to new value:
|
||||
fParticleChange.ProposeParentWeight( weightOfTrack );
|
||||
|
||||
// Now make clones of this track (this is the actual splitting):
|
||||
// we will then have the primary and N-1 clones of it, hence the
|
||||
// splitting by a factor N:
|
||||
fParticleChange.SetNumberOfSecondaries( fSplittingFactor-1 );
|
||||
for ( G4int iSplit = 1 ; iSplit < fSplittingFactor ; iSplit++ )
|
||||
{
|
||||
G4Track* clone = new G4Track( *track );
|
||||
clone->SetWeight( weightOfTrack );
|
||||
fParticleChange.AddSecondary( clone );
|
||||
}
|
||||
fParticleChange.SetSecondaryWeightByProcess(true); // -- tricky
|
||||
// -- take it as is ;) [though not necessary here, put for safety]
|
||||
|
||||
// this new final state is returned to the tracking;
|
||||
return &fParticleChange;
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
|
||||
{
|
||||
// --------------------------------------------------------------
|
||||
// Here, we are moving backward. We do killing, playing a russian
|
||||
// roulette, killing 1/fSplittingFactor of the tracks in average:
|
||||
// --------------------------------------------------------------
|
||||
|
||||
// Get track weight:
|
||||
G4double initialWeight = track->GetWeight();
|
||||
|
||||
// The "particle change" is the object to be used to communicate to
|
||||
// the tracking the update of the primary state and/or creation
|
||||
// secondary tracks.
|
||||
fParticleChange.Initialize(*track);
|
||||
|
||||
// Shoot a random number (in ]0,1[ segment):
|
||||
G4double random = G4UniformRand();
|
||||
|
||||
// Decide to kill with 1/fSplittingFactor probability:
|
||||
G4double killingProbability = 1.0/fSplittingFactor;
|
||||
if ( random < killingProbability )
|
||||
{
|
||||
// We ask for the the track to be killed:
|
||||
fParticleChange.ProposeTrackStatus(fStopAndKill);
|
||||
}
|
||||
else
|
||||
{
|
||||
// In this case, the track survives. We change its weight
|
||||
// to conserve weight among killed and survival tracks:
|
||||
fParticleChange.ProposeParentWeight( initialWeight*fSplittingFactor );
|
||||
}
|
||||
|
||||
// this new final state is returned to the tracking;
|
||||
return &fParticleChange;
|
||||
}
|
||||
} // -- end of : if ( trial > probaForApplying )
|
||||
} // -- end of : if ( ( step->GetPostStepPoint()->GetStepStatus() ==
|
||||
// fGeomBoundary ) ...
|
||||
|
||||
|
||||
// Here, the step was not limited by the geometry (but certainly by a physics
|
||||
// process). We do nothing: ie we make no change to the current track.
|
||||
fParticleChangeForNothing.Initialize(*track);
|
||||
return &fParticleChangeForNothing;
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,94 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03BOptrGeometryBasedBiasing.cc
|
||||
/// \brief Implementation of the GB03BOptrGeometryBasedBiasing class
|
||||
|
||||
#include "GB03BOptrGeometryBasedBiasing.hh"
|
||||
#include "G4Track.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4GenericMessenger.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03BOptrGeometryBasedBiasing::GB03BOptrGeometryBasedBiasing()
|
||||
: G4VBiasingOperator("GB03BOptrGeometryBasedBiasing"),
|
||||
fSplittingFactor(2),
|
||||
fApplyProbability(1.0)
|
||||
{
|
||||
fSplitAndKillOperation = new GB03BOptnSplitOrKillOnBoundary("splitAndkill");
|
||||
|
||||
// -- Define messengers:
|
||||
fSplittingFactorMessenger =
|
||||
new G4GenericMessenger(this, "/GB03/biasing/","Biasing control" );
|
||||
|
||||
G4GenericMessenger::Command& splittingFactorCmd =
|
||||
fSplittingFactorMessenger->DeclareProperty("setSplittingFactor", fSplittingFactor,
|
||||
"Define the splitting factor." );
|
||||
splittingFactorCmd.SetStates(G4State_Idle);
|
||||
|
||||
fApplyProbabilityMessenger =
|
||||
new G4GenericMessenger(this, "/GB03/biasing/","Biasing control" );
|
||||
|
||||
G4GenericMessenger::Command& applyProbCmd =
|
||||
fApplyProbabilityMessenger->DeclareProperty("setApplyProbability", fApplyProbability,
|
||||
"Define the probability to apply the splitting/killing." );
|
||||
applyProbCmd.SetStates(G4State_Idle);
|
||||
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03BOptrGeometryBasedBiasing::~GB03BOptrGeometryBasedBiasing()
|
||||
{
|
||||
delete fSplitAndKillOperation;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03BOptrGeometryBasedBiasing::StartRun()
|
||||
{
|
||||
fSplitAndKillOperation->SetSplittingFactor ( fSplittingFactor );
|
||||
fSplitAndKillOperation->SetApplyProbability( fApplyProbability );
|
||||
G4cout << GetName() << " : starting run with splitting factor = " << fSplittingFactor
|
||||
<< ", and probability for applying the technique " << fApplyProbability
|
||||
<< " . " << G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VBiasingOperation*
|
||||
GB03BOptrGeometryBasedBiasing::
|
||||
ProposeNonPhysicsBiasingOperation( const G4Track* /* track */,
|
||||
const G4BiasingProcessInterface* /* callingProcess */ )
|
||||
{
|
||||
// Here, we always return the split and kill biasing operation:
|
||||
return fSplitAndKillOperation;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,413 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03DetectorConstruction.cc
|
||||
/// \brief Implementation of the GB03DetectorConstruction class
|
||||
|
||||
|
||||
#include "GB03DetectorConstruction.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4PVReplica.hh"
|
||||
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
|
||||
#include "G4SDManager.hh"
|
||||
#include "G4MultiFunctionalDetector.hh"
|
||||
#include "G4PSEnergyDeposit.hh"
|
||||
#include "G4PSFlatSurfaceFlux.hh"
|
||||
#include "G4SDNeutralFilter.hh"
|
||||
#include "G4SDChargedFilter.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
#include "GB03DetectorMessenger.hh"
|
||||
|
||||
#include "GB03BOptrGeometryBasedBiasing.hh"
|
||||
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
G4int GB03DetectorConstruction::fNumberOfLayers = 40;
|
||||
G4ThreadLocal G4bool GB03DetectorConstruction::fConstructedSDandField = false;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03DetectorConstruction::GB03DetectorConstruction()
|
||||
: G4VUserDetectorConstruction(),
|
||||
fTotalThickness (2.0*m), fLayerThickness(0.),
|
||||
fConstructed(false),
|
||||
fWorldMaterial(0), fAbsorberMaterial(0), fGapMaterial(0),
|
||||
fLayerSolid(0), fGapSolid(0),
|
||||
fWorldLogical(0), fCalorLogical(0), fLayerLogical(0), fGapLogical(0),
|
||||
fWorldPhysical(0), fCalorPhysical(0), fLayerPhysical(0), fGapPhysical(0),
|
||||
fDetectorMessenger(0), fVerboseLevel(1)
|
||||
{
|
||||
fLayerThickness = fTotalThickness / fNumberOfLayers;
|
||||
fCalName = "Calor";
|
||||
fDetectorMessenger = new GB03DetectorMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03DetectorConstruction::~GB03DetectorConstruction()
|
||||
{ delete fDetectorMessenger;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VPhysicalVolume* GB03DetectorConstruction::Construct()
|
||||
{
|
||||
if(!fConstructed)
|
||||
{
|
||||
fConstructed = true;
|
||||
DefineMaterials();
|
||||
SetupGeometry();
|
||||
}
|
||||
if (GetVerboseLevel()>0)
|
||||
{ PrintCalorParameters(); }
|
||||
|
||||
return fWorldPhysical;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::ConstructSDandField()
|
||||
{
|
||||
if(!fConstructedSDandField)
|
||||
{
|
||||
fConstructedSDandField = true;
|
||||
SetupDetectors();
|
||||
SetupBiasing();
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::DefineMaterials()
|
||||
{
|
||||
G4String name, symbol; //a=mass of a mole;
|
||||
G4double a, z, density; //z=mean number of protons;
|
||||
G4int iz; //iz=number of protons in an isotope;
|
||||
G4int n; // n=number of nucleons in an isotope;
|
||||
|
||||
G4int ncomponents, natoms;
|
||||
G4double abundance, fractionmass;
|
||||
G4double temperature, pressure;
|
||||
|
||||
//
|
||||
// define Elements
|
||||
//
|
||||
|
||||
a = 1.01*g/mole;
|
||||
G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
|
||||
|
||||
a = 12.01*g/mole;
|
||||
G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a);
|
||||
|
||||
a = 14.01*g/mole;
|
||||
G4Element* N = new G4Element(name="Nitrogen",symbol="N" , z= 7., a);
|
||||
|
||||
a = 16.00*g/mole;
|
||||
G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a);
|
||||
|
||||
//
|
||||
// define an Element from isotopes, by relative abundance
|
||||
//
|
||||
|
||||
G4Isotope* U5 = new G4Isotope(name="U235", iz=92, n=235, a=235.01*g/mole);
|
||||
G4Isotope* U8 = new G4Isotope(name="U238", iz=92, n=238, a=238.03*g/mole);
|
||||
|
||||
G4Element* U = new G4Element(name="enriched Uranium",symbol="U",ncomponents=2);
|
||||
U->AddIsotope(U5, abundance= 90.*perCent);
|
||||
U->AddIsotope(U8, abundance= 10.*perCent);
|
||||
|
||||
//
|
||||
// define simple materials
|
||||
//
|
||||
|
||||
new G4Material(name="Aluminium", z=13., a=26.98*g/mole, density=2.700*g/cm3);
|
||||
new G4Material(name="Silicon", z=14., a= 28.09*g/mole, density= 2.33*g/cm3);
|
||||
new G4Material(name="Iron", z=26., a=55.85*g/mole, density=7.87*g/cm3);
|
||||
new G4Material(name="ArgonGas",z=18., a= 39.95*g/mole, density=1.782*mg/cm3);
|
||||
new G4Material(name="He", z=2., a=4.0*g/mole, density=0.1786e-03*g/cm3);
|
||||
|
||||
density = 1.390*g/cm3;
|
||||
a = 39.95*g/mole;
|
||||
new G4Material(name="liquidArgon", z=18., a, density);
|
||||
|
||||
density = 11.35*g/cm3;
|
||||
a = 207.19*g/mole;
|
||||
G4Material* Pb = new G4Material(name="Lead" , z=82., a, density);
|
||||
|
||||
//
|
||||
// define a material from elements. case 1: chemical molecule
|
||||
//
|
||||
|
||||
density = 1.000*g/cm3;
|
||||
G4Material* H2O = new G4Material(name="Water", density, ncomponents=2);
|
||||
H2O->AddElement(H, natoms=2);
|
||||
H2O->AddElement(O, natoms=1);
|
||||
|
||||
density = 1.032*g/cm3;
|
||||
G4Material* Sci = new G4Material(name="Scintillator", density, ncomponents=2);
|
||||
Sci->AddElement(C, natoms=9);
|
||||
Sci->AddElement(H, natoms=10);
|
||||
|
||||
//
|
||||
// define a material from elements. case 2: mixture by fractional mass
|
||||
//
|
||||
|
||||
density = 1.290*mg/cm3;
|
||||
G4Material* Air = new G4Material(name="Air" , density, ncomponents=2);
|
||||
Air->AddElement(N, fractionmass=0.7);
|
||||
Air->AddElement(O, fractionmass=0.3);
|
||||
|
||||
//
|
||||
// examples of vacuum
|
||||
//
|
||||
|
||||
density = universe_mean_density;
|
||||
pressure = 3.e-18*pascal;
|
||||
temperature = 2.73*kelvin;
|
||||
G4Material* Vacuum = new G4Material(name="Galactic", z=1., a=1.01*g/mole,
|
||||
density,kStateGas,temperature,pressure);
|
||||
|
||||
if (GetVerboseLevel()>1) {
|
||||
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
|
||||
}
|
||||
|
||||
//default materials of the calorimeter
|
||||
fWorldMaterial = Vacuum;
|
||||
fAbsorberMaterial = Pb;
|
||||
fGapMaterial = Sci;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::SetupGeometry()
|
||||
{
|
||||
//
|
||||
// World
|
||||
//
|
||||
G4VSolid* worldSolid = new G4Box("World",2.*m,2.*m,fTotalThickness*2.);
|
||||
fWorldLogical = new G4LogicalVolume(worldSolid,fWorldMaterial,"World");
|
||||
fWorldPhysical = new G4PVPlacement(0,G4ThreeVector(),fWorldLogical,"World",
|
||||
0,false,0);
|
||||
|
||||
//
|
||||
// Calorimeter
|
||||
//
|
||||
G4VSolid* calorSolid = new G4Box("Calor",0.5*m,0.5*m,fTotalThickness/2.);
|
||||
fCalorLogical = new G4LogicalVolume(calorSolid,fAbsorberMaterial,fCalName);
|
||||
fCalorPhysical = new G4PVPlacement(0, G4ThreeVector(0.,0.,0.),
|
||||
fCalorLogical,fCalName,fWorldLogical,false,0);
|
||||
|
||||
//
|
||||
// Layers --- as absorbers
|
||||
//
|
||||
fLayerSolid = new G4Box("Layer",0.5*m,0.5*m,fLayerThickness/2.);
|
||||
fLayerLogical
|
||||
= new G4LogicalVolume(fLayerSolid,fAbsorberMaterial,fCalName+"_LayerLog");
|
||||
fLayerPhysical
|
||||
= new G4PVReplica(fCalName+"_Layer",fLayerLogical,fCalorLogical,
|
||||
kZAxis,fNumberOfLayers,fLayerThickness);
|
||||
|
||||
//
|
||||
// Gap
|
||||
//
|
||||
fGapSolid = new G4Box("Gap",0.5*m,0.5*m,fLayerThickness/4.);
|
||||
fGapLogical = new G4LogicalVolume(fGapSolid,fGapMaterial,fCalName+"_Gap");
|
||||
fGapPhysical = new G4PVPlacement(0,G4ThreeVector(0.,0.,fLayerThickness/4.),
|
||||
fGapLogical,fCalName+"_gap",fLayerLogical,false,0);
|
||||
|
||||
//
|
||||
// Visualization attributes
|
||||
//
|
||||
fWorldLogical->SetVisAttributes(G4VisAttributes::Invisible);
|
||||
G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0));
|
||||
simpleBoxVisAtt->SetVisibility(true);
|
||||
fCalorLogical->SetVisAttributes(simpleBoxVisAtt);
|
||||
fLayerLogical->SetVisAttributes(simpleBoxVisAtt);
|
||||
fGapLogical->SetVisAttributes(simpleBoxVisAtt);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::SetupDetectors()
|
||||
{
|
||||
G4SDManager::GetSDMpointer()->SetVerboseLevel(1);
|
||||
G4String filterName;
|
||||
|
||||
G4SDNeutralFilter* neutralFilter
|
||||
= new G4SDNeutralFilter(filterName="neutralFilter");
|
||||
G4SDChargedFilter* chargedFilter
|
||||
= new G4SDChargedFilter(filterName="chargedFilter");
|
||||
|
||||
for(G4int j=0;j<2;j++)
|
||||
{
|
||||
// Loop counter j = 0 : absorber
|
||||
// = 1 : gap
|
||||
G4String detName = fCalName;
|
||||
if(j==0)
|
||||
{ detName += "_abs"; }
|
||||
else
|
||||
{ detName += "_gap"; }
|
||||
G4MultiFunctionalDetector* det = new G4MultiFunctionalDetector(detName);
|
||||
|
||||
// The second argument in each primitive means the "level" of geometrical
|
||||
// hierarchy, the copy number of that level is used as the key of the
|
||||
// G4THitsMap.
|
||||
// For absorber (j = 0), the copy number of its own physical volume is used.
|
||||
// For gap (j = 1), the copy number of its mother physical volume is used,
|
||||
// since there is only one physical volume of gap is placed with respect
|
||||
// to its mother.
|
||||
G4VPrimitiveScorer* primitive;
|
||||
primitive = new G4PSEnergyDeposit("eDep",j);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSFlatSurfaceFlux("nNeutral",1,j);
|
||||
primitive->SetFilter(neutralFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSFlatSurfaceFlux("nCharged",1,j);
|
||||
primitive->SetFilter(chargedFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
|
||||
if(j==0)
|
||||
{ SetSensitiveDetector(fLayerLogical, det); }
|
||||
else
|
||||
{ SetSensitiveDetector(fGapLogical, det);}
|
||||
|
||||
}
|
||||
G4SDManager::GetSDMpointer()->SetVerboseLevel(0);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::SetupBiasing()
|
||||
{
|
||||
GB03BOptrGeometryBasedBiasing* biasingOperator = new GB03BOptrGeometryBasedBiasing();
|
||||
biasingOperator->AttachTo(fLayerLogical);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::PrintCalorParameters() const
|
||||
{
|
||||
G4cout
|
||||
<< "--------------------------------------------------------" << G4endl;
|
||||
G4cout
|
||||
<< " Absorber is made of " << fAbsorberMaterial->GetName() << G4endl
|
||||
<< " Gap is made of " << fGapMaterial->GetName() << G4endl
|
||||
<< "--------------------------------------------------------" << G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::SetAbsorberMaterial(G4String materialChoice)
|
||||
{
|
||||
// search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
if(pttoMaterial)
|
||||
{
|
||||
fAbsorberMaterial = pttoMaterial;
|
||||
if(fConstructed)
|
||||
{
|
||||
fCalorLogical->SetMaterial(fAbsorberMaterial);
|
||||
fLayerLogical->SetMaterial(fAbsorberMaterial);
|
||||
}
|
||||
G4RunManager::GetRunManager()->GeometryHasBeenModified();
|
||||
if (GetVerboseLevel()>1) {
|
||||
PrintCalorParameters();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr
|
||||
<< materialChoice << " is not defined. - Command is ignored." << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4String GB03DetectorConstruction::GetAbsorberMaterial() const
|
||||
{ return fAbsorberMaterial->GetName(); }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::SetGapMaterial(G4String materialChoice)
|
||||
{
|
||||
// search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
if(pttoMaterial)
|
||||
{
|
||||
fGapMaterial = pttoMaterial;
|
||||
if(fConstructed)
|
||||
{ fGapLogical->SetMaterial(fGapMaterial); }
|
||||
G4RunManager::GetRunManager()->GeometryHasBeenModified();
|
||||
if (GetVerboseLevel()>1) {
|
||||
PrintCalorParameters();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr
|
||||
<< materialChoice << " is not defined. - Command is ignored." << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4String GB03DetectorConstruction::GetGapMaterial() const
|
||||
{ return fGapMaterial->GetName(); }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorConstruction::SetNumberOfLayers(G4int nl)
|
||||
{
|
||||
fNumberOfLayers = nl;
|
||||
fLayerThickness = fTotalThickness/fNumberOfLayers;
|
||||
if(!fConstructed) return;
|
||||
|
||||
fLayerSolid->SetZHalfLength(fLayerThickness/2.);
|
||||
fGapSolid->SetZHalfLength(fLayerThickness/4.);
|
||||
|
||||
fCalorLogical->RemoveDaughter(fLayerPhysical);
|
||||
delete fLayerPhysical;
|
||||
fLayerPhysical
|
||||
= new G4PVReplica(fCalName+"_Layer",fLayerLogical,fCalorLogical,
|
||||
kZAxis,fNumberOfLayers,fLayerThickness);
|
||||
fGapPhysical->SetTranslation(G4ThreeVector(0.,0.,fLayerThickness/4.));
|
||||
|
||||
G4RunManager::GetRunManager()->GeometryHasBeenModified();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -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$
|
||||
//
|
||||
/// \file GB03/src/GB03DetectorMessenger.cc
|
||||
/// \brief Implementation of the GB03DetectorMessenger class
|
||||
|
||||
#include "GB03DetectorMessenger.hh"
|
||||
|
||||
#include "GB03DetectorConstruction.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithABool.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
#include "G4Material.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03DetectorMessenger::GB03DetectorMessenger(GB03DetectorConstruction* det)
|
||||
: G4UImessenger(), fDetector(det)
|
||||
{
|
||||
fDirectory = new G4UIdirectory("/GB03/");
|
||||
fDirectory->SetGuidance("UI commands of this example");
|
||||
|
||||
G4String matList;
|
||||
const G4MaterialTable* matTbl = G4Material::GetMaterialTable();
|
||||
for(size_t i=0;i<G4Material::GetNumberOfMaterials();i++)
|
||||
{
|
||||
matList += (*matTbl)[i]->GetName();
|
||||
matList += " ";
|
||||
}
|
||||
|
||||
fAbsMaterialCmd = new G4UIcmdWithAString("/GB03/setAbsMat",this);
|
||||
fAbsMaterialCmd->SetGuidance("Select Material of the Absorber.");
|
||||
fAbsMaterialCmd->SetParameterName("choice",false);
|
||||
fAbsMaterialCmd->AvailableForStates(G4State_Idle);
|
||||
fAbsMaterialCmd->SetCandidates(matList);
|
||||
|
||||
fGapMaterialCmd = new G4UIcmdWithAString("/GB03/setGapMat",this);
|
||||
fGapMaterialCmd->SetGuidance("Select Material of the Gap.");
|
||||
fGapMaterialCmd->SetParameterName("choice",false);
|
||||
fGapMaterialCmd->AvailableForStates(G4State_Idle);
|
||||
fGapMaterialCmd->SetCandidates(matList);
|
||||
|
||||
fNumLayerCmd = new G4UIcmdWithAnInteger("/GB03/numberOfLayers",this);
|
||||
fNumLayerCmd->SetGuidance("Set number of layers.");
|
||||
fNumLayerCmd->SetParameterName("nl",false);
|
||||
fNumLayerCmd->AvailableForStates(G4State_Idle);
|
||||
fNumLayerCmd->SetRange("nl>0");
|
||||
|
||||
fVerboseCmd = new G4UIcmdWithAnInteger("/GB03/verbose",this);
|
||||
fVerboseCmd->SetGuidance("Set verbosity level");
|
||||
fVerboseCmd->SetParameterName("verbose",false);
|
||||
fVerboseCmd->AvailableForStates(G4State_Idle);
|
||||
fVerboseCmd->SetRange("verbose>=0");
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03DetectorMessenger::~GB03DetectorMessenger()
|
||||
{
|
||||
delete fAbsMaterialCmd;
|
||||
delete fGapMaterialCmd;
|
||||
delete fNumLayerCmd;
|
||||
delete fVerboseCmd;
|
||||
delete fDirectory;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
{
|
||||
if( command == fAbsMaterialCmd ) {
|
||||
fDetector->SetAbsorberMaterial(newValue);
|
||||
|
||||
} else if( command == fGapMaterialCmd ){
|
||||
fDetector->SetGapMaterial(newValue);
|
||||
|
||||
} else if( command == fNumLayerCmd ) {
|
||||
fDetector->SetNumberOfLayers(fNumLayerCmd->GetNewIntValue(newValue));
|
||||
|
||||
} else if( command == fVerboseCmd ) {
|
||||
fDetector->SetVerboseLevel(fVerboseCmd->GetNewIntValue(newValue));
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4String GB03DetectorMessenger::GetCurrentValue(G4UIcommand * command)
|
||||
{
|
||||
G4String ans;
|
||||
if( command == fAbsMaterialCmd ){
|
||||
ans=fDetector->GetAbsorberMaterial();
|
||||
|
||||
} else if( command == fGapMaterialCmd ){
|
||||
ans=fDetector->GetGapMaterial();
|
||||
|
||||
} else if( command == fNumLayerCmd ) {
|
||||
ans=fNumLayerCmd->ConvertToString(GB03DetectorConstruction::GetNumberOfLayers());
|
||||
|
||||
} else if( command == fVerboseCmd ) {
|
||||
ans=fVerboseCmd->ConvertToString(fDetector->GetVerboseLevel());
|
||||
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB03PrimaryGeneratorAction.cc
|
||||
/// \brief Implementation of the GB03PrimaryGeneratorAction class
|
||||
|
||||
|
||||
#include "GB03PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03PrimaryGeneratorAction::GB03PrimaryGeneratorAction()
|
||||
: G4VUserPrimaryGeneratorAction()
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
fParticleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
// default particle kinematic
|
||||
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
|
||||
G4String particleName;
|
||||
G4ParticleDefinition* particle
|
||||
= particleTable->FindParticle(particleName="neutron");
|
||||
fParticleGun->SetParticleDefinition(particle);
|
||||
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
|
||||
fParticleGun->SetParticlePosition(G4ThreeVector(0.,0.,-3.5*m));
|
||||
fParticleGun->SetParticleEnergy(100.*MeV);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB03PrimaryGeneratorAction::~GB03PrimaryGeneratorAction()
|
||||
{
|
||||
delete fParticleGun;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB03PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
fParticleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,56 @@
|
||||
# Use this open statement to create an OpenGL view:
|
||||
/vis/open OGL 600x600-0+0
|
||||
#
|
||||
# Disable auto refresh and quieten vis messages whilst scene and
|
||||
# trajectories are established:
|
||||
/vis/viewer/set/autoRefresh false
|
||||
/vis/verbose errors
|
||||
#
|
||||
# Draw geometry:
|
||||
/vis/drawVolume worlds
|
||||
#
|
||||
# Specify view angle:
|
||||
/vis/viewer/set/viewpointThetaPhi 105 165 deg
|
||||
#
|
||||
# Specify zoom value:
|
||||
###/vis/viewer/zoom 1.5
|
||||
#
|
||||
# Specify style (surface or wireframe):
|
||||
#/vis/viewer/set/style wireframe
|
||||
#
|
||||
# Draw coordinate axes:
|
||||
#/vis/scene/add/axes 0 0 0 1 m
|
||||
#
|
||||
# Draw smooth trajectories at end of event, showing trajectory points
|
||||
# as markers 2 pixels wide:
|
||||
/vis/scene/add/trajectories smooth
|
||||
/vis/modeling/trajectories/create/drawByCharge
|
||||
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
|
||||
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
|
||||
# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
|
||||
#
|
||||
# Draw hits at end of event:
|
||||
#/vis/scene/add/hits
|
||||
#
|
||||
# To draw only gammas:
|
||||
#/vis/filtering/trajectories/create/particleFilter
|
||||
#/vis/filtering/trajectories/particleFilter-0/add gamma
|
||||
#
|
||||
# To invert the above, drawing all particles except gammas,
|
||||
# keep the above two lines but also add:
|
||||
#/vis/filtering/trajectories/particleFilter-0/invert true
|
||||
#
|
||||
# Many other options are available with /vis/modeling and /vis/filtering.
|
||||
# For example, to select colour by particle ID:
|
||||
#/vis/modeling/trajectories/create/drawByParticleID
|
||||
#/vis/modeling/trajectories/drawByParticleID-0/set e- blue
|
||||
#
|
||||
# To superimpose all of the events from a given run:
|
||||
/vis/scene/endOfEventAction accumulate
|
||||
#
|
||||
# Re-establish auto refreshing and verbosity:
|
||||
/vis/viewer/set/autoRefresh true
|
||||
/vis/verbose warnings
|
||||
#
|
||||
# For file-based drivers, use this to create an empty detector view:
|
||||
#/vis/viewer/flush
|
||||
@@ -0,0 +1,42 @@
|
||||
//$Id$
|
||||
|
||||
///\file "biasing/GB04/.README"
|
||||
///\brief Example GB04 README page
|
||||
|
||||
/*! \page ExampleGB04 Example GB04
|
||||
|
||||
\section ExampleGB04_s1 bremsstrahlung splitting
|
||||
|
||||
This example illustrates the use of the generic biasing classes to create
|
||||
a bremsstrahlung splitting technique.
|
||||
Note that the EM package also offers a bremsstrahlung splitting, that is
|
||||
built-in to the package.
|
||||
|
||||
|
||||
- GB04BOptnBremSplitting
|
||||
The bremsstrahlung splitting is implemented in the GB04BOptnBremSplitting
|
||||
class (BOptn = Biasing Operation), which acts on the final state creation
|
||||
of the bremsstrahlung process.
|
||||
|
||||
|
||||
- GB04BOptrBremSplitting
|
||||
Decisions when to apply the GB04BOptnBremSplitting biasing operation are
|
||||
taken by the GB04BOptrBremSplitting (BOptr = Biasing Operator) operator. This
|
||||
one also configures the biasing operation, setting it the splitting factor
|
||||
and its behavior regarding electrons to be biased : only the primary one, or
|
||||
all, and only the first bremsstrahlung operation, or all. These are
|
||||
controled by this specific example commands:
|
||||
\verbatim
|
||||
/GB04/biasing/setSplittingFactor [N splitting]
|
||||
/GB04/biasing/biasPrimaryOnly [true/false]
|
||||
/GB04/biasing/biasOnlyOnce [true/false]
|
||||
\endverbatim
|
||||
|
||||
The geometry is minimal : a single volume to which an instance of
|
||||
GB04BOptrBremSplitting is attached to.
|
||||
|
||||
The wrapping of physics processes by G4BiasingProcessInterface processes
|
||||
is simply handled by the G4GenericBiasingPhysics physics constructor, as shown
|
||||
in the main program.
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,65 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Setup the project
|
||||
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
|
||||
project(GB04project)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Find Geant4 package, activating all available UI and Vis drivers by default
|
||||
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
|
||||
# to build a batch mode only executable
|
||||
#
|
||||
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
|
||||
if(WITH_GEANT4_UIVIS)
|
||||
find_package(Geant4 REQUIRED ui_all vis_all)
|
||||
else()
|
||||
find_package(Geant4 REQUIRED)
|
||||
endif()
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Setup Geant4 include directories and compile definitions
|
||||
#
|
||||
include(${Geant4_USE_FILE})
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Locate sources and headers for this project
|
||||
#
|
||||
include_directories(${PROJECT_SOURCE_DIR}/include
|
||||
${Geant4_INCLUDE_DIR})
|
||||
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
|
||||
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Add the executable, and link it to the Geant4 libraries
|
||||
#
|
||||
add_executable(exampleGB04 exampleGB04.cc ${sources} ${headers})
|
||||
target_link_libraries(exampleGB04 ${Geant4_LIBRARIES} )
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Copy all scripts to the build directory, i.e. the directory in which we build
|
||||
# GB04project. This is so that we can run the executable directly
|
||||
# because it relies on these scripts being in the current working directory.
|
||||
#
|
||||
set(GB04project_SCRIPTS
|
||||
exampleGB04.in
|
||||
exampleGB04.out
|
||||
)
|
||||
|
||||
foreach(_script ${GB04project_SCRIPTS})
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/${_script}
|
||||
${PROJECT_BINARY_DIR}/${_script}
|
||||
COPYONLY
|
||||
)
|
||||
endforeach()
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Add program to the project targets
|
||||
# (this avoids the need of typing the program name after make)
|
||||
#
|
||||
add_custom_target(GB04project DEPENDS exampleGB04)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
|
||||
#
|
||||
install(TARGETS exampleGB04 DESTINATION bin)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# $Id: GNUmakefile 66241 2012-12-13 18:34:42Z gunter $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := exampleGB04
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
@@ -0,0 +1,32 @@
|
||||
$Id: History 70477 2013-05-31 08:35:08Z ahoward $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Category History file
|
||||
---------------------
|
||||
This file should be used by G4 developers and category coordinators
|
||||
to briefly summarize all major modifications introduced in the code
|
||||
and keep track of all category-tags.
|
||||
It DOES NOT substitute the CVS log-message one should put at every
|
||||
committal in the CVS repository !
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
Nov 20, 2014, G. Cosmo (GB04-V10-00-03)
|
||||
- Again included correction in GNUmakefile introduced in tag -01 which
|
||||
was lost in previous tag...
|
||||
|
||||
Nov 14, 2014, I. Hrivnacova (GB04-V10-00-02)
|
||||
- Added files descriptions
|
||||
- Coding guidelines (data member names, separators)
|
||||
|
||||
Nov 13, 2014, G. Cosmo (GB04-V10-00-01)
|
||||
- Corrected GNUmakefile to point to correct main() translation unit.
|
||||
|
||||
Nov 12, 2014, M. Verderi (GB04-V10-00-00)
|
||||
- Created.
|
||||
@@ -0,0 +1,36 @@
|
||||
Example GB04 : bremsstrahlung splitting
|
||||
---------------------------------------
|
||||
|
||||
This example illustrates the use of the generic biasing classes to create
|
||||
a bremsstrahlung splitting technique.
|
||||
Note that the EM package also offers a bremsstrahlung splitting, that is
|
||||
built-in to the package.
|
||||
|
||||
|
||||
GB04BOptnBremSplitting
|
||||
|
||||
The bremsstrahlung splitting is implemented in the GB04BOptnBremSplitting
|
||||
class (BOptn = Biasing Operation), which acts on the final state creation
|
||||
of the bremsstrahlung process.
|
||||
|
||||
|
||||
GB04BOptrBremSplitting
|
||||
|
||||
Decisions when to apply the GB04BOptnBremSplitting biasing operation are
|
||||
taken by the GB04BOptrBremSplitting (BOptr = Biasing Operator) operator. This
|
||||
one also configures the biasing operation, setting it the splitting factor
|
||||
and its behavior regarding electrons to be biased : only the primary one, or
|
||||
all, and only the first bremsstrahlung operation, or all. These are
|
||||
controled by this specific example commands:
|
||||
|
||||
/GB04/biasing/setSplittingFactor [N splitting]
|
||||
/GB04/biasing/biasPrimaryOnly [true/false]
|
||||
/GB04/biasing/biasOnlyOnce [true/false]
|
||||
|
||||
|
||||
The geometry is minimal : a single volume to which an instance of
|
||||
GB04BOptrBremSplitting is attached to.
|
||||
|
||||
The wrapping of physics processes by G4BiasingProcessInterface processes
|
||||
is simply handled by the G4GenericBiasingPhysics physics constructor, as shown
|
||||
in the main program.
|
||||
@@ -0,0 +1,190 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file exampleGB04.cc
|
||||
/// \brief Main program of the GB04 example
|
||||
//
|
||||
|
||||
#ifdef G4MULTITHREADED
|
||||
#include "G4MTRunManager.hh"
|
||||
#else
|
||||
#include "G4RunManager.hh"
|
||||
#endif
|
||||
#include "GB04ActionInitialization.hh"
|
||||
|
||||
#include "G4UImanager.hh"
|
||||
|
||||
#include "GB04DetectorConstruction.hh"
|
||||
#include "GB04PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "FTFP_BERT.hh"
|
||||
#include "G4GenericBiasingPhysics.hh"
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
#include "G4VisExecutive.hh"
|
||||
#endif
|
||||
|
||||
#ifdef G4UI_USE
|
||||
#include "G4UIExecutive.hh"
|
||||
#endif
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
namespace {
|
||||
void PrintUsage() {
|
||||
G4cerr << " Usage: " << G4endl;
|
||||
G4cerr << " ./exampleGB04 [-m macro ] "
|
||||
<< " [-b biasing {'on','off'}]"
|
||||
<< "\n or\n ./exampleGB04 [macro.mac]"
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
// Evaluate arguments
|
||||
//
|
||||
if ( argc > 5 ) {
|
||||
PrintUsage();
|
||||
return 1;
|
||||
}
|
||||
|
||||
G4String macro("");
|
||||
G4String onOffBiasing("");
|
||||
if ( argc == 2 ) macro = argv[1];
|
||||
else
|
||||
{
|
||||
for ( G4int i=1; i<argc; i=i+2 )
|
||||
{
|
||||
if ( G4String(argv[i]) == "-m" ) macro = argv[i+1];
|
||||
else if ( G4String(argv[i]) == "-b" ) onOffBiasing = argv[i+1];
|
||||
else
|
||||
{
|
||||
PrintUsage();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( onOffBiasing == "" ) onOffBiasing = "on";
|
||||
|
||||
// -- Construct the run manager : MT or sequential one
|
||||
#ifdef G4MULTITHREADED
|
||||
G4MTRunManager * runManager = new G4MTRunManager;
|
||||
G4cout << " ********** Run Manager constructed in MT mode ************ "
|
||||
<< G4endl;
|
||||
// -- Choose 4 threads:
|
||||
runManager->SetNumberOfThreads(4);
|
||||
#else
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
G4cout << " ********** Run Manager constructed in sequential mode ************ "
|
||||
<< G4endl;
|
||||
#endif
|
||||
|
||||
|
||||
// -- Set mandatory initialization classes
|
||||
GB04DetectorConstruction* detector = new GB04DetectorConstruction();
|
||||
runManager->SetUserInitialization(detector);
|
||||
// -- Select a physics list
|
||||
FTFP_BERT* physicsList = new FTFP_BERT;
|
||||
// -- And augment it with biasing facilities:
|
||||
G4GenericBiasingPhysics* biasingPhysics = new G4GenericBiasingPhysics();
|
||||
if ( onOffBiasing == "on" )
|
||||
{
|
||||
// -- Create list of physics processes to be biased: only brem. in this case:
|
||||
std::vector< G4String > processToBias;
|
||||
processToBias.push_back("eBrem");
|
||||
// -- Pass the list to the G4GenericBiasingPhysics, which will wrap the eBrem
|
||||
// -- process of e- and e+ to activate the biasing of it:
|
||||
biasingPhysics->PhysicsBias("e-", processToBias);
|
||||
biasingPhysics->PhysicsBias("e+", processToBias);
|
||||
physicsList->RegisterPhysics(biasingPhysics);
|
||||
G4cout << " ********************************************************* "
|
||||
<< G4endl;
|
||||
G4cout << " ********** processes are wrapped for biasing ************ "
|
||||
<< G4endl;
|
||||
G4cout << " ********************************************************* "
|
||||
<< G4endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cout << " ************************************************* " << G4endl;
|
||||
G4cout << " ********** processes are not wrapped ************ " << G4endl;
|
||||
G4cout << " ************************************************* " << G4endl;
|
||||
}
|
||||
runManager->SetUserInitialization(physicsList);
|
||||
// -- Action initialization:
|
||||
runManager->SetUserInitialization(new GB04ActionInitialization);
|
||||
|
||||
// Initialize G4 kernel
|
||||
runManager->Initialize();
|
||||
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
// Initialize visualization
|
||||
G4VisManager* visManager = new G4VisExecutive;
|
||||
// G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
|
||||
// Get the pointer to the User Interface manager
|
||||
G4UImanager* UImanager = G4UImanager::GetUIpointer();
|
||||
|
||||
if ( macro != "" ) // batch mode
|
||||
{
|
||||
G4String command = "/control/execute ";
|
||||
UImanager->ApplyCommand(command+macro);
|
||||
}
|
||||
else
|
||||
{ // interactive mode : define UI session
|
||||
#ifdef G4UI_USE
|
||||
G4UIExecutive* ui = new G4UIExecutive(argc, argv);
|
||||
#ifdef G4VIS_USE
|
||||
// UImanager->ApplyCommand("/control/execute vis.mac");
|
||||
#endif
|
||||
// if (ui->IsGUI())
|
||||
// UImanager->ApplyCommand("/control/execute gui.mac");
|
||||
ui->SessionStart();
|
||||
delete ui;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
delete runManager;
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
@@ -0,0 +1,14 @@
|
||||
#
|
||||
/run/verbose 2
|
||||
/tracking/verbose 1
|
||||
#
|
||||
/GB04/biasing/setSplittingFactor 1
|
||||
/run/beamOn 10
|
||||
#
|
||||
/GB04/biasing/setSplittingFactor 10
|
||||
/run/beamOn 10
|
||||
#
|
||||
/GB04/biasing/biasPrimaryOnly false
|
||||
/GB04/biasing/biasOnlyOnce false
|
||||
/run/beamOn 10
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: GB04ActionInitialization.hh 68058 2013-03-13 14:47:43Z gcosmo $
|
||||
//
|
||||
/// \file GB04ActionInitialization.hh
|
||||
/// \brief Definition of the GB04ActionInitialization class
|
||||
|
||||
#ifndef GB04ActionInitialization_hh
|
||||
#define GB04ActionInitialization_hh 1
|
||||
|
||||
#include "G4VUserActionInitialization.hh"
|
||||
|
||||
/// Action initialization class.
|
||||
///
|
||||
|
||||
class GB04ActionInitialization : public G4VUserActionInitialization
|
||||
{
|
||||
public:
|
||||
GB04ActionInitialization();
|
||||
virtual ~GB04ActionInitialization();
|
||||
|
||||
virtual void BuildForMaster() const;
|
||||
virtual void Build() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -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$
|
||||
//
|
||||
/// \file GB04BOptnBremSplitting.hh
|
||||
/// \brief Definition of the GB04BOptnBremSplitting class
|
||||
//
|
||||
//---------------------------------------------------------------
|
||||
//
|
||||
// GB04BOptnBremSplitting
|
||||
//
|
||||
// Class Description:
|
||||
// A G4VBiasingOperation to change a process cross-section.
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------
|
||||
// Initial version Nov. 2014 M. Verderi
|
||||
|
||||
|
||||
#ifndef GB04BOptnBremSplitting_hh
|
||||
#define GB04BOptnBremSplitting_hh 1
|
||||
|
||||
#include "G4VBiasingOperation.hh"
|
||||
#include "G4ParticleChange.hh"
|
||||
|
||||
|
||||
class GB04BOptnBremSplitting : public G4VBiasingOperation {
|
||||
public:
|
||||
// -- Constructor :
|
||||
GB04BOptnBremSplitting(G4String name);
|
||||
// -- destructor:
|
||||
virtual ~GB04BOptnBremSplitting();
|
||||
|
||||
public:
|
||||
// ----------------------------------------------
|
||||
// -- Methods from G4VBiasingOperation interface:
|
||||
// ----------------------------------------------
|
||||
// -- Unused:
|
||||
virtual const G4VBiasingInteractionLaw*
|
||||
ProvideOccurenceBiasingInteractionLaw( const G4BiasingProcessInterface*,
|
||||
G4ForceCondition& )
|
||||
{ return 0; }
|
||||
|
||||
// --Used:
|
||||
virtual G4VParticleChange* ApplyFinalStateBiasing( const G4BiasingProcessInterface*,
|
||||
const G4Track*,
|
||||
const G4Step*,
|
||||
G4bool& );
|
||||
|
||||
// -- Unsued:
|
||||
virtual G4double DistanceToApplyOperation( const G4Track*,
|
||||
G4double,
|
||||
G4ForceCondition*)
|
||||
{return DBL_MAX;}
|
||||
virtual G4VParticleChange* GenerateBiasingFinalState( const G4Track*,
|
||||
const G4Step* )
|
||||
{return 0;}
|
||||
|
||||
|
||||
public:
|
||||
// ----------------------------------------------
|
||||
// -- Additional methods, specific to this class:
|
||||
// ----------------------------------------------
|
||||
// -- Splitting factor:
|
||||
void SetSplittingFactor(G4int splittingFactor)
|
||||
{ fSplittingFactor = splittingFactor; }
|
||||
G4int GetSplittingFactor() const { return fSplittingFactor; }
|
||||
|
||||
private:
|
||||
G4int fSplittingFactor;
|
||||
G4ParticleChange fParticleChange;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
///
|
||||
/// \file GB04BOptrBremSplitting.hh
|
||||
/// \brief Definition of the GB04BOptrBremSplitting class
|
||||
#ifndef GB04BOptrBremSplitting_hh
|
||||
#define GB04BOptrBremSplitting_hh 1
|
||||
|
||||
#include "G4VBiasingOperator.hh"
|
||||
class GB04BOptnBremSplitting;
|
||||
class G4GenericMessenger;
|
||||
|
||||
class GB04BOptrBremSplitting : public G4VBiasingOperator {
|
||||
public:
|
||||
GB04BOptrBremSplitting();
|
||||
virtual ~GB04BOptrBremSplitting() {}
|
||||
|
||||
public:
|
||||
// -------------------------
|
||||
// Optional from base class:
|
||||
// -------------------------
|
||||
// -- Call at run start:
|
||||
virtual void StartRun();
|
||||
// -- Call at each track starting:
|
||||
virtual void StartTracking( const G4Track* track );
|
||||
|
||||
private:
|
||||
// -----------------------------
|
||||
// -- Mandatory from base class:
|
||||
// -----------------------------
|
||||
// -- Unused:
|
||||
virtual G4VBiasingOperation*
|
||||
ProposeNonPhysicsBiasingOperation(const G4Track* /* track */,
|
||||
const G4BiasingProcessInterface* /* callingProcess */)
|
||||
{ return 0; }
|
||||
virtual G4VBiasingOperation*
|
||||
ProposeOccurenceBiasingOperation (const G4Track* /* track */,
|
||||
const G4BiasingProcessInterface* /* callingProcess */)
|
||||
{ return 0; }
|
||||
// -- Used:
|
||||
virtual G4VBiasingOperation*
|
||||
ProposeFinalStateBiasingOperation(const G4Track* track,
|
||||
const G4BiasingProcessInterface* callingProcess);
|
||||
|
||||
private:
|
||||
// -- Avoid compiler complaining for (wrong) method shadowing,
|
||||
// -- this is because other virtual method with same name exists.
|
||||
using G4VBiasingOperator::OperationApplied;
|
||||
|
||||
private:
|
||||
GB04BOptnBremSplitting* fBremSplittingOperation;
|
||||
G4int fSplittingFactor;
|
||||
G4bool fBiasPrimaryOnly;
|
||||
G4bool fBiasOnlyOnce;
|
||||
G4int nInteractions;
|
||||
// Messengers to change the
|
||||
G4GenericMessenger* fSplittingFactorMessenger;
|
||||
G4GenericMessenger* fBiasPrimaryOnlyMessenger;
|
||||
G4GenericMessenger* fBiasOnlyOnceMessenger;
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB04DetectorConstruction.hh
|
||||
/// \brief Definition of the GB04DetectorConstruction class
|
||||
|
||||
#ifndef GB04DetectorConstruction_h
|
||||
#define GB04DetectorConstruction_h 1
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4Box;
|
||||
class G4LogicalVolume;
|
||||
class G4VPhysicalVolume;
|
||||
class G4Material;
|
||||
class G4UniformMagField;
|
||||
class DetectorMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class GB04DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
|
||||
GB04DetectorConstruction();
|
||||
~GB04DetectorConstruction();
|
||||
|
||||
public:
|
||||
|
||||
virtual G4VPhysicalVolume* Construct();
|
||||
virtual void ConstructSDandField();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB04PrimaryGeneratorAction.hh
|
||||
/// \brief Definition of the GB04PrimaryGeneratorAction class
|
||||
|
||||
#ifndef GB04PrimaryGeneratorAction_h
|
||||
#define GB04PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4ParticleGun;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class GB04PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
GB04PrimaryGeneratorAction();
|
||||
virtual ~GB04PrimaryGeneratorAction();
|
||||
|
||||
virtual void GeneratePrimaries(G4Event*);
|
||||
|
||||
private:
|
||||
G4ParticleGun* fParticleGun; //pointer a to G4 class
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: GB04ActionInitialization.cc 68058 2013-03-13 14:47:43Z gcosmo $
|
||||
//
|
||||
/// \file GB04ActionInitialization.cc
|
||||
/// \brief Implementation of the GB04ActionInitialization class
|
||||
|
||||
#include "GB04ActionInitialization.hh"
|
||||
#include "GB04PrimaryGeneratorAction.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB04ActionInitialization::GB04ActionInitialization()
|
||||
: G4VUserActionInitialization()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB04ActionInitialization::~GB04ActionInitialization()
|
||||
{;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB04ActionInitialization::BuildForMaster() const
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB04ActionInitialization::Build() const
|
||||
{
|
||||
SetUserAction(new GB04PrimaryGeneratorAction);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,141 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB04BOptnBremSplitting.cc
|
||||
/// \brief Implementation of the GB04BOptnBremSplitting class
|
||||
|
||||
#include "GB04BOptnBremSplitting.hh"
|
||||
#include "G4BiasingProcessInterface.hh"
|
||||
|
||||
#include "G4ParticleChangeForLoss.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB04BOptnBremSplitting::GB04BOptnBremSplitting(G4String name)
|
||||
: G4VBiasingOperation(name),
|
||||
fSplittingFactor(1),
|
||||
fParticleChange()
|
||||
{
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB04BOptnBremSplitting::~GB04BOptnBremSplitting()
|
||||
{
|
||||
}
|
||||
|
||||
G4VParticleChange*
|
||||
GB04BOptnBremSplitting::
|
||||
ApplyFinalStateBiasing( const G4BiasingProcessInterface* callingProcess,
|
||||
const G4Track* track,
|
||||
const G4Step* step,
|
||||
G4bool& )
|
||||
{
|
||||
|
||||
// -- Collect brem. process (wrapped process) final state:
|
||||
G4VParticleChange* processFinalState =
|
||||
callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
|
||||
|
||||
// -- if no splitting requested, let the brem. process to return directly its
|
||||
// -- generated final state:
|
||||
if ( fSplittingFactor == 1 ) return processFinalState;
|
||||
|
||||
// -- a special case here: the brem. process corrects for cross-section change
|
||||
// -- over the step due to energy loss by sometimes "abandoning" the interaction,
|
||||
// -- returning an unchanged incoming electron/positron.
|
||||
// -- We respect this correction, and if no secondary is produced, its means this
|
||||
// -- case is happening:
|
||||
if ( processFinalState->GetNumberOfSecondaries() == 0 ) return processFinalState;
|
||||
|
||||
// -- Now start the biasing:
|
||||
// -- - the electron state will be taken as the first one produced by the brem.
|
||||
// -- process, hence the one stored in above processFinalState particle change.
|
||||
// -- This state will be stored in our fParticleChange object.
|
||||
// -- - the photon accompagnying the electron will be stored also this way.
|
||||
// -- - we will then do fSplittingFactor - 1 call to the brem. process to collect
|
||||
// -- fSplittingFactor - 1 additionnal gammas. All these will be stored in our
|
||||
// -- fParticleChange object.
|
||||
|
||||
// -- We called the brem. process above. Its concrete particle change is indeed
|
||||
// -- a "G4ParticleChangeForLoss" object. We cast this particle change to access
|
||||
// -- methods of the concrete G4ParticleChangeForLoss type:
|
||||
G4ParticleChangeForLoss* actualParticleChange =
|
||||
( G4ParticleChangeForLoss* ) processFinalState ;
|
||||
|
||||
fParticleChange.Initialize(*track);
|
||||
|
||||
// -- Store electron final state:
|
||||
fParticleChange.
|
||||
ProposeTrackStatus ( actualParticleChange->GetTrackStatus() );
|
||||
fParticleChange.
|
||||
ProposeEnergy ( actualParticleChange->GetProposedKineticEnergy() );
|
||||
fParticleChange.
|
||||
ProposeMomentumDirection( actualParticleChange->GetProposedMomentumDirection() );
|
||||
|
||||
// -- Now deal with the gamma's:
|
||||
// -- their common weight:
|
||||
G4double gammaWeight = track->GetWeight() / fSplittingFactor;
|
||||
|
||||
// -- inform we will have fSplittingFactor gamma's:
|
||||
fParticleChange.SetNumberOfSecondaries( fSplittingFactor );
|
||||
|
||||
// -- Store first gamma:
|
||||
G4Track* gammaTrack = actualParticleChange->GetSecondary(0);
|
||||
gammaTrack->SetWeight( gammaWeight );
|
||||
fParticleChange.AddSecondary( gammaTrack );
|
||||
// -- and clean-up the brem. process particle change:
|
||||
actualParticleChange->Clear();
|
||||
|
||||
// -- now start the fSplittingFactor-1 calls to the brem. process to store each
|
||||
// -- related gamma:
|
||||
G4int nCalls = 1;
|
||||
while ( nCalls < fSplittingFactor )
|
||||
{
|
||||
// ( note: we don't need to cast to actual type here, as methods for accessing
|
||||
// secondary particles are from base class G4VParticleChange )
|
||||
processFinalState = callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
|
||||
if ( processFinalState->GetNumberOfSecondaries() == 1 )
|
||||
{
|
||||
gammaTrack = processFinalState->GetSecondary(0);
|
||||
gammaTrack->SetWeight( gammaWeight );
|
||||
fParticleChange.AddSecondary( gammaTrack );
|
||||
nCalls++;
|
||||
}
|
||||
// -- very rare special case: we ignore for now.
|
||||
else if ( processFinalState->GetNumberOfSecondaries() > 1 )
|
||||
{
|
||||
for ( G4int i = 0 ; i < processFinalState->GetNumberOfSecondaries() ; i++)
|
||||
delete processFinalState->GetSecondary(i);
|
||||
}
|
||||
processFinalState->Clear();
|
||||
}
|
||||
|
||||
// -- we are done:
|
||||
return &fParticleChange;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,114 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB04BOptrBremSplitting.cc
|
||||
/// \brief Implementation of the GB04BOptrBremSplitting class
|
||||
|
||||
#include "GB04BOptrBremSplitting.hh"
|
||||
#include "GB04BOptnBremSplitting.hh"
|
||||
|
||||
#include "G4BiasingProcessInterface.hh"
|
||||
#include "G4GenericMessenger.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB04BOptrBremSplitting::GB04BOptrBremSplitting()
|
||||
: G4VBiasingOperator("BremSplittingOperator"),
|
||||
fSplittingFactor(1),
|
||||
fBiasPrimaryOnly(true),
|
||||
fBiasOnlyOnce(true)
|
||||
{
|
||||
fBremSplittingOperation = new GB04BOptnBremSplitting("BremSplittingOperation");
|
||||
|
||||
// -- Define messengers:
|
||||
// -- Splitting factor:
|
||||
fSplittingFactorMessenger =
|
||||
new G4GenericMessenger(this, "/GB04/biasing/","Biasing control" );
|
||||
G4GenericMessenger::Command& splittingFactorCmd =
|
||||
fSplittingFactorMessenger->DeclareProperty("setSplittingFactor", fSplittingFactor,
|
||||
"Define the brem. splitting factor." );
|
||||
splittingFactorCmd.SetStates(G4State_Idle);
|
||||
// -- Bias ony primary particle:
|
||||
fBiasPrimaryOnlyMessenger =
|
||||
new G4GenericMessenger(this, "/GB04/biasing/","Biasing control" );
|
||||
G4GenericMessenger::Command& biasPrimaryCmd =
|
||||
fBiasPrimaryOnlyMessenger->DeclareProperty("biasPrimaryOnly", fBiasPrimaryOnly,
|
||||
"Chose if brem. splitting applies to primary particles only." );
|
||||
biasPrimaryCmd.SetStates(G4State_Idle);
|
||||
// -- Bias ony primary particle:
|
||||
fBiasOnlyOnceMessenger =
|
||||
new G4GenericMessenger(this, "/GB04/biasing/","Biasing control" );
|
||||
G4GenericMessenger::Command& biasOnlyOnceCmd =
|
||||
fBiasPrimaryOnlyMessenger->DeclareProperty("biasOnlyOnce", fBiasOnlyOnce,
|
||||
"Chose if apply the brem. splitting only once for the track." );
|
||||
biasOnlyOnceCmd.SetStates(G4State_Idle);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB04BOptrBremSplitting::StartRun()
|
||||
{
|
||||
fBremSplittingOperation->SetSplittingFactor ( fSplittingFactor );
|
||||
G4cout << GetName() << " : starting run with brem. splitting factor = "
|
||||
<< fSplittingFactor;
|
||||
if ( fBiasPrimaryOnly ) G4cout << ", biasing only primaries ";
|
||||
else G4cout << ", biasing primary and secondary tracks ";
|
||||
if ( fBiasOnlyOnce ) G4cout << ", biasing only once per track ";
|
||||
else G4cout << ", biasing several times per track ";
|
||||
G4cout << " . " << G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB04BOptrBremSplitting::StartTracking( const G4Track* /* track */ )
|
||||
{
|
||||
// -- reset the number of times the brem. splitting was applied:
|
||||
nInteractions = 0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VBiasingOperation*
|
||||
GB04BOptrBremSplitting::
|
||||
ProposeFinalStateBiasingOperation(const G4Track* track,
|
||||
const G4BiasingProcessInterface* /* callingProcess */)
|
||||
{
|
||||
// -- Check if biasing of primary particle only is requested. If so, and
|
||||
// -- if particle is not a primary one, don't ask for biasing:
|
||||
if ( fBiasPrimaryOnly && ( track->GetParentID() !=0 ) ) return 0;
|
||||
// -- Check if brem. splitting should be applied only once to the track,
|
||||
// -- and if so, and if brem. splitting already occured, don't ask for biasing:
|
||||
if ( fBiasOnlyOnce && ( nInteractions > 0 ) ) return 0;
|
||||
|
||||
// -- Count the number of times the brem. splitting is applied:
|
||||
nInteractions++;
|
||||
// -- Return the brem. splitting operation:
|
||||
return fBremSplittingOperation;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,123 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB04DetectorConstruction.cc
|
||||
/// \brief Implementation of the GB04DetectorConstruction class
|
||||
|
||||
#include "GB04DetectorConstruction.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
#include "G4Box.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4LogicalVolumeStore.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4UniformMagField.hh"
|
||||
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
|
||||
#include "G4NistManager.hh"
|
||||
|
||||
#include "GB04BOptrBremSplitting.hh"
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB04DetectorConstruction::GB04DetectorConstruction()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB04DetectorConstruction::~GB04DetectorConstruction()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VPhysicalVolume* GB04DetectorConstruction::Construct()
|
||||
{
|
||||
G4Material* worldMaterial = G4NistManager::Instance()->FindOrBuildMaterial("G4_Galactic");
|
||||
G4Material* defaultMaterial = G4NistManager::Instance()->FindOrBuildMaterial("G4_Al");
|
||||
|
||||
|
||||
G4VSolid* solidWorld = new G4Box("World", 10*m, 10*m, 10*m );
|
||||
|
||||
G4LogicalVolume* logicWorld = new G4LogicalVolume(solidWorld, //its solid
|
||||
worldMaterial, //its material
|
||||
"World"); //its name
|
||||
|
||||
G4PVPlacement* physiWorld = new G4PVPlacement(0, //no rotation
|
||||
G4ThreeVector(), //at (0,0,0)
|
||||
logicWorld, //its logical volume
|
||||
"World", //its name
|
||||
0, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
// -----------------------------------
|
||||
// -- volume where biasing is applied:
|
||||
// -----------------------------------
|
||||
G4double halfZ = 5*mm;
|
||||
G4VSolid* solidTest = new G4Box("test.solid", 1*m, 1*m, halfZ );
|
||||
|
||||
G4LogicalVolume* logicTest = new G4LogicalVolume(solidTest, //its solid
|
||||
defaultMaterial, //its material
|
||||
"test.logical"); //its name
|
||||
|
||||
new G4PVPlacement(0, // no rotation
|
||||
G4ThreeVector(0,0, halfZ), // volume entrance at (0,0,0)
|
||||
logicTest, // its logical volume
|
||||
"test.phys", // its name
|
||||
logicWorld, // its mother volume
|
||||
false, // no boolean operation
|
||||
0); // copy number
|
||||
|
||||
|
||||
return physiWorld;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB04DetectorConstruction::ConstructSDandField()
|
||||
{
|
||||
// -- Fetch volume for biasing:
|
||||
G4LogicalVolume* logicTest =
|
||||
G4LogicalVolumeStore::GetInstance()->GetVolume("test.logical");
|
||||
|
||||
// ----------------------------------------------
|
||||
// -- operator creation and attachment to volume:
|
||||
// ----------------------------------------------
|
||||
GB04BOptrBremSplitting* bremSplittingOperator = new GB04BOptrBremSplitting();
|
||||
bremSplittingOperator->AttachTo(logicTest);
|
||||
G4cout << " Attaching biasing operator " << bremSplittingOperator->GetName()
|
||||
<< " to logical volume " << logicTest->GetName()
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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$
|
||||
//
|
||||
/// \file GB04PrimaryGeneratorAction.cc
|
||||
/// \brief Implementation of the GB04PrimaryGeneratorAction class
|
||||
|
||||
#include "GB04PrimaryGeneratorAction.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
GB04PrimaryGeneratorAction::GB04PrimaryGeneratorAction()
|
||||
: G4VUserPrimaryGeneratorAction(),
|
||||
fParticleGun(0)
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
fParticleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
// default particle kinematic
|
||||
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
|
||||
G4String particleName;
|
||||
G4ParticleDefinition* particle = particleTable->FindParticle(particleName="e-");
|
||||
fParticleGun->SetParticleDefinition(particle);
|
||||
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
|
||||
fParticleGun->SetParticleEnergy(100.*MeV);
|
||||
fParticleGun->SetParticlePosition(G4ThreeVector(0.,0.,-100*cm));
|
||||
}
|
||||
|
||||
GB04PrimaryGeneratorAction::~GB04PrimaryGeneratorAction()
|
||||
{
|
||||
delete fParticleGun;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void GB04PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
fParticleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile 77475 2013-11-25 09:38:51Z gcosmo $
|
||||
# $Id: GNUmakefile 86517 2014-11-13 09:13:55Z gcosmo $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 08/04/02.
|
||||
# --------------------------------------------------------------
|
||||
@@ -9,7 +9,7 @@ endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
SUBDIRS = B01 B02 B03 GB01 GB02 ReverseMC01
|
||||
SUBDIRS = B01 B02 B03 GB01 GB02 GB03 GB04 ReverseMC01
|
||||
|
||||
.PHONY : all clean clean_libs
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History 78124 2013-12-03 17:40:38Z gcosmo $
|
||||
$Id: History 87259 2014-11-28 08:09:17Z gcosmo $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,18 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
Nov 27, 2014 I.Hrivnacova - exbiasing-V10-00-03
|
||||
- Fixed top README, .README
|
||||
|
||||
Nov 12, 2014 M. Verderi - exbiasing-V10-00-02
|
||||
- Creation of GB04
|
||||
|
||||
Nov 08, 2014 I.Hrivnacova - exbiasing-V10-00-01
|
||||
- Updated README files for adding GB03
|
||||
|
||||
Nov 07, 2014 M. Verderi - exbiasing-V10-00-00
|
||||
- Creation of GB03
|
||||
|
||||
Dec 03, 2013 I.Hrivnacova - exbiasing-V09-06-06
|
||||
- Fixed files description (for Doxygen)
|
||||
|
||||
|
||||
@@ -86,12 +86,12 @@ of biasing. Complementary approach to the modular physics lists of B01 and B02
|
||||
___________________________________________________________________________
|
||||
|
||||
|
||||
Generic biasing examples GB01, GB02
|
||||
------------------------------------
|
||||
Generic biasing examples GB01, GB02, GB03, GB04
|
||||
-----------------------------------------------
|
||||
|
||||
These examples illustrate the usage of a biasing scheme implemented since
|
||||
version Geant4 10.0.
|
||||
The scheme is meant to be extensible, not limited to these two examples.
|
||||
The scheme is meant to be extensible, not limited to these four examples.
|
||||
|
||||
Example GB01:
|
||||
=============
|
||||
@@ -105,6 +105,19 @@ Example GB02:
|
||||
Illustrates a force collision scheme similar to the MCNP one.
|
||||
|
||||
|
||||
Example GB03:
|
||||
=============
|
||||
|
||||
Illustrates geometry based biasing.
|
||||
|
||||
|
||||
Example GB04:
|
||||
=============
|
||||
|
||||
Illustrates a bremsstrahlung splitting.
|
||||
|
||||
|
||||
|
||||
___________________________________________________________________________
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,404 @@
|
||||
|
||||
############################################
|
||||
!!! WARNING - FPE detection is activated !!!
|
||||
############################################
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: geant4-10-01-ref-00 (5-December-2014)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
*************************************************************
|
||||
|
||||
Visualization Manager instantiating with verbosity "warnings (3)"...
|
||||
Visualization Manager initialising...
|
||||
Registering graphics systems...
|
||||
|
||||
You have successfully registered the following graphics systems.
|
||||
Current available graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRep (HepRepXML)
|
||||
G4HepRepFile (HepRepFile)
|
||||
OpenGLImmediateX (OGLIX)
|
||||
OpenGLImmediateXm (OGLI, OGLIXm)
|
||||
OpenGLStoredX (OGLSX)
|
||||
OpenGLStoredXm (OGL, OGLS, OGLSXm)
|
||||
RayTracer (RayTracer)
|
||||
RayTracerX (RayTracerX)
|
||||
VRML1FILE (VRML1FILE)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
|
||||
Registering model factories...
|
||||
|
||||
You have successfully registered the following model factories.
|
||||
Registered model factories:
|
||||
generic
|
||||
drawByCharge
|
||||
drawByParticleID
|
||||
drawByOriginVolume
|
||||
drawByAttribute
|
||||
|
||||
Registered filter factories:
|
||||
chargeFilter
|
||||
particleFilter
|
||||
originVolumeFilter
|
||||
attributeFilter
|
||||
|
||||
You have successfully registered the following user vis actions.
|
||||
Run Duration User Vis Actions: none
|
||||
End of Event User Vis Actions: none
|
||||
End of Run User Vis Actions: none
|
||||
|
||||
Some /vis commands (optionally) take a string to specify colour.
|
||||
Available colours:
|
||||
black, blue, brown, cyan, gray, green, grey, magenta, red, white, yellow
|
||||
|
||||
G4AdjointPhysicsList::SetCuts:CutLength : 1 mm
|
||||
G4AdjointPhysicsList::SetCuts:CutLength : 10 um
|
||||
/adjoint/DefineExtSourceOnExtSurfaceOfAVolume Shielding
|
||||
/adjoint/SetExtSourceEmax 10. MeV
|
||||
/adjoint/DefineAdjSourceOnExtSurfaceOfAVolume SensitiveVolume
|
||||
/adjoint/SetAdjSourceEmin 1. keV
|
||||
/adjoint/SetAdjSourceEmax 10. MeV
|
||||
/RMC01/analysis/SetExponentialSpectrumForAdjointSim e- 1. cm-2 1. 1e-3 10. MeV
|
||||
/RMC01/analysis/SetExpectedPrecisionOfResults 1.
|
||||
/run/verbose 1
|
||||
/tracking/verbose 0
|
||||
/adjoint/start_run 100000
|
||||
****************************************************************
|
||||
*** Geant4 Reverse/Adjoint Monte Carlo mode ***
|
||||
*** Author: L.Desorgher ***
|
||||
*** Company: SpaceIT GmbH, Bern, Switzerland ***
|
||||
*** Sponsored by: ESA/ESTEC contract contract 21435/08/NL/AT ***
|
||||
****************************************************************
|
||||
|
||||
compt: for gamma SubType= 13 BuildTable= 1
|
||||
Lambda table from 100 eV to 1 MeV, 7 bins per decade, spline: 1
|
||||
LambdaPrime table from 1 MeV to 10 TeV in 49 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Klein-Nishina : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
phot: for gamma SubType= 12 BuildTable= 0
|
||||
LambdaPrime table from 200 keV to 10 TeV in 54 bins
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
PhotoElectric : Emin= 0 eV Emax= 10 TeV AngularGenSauterGavrila
|
||||
|
||||
msc: for e- SubType= 10
|
||||
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
eIoni: for e- SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
MollerBhabha : Emin= 0 eV Emax= 10 TeV
|
||||
|
||||
eBrem: for e- SubType= 3
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
LPM flag: 1 for E > 1 GeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eBremSB : Emin= 0 eV Emax= 1 GeV DipBustGen
|
||||
eBremLPM : Emin= 1 GeV Emax= 10 TeV DipBustGen
|
||||
|
||||
msc: for proton SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
|
||||
|
||||
hIoni: for proton SubType= 2
|
||||
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
|
||||
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 2 MeV
|
||||
BetheBloch : Emin= 2 MeV Emax= 10 TeV
|
||||
========== Computation of cross section matrices for adjoint models ==========
|
||||
Build adjoint cross section matrices for Inv_eIon_model
|
||||
Build adjoint cross section matrices for AdjointeBremModel
|
||||
The model AdjointeBremModel does not use cross section matrices
|
||||
Build adjoint cross section matrices for AdjointCompton
|
||||
The model AdjointCompton does not use cross section matrices
|
||||
Build adjoint cross section matrices for AdjointPEEffect
|
||||
The model AdjointPEEffect does not use cross section matrices
|
||||
Build adjoint cross section matrices for Adjoint_hIonisation
|
||||
The model Adjoint_hIonisation does not use cross section matrices
|
||||
All adjoint cross section matrices are computed!
|
||||
======================================================================
|
||||
|
||||
========= Table of registered couples ==============================
|
||||
|
||||
Index : 0 used in the geometry : Yes
|
||||
Material : Vacuum
|
||||
Range cuts : gamma 10 um e- 10 um e+ 10 um proton 10 um
|
||||
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV proton 1 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 1 used in the geometry : Yes
|
||||
Material : Aluminum
|
||||
Range cuts : gamma 10 um e- 10 um e+ 10 um proton 10 um
|
||||
Energy thresholds : gamma 990 eV e- 34.1725 keV e+ 33.9436 keV proton 1 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 2 used in the geometry : Yes
|
||||
Material : Air
|
||||
Range cuts : gamma 10 um e- 10 um e+ 10 um proton 10 um
|
||||
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV proton 1 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 3 used in the geometry : Yes
|
||||
Material : Silicon
|
||||
Range cuts : gamma 10 um e- 10 um e+ 10 um proton 10 um
|
||||
Energy thresholds : gamma 990 eV e- 31.9516 keV e+ 31.7376 keV proton 1 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
Index : 4 used in the geometry : Yes
|
||||
Material : Tantalum
|
||||
Range cuts : gamma 10 um e- 10 um e+ 10 um proton 10 um
|
||||
Energy thresholds : gamma 6.90363 keV e- 75.0136 keV e+ 73.5164 keV proton 1 keV
|
||||
Region(s) which use this couple :
|
||||
DefaultRegionForTheWorld
|
||||
|
||||
====================================================================
|
||||
|
||||
### Run 0 starts.
|
||||
### Run 0 start.
|
||||
|
||||
-------- WWWW ------- G4Exception-START -------- WWWW -------
|
||||
*** G4Exception : Analysis_W012
|
||||
issued by : G4VFileManager::SetHistoDirectoryName()
|
||||
Cannot set Histo directory name as its value was already used.
|
||||
*** This is just a warning message. ***
|
||||
-------- WWWW -------- G4Exception-END --------- WWWW -------
|
||||
|
||||
|
||||
----> Histogram Tree is opened in adjoint_sim.root
|
||||
nb event 0
|
||||
nb event 1
|
||||
nb event 2
|
||||
nb event 3
|
||||
nb event 4
|
||||
nb event 5
|
||||
nb event 6
|
||||
nb event 7
|
||||
nb event 8
|
||||
nb event 9
|
||||
nb event 10
|
||||
nb event 11
|
||||
nb event 12
|
||||
nb event 13
|
||||
nb event 14
|
||||
nb event 15
|
||||
nb event 16
|
||||
nb event 17
|
||||
nb event 18
|
||||
nb event 19
|
||||
nb event 20
|
||||
nb event 21
|
||||
nb event 22
|
||||
nb event 23
|
||||
nb event 24
|
||||
nb event 25
|
||||
nb event 26
|
||||
nb event 27
|
||||
nb event 28
|
||||
nb event 29
|
||||
nb event 30
|
||||
nb event 31
|
||||
nb event 32
|
||||
nb event 33
|
||||
nb event 34
|
||||
nb event 35
|
||||
nb event 36
|
||||
nb event 37
|
||||
nb event 38
|
||||
nb event 39
|
||||
nb event 40
|
||||
nb event 41
|
||||
nb event 42
|
||||
nb event 43
|
||||
nb event 44
|
||||
nb event 45
|
||||
nb event 46
|
||||
nb event 47
|
||||
nb event 48
|
||||
nb event 49
|
||||
nb event 50
|
||||
nb event 51
|
||||
nb event 52
|
||||
nb event 53
|
||||
nb event 54
|
||||
nb event 55
|
||||
nb event 56
|
||||
nb event 57
|
||||
nb event 58
|
||||
nb event 59
|
||||
nb event 60
|
||||
nb event 61
|
||||
nb event 62
|
||||
nb event 63
|
||||
nb event 64
|
||||
nb event 65
|
||||
nb event 66
|
||||
nb event 67
|
||||
nb event 68
|
||||
nb event 69
|
||||
nb event 70
|
||||
nb event 71
|
||||
nb event 72
|
||||
nb event 73
|
||||
nb event 74
|
||||
nb event 75
|
||||
nb event 76
|
||||
nb event 77
|
||||
nb event 78
|
||||
nb event 79
|
||||
nb event 80
|
||||
nb event 81
|
||||
nb event 82
|
||||
nb event 83
|
||||
nb event 84
|
||||
nb event 85
|
||||
nb event 86
|
||||
nb event 87
|
||||
nb event 88
|
||||
nb event 89
|
||||
nb event 90
|
||||
nb event 91
|
||||
nb event 92
|
||||
nb event 93
|
||||
nb event 94
|
||||
nb event 95
|
||||
nb event 96
|
||||
nb event 97
|
||||
nb event 98
|
||||
nb event 99
|
||||
nb event 100
|
||||
nb event 200
|
||||
nb event 300
|
||||
nb event 400
|
||||
nb event 500
|
||||
nb event 1000
|
||||
nb event 1500
|
||||
nb event 2000
|
||||
nb event 2500
|
||||
nb event 3000
|
||||
nb event 3500
|
||||
nb event 4000
|
||||
nb event 4500
|
||||
nb event 5000
|
||||
nb event 10000
|
||||
nb event 15000
|
||||
nb event 20000
|
||||
nb event 25000
|
||||
nb event 30000
|
||||
nb event 35000
|
||||
nb event 40000
|
||||
nb event 45000
|
||||
nb event 50000
|
||||
nb event 55000
|
||||
nb event 60000
|
||||
nb event 65000
|
||||
nb event 70000
|
||||
nb event 75000
|
||||
nb event 80000
|
||||
nb event 85000
|
||||
nb event 90000
|
||||
nb event 95000
|
||||
nb event 100000
|
||||
nb event 105000
|
||||
nb event 110000
|
||||
nb event 115000
|
||||
nb event 120000
|
||||
nb event 125000
|
||||
nb event 130000
|
||||
nb event 135000
|
||||
nb event 140000
|
||||
nb event 145000
|
||||
nb event 150000
|
||||
nb event 155000
|
||||
nb event 160000
|
||||
nb event 165000
|
||||
nb event 170000
|
||||
nb event 175000
|
||||
nb event 180000
|
||||
nb event 185000
|
||||
nb event 190000
|
||||
nb event 195000
|
||||
nb event 200000
|
||||
nb event 205000
|
||||
nb event 210000
|
||||
nb event 215000
|
||||
nb event 220000
|
||||
nb event 225000
|
||||
nb event 230000
|
||||
nb event 235000
|
||||
nb event 240000
|
||||
nb event 245000
|
||||
nb event 250000
|
||||
nb event 255000
|
||||
nb event 260000
|
||||
nb event 265000
|
||||
nb event 270000
|
||||
nb event 275000
|
||||
nb event 280000
|
||||
nb event 285000
|
||||
nb event 290000
|
||||
nb event 295000
|
||||
nb event 300000
|
||||
nb event 305000
|
||||
nb event 310000
|
||||
nb event 315000
|
||||
nb event 320000
|
||||
nb event 325000
|
||||
nb event 330000
|
||||
nb event 335000
|
||||
nb event 340000
|
||||
nb event 345000
|
||||
nb event 350000
|
||||
nb event 355000
|
||||
nb event 360000
|
||||
nb event 365000
|
||||
nb event 370000
|
||||
nb event 375000
|
||||
nb event 380000
|
||||
nb event 385000
|
||||
nb event 390000
|
||||
nb event 395000
|
||||
nb event 400000
|
||||
nb event 405000
|
||||
nb event 410000
|
||||
nb event 415000
|
||||
nb event 420000
|
||||
nb event 425000
|
||||
nb event 430000
|
||||
nb event 435000
|
||||
nb event 440000
|
||||
nb event 445000
|
||||
1% Precision reached!
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Run Aborted after 449720 events processed.
|
||||
User=595.38s Real=597.28s Sys=0.06s
|
||||
Results of reverse/adjoint simulation!
|
||||
normalised edep [MeV] = 0.00158921
|
||||
error[MeV] = 1.58921e-05
|
||||
|
||||
----> Histogram Tree is saved in adjoint_sim.root
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
G4 kernel has come to Quit state.
|
||||
Total navigation history collections cleaned: 19
|
||||
================== Deleting memory pools ===================
|
||||
Number of memory pools allocated: 12 of which, static: 1
|
||||
Dynamic pools deleted: 11 / Total memory freed: 0.037 Mb
|
||||
============================================================
|
||||
RunManagerKernel is deleted. Good bye :)
|
||||
Reference in New Issue
Block a user