Import Geant4 8.3.0 source tree
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -30,34 +30,34 @@ Going to assign importance: 131072, to volume: cell_18
|
||||
The initial Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
HadronCapture
|
||||
HadronFission
|
||||
inelastic
|
||||
LElastic
|
||||
HadronElastic
|
||||
Transportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
LElastic
|
||||
HadronElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
HadronFission
|
||||
HadronCapture
|
||||
Decay
|
||||
The final Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
HadronCapture
|
||||
HadronFission
|
||||
inelastic
|
||||
LElastic
|
||||
HadronElastic
|
||||
MScoreProcess
|
||||
Transportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
MScoreProcess
|
||||
LElastic
|
||||
HadronElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
HadronFission
|
||||
HadronCapture
|
||||
Decay
|
||||
================================================
|
||||
=== G4ProcessPlacer::AddProcessAsSecondDoIt: for: neutron
|
||||
@@ -65,27 +65,27 @@ DoIt Vector:
|
||||
The initial Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
HadronCapture
|
||||
HadronFission
|
||||
inelastic
|
||||
LElastic
|
||||
HadronElastic
|
||||
MScoreProcess
|
||||
Transportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
MScoreProcess
|
||||
LElastic
|
||||
HadronElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
HadronFission
|
||||
HadronCapture
|
||||
Decay
|
||||
The final Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
HadronCapture
|
||||
HadronFission
|
||||
inelastic
|
||||
LElastic
|
||||
HadronElastic
|
||||
MScoreProcess
|
||||
MassImportanceProcess
|
||||
Transportation
|
||||
@@ -93,10 +93,10 @@ DoIt Vector:
|
||||
Transportation
|
||||
MassImportanceProcess
|
||||
MScoreProcess
|
||||
LElastic
|
||||
HadronElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
HadronFission
|
||||
HadronCapture
|
||||
Decay
|
||||
================================================
|
||||
|
||||
@@ -115,30 +115,33 @@ phot: Total cross sections from Sandia parametrisation.
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -147,27 +150,32 @@ annihil: Sampling according eplus2gg model
|
||||
|
||||
msc: Model variant of multiple scattering for proton
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for GenericIon
|
||||
LateralDisplacementFlag= 0 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -207,50 +215,53 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for pi-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
Volume name | Importance| Tr.Entering| Population| Collisions| Coll*WGT| NumWGTedE| FluxWGTedE| Av.Tr.WGT|
|
||||
cell_01_rep:0............ | 1 | 106 | 127 | 165 | 165 | 4.7833307 | 8.4257685 | 1 |
|
||||
cell_02_rep:0............ | 2 | 79 | 170 | 150 | 75 | 8.3770212 | 8.9611837 | 1 |
|
||||
cell_03_rep:0............ | 4 | 120 | 257 | 292 | 73 | 0.030422242 | 8.1225467 | 1 |
|
||||
cell_04_rep:0............ | 8 | 118 | 267 | 325 | 40.625 | 6.2788095 | 7.9670281 | 1 |
|
||||
cell_05_rep:0............ | 16 | 112 | 236 | 298 | 18.625 | 0.066754216 | 7.5980323 | 1 |
|
||||
cell_06_rep:0............ | 32 | 124 | 264 | 342 | 10.6875 | 5.2637216 | 7.6806894 | 1 |
|
||||
cell_07_rep:0............ | 64 | 161 | 322 | 438 | 6.84375 | 4.9595564 | 7.2063026 | 1 |
|
||||
cell_08_rep:0............ | 128 | 205 | 412 | 532 | 4.15625 | 4.0919226 | 6.9949884 | 1 |
|
||||
cell_09_rep:0............ | 256 | 236 | 482 | 650 | 2.5390625 | 0.11583494 | 6.6067148 | 1 |
|
||||
cell_10_rep:0............ | 512 | 267 | 549 | 748 | 1.4609375 | 4.0989275 | 6.2777243 | 1 |
|
||||
cell_11_rep:0............ | 1024 | 325 | 648 | 993 | 0.96972656 | 0.64376933 | 5.8542585 | 1 |
|
||||
cell_12_rep:0............ | 2048 | 374 | 733 | 1233 | 0.60205078 | 0.13579459 | 5.5076248 | 1 |
|
||||
cell_13_rep:0............ | 4096 | 412 | 832 | 1361 | 0.33227539 | 3.5686894 | 5.4720131 | 1 |
|
||||
cell_14_rep:0............ | 8192 | 438 | 897 | 1402 | 0.17114258 | 0.22945117 | 5.496985 | 1 |
|
||||
cell_15_rep:0............ | 16384 | 476 | 990 | 1656 | 0.10107422 | 0.80759575 | 5.4423419 | 1 |
|
||||
cell_16_rep:0............ | 32768 | 539 | 1059 | 1738 | 0.053039551 | 3.8380076 | 5.1041349 | 1 |
|
||||
cell_17_rep:0............ | 65536 | 579 | 1201 | 1995 | 0.030441284 | 0.1904835 | 4.9379711 | 1 |
|
||||
cell_18_rep:0............ | 131072 | 501 | 1179 | 2198 | 0.016769409 | 0.54009342 | 4.7248222 | 1 |
|
||||
rest_rep:0............... | 131072 | 548 | 548 | 0 | 0 | 0 | 0 | 0 |
|
||||
shieldWorld_rep:0........ | 1 | 11 | 110 | 0 | 0 | 10 | 10 | 1 |
|
||||
cell_01_rep:0............ | 1 | 118 | 150 | 149 | 149 | 7.2096509 | 8.5785508 | 1 |
|
||||
cell_02_rep:0............ | 2 | 87 | 192 | 189 | 94.5 | 8.2328232 | 8.660209 | 1 |
|
||||
cell_03_rep:0............ | 4 | 99 | 212 | 240 | 60 | 6.6805827 | 7.9415373 | 1 |
|
||||
cell_04_rep:0............ | 8 | 119 | 258 | 287 | 35.875 | 6.957465 | 7.8605556 | 1 |
|
||||
cell_05_rep:0............ | 16 | 150 | 321 | 396 | 24.75 | 5.1009587 | 7.099783 | 1 |
|
||||
cell_06_rep:0............ | 32 | 162 | 353 | 426 | 13.3125 | 4.6037023 | 7.0570615 | 1 |
|
||||
cell_07_rep:0............ | 64 | 205 | 416 | 568 | 8.875 | 4.8261852 | 6.6681408 | 1 |
|
||||
cell_08_rep:0............ | 128 | 223 | 486 | 656 | 5.125 | 0.53648464 | 6.6539856 | 1 |
|
||||
cell_09_rep:0............ | 256 | 251 | 519 | 751 | 2.9335938 | 4.943392 | 6.39047 | 1 |
|
||||
cell_10_rep:0............ | 512 | 288 | 597 | 875 | 1.7089844 | 4.3487469 | 6.110481 | 1 |
|
||||
cell_11_rep:0............ | 1024 | 337 | 698 | 1058 | 1.0332031 | 4.4329506 | 6.0885935 | 1 |
|
||||
cell_12_rep:0............ | 2048 | 393 | 782 | 1238 | 0.60449219 | 4.4763037 | 6.0639968 | 1 |
|
||||
cell_13_rep:0............ | 4096 | 451 | 930 | 1440 | 0.3515625 | 4.2499709 | 5.7580044 | 1 |
|
||||
cell_14_rep:0............ | 8192 | 472 | 985 | 1522 | 0.18579102 | 0.072154763 | 5.4255988 | 1 |
|
||||
cell_15_rep:0............ | 16384 | 503 | 1014 | 1715 | 0.10467529 | 0.87569507 | 5.1929267 | 1 |
|
||||
cell_16_rep:0............ | 32768 | 576 | 1204 | 2080 | 0.063476562 | 0.13469363 | 4.97975 | 1 |
|
||||
cell_17_rep:0............ | 65536 | 635 | 1281 | 2314 | 0.035308838 | 3.3098112 | 4.7409862 | 1 |
|
||||
cell_18_rep:0............ | 131072 | 565 | 1356 | 2505 | 0.019111633 | 3.1110957 | 4.603961 | 1 |
|
||||
rest_rep:0............... | 131072 | 601 | 601 | 0 | 0 | 0 | 0 | 0 |
|
||||
shieldWorld_rep:0........ | 1 | 14 | 114 | 0 | 0 | 10 | 10 | 1 |
|
||||
=== G4ProcessPlacer::RemoveProcess: for: neutron
|
||||
ProcessName: MassImportanceProcess, will be removed!
|
||||
The initial Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
HadronCapture
|
||||
HadronFission
|
||||
inelastic
|
||||
LElastic
|
||||
HadronElastic
|
||||
MScoreProcess
|
||||
MassImportanceProcess
|
||||
Transportation
|
||||
@@ -258,27 +269,27 @@ DoIt Vector:
|
||||
Transportation
|
||||
MassImportanceProcess
|
||||
MScoreProcess
|
||||
LElastic
|
||||
HadronElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
HadronFission
|
||||
HadronCapture
|
||||
Decay
|
||||
The final Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
HadronCapture
|
||||
HadronFission
|
||||
inelastic
|
||||
LElastic
|
||||
HadronElastic
|
||||
MScoreProcess
|
||||
Transportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
MScoreProcess
|
||||
LElastic
|
||||
HadronElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
HadronFission
|
||||
HadronCapture
|
||||
Decay
|
||||
================================================
|
||||
=== G4ProcessPlacer::RemoveProcess: for: neutron
|
||||
@@ -286,33 +297,33 @@ DoIt Vector:
|
||||
The initial Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
HadronCapture
|
||||
HadronFission
|
||||
inelastic
|
||||
LElastic
|
||||
HadronElastic
|
||||
MScoreProcess
|
||||
Transportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
MScoreProcess
|
||||
LElastic
|
||||
HadronElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
HadronFission
|
||||
HadronCapture
|
||||
Decay
|
||||
The final Vectors:
|
||||
GPIL Vector:
|
||||
Decay
|
||||
LCapture
|
||||
LFission
|
||||
HadronCapture
|
||||
HadronFission
|
||||
inelastic
|
||||
LElastic
|
||||
HadronElastic
|
||||
Transportation
|
||||
DoIt Vector:
|
||||
Transportation
|
||||
LElastic
|
||||
HadronElastic
|
||||
inelastic
|
||||
LFission
|
||||
LCapture
|
||||
HadronFission
|
||||
HadronCapture
|
||||
Decay
|
||||
================================================
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -130,32 +130,35 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -164,24 +167,29 @@ annihil: Sampling according eplus2gg model
|
||||
|
||||
msc: Model variant of multiple scattering for proton
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for GenericIon
|
||||
LateralDisplacementFlag= 0 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
@@ -189,13 +197,15 @@ ionIoni: tables are built for GenericIon
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -237,20 +247,23 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for pi-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
@@ -286,7 +299,7 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 2000
|
||||
User=93.45s Real=229.21s Sys=10.12s
|
||||
User=135.86s Real=161.42s Sys=5.57s
|
||||
|
||||
======================== run summary ======================
|
||||
|
||||
@@ -294,29 +307,29 @@ Run Summary
|
||||
|
||||
============================================================
|
||||
|
||||
total energy deposit: 99.778 MeV
|
||||
total energy deposit: 99.795 MeV
|
||||
|
||||
nb tracks/event neutral: 27.852 charged: 148.23
|
||||
nb steps/event neutral: 141.16 charged: 360.34
|
||||
nb tracks/event neutral: 27.87 charged: 148.27
|
||||
nb steps/event neutral: 141.21 charged: 217.54
|
||||
|
||||
nb of process calls per event:
|
||||
eBrem eIoni compt phot mscTransportation conv annihil
|
||||
26.195 187.84 113.31 25.441 144.89 0.999 1.4155 1.416
|
||||
eBrem eIoni compt phot conv annihilTransportation msc
|
||||
26.152 189.06 113.34 25.465 1.429 1.431 0.9785 0.895
|
||||
|
||||
---------------------------------------------------------
|
||||
Primary particle :
|
||||
true Range = 11.117 cm rms = 3.8519 cm
|
||||
proj Range = 9.5829 cm rms = 3.5673 cm
|
||||
proj/true = 0.862
|
||||
transverse dispersion at end = 1.7458 cm
|
||||
mass true Range from simulation = 30.016 g/cm2
|
||||
true Range = 11.188 cm rms = 3.8024 cm
|
||||
proj Range = 9.6817 cm rms = 3.5072 cm
|
||||
proj/true = 0.86537
|
||||
transverse dispersion at end = 1.6744 cm
|
||||
mass true Range from simulation = 30.207 g/cm2
|
||||
from PhysicsTable (csda range) = 31.791 g/cm2
|
||||
---------------------------------------------------------
|
||||
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 1518067820, 1468624748
|
||||
Current couple of seeds = 635796452, 1715057552
|
||||
----------------------------------------
|
||||
#
|
||||
/process/eLoss/verbose 0
|
||||
@@ -344,7 +357,7 @@ Index : 0 used in the geometry : Yes recalculation needed : No
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 1518067820, 1468624748
|
||||
Current couple of seeds = 635796452, 1715057552
|
||||
----------------------------------------
|
||||
Start Run processing.
|
||||
|
||||
@@ -352,7 +365,7 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 2000
|
||||
User=180.14s Real=317.87s Sys=17.19s
|
||||
User=262.73s Real=299.52s Sys=16.05s
|
||||
|
||||
======================== run summary ======================
|
||||
|
||||
@@ -360,29 +373,29 @@ Run Summary
|
||||
|
||||
============================================================
|
||||
|
||||
total energy deposit: 99.804 MeV
|
||||
total energy deposit: 99.807 MeV
|
||||
|
||||
nb tracks/event neutral: 36.715 charged: 292.17
|
||||
nb steps/event neutral: 148.23 charged: 774.58
|
||||
nb tracks/event neutral: 36.588 charged: 290.52
|
||||
nb steps/event neutral: 145.99 charged: 487.88
|
||||
|
||||
nb of process calls per event:
|
||||
eIoni eBrem msc phot conv annihil comptTransportation
|
||||
450.68 34.889 287.6 34.344 1.414 1.415 111.52 0.965
|
||||
eIoni eBrem phot compt conv annihilTransportation msc
|
||||
450.32 34.772 34.252 109.41 1.4235 1.4235 0.9185 1.3595
|
||||
|
||||
---------------------------------------------------------
|
||||
Primary particle :
|
||||
true Range = 11.099 cm rms = 3.8352 cm
|
||||
proj Range = 9.6044 cm rms = 3.546 cm
|
||||
proj/true = 0.86534
|
||||
transverse dispersion at end = 1.7575 cm
|
||||
mass true Range from simulation = 29.967 g/cm2
|
||||
true Range = 11.181 cm rms = 3.7948 cm
|
||||
proj Range = 9.6756 cm rms = 3.5108 cm
|
||||
proj/true = 0.86535
|
||||
transverse dispersion at end = 1.7596 cm
|
||||
mass true Range from simulation = 30.189 g/cm2
|
||||
from PhysicsTable (csda range) = 31.791 g/cm2
|
||||
---------------------------------------------------------
|
||||
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 2000278172, 2144462017
|
||||
Current couple of seeds = 693892311, 266689939
|
||||
----------------------------------------
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -89,18 +89,20 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
Lorentz Factor XTR photon number
|
||||
@@ -156,7 +158,7 @@ Lorentz Factor XTR photon number
|
||||
8.085e+04 3.149
|
||||
9.283e+04 3.149
|
||||
|
||||
total time for build X-ray TR energy loss tables = 0.44 s
|
||||
total time for build X-ray TR energy loss tables = 0.93 s
|
||||
|
||||
SynRad: Incoherent Synchrotron Radiation
|
||||
good description for long magnets at all energies
|
||||
@@ -164,13 +166,14 @@ SynRad: Incoherent Synchrotron Radiation
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -230,21 +233,24 @@ Lorentz Factor XTR photon number
|
||||
8.085e+04 3.149
|
||||
9.283e+04 3.149
|
||||
|
||||
total time for build X-ray TR energy loss tables = 0.44 s
|
||||
total time for build X-ray TR energy loss tables = 0.91 s
|
||||
|
||||
msc: Model variant of multiple scattering for proton
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -284,19 +290,22 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for pi-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
========= Table of registered couples ==============================
|
||||
@@ -338,26 +347,26 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 1000
|
||||
User=28.68s Real=32.3s Sys=3.34s
|
||||
User=65.15s Real=72.62s Sys=7.43s
|
||||
================== run summary =====================
|
||||
end of Run TotNbofEvents = 1000
|
||||
mean charged track length in absorber=114.629 +- 2.11901 mm
|
||||
mean charged track length in absorber=111.915 +- 2.13442 mm
|
||||
|
||||
mean energy deposit in absorber=0.0512368 +- 0.000839775 MeV
|
||||
mean energy deposit in absorber=0.0503287 +- 0.000857444 MeV
|
||||
|
||||
mean number of steps in absorber (charged) =60.95 +- 1.51948
|
||||
mean number of steps in absorber (neutral) =2.871 +- 0.0527481
|
||||
mean number of steps in absorber (charged) =58.997 +- 1.51059
|
||||
mean number of steps in absorber (neutral) =2.869 +- 0.0556762
|
||||
|
||||
mean number of charged secondaries = 5.083 +- 0.101302
|
||||
mean number of charged secondaries = 4.98 +- 0.102954
|
||||
|
||||
mean number of neutral secondaries = 0.149 +- 0.0121983
|
||||
mean number of neutral secondaries = 0.135 +- 0.0121151
|
||||
|
||||
mean number of e-s =5.083 and e+s =0
|
||||
mean number of e-s =4.98 and e+s =0
|
||||
|
||||
(number) transmission coeff=0.569 reflection coeff=0.066
|
||||
(number) transmission coeff=0.544 reflection coeff=0.08
|
||||
|
||||
energy deposit distribution
|
||||
#entries=1000 #underflows=0 #overflows=51
|
||||
#entries=1000 #underflows=0 #overflows=46
|
||||
bin nb Elow entries normalized
|
||||
0 0 0 0
|
||||
1 1.53846 0 0
|
||||
@@ -367,71 +376,71 @@ Run Summary
|
||||
5 7.69231 0 0
|
||||
6 9.23077 0 0
|
||||
7 10.7692 0 0
|
||||
8 12.3077 1 0.001
|
||||
9 13.8462 5 0.005
|
||||
10 15.3846 15 0.015
|
||||
11 16.9231 12 0.012
|
||||
12 18.4615 10 0.01
|
||||
13 20 23 0.023
|
||||
14 21.5385 17 0.017
|
||||
15 23.0769 22 0.022
|
||||
16 24.6154 15 0.015
|
||||
17 26.1538 31 0.031
|
||||
18 27.6923 34 0.034
|
||||
8 12.3077 4 0.004
|
||||
9 13.8462 4 0.004
|
||||
10 15.3846 10 0.01
|
||||
11 16.9231 13 0.013
|
||||
12 18.4615 15 0.015
|
||||
13 20 14 0.014
|
||||
14 21.5385 21 0.021
|
||||
15 23.0769 27 0.027
|
||||
16 24.6154 30 0.03
|
||||
17 26.1538 28 0.028
|
||||
18 27.6923 32 0.032
|
||||
19 29.2308 26 0.026
|
||||
20 30.7692 24 0.024
|
||||
21 32.3077 31 0.031
|
||||
22 33.8462 36 0.036
|
||||
23 35.3846 32 0.032
|
||||
24 36.9231 25 0.025
|
||||
25 38.4615 33 0.033
|
||||
26 40 24 0.024
|
||||
27 41.5385 32 0.032
|
||||
28 43.0769 28 0.028
|
||||
29 44.6154 27 0.027
|
||||
30 46.1538 31 0.031
|
||||
31 47.6923 30 0.03
|
||||
32 49.2308 23 0.023
|
||||
33 50.7692 21 0.021
|
||||
34 52.3077 12 0.012
|
||||
35 53.8462 31 0.031
|
||||
36 55.3846 27 0.027
|
||||
37 56.9231 19 0.019
|
||||
38 58.4615 21 0.021
|
||||
39 60 18 0.018
|
||||
40 61.5385 18 0.018
|
||||
41 63.0769 13 0.013
|
||||
42 64.6154 12 0.012
|
||||
43 66.1538 8 0.008
|
||||
44 67.6923 15 0.015
|
||||
20 30.7692 41 0.041
|
||||
21 32.3077 23 0.023
|
||||
22 33.8462 27 0.027
|
||||
23 35.3846 26 0.026
|
||||
24 36.9231 29 0.029
|
||||
25 38.4615 34 0.034
|
||||
26 40 35 0.035
|
||||
27 41.5385 28 0.028
|
||||
28 43.0769 35 0.035
|
||||
29 44.6154 39 0.039
|
||||
30 46.1538 27 0.027
|
||||
31 47.6923 27 0.027
|
||||
32 49.2308 21 0.021
|
||||
33 50.7692 23 0.023
|
||||
34 52.3077 15 0.015
|
||||
35 53.8462 16 0.016
|
||||
36 55.3846 23 0.023
|
||||
37 56.9231 20 0.02
|
||||
38 58.4615 10 0.01
|
||||
39 60 21 0.021
|
||||
40 61.5385 15 0.015
|
||||
41 63.0769 14 0.014
|
||||
42 64.6154 16 0.016
|
||||
43 66.1538 16 0.016
|
||||
44 67.6923 16 0.016
|
||||
45 69.2308 12 0.012
|
||||
46 70.7692 16 0.016
|
||||
47 72.3077 13 0.013
|
||||
48 73.8462 15 0.015
|
||||
49 75.3846 8 0.008
|
||||
50 76.9231 8 0.008
|
||||
51 78.4615 7 0.007
|
||||
52 80 11 0.011
|
||||
53 81.5385 13 0.013
|
||||
46 70.7692 17 0.017
|
||||
47 72.3077 9 0.009
|
||||
48 73.8462 13 0.013
|
||||
49 75.3846 13 0.013
|
||||
50 76.9231 4 0.004
|
||||
51 78.4615 5 0.005
|
||||
52 80 6 0.006
|
||||
53 81.5385 9 0.009
|
||||
54 83.0769 6 0.006
|
||||
55 84.6154 4 0.004
|
||||
56 86.1538 10 0.01
|
||||
55 84.6154 6 0.006
|
||||
56 86.1538 9 0.009
|
||||
57 87.6923 4 0.004
|
||||
58 89.2308 0 0
|
||||
59 90.7692 5 0.005
|
||||
60 92.3077 5 0.005
|
||||
61 93.8462 5 0.005
|
||||
62 95.3846 2 0.002
|
||||
63 96.9231 1 0.001
|
||||
64 98.4615 2 0.002
|
||||
58 89.2308 4 0.004
|
||||
59 90.7692 1 0.001
|
||||
60 92.3077 2 0.002
|
||||
61 93.8462 3 0.003
|
||||
62 95.3846 3 0.003
|
||||
63 96.9231 4 0.004
|
||||
64 98.4615 3 0.003
|
||||
|
||||
Emp = 0.0338462 width= 0.0415385 MeV
|
||||
Emp = 0.0307692 width= 0.0384615 MeV
|
||||
|
||||
ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer.
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 1693453792, 80564918
|
||||
Current couple of seeds = 1107565906, 1849160895
|
||||
----------------------------------------
|
||||
|
||||
========= Table of registered couples ==============================
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -131,32 +131,35 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -165,24 +168,29 @@ annihil: Sampling according eplus2gg model
|
||||
|
||||
msc: Model variant of multiple scattering for proton
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for GenericIon
|
||||
LateralDisplacementFlag= 0 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
@@ -190,13 +198,15 @@ ionIoni: tables are built for GenericIon
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -238,20 +248,23 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for pi-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
@@ -289,7 +302,7 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 20000
|
||||
User=159.75s Real=271.78s Sys=47.23s
|
||||
User=322.06s Real=702.43s Sys=129.03s
|
||||
|
||||
======================== run summary ======================
|
||||
|
||||
@@ -297,20 +310,20 @@ Run Summary
|
||||
|
||||
============================================================
|
||||
|
||||
Total Energy deposited = 451.298 keV +- 102.255 keV
|
||||
Total Energy deposited = 448.957 keV +- 104.060 keV
|
||||
|
||||
Track length of primary track = 867.560 um +- 185.114 um
|
||||
Track length of primary track = 872.644 um +- 187.763 um
|
||||
Range from EmCalculator = 937.365 um (from full dE/dx)
|
||||
|
||||
Projected range = 337.244 um +- 204.936 um
|
||||
Projected range = 339.833 um +- 206.808 um
|
||||
|
||||
Nb of steps of primary track = 87.27 +- 18.50 Step size= 9.932 um +- 94.328 nm
|
||||
Nb of steps of primary track = 87.79 +- 18.76 Step size= 9.932 um +- 91.913 nm
|
||||
|
||||
absorbed = 79.29 % transmit = 5.07 % reflected = 15.64 %
|
||||
absorbed = 78.31 % transmit = 5.38 % reflected = 16.30 %
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 249103066, 419417247
|
||||
Current couple of seeds = 1541586117, 1104020368
|
||||
----------------------------------------
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.11 2006/10/25 17:27:02 maire Exp $
|
||||
$Id: History,v 1.13 2007/04/27 10:38:11 maire Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -14,7 +14,12 @@ track of all tags.
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
27-04-07 mma (testem12-V08-02-01)
|
||||
- HistoManager : by default, get csdaRange from G4EmCalculator
|
||||
|
||||
08-01-07 V.Ivant (testem12-V08-02-00)
|
||||
- Uncomment hadron ionisation in Livermore builder
|
||||
|
||||
24-10-06 mma (testem12-V08-01-00)
|
||||
- GNUmakefile : LOADLIBS
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -133,32 +133,35 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -167,24 +170,29 @@ annihil: Sampling according eplus2gg model
|
||||
|
||||
msc: Model variant of multiple scattering for proton
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for GenericIon
|
||||
LateralDisplacementFlag= 0 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
@@ -192,13 +200,15 @@ ionIoni: tables are built for GenericIon
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -240,20 +250,23 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
msc: Model variant of multiple scattering for pi-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 1 GeV in 70 bins.
|
||||
|
||||
@@ -307,7 +320,7 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10000
|
||||
User=639.23s Real=740.01s Sys=43.11s
|
||||
User=1204.52s Real=1426.72s Sys=112.39s
|
||||
|
||||
======================== run summary ======================
|
||||
|
||||
@@ -315,18 +328,18 @@ Run Summary
|
||||
|
||||
============================================================
|
||||
|
||||
Total Energy deposited = 3.937 MeV +- 222.512 keV
|
||||
Total Energy deposited = 3.937 MeV +- 227.712 keV
|
||||
|
||||
Track length of primary track = 2.020 cm +- 2.729 mm
|
||||
Track length of primary track = 2.012 cm +- 2.787 mm
|
||||
Range from EmCalculator = 2.021 cm (from full dE/dx)
|
||||
|
||||
Projected range = 1.315 cm +- 4.420 mm
|
||||
Projected range = 1.314 cm +- 4.323 mm
|
||||
|
||||
Nb of steps of primary track = 238.75 +- 30.39 Step size= 84.595 um +- 4.546 um
|
||||
Nb of steps of primary track = 238.10 +- 30.94 Step size= 84.472 um +- 4.581 um
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 1061622923, 978064961
|
||||
Current couple of seeds = 1876977844, 634096150
|
||||
----------------------------------------
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: HistoManager.hh,v 1.3 2006/06/29 16:42:10 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: HistoManager.hh,v 1.4 2007/04/27 10:38:11 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -58,7 +58,7 @@ class HistoManager
|
||||
void SetFileName (const G4String& name) { fileName[0] = name;};
|
||||
void SetFileType (const G4String& name) { fileType = name;};
|
||||
void SetFileOption (const G4String& name) { fileOption = name;};
|
||||
void book();
|
||||
void book(G4double);
|
||||
void save();
|
||||
void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none");
|
||||
void FillHisto(G4int id, G4double e, G4double weight = 1.0);
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: RunAction.hh,v 1.3 2006/06/29 16:42:47 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: RunAction.hh,v 1.4 2007/04/27 10:38:11 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -59,7 +59,8 @@ class RunAction : public G4UserRunAction
|
||||
void AddProjRange (G4double x) { projRange += x; projRange2 += x*x;};
|
||||
void AddStepSize (G4int nb, G4double s)
|
||||
{ nbOfSteps += nb; nbOfSteps2 += nb*nb;
|
||||
stepSize += s ; stepSize2 += s*s; };
|
||||
stepSize += s ; stepSize2 += s*s; };
|
||||
|
||||
|
||||
private:
|
||||
DetectorConstruction* detector;
|
||||
@@ -72,6 +73,8 @@ class RunAction : public G4UserRunAction
|
||||
G4double projRange, projRange2;
|
||||
G4int nbOfSteps, nbOfSteps2;
|
||||
G4double stepSize, stepSize2;
|
||||
|
||||
G4double csdaRange;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: run01.mac,v 1.5 2006/10/25 17:27:02 maire Exp $
|
||||
# $Id: run01.mac,v 1.6 2007/04/27 10:38:11 maire Exp $
|
||||
#
|
||||
# limit the step size from histos 1 and 8
|
||||
#
|
||||
@@ -21,7 +21,7 @@
|
||||
/testem/histo/setFileName run01
|
||||
/testem/histo/setHisto 1 120 0. 2.4 cm #edep profile
|
||||
/testem/histo/setHisto 3 100 0. 3. cm #true track length
|
||||
/testem/histo/setcsdaRange 2.037 cm
|
||||
###/testem/histo/setcsdaRange 2.037 cm
|
||||
/testem/histo/setHisto 8 120 0. 1.2 none #normalized edep profile
|
||||
#
|
||||
/testem/applyStepMax true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: run02.mac,v 1.4 2006/10/25 17:27:02 maire Exp $
|
||||
# $Id: run02.mac,v 1.5 2007/04/27 10:38:11 maire Exp $
|
||||
#
|
||||
# limit the step size by geometry
|
||||
#
|
||||
@@ -22,7 +22,7 @@
|
||||
/testem/histo/setFileName run02
|
||||
/testem/histo/setHisto 1 120 0. 2.4 cm #edep profile
|
||||
/testem/histo/setHisto 3 100 0. 3. cm #true track length
|
||||
/testem/histo/setcsdaRange 2.037 cm
|
||||
###/testem/histo/setcsdaRange 2.037 cm
|
||||
/testem/histo/setHisto 8 120 0. 1.2 none #normalized edep profile
|
||||
#
|
||||
/testem/applyStepMax false
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: HistoManager.cc,v 1.3 2006/06/29 16:43:09 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: HistoManager.cc,v 1.4 2007/04/27 10:38:11 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -65,7 +65,7 @@ HistoManager::HistoManager()
|
||||
|
||||
histoMessenger = new HistoMessenger(this);
|
||||
|
||||
csdaRange = 1*mm;
|
||||
csdaRange = 0.;
|
||||
stepMax = DBL_MAX;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ HistoManager::~HistoManager()
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::book()
|
||||
void HistoManager::book(G4double range)
|
||||
{
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if(!af) return;
|
||||
@@ -121,6 +121,8 @@ void HistoManager::book()
|
||||
if (factoryOn)
|
||||
G4cout << "\n----> Histogram Tree is opened in " << fileName[1] << G4endl;
|
||||
#endif
|
||||
|
||||
if (csdaRange == 0.) csdaRange = range;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -209,7 +211,7 @@ void HistoManager::SetHisto(G4int ih,
|
||||
G4cout << " stepMax = " << G4BestUnit(stepMax,"Length") << G4endl;
|
||||
}
|
||||
|
||||
if (ih == 8) {
|
||||
if ((ih == 8)&&(csdaRange>0.)) {
|
||||
stepMax = std::min(stepMax,frac*Width[ih]*csdaRange);
|
||||
G4cout << " stepMax = " << G4BestUnit(stepMax,"Length") << G4endl;
|
||||
}
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmLivermore.cc,v 1.2 2006/06/29 16:43:19 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: PhysListEmLivermore.cc,v 1.3 2007/01/08 16:33:52 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -108,8 +108,8 @@ void PhysListEmLivermore::ConstructProcess()
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
///pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
///pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 2, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: RunAction.cc,v 1.6 2006/06/29 16:43:36 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: RunAction.cc,v 1.7 2007/04/27 10:38:11 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -81,15 +81,26 @@ void RunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
//initialize mean step size
|
||||
//
|
||||
nbOfSteps = nbOfSteps2 = 0; stepSize = stepSize2 = 0.;
|
||||
|
||||
|
||||
//get csdaRange from EmCalculator
|
||||
//
|
||||
G4EmCalculator emCalculator;
|
||||
G4Material* material = detector->GetAbsorMaterial();
|
||||
G4ParticleDefinition* particle = kinematic->GetParticleGun()
|
||||
->GetParticleDefinition();
|
||||
G4double energy = kinematic->GetParticleGun()->GetParticleEnergy();
|
||||
csdaRange = 0.;
|
||||
if (particle->GetPDGCharge() != 0.)
|
||||
csdaRange = emCalculator.GetCSDARange(energy,particle,material);
|
||||
|
||||
//histograms
|
||||
//
|
||||
histoManager->book();
|
||||
histoManager->book(csdaRange);
|
||||
|
||||
//set StepMax from histos
|
||||
//
|
||||
G4double stepMax = histoManager->GetStepMax();
|
||||
physics->GetStepMaxProcess()->SetMaxStep(stepMax);
|
||||
physics->GetStepMaxProcess()->SetMaxStep(stepMax);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -150,10 +161,10 @@ void RunAction::EndOfRunAction(const G4Run* aRun)
|
||||
|
||||
//compare with csda range
|
||||
//
|
||||
G4EmCalculator emCalculator;
|
||||
G4double csdaRange = 0.;
|
||||
if (particle->GetPDGCharge() != 0.)
|
||||
csdaRange = emCalculator.GetCSDARange(energy,particle,material);
|
||||
//G4EmCalculator emCalculator;
|
||||
//G4double csdaRange = 0.;
|
||||
//if (particle->GetPDGCharge() != 0.)
|
||||
// csdaRange = emCalculator.GetCSDARange(energy,particle,material);
|
||||
G4cout
|
||||
<< "\n Range from EmCalculator = " << G4BestUnit(csdaRange,"Length")
|
||||
<< " (from full dE/dx)" << G4endl;
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: SteppingAction.cc,v 1.3 2006/06/29 16:43:43 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: SteppingAction.cc,v 1.4 2007/04/27 10:38:11 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -70,7 +70,7 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
histoManager->FillHisto(1, r, edep);
|
||||
|
||||
G4double r0 = histoManager->GetcsdaRange();
|
||||
histoManager->FillHisto(8, r/r0, edep);
|
||||
if (r0 > 0.) histoManager->FillHisto(8, r/r0, edep);
|
||||
|
||||
//step size of primary particle or charged secondaries
|
||||
//
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.12 2006/10/24 16:04:30 maire Exp $
|
||||
$Id: History,v 1.13 2007/04/06 16:00:50 maire Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -14,6 +14,9 @@ track of all tags.
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
06-04-07 mma (testem13-V08-02-00)
|
||||
- vis.mac : suppress the command drawTracks
|
||||
|
||||
24-10-06 mma (testem13-V08-01-00)
|
||||
- GNUmakefile : LOADLIBS
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -128,25 +128,27 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -156,23 +158,27 @@ annihil: Sampling according eplus2gg model
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -212,15 +218,17 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- appears in <Water> world volume
|
||||
@@ -273,7 +281,7 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100000
|
||||
User=21.14s Real=21.18s Sys=0s
|
||||
User=29.7s Real=29.73s Sys=0.01s
|
||||
|
||||
The run consists of 100000 gamma of 100 keV through 1 cm of Water (density: 1 g/cm3 )
|
||||
|
||||
@@ -340,7 +348,7 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100000
|
||||
User=22.03s Real=22.06s Sys=0s
|
||||
User=32.06s Real=32.07s Sys=0s
|
||||
|
||||
The run consists of 100000 e- of 100 MeV through 1 cm of Water (density: 1 g/cm3 )
|
||||
|
||||
|
||||
@@ -27,6 +27,3 @@
|
||||
# if too many tracks cause core dump => storeTrajectory 0
|
||||
/tracking/storeTrajectory 1
|
||||
/vis/scene/endOfEventAction accumulate
|
||||
#
|
||||
/testem/event/drawTracks
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.8 2006/10/24 16:54:16 maire Exp $
|
||||
$Id: History,v 1.9 2007/04/06 16:07:53 maire Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -14,6 +14,9 @@ track of all tags.
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
06-04-07 mma (testem14-V08-02-00)
|
||||
- vis.mac : suppress command drawTracks
|
||||
|
||||
24-10-06 mma (testem14-V08-01-01)
|
||||
- GNUmakefile : LOADLIBS
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -129,25 +129,27 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -157,23 +159,27 @@ annihil: Sampling according eplus2gg model
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -213,15 +219,17 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- appears in <Water> world volume
|
||||
@@ -274,7 +282,7 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100000
|
||||
User=23s Real=23s Sys=0s
|
||||
User=33s Real=33s Sys=0s
|
||||
|
||||
The run consists of 100000 gamma of 100 keV through 100 m of Water (density: 1 g/cm3 )
|
||||
|
||||
@@ -343,7 +351,7 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100000
|
||||
User=23s Real=23s Sys=0s
|
||||
User=34s Real=34s Sys=0s
|
||||
|
||||
The run consists of 100000 e- of 100 MeV through 100 m of Water (density: 1 g/cm3 )
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Macro file for the initialization phase of "TestEm13.cc"
|
||||
# Macro file for the initialization phase of "TestEm14.cc"
|
||||
#
|
||||
# Sets some default verbose
|
||||
# and initializes the graphic.
|
||||
@@ -27,6 +27,3 @@
|
||||
# if too many tracks cause core dump => storeTrajectory 0
|
||||
/tracking/storeTrajectory 1
|
||||
/vis/scene/endOfEventAction accumulate
|
||||
#
|
||||
/testem/event/drawTracks
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.7 2006/10/24 10:28:10 maire Exp $
|
||||
$Id: History,v 1.8 2007/03/15 15:52:39 maire Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -15,6 +15,9 @@ track of all tags.
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
15-03-07 mma (testem15-V08-02-00)
|
||||
- SteppingAction: add protection if no lateralDisplacement
|
||||
|
||||
24-10-06 mma (testem15-V08-01-00)
|
||||
- GNUmakefile : LOADLIBS
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -135,29 +135,32 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
@@ -167,35 +170,42 @@ annihil: Sampling according eplus2gg model
|
||||
|
||||
msc: Model variant of multiple scattering for proton
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
msc: Model variant of multiple scattering for GenericIon
|
||||
LateralDisplacementFlag= 0 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -235,19 +245,22 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
msc: Model variant of multiple scattering for pi-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- appears in <World> world volume
|
||||
@@ -289,31 +302,31 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10000
|
||||
User=3.4s Real=3.4s Sys=0s
|
||||
User=5.6s Real=5.6s Sys=0s
|
||||
|
||||
The run consists of 10000 e- of 5 MeV through 100 m of Water (density: 1 g/cm3 )
|
||||
|
||||
Process calls frequency ---> msc = 10000
|
||||
|
||||
truePathLength : 2.6311 cm +- 2.4801 mm
|
||||
geomPathLength : 2.0081 cm +- 1.3007 mm
|
||||
lateralDisplac : 1.1355 cm +- 1.1044 mm
|
||||
Psi : 513.82 mrad +- 28.091 mrad (29.44 deg +- 1.6095 deg)
|
||||
truePathLength : 2.7521 cm +- 3.269 nm
|
||||
geomPathLength : 2.0696 cm +- 11.392 nm
|
||||
lateralDisplac : 1.1482 cm +- 9.6993 nm
|
||||
Psi : 506.49 mrad +- 0.00036931 mrad (29.02 deg +- 2.116e-05 deg)
|
||||
|
||||
Theta_plane : 1678.5 mrad (96.168 deg)
|
||||
phi correlation: 0.28825 +- 0.17735 (std::cos(phi_pos - phi_dir))
|
||||
Theta_plane : 1818.2 mrad (104.18 deg)
|
||||
phi correlation: 0.26267 +- 0.058466 (std::cos(phi_pos - phi_dir))
|
||||
|
||||
Verification from G4EmCalculator.
|
||||
|
||||
transport mean free path : 8.346 cm
|
||||
range from restrict dE/dx: 2.7521 cm
|
||||
---> effective facRange : 0.31526
|
||||
---> effective facRange : 1
|
||||
|
||||
compute theta0 from Highland : 605.2 mrad (34.676 deg)
|
||||
compute theta0 from Highland : 620.13 mrad (35.531 deg)
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 178521571, 539724907
|
||||
Current couple of seeds = 1055489048, 167744914
|
||||
----------------------------------------
|
||||
#
|
||||
/gun/energy 100 keV
|
||||
@@ -345,7 +358,7 @@ Index : 1 used in the geometry : Yes recalculation needed : No
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 178521571, 539724907
|
||||
Current couple of seeds = 1055489048, 167744914
|
||||
----------------------------------------
|
||||
Start Run processing.
|
||||
|
||||
@@ -353,31 +366,31 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10000
|
||||
User=3.3s Real=3.3s Sys=0s
|
||||
User=5.4s Real=5.4s Sys=0s
|
||||
|
||||
The run consists of 10000 e- of 100 keV through 100 m of Water (density: 1 g/cm3 )
|
||||
|
||||
Process calls frequency ---> msc = 10000
|
||||
|
||||
truePathLength : 6.3049 um +- 1.816 um
|
||||
geomPathLength : 6.1688 um +- 1.7433 um
|
||||
lateralDisplac : 958.03 nm +- 400.61 nm
|
||||
Psi : 147.6 mrad +- 22.686 mrad (8.4567 deg +- 1.2998 deg)
|
||||
truePathLength : 6.3051 um +- 5404.2 fm
|
||||
geomPathLength : 6.1807 um +- 878.92 fm
|
||||
lateralDisplac : 923.68 nm +- 256.83 fm
|
||||
Psi : 148.35 mrad +- 8.7703e-05 mrad (8.4998 deg +- 5.025e-06 deg)
|
||||
|
||||
Theta_plane : 240.59 mrad (13.785 deg)
|
||||
phi correlation: 0.087898 +- 0.13241 (std::cos(phi_pos - phi_dir))
|
||||
Theta_plane : 241.37 mrad (13.83 deg)
|
||||
phi correlation: 0.090798 +- 0.13131 (std::cos(phi_pos - phi_dir))
|
||||
|
||||
Verification from G4EmCalculator.
|
||||
|
||||
transport mean free path : 157.63 um
|
||||
range from restrict dE/dx: 143.16 um
|
||||
---> effective facRange : 0.039999
|
||||
---> effective facRange : 0.04
|
||||
|
||||
compute theta0 from Highland : 180.68 mrad (10.352 deg)
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 382949488, 373885619
|
||||
Current couple of seeds = 647930445, 779579682
|
||||
----------------------------------------
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: SteppingAction.cc,v 1.5 2006/06/29 16:47:20 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: SteppingAction.cc,v 1.6 2007/03/15 15:52:39 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -106,8 +106,10 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
histoManager->FillHisto(7,phiPos);
|
||||
G4double phiDir = std::atan2(zdir, ydir);
|
||||
histoManager->FillHisto(8,phiDir);
|
||||
|
||||
G4double phiCorrel = (yend*ydir + zend*zdir)/lateralDisplacement;
|
||||
|
||||
G4double phiCorrel = 0.;
|
||||
if (lateralDisplacement > 0.)
|
||||
phiCorrel = (yend*ydir + zend*zdir)/lateralDisplacement;
|
||||
runAction->SumPhiCorrel(phiCorrel);
|
||||
histoManager->FillHisto(9,phiCorrel);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,4 @@
|
||||
# if too many tracks cause core dump => storeTrajectory 0
|
||||
/tracking/storeTrajectory 1
|
||||
/vis/scene/endOfEventAction accumulate
|
||||
#
|
||||
/testem/event/drawTracks
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.3 2006/10/24 10:14:46 maire Exp $
|
||||
# $Id: GNUmakefile,v 1.5 2007/01/18 10:24:35 vnivanch Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
@@ -24,17 +24,15 @@ include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
ifdef G4ANALYSIS_USE
|
||||
# add -v to see what is going on.
|
||||
# add RunAction.o such that the linker finds AIDA_createAnalysisFactory
|
||||
# for the aida-config command see the README file
|
||||
CPPFLAGS += `aida-config --include`
|
||||
LOADLIBS += $(G4WORKDIR)/tmp/$(G4SYSTEM)/TestEm16/RunAction.o `aida-config --lib`
|
||||
LOADLIBS += `aida-config --lib`
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
|
||||
histclean:
|
||||
rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/RunAction.o
|
||||
rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/SteppingAction.o
|
||||
rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/HistoManager.o
|
||||
|
||||
visclean:
|
||||
rm -f g4*.prim g4*.eps g4*.wrl
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.5 2006/10/24 10:14:46 maire Exp $
|
||||
$Id: History,v 1.6 2007/01/18 10:24:35 vnivanch Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -14,6 +14,11 @@ track of all tags.
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
18-01-07 V.Ivant (testem16-V08-02-00)
|
||||
- GNUmakefile - minor fix
|
||||
- HistoManager and HistoMessenger added (H.Burkhardt)
|
||||
- Command to modify upper step limit is added (H.Burkhardt)
|
||||
|
||||
24-10-06 mma (testem16-V08-01-00)
|
||||
- GNUmakefile : LOADLIBS
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
|
||||
$Id: README,v 1.3 2007/01/18 09:07:20 hbu Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -19,11 +19,11 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
|
||||
The default is 500 m of vacuum.
|
||||
|
||||
A transverse uniform magnetic field can be applied.
|
||||
|
||||
|
||||
The default geometry is constructed in DetectorConstruction class,
|
||||
but all of the above parameters can be changed interactively via
|
||||
the commands defined in the DetectorMessenger class.
|
||||
|
||||
|
||||
2- PHYSICS LIST
|
||||
|
||||
The particle list is the one of novice/exampleN03 and TestEm6
|
||||
@@ -31,7 +31,7 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
|
||||
To make the synchrotron radiation easily visible, a very low
|
||||
pressure "vaccuum" and a magnetic field of by default 1 Tesla
|
||||
in z-direction is used.
|
||||
|
||||
|
||||
3- AN EVENT : THE PRIMARY GENERATOR
|
||||
|
||||
The primary kinematic consists of a single particle which hits the
|
||||
@@ -54,9 +54,9 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
|
||||
The initialisation of the drawing is done via the command
|
||||
> /control/execute vis.mac
|
||||
> /run/beamOn 1
|
||||
|
||||
|
||||
The detector has a default view which is a longitudinal view of the box.
|
||||
|
||||
|
||||
The tracks are drawn at the end of event, and erased at the end of run.
|
||||
Optionaly one can choose to draw all particles, only the charged one,
|
||||
or none. This command is defined in EventActionMessenger class.
|
||||
@@ -81,10 +81,10 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
|
||||
- compile and link to generate an executable
|
||||
% cd geant4/examples/extended/electromagnetic/TestEm16
|
||||
% make
|
||||
|
||||
|
||||
- execute Test in 'batch' mode from macro files
|
||||
% TestEm16 run01.mac
|
||||
|
||||
|
||||
- execute Test in 'interactive mode' with visualization
|
||||
% TestEm16
|
||||
....
|
||||
@@ -92,7 +92,19 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
|
||||
....
|
||||
Idle> exit
|
||||
|
||||
7- HISTOGRAMS
|
||||
7 - TRACKING : stepMax and setMaxStepLength
|
||||
|
||||
In order to control the accuracy of the deposition, the user can limit
|
||||
'by hand' the maximum step size stepMax of charged particles.
|
||||
|
||||
The maximum tracking step length for computing of magnetic field lines
|
||||
is by default set to 1 km.
|
||||
Synchrotron radiation in very weak magnetic fields of the order of 1 Gauss
|
||||
may require longer pathlength.
|
||||
This can be achieved with using setMaxStepLength like
|
||||
/testem/tracking/setMaxStepLength 100 km
|
||||
|
||||
8- HISTOGRAMS
|
||||
|
||||
TestEm16 produces 3 histograms which illustrate synchrotron radiation.
|
||||
The photon energy spectrum (photons / energy bin) and the power spectrum
|
||||
@@ -108,5 +120,5 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
|
||||
make
|
||||
|
||||
By default the histograms are saved as testem16.hbook
|
||||
It is possible to choose the format of the histogram file (hbook, root, XML):
|
||||
comment/uncomment 1 line in the constructor of RunAction.
|
||||
It is possible to choose the format of the histogram file (hbook, root, XML)
|
||||
and the binning using /testem/histo/ command, see run01.mac
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: TestEm16.cc,v 1.2 2006/06/29 16:47:24 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: TestEm16.cc,v 1.3 2007/01/18 09:07:20 hbu Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -43,6 +43,7 @@
|
||||
#include "RunAction.hh"
|
||||
#include "EventAction.hh"
|
||||
#include "SteppingAction.hh"
|
||||
#include "HistoManager.hh"
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
#include "G4VisExecutive.hh"
|
||||
@@ -73,12 +74,14 @@ int main(int argc,char** argv) {
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
|
||||
//set user action classes
|
||||
RunAction* RunAct;
|
||||
HistoManager* histo = new HistoManager();
|
||||
|
||||
runManager->SetUserAction(RunAct = new RunAction);
|
||||
//set user action classes
|
||||
RunAction* RunAct;
|
||||
|
||||
runManager->SetUserAction(RunAct = new RunAction(histo));
|
||||
runManager->SetUserAction(new EventAction);
|
||||
runManager->SetUserAction(new SteppingAction(RunAct));
|
||||
runManager->SetUserAction(new SteppingAction(RunAct,histo));
|
||||
|
||||
//get the pointer to the User Interface manager
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: TestEm16.in,v 1.3 2006/05/24 12:58:49 maire Exp $
|
||||
# $Id: TestEm16.in,v 1.4 2007/01/18 09:07:20 hbu Exp $
|
||||
#
|
||||
# Macro file for "TestEm16.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
@@ -20,7 +20,7 @@
|
||||
/process/inactivate compt
|
||||
/process/inactivate conv
|
||||
#
|
||||
/testem/det/setField 0.1 tesla
|
||||
/testem/det/setField 1.0 tesla
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 9.9994890009 GeV
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -53,7 +53,6 @@ Registered filter factories:
|
||||
originVolumeFilter
|
||||
attributeFilter
|
||||
|
||||
G4ANALYSIS_USE was not set, there will be no AIDA histos
|
||||
/run/verbose 2
|
||||
#
|
||||
/testem/det/setMat Vacuum
|
||||
@@ -84,7 +83,7 @@ CutLength : 1 km
|
||||
/process/inactivate conv
|
||||
/run/physicsModified
|
||||
#
|
||||
/testem/det/setField 0.1 tesla
|
||||
/testem/det/setField 1.0 tesla
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 9.9994890009 GeV
|
||||
@@ -110,17 +109,19 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
@@ -130,12 +131,13 @@ SynRad: Incoherent Synchrotron Radiation
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
@@ -145,6 +147,7 @@ annihil: Sampling according eplus2gg model
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -207,29 +210,30 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 9876, 54321
|
||||
----------------------------------------
|
||||
G4ANALYSIS_USE was not set, there will be no AIDA histos
|
||||
Start Run processing.
|
||||
|
||||
---> Begin of Event: 0
|
||||
G4SynchrotronRadiation::GetMeanFreePath :
|
||||
MeanFreePath = 1.618 m
|
||||
MeanFreePath = 16.18 cm
|
||||
G4SynchrotronRadiation::GetRandomEnergySR :
|
||||
Ecr = 6.65 keV
|
||||
Emean = 2.048 keV
|
||||
E_rms = 3.718 keV
|
||||
Ecr = 66.5 keV
|
||||
Emean = 20.48 keV
|
||||
E_rms = 37.18 keV
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100
|
||||
User=6.38s Real=7.26s Sys=0.03s
|
||||
User=28.64s Real=29.93s Sys=0.08s
|
||||
Summary for synchrotron radiation :
|
||||
Number of photons = 27201
|
||||
Emean = 2.016 +/- 0.02196 keV
|
||||
E_rms = 3.621 keV
|
||||
Energy Max / Mean = 24.16
|
||||
MeanFreePath = 1.609 m
|
||||
Number of photons = 64554
|
||||
Emean = 20.24 +/- 0.1449 keV
|
||||
E_rms = 36.82 keV
|
||||
Energy Max / Mean = 29.54
|
||||
MeanFreePath = 16.2 cm
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 818335740, 669122331
|
||||
Current couple of seeds = 1554742231, 6856043
|
||||
----------------------------------------
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: DetectorConstruction.hh,v 1.3 2006/06/29 16:47:26 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: DetectorConstruction.hh,v 1.4 2007/01/18 09:07:20 hbu Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -57,6 +57,7 @@ class DetectorConstruction : public G4VUserDetectorConstruction
|
||||
void SetMaterial (G4String);
|
||||
void SetMagField (G4double);
|
||||
void SetMaxStepSize (G4double);
|
||||
void SetMaxStepLength (G4double);
|
||||
|
||||
void UpdateGeometry();
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: DetectorMessenger.hh,v 1.3 2006/06/29 16:47:28 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: DetectorMessenger.hh,v 1.4 2007/01/18 09:07:20 hbu Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -58,14 +58,15 @@ private:
|
||||
|
||||
G4UIdirectory* testemDir;
|
||||
G4UIdirectory* detDir;
|
||||
G4UIdirectory* trackdir;
|
||||
G4UIcmdWithAString* MaterCmd;
|
||||
G4UIcmdWithADoubleAndUnit* SizeCmd;
|
||||
G4UIcmdWithADoubleAndUnit* MagFieldCmd;
|
||||
G4UIcmdWithADoubleAndUnit* MaxStepCmd;
|
||||
G4UIcmdWithADoubleAndUnit* MaxStepLength;
|
||||
G4UIcmdWithoutParameter* UpdateCmd;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef HistoManager_h
|
||||
#define HistoManager_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
namespace AIDA {
|
||||
class IAnalysisFactory;
|
||||
class ITree;
|
||||
class IHistogram1D;
|
||||
}
|
||||
|
||||
class HistoMessenger;
|
||||
|
||||
const G4int MaxHisto = 4;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class HistoManager
|
||||
{
|
||||
public:
|
||||
|
||||
HistoManager();
|
||||
~HistoManager();
|
||||
|
||||
void SetFileName (const G4String& name) { fileName[0] = name;};
|
||||
void SetFileType (const G4String& name) { fileType = name;};
|
||||
void SetFileOption (const G4String& name) { fileOption = name;};
|
||||
void book();
|
||||
void save();
|
||||
void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none");
|
||||
void FillHisto(G4int id, G4double e, G4double weight = 1.0);
|
||||
void RemoveHisto (G4int);
|
||||
|
||||
G4bool HistoExist (G4int id) {return exist[id];}
|
||||
G4double GetHistoUnit(G4int id) {return Unit[id];}
|
||||
G4double GetBinWidth (G4int id) {return Width[id];}
|
||||
|
||||
private:
|
||||
|
||||
G4String fileName[2];
|
||||
G4String fileType;
|
||||
G4String fileOption;
|
||||
AIDA::IAnalysisFactory* af;
|
||||
AIDA::ITree* tree;
|
||||
AIDA::IHistogram1D* histo[MaxHisto];
|
||||
G4bool exist[MaxHisto];
|
||||
G4String Label[MaxHisto];
|
||||
G4String Title[MaxHisto];
|
||||
G4int Nbins[MaxHisto];
|
||||
G4double Vmin [MaxHisto];
|
||||
G4double Vmax [MaxHisto];
|
||||
G4double Unit [MaxHisto];
|
||||
G4double Width[MaxHisto];
|
||||
G4bool factoryOn;
|
||||
HistoMessenger* histoMessenger;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,70 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef HistoMessenger_h
|
||||
#define HistoMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class HistoManager;
|
||||
class G4UIdirectory;
|
||||
class G4UIcommand;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithAnInteger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class HistoMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
|
||||
HistoMessenger(HistoManager* );
|
||||
~HistoMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand* ,G4String );
|
||||
|
||||
private:
|
||||
|
||||
HistoManager* histoManager;
|
||||
|
||||
G4UIdirectory* histoDir;
|
||||
G4UIcmdWithAString* factoryCmd;
|
||||
G4UIcmdWithAString* typeCmd;
|
||||
G4UIcmdWithAString* optionCmd;
|
||||
G4UIcommand* histoCmd;
|
||||
G4UIcmdWithAnInteger* rmhistoCmd;
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: RunAction.hh,v 1.4 2006/06/29 16:47:42 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: RunAction.hh,v 1.5 2007/01/18 09:07:20 hbu Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -35,43 +35,31 @@
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
const int n_histos = 3;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4Run;
|
||||
|
||||
namespace AIDA {
|
||||
class IAnalysisFactory;
|
||||
class ITree;
|
||||
class IHistogram1D;
|
||||
}
|
||||
class HistoManager;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
RunAction();
|
||||
RunAction(HistoManager*);
|
||||
~RunAction();
|
||||
|
||||
public:
|
||||
void BeginOfRunAction(const G4Run*);
|
||||
void EndOfRunAction(const G4Run*);
|
||||
|
||||
AIDA::IHistogram1D* GetHisto(G4int id) {return histo[id];}
|
||||
|
||||
G4int n_gam_sync; // number of synchrotron radiation photons generated
|
||||
G4double e_gam_sync, e_gam_sync2, e_gam_sync_max; // energy of synchrotron radiation photons generated
|
||||
G4double lam_gam_sync; // step length between synchrotron radiation photons
|
||||
|
||||
private:
|
||||
AIDA::IAnalysisFactory* af;
|
||||
AIDA::ITree* tree;
|
||||
AIDA::IHistogram1D* histo[n_histos]; // 3 histograms
|
||||
HistoManager* histoManager;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: SteppingAction.hh,v 1.2 2006/06/29 16:47:44 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: SteppingAction.hh,v 1.3 2007/01/18 09:07:20 hbu Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -36,20 +36,21 @@
|
||||
#include "globals.hh"
|
||||
|
||||
class RunAction;
|
||||
class HistoManager;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class SteppingAction : public G4UserSteppingAction
|
||||
{
|
||||
public:
|
||||
SteppingAction(RunAction*);
|
||||
SteppingAction(RunAction*, HistoManager*);
|
||||
~SteppingAction();
|
||||
|
||||
void UserSteppingAction(const G4Step*);
|
||||
|
||||
private:
|
||||
RunAction* runAction;
|
||||
G4double muonMass;
|
||||
HistoManager* histoManager;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: run01.mac,v 1.3 2006/05/24 12:58:49 maire Exp $
|
||||
# $Id: run01.mac,v 1.4 2007/01/18 09:07:20 hbu Exp $
|
||||
#
|
||||
# Macro file for "TestEm16.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
@@ -6,20 +6,34 @@
|
||||
#
|
||||
/control/verbose 2
|
||||
/run/verbose 2
|
||||
/testem/det/setMat Vacuum
|
||||
#
|
||||
/testem/det/setMat Vacuum
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
# /process/activate SynchrotronRadiation
|
||||
#
|
||||
# inactivate other processes to make SynchrotronRadiation more visible
|
||||
/process/inactivate msc
|
||||
/process/inactivate eIoni
|
||||
/process/inactivate eBrem
|
||||
/process/inactivate annihil
|
||||
/process/inactivate phot
|
||||
/process/inactivate compt
|
||||
/process/inactivate conv
|
||||
#
|
||||
/testem/det/setField 1 tesla
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 9.9994890009 GeV
|
||||
# set up histos. A reasonable choice for the upper limits is about 5*Ecr and 10*MeanFreePath
|
||||
/testem/histo/setHisto 1 100 0 400 keV #SynRad Energy
|
||||
/testem/histo/setHisto 2 100 0 400 keV #SynRad Power
|
||||
/testem/histo/setHisto 3 100 0 1.6 m #Path Length
|
||||
/testem/histo/setFileName testem16
|
||||
/testem/histo/setFileType hbook
|
||||
#
|
||||
# next would be 30 degree angle sin 30deg = 0.5 cos 30 deg = 0.866025403
|
||||
#/gun/direction 0.5 0 0.866025403
|
||||
#
|
||||
/run/beamOn 1000
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#
|
||||
# Macro file for "TestEm16.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
#
|
||||
/control/verbose 2
|
||||
/run/verbose 2
|
||||
/run/initialize
|
||||
#
|
||||
# /process/activate SynchrotronRadiation
|
||||
#
|
||||
# inactivate other processes to make SynchrotronRadiation more visible
|
||||
/process/inactivate msc
|
||||
/process/inactivate eIoni
|
||||
/process/inactivate eBrem
|
||||
/process/inactivate annihil
|
||||
/process/inactivate phot
|
||||
/process/inactivate compt
|
||||
/process/inactivate conv
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 10 TeV
|
||||
#
|
||||
# set up histos. A reasonable choice for the upper limits is about 5*Ecr and 10*MeanFreePath
|
||||
/testem/histo/setHisto 1 100 0 20 MeV #SynRad Energy
|
||||
/testem/histo/setHisto 2 100 0 20 MeV #SynRad Power
|
||||
/testem/histo/setHisto 3 100 0 32 km #Path Length
|
||||
/testem/histo/setFileName testem16_run02
|
||||
/testem/histo/setFileType hbook
|
||||
#
|
||||
/testem/det/setSize 200 km
|
||||
/testem/det/setMat Vacuum
|
||||
/testem/det/update
|
||||
# very weak magnetic field, increase step length
|
||||
/testem/det/setField 0.5 gauss
|
||||
/testem/tracking/setMaxStepLength 100 km
|
||||
#
|
||||
/run/beamOn 1000
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: DetectorConstruction.cc,v 1.3 2006/06/29 16:47:48 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: DetectorConstruction.cc,v 1.4 2007/01/18 09:07:20 hbu Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4UniformMagField.hh"
|
||||
#include "G4PropagatorInField.hh"
|
||||
#include "G4UserLimits.hh"
|
||||
|
||||
#include "G4GeometryManager.hh"
|
||||
@@ -194,6 +195,23 @@ void DetectorConstruction::SetMaxStepSize(G4double val)
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void DetectorConstruction::SetMaxStepLength(G4double val)
|
||||
{
|
||||
// set the maximum length of tracking step
|
||||
//
|
||||
if (val <= DBL_MIN)
|
||||
{ G4cout << "\n --->warning from SetMaxStepLength: maxStep "
|
||||
<< val << " out of range. Command refused" << G4endl;
|
||||
return;
|
||||
}
|
||||
G4TransportationManager* tmanager =
|
||||
G4TransportationManager::GetTransportationManager();
|
||||
tmanager->GetPropagatorInField()
|
||||
->SetLargestAcceptableStep(val);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
void DetectorConstruction::UpdateGeometry()
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:47:50 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: DetectorMessenger.cc,v 1.3 2007/01/18 09:07:20 hbu Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -79,6 +79,16 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
|
||||
MaxStepCmd->SetRange("Size>0.");
|
||||
MaxStepCmd->SetUnitCategory("Length");
|
||||
MaxStepCmd->AvailableForStates(G4State_Idle);
|
||||
|
||||
trackdir = new G4UIdirectory("/testem/tracking/");
|
||||
trackdir->SetGuidance("step length");
|
||||
MaxStepLength = new G4UIcmdWithADoubleAndUnit("/testem/tracking/setMaxStepLength",this);
|
||||
MaxStepLength->SetGuidance("Set the maximum length of tracking step");
|
||||
MaxStepLength->SetGuidance("when integrating magnetic field line.");
|
||||
MaxStepLength->SetParameterName("Size",false);
|
||||
MaxStepLength->SetRange("Size>0.");
|
||||
MaxStepLength->SetUnitCategory("Length");
|
||||
MaxStepLength->AvailableForStates(G4State_Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -90,8 +100,10 @@ DetectorMessenger::~DetectorMessenger()
|
||||
delete MagFieldCmd;
|
||||
delete UpdateCmd;
|
||||
delete MaxStepCmd;
|
||||
delete MaxStepLength;
|
||||
delete detDir;
|
||||
delete testemDir;
|
||||
delete trackdir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -112,6 +124,9 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
|
||||
if( command == MaxStepCmd )
|
||||
{ Detector->SetMaxStepSize(MaxStepCmd->GetNewDoubleValue(newValue));}
|
||||
|
||||
if( command == MaxStepLength )
|
||||
{ Detector->SetMaxStepLength(MaxStepLength->GetNewDoubleValue(newValue));}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "HistoManager.hh"
|
||||
#include "HistoMessenger.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
#include "AIDA/AIDA.h"
|
||||
#endif
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
HistoManager::HistoManager()
|
||||
:af(0),tree(0),factoryOn(false)
|
||||
{
|
||||
#ifdef G4ANALYSIS_USE
|
||||
// Creating the analysis factory
|
||||
af = AIDA_createAnalysisFactory();
|
||||
if(!af) {
|
||||
G4cout << " HistoManager::HistoManager() :"
|
||||
<< " problem creating the AIDA analysis factory."
|
||||
<< G4endl;
|
||||
}
|
||||
#endif
|
||||
|
||||
fileName[0] = "testem16";
|
||||
fileType = "hbook";
|
||||
fileOption = "--noErrors uncompress";
|
||||
// histograms
|
||||
for (G4int k=0; k<MaxHisto; k++) {
|
||||
histo[k] = 0;
|
||||
exist[k] = false;
|
||||
Unit[k] = 1.0;
|
||||
Width[k] = 1.0;
|
||||
}
|
||||
|
||||
histoMessenger = new HistoMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
HistoManager::~HistoManager()
|
||||
{
|
||||
delete histoMessenger;
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
delete af;
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::book()
|
||||
{
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if(!af) {
|
||||
G4cout << "HistoManager::book: WARNING AnalysisFactory is not created,"
|
||||
<< " there will be no AIDA histos" << G4endl;
|
||||
return;
|
||||
}
|
||||
G4cout << "\n----> Book AIDA histograms "<< G4endl;
|
||||
|
||||
// Creating a tree mapped to an hbook file.
|
||||
fileName[1] = fileName[0] + "." + fileType;
|
||||
G4bool readOnly = false;
|
||||
G4bool createNew = true;
|
||||
AIDA::ITreeFactory* tf = af->createTreeFactory();
|
||||
tree = tf->create(fileName[1], fileType, readOnly, createNew, fileOption);
|
||||
delete tf;
|
||||
if(!tree) {
|
||||
G4cout << "HistoManager::book() :"
|
||||
<< " problem creating the AIDA tree with "
|
||||
<< " storeName = " << fileName[1]
|
||||
<< " storeType = " << fileType
|
||||
<< " readOnly = " << readOnly
|
||||
<< " createNew = " << createNew
|
||||
<< " options = " << fileOption
|
||||
<< G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// Creating a histogram factory, whose histograms will be handled by the tree
|
||||
AIDA::IHistogramFactory* hf = af->createHistogramFactory(*tree);
|
||||
|
||||
// create selected histograms
|
||||
for (G4int k=0; k<MaxHisto; k++) {
|
||||
if (exist[k]) {
|
||||
histo[k] = hf->createHistogram1D( Label[k], Title[k],
|
||||
Nbins[k], Vmin[k], Vmax[k]);
|
||||
factoryOn = true;
|
||||
}
|
||||
}
|
||||
delete hf;
|
||||
if (factoryOn)
|
||||
G4cout << "\n----> Histogram Tree is opened in " << fileName[1] << G4endl;
|
||||
#else
|
||||
G4cout << "G4ANALYSIS_USE was not set, there will be no AIDA histos"
|
||||
<< G4endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::save()
|
||||
{
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if (factoryOn) {
|
||||
tree->commit(); // Writing the histograms to the file
|
||||
tree->close(); // and closing the tree (and the file)
|
||||
G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl;
|
||||
|
||||
delete tree;
|
||||
tree = 0;
|
||||
factoryOn = false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::FillHisto(G4int ih, G4double e, G4double weight)
|
||||
{
|
||||
if (ih > MaxHisto) {
|
||||
G4cout << "---> warning from HistoManager::FillHisto() : histo " << ih
|
||||
<< "does not exist; e= " << e << " w= " << weight << G4endl;
|
||||
return;
|
||||
}
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if(exist[ih]) histo[ih]->fill(e/Unit[ih], weight);
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::SetHisto(G4int ih,
|
||||
G4int nbins, G4double valmin, G4double valmax, const G4String& unit)
|
||||
{
|
||||
if (ih > MaxHisto) {
|
||||
G4cout << "---> warning from HistoManager::SetHisto() : histo " << ih
|
||||
<< "does not exist" << G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
const G4String id[] = { "0", "1", "2", "3" };
|
||||
const G4String title[] =
|
||||
{ "dummy", //0
|
||||
"SynRad Energy", //1
|
||||
"SynRad Power ", //2
|
||||
"Path Length" //3
|
||||
};
|
||||
|
||||
|
||||
G4String titl = title[ih];
|
||||
G4double vmin = valmin, vmax = valmax;
|
||||
Unit[ih] = 1.;
|
||||
|
||||
if (unit != "none") {
|
||||
titl = title[ih] + " (" + unit + ")";
|
||||
Unit[ih] = G4UnitDefinition::GetValueOf(unit);
|
||||
vmin = valmin/Unit[ih]; vmax = valmax/Unit[ih];
|
||||
}
|
||||
|
||||
exist[ih] = true;
|
||||
Label[ih] = id[ih];
|
||||
Title[ih] = titl;
|
||||
Nbins[ih] = nbins;
|
||||
Vmin[ih] = vmin;
|
||||
Vmax[ih] = vmax;
|
||||
Width[ih] = (valmax-valmin)/nbins;
|
||||
|
||||
G4cout << "----> SetHisto " << ih << ": " << titl << "; "
|
||||
<< nbins << " bins from "
|
||||
<< vmin << " " << unit << " to " << vmax << " " << unit << G4endl;
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::RemoveHisto(G4int ih)
|
||||
{
|
||||
if (ih > MaxHisto) {
|
||||
G4cout << "---> warning from HistoManager::RemoveHisto() : histo " << ih
|
||||
<< "does not exist" << G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
histo[ih] = 0; exist[ih] = false;
|
||||
}
|
||||
|
||||
//....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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "HistoMessenger.hh"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include "HistoManager.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
#include "G4UIparameter.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
HistoMessenger::HistoMessenger(HistoManager* manager)
|
||||
:histoManager (manager)
|
||||
{
|
||||
histoDir = new G4UIdirectory("/testem/histo/");
|
||||
histoDir->SetGuidance("histograms control");
|
||||
|
||||
factoryCmd = new G4UIcmdWithAString("/testem/histo/setFileName",this);
|
||||
factoryCmd->SetGuidance("set name for the histograms file");
|
||||
|
||||
typeCmd = new G4UIcmdWithAString("/testem/histo/setFileType",this);
|
||||
typeCmd->SetGuidance("set histograms file type: hbook, root, XML");
|
||||
typeCmd->SetCandidates("hbook root XML");
|
||||
|
||||
optionCmd = new G4UIcmdWithAString("/testem/histo/setFileOption",this);
|
||||
optionCmd->SetGuidance("set option for the histograms file");
|
||||
|
||||
histoCmd = new G4UIcommand("/testem/histo/setHisto",this);
|
||||
histoCmd->SetGuidance("Set bining of the histo number ih :");
|
||||
histoCmd->SetGuidance(" nbBins; valMin; valMax; unit (of vmin and vmax)");
|
||||
//
|
||||
G4UIparameter* ih = new G4UIparameter("ih",'i',false);
|
||||
ih->SetGuidance("histo number : from 1 to MaxHisto");
|
||||
ih->SetParameterRange("ih>0");
|
||||
histoCmd->SetParameter(ih);
|
||||
//
|
||||
G4UIparameter* nbBins = new G4UIparameter("nbBins",'i',false);
|
||||
nbBins->SetGuidance("number of bins");
|
||||
nbBins->SetParameterRange("nbBins>0");
|
||||
histoCmd->SetParameter(nbBins);
|
||||
//
|
||||
G4UIparameter* valMin = new G4UIparameter("valMin",'d',false);
|
||||
valMin->SetGuidance("valMin, expressed in unit");
|
||||
histoCmd->SetParameter(valMin);
|
||||
//
|
||||
G4UIparameter* valMax = new G4UIparameter("valMax",'d',false);
|
||||
valMax->SetGuidance("valMax, expressed in unit");
|
||||
histoCmd->SetParameter(valMax);
|
||||
//
|
||||
G4UIparameter* unit = new G4UIparameter("unit",'s',true);
|
||||
unit->SetGuidance("if omitted, vmin and vmax are assumed dimensionless");
|
||||
unit->SetDefaultValue("none");
|
||||
histoCmd->SetParameter(unit);
|
||||
|
||||
rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this);
|
||||
rmhistoCmd->SetGuidance("desactivate histo #id");
|
||||
rmhistoCmd->SetParameterName("id",false);
|
||||
rmhistoCmd->SetRange("id>0");
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
HistoMessenger::~HistoMessenger()
|
||||
{
|
||||
delete rmhistoCmd;
|
||||
delete histoCmd;
|
||||
delete optionCmd;
|
||||
delete typeCmd;
|
||||
delete factoryCmd;
|
||||
delete histoDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
|
||||
{
|
||||
if (command == factoryCmd)
|
||||
histoManager->SetFileName(newValues);
|
||||
|
||||
if (command == typeCmd)
|
||||
histoManager->SetFileType(newValues);
|
||||
|
||||
if (command == optionCmd)
|
||||
histoManager->SetFileOption(newValues);
|
||||
|
||||
if (command == histoCmd)
|
||||
{ G4int ih,nbBins; G4double vmin,vmax; char unts[30];
|
||||
const char* t = newValues;
|
||||
std::istringstream is(t);
|
||||
is >> ih >> nbBins >> vmin >> vmax >> unts;
|
||||
G4String unit = unts;
|
||||
G4double vUnit = 1. ;
|
||||
if (unit != "none") vUnit = G4UIcommand::ValueOf(unit);
|
||||
histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit);
|
||||
}
|
||||
|
||||
if (command == rmhistoCmd)
|
||||
histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues));
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: RunAction.cc,v 1.6 2006/06/29 16:48:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: RunAction.cc,v 1.8 2007/01/18 10:24:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -36,82 +36,24 @@
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#include "Randomize.hh"
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
#include "AIDA/AIDA.h"
|
||||
#endif
|
||||
#include "HistoManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RunAction::RunAction()
|
||||
:af(0), tree(0)
|
||||
RunAction::RunAction(HistoManager* histo)
|
||||
:histoManager(histo)
|
||||
{
|
||||
for (G4int j=0; j<n_histos; j++) histo[j] = 0;
|
||||
n_gam_sync = 0;
|
||||
e_gam_sync = 0;
|
||||
e_gam_sync2 = 0;
|
||||
e_gam_sync_max =0;
|
||||
lam_gam_sync = 0;
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
// Creating the analysis factory
|
||||
af = AIDA_createAnalysisFactory();
|
||||
|
||||
if (af) {
|
||||
// Creating the tree factory
|
||||
AIDA::ITreeFactory* tf = af->createTreeFactory();
|
||||
|
||||
// Creating a tree mapped to an hbook file.
|
||||
G4bool readOnly = false;
|
||||
G4bool createNew = true;
|
||||
G4String options = "--noErrors uncompress";
|
||||
tree = tf->create("testem16.hbook","hbook",readOnly,createNew,options);
|
||||
//tree = tf->create("testem16.root", "root",readOnly,createNew,options);
|
||||
//tree = tf->create("testem16.xml" ,"xml" ,readOnly,createNew,options);
|
||||
delete tf;
|
||||
|
||||
if (tree) {
|
||||
// Creating a histogram factory
|
||||
AIDA::IHistogramFactory* hf = af->createHistogramFactory(*tree);
|
||||
|
||||
// Creating histograms
|
||||
const G4double Ecr=66.5025;
|
||||
histo[0] = hf->createHistogram1D("1","SynRad Energy in keV",100, 0 ,5.*Ecr);
|
||||
histo[1] = hf->createHistogram1D("2","SynRad Power in keV",100, 0 ,5.*Ecr);
|
||||
histo[2] = hf->createHistogram1D("3","Path Length in m",100, 0, 1.6);
|
||||
|
||||
delete hf;
|
||||
G4cout << "\n----> Histogram tree is opened" << G4endl;
|
||||
}
|
||||
}
|
||||
G4cout << "G4ANALYSIS_USE was set, there will be AIDA histos" << '\n';
|
||||
#else
|
||||
G4cout << "G4ANALYSIS_USE was not set, there will be no AIDA histos" << '\n';
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RunAction::~RunAction()
|
||||
{
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
bool debug=true;
|
||||
bool Commit_Ok=tree->commit(); // Writing the histograms to the file
|
||||
if (Commit_Ok)
|
||||
{ if(debug) G4cout << "tree->commit() ok. Writing of histogram file done"
|
||||
<< '\n';
|
||||
}
|
||||
else if(!Commit_Ok)
|
||||
{ G4cout << "tree->commit() not successful, no histogram file written"
|
||||
<< '\n';
|
||||
}
|
||||
tree->close(); // and closing the tree (and the file)
|
||||
|
||||
delete tree;
|
||||
delete af;
|
||||
#endif
|
||||
}
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -122,6 +64,9 @@ void RunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
// save Rndm status
|
||||
G4RunManager::GetRunManager()->SetRandomNumberStore(true);
|
||||
CLHEP::HepRandom::showEngineStatus();
|
||||
|
||||
//book histograms
|
||||
histoManager->book();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -145,6 +90,10 @@ void RunAction::EndOfRunAction(const G4Run*)
|
||||
|
||||
// show Rndm status
|
||||
CLHEP::HepRandom::showEngineStatus();
|
||||
|
||||
//save histograms
|
||||
histoManager->save();
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: SteppingAction.cc,v 1.4 2006/06/29 16:48:04 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: SteppingAction.cc,v 1.5 2007/01/18 09:07:20 hbu Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -35,15 +35,12 @@
|
||||
#include "G4VProcess.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
#include "AIDA/IHistogram1D.h"
|
||||
#endif
|
||||
#include "HistoManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
SteppingAction::SteppingAction(RunAction* RuAct)
|
||||
:runAction(RuAct)
|
||||
SteppingAction::SteppingAction(RunAction* RuAct, HistoManager* histo)
|
||||
:runAction(RuAct), histoManager(histo)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -96,17 +93,10 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
<< " PGamma=" << G4BestUnit(PGamma,"Energy")
|
||||
<< " #secondaries lp=" << lp
|
||||
<< '\n';
|
||||
}
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
// fill histos
|
||||
if( runAction->GetHisto(0) ) // check the histos exist
|
||||
{
|
||||
runAction->GetHisto(0)->fill(Egamma/keV);
|
||||
runAction->GetHisto(1)->fill(Egamma/keV,Egamma/keV);
|
||||
runAction->GetHisto(2)->fill(aStep->GetStepLength()/m);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
histoManager->FillHisto(1,Egamma);
|
||||
histoManager->FillHisto(2,Egamma,Egamma/keV); // power spectrum : gamma weighted with its energy
|
||||
histoManager->FillHisto(3,aStep->GetStepLength());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -137,18 +137,18 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10000
|
||||
User=68.79s Real=92.16s Sys=3.33s
|
||||
User=140.49s Real=246.11s Sys=6.32s
|
||||
|
||||
The run consists of 10000 mu+ of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 )
|
||||
|
||||
Number of process calls ---> muIoni : 469540 muPairProd : 63243 muBrems : 645
|
||||
Number of process calls ---> muIoni : 468767 muPairProd : 63239 muBrems : 694
|
||||
|
||||
Simulation: total CrossSection = 0.53343 /cm MeanFreePath = 1.8747 cm massicCrossSection = 0.06778 cm2/g
|
||||
Simulation: total CrossSection = 0.5327 /cm MeanFreePath = 1.8772 cm massicCrossSection = 0.067687 cm2/g
|
||||
Theory: total CrossSection = 0.53938 /cm MeanFreePath = 1.854 cm massicCrossSection = 0.068536 cm2/g
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 1519165414, 739182601
|
||||
Current couple of seeds = 758590255, 1816922510
|
||||
----------------------------------------
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# $Id: GNUmakefile,v 1.1 2007/02/13 17:57:19 maire Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := TestEm18
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
#### G4ANALYSIS_USE := true
|
||||
|
||||
ifdef G4ANALYSIS_USE
|
||||
CPPFLAGS += -DG4ANALYSIS_USE
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
ifdef G4ANALYSIS_USE
|
||||
# for the aida-config command see the README file
|
||||
CPPFLAGS += `aida-config --include`
|
||||
LOADLIBS += `aida-config --lib`
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
|
||||
visclean:
|
||||
rm -f g4*.prim g4*.eps g4*.wrl
|
||||
rm -f .DAWN_*
|
||||
|
||||
histclean:
|
||||
rm ${G4WORKDIR}/tmp/${G4SYSTEM}/${G4TARGET}/HistoManager.o
|
||||
@@ -0,0 +1,23 @@
|
||||
$Id: History,v 1.2 2007/02/16 11:59:47 maire Exp $
|
||||
----------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
TestEm18 History file
|
||||
---------------------
|
||||
This file should be used by the G4 example coordinator to briefly
|
||||
summarize all major modifications introduced in the code and keep
|
||||
track of all tags.
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
16-feb-07 mma (testem18-V08-02-01)
|
||||
- add Water-vapor
|
||||
- correct RunAction::GetEnergyFromRange()
|
||||
|
||||
14-feb-07 michel maire (testem18-V08-02-00)
|
||||
- created
|
||||
@@ -0,0 +1,152 @@
|
||||
$Id: README,v 1.1 2007/02/13 17:57:19 maire Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
TestEm18
|
||||
--------
|
||||
This example allows to study the energy lost by a charged particle in a
|
||||
single layer, due to ionization and bremsstrahlung. Results are compared to
|
||||
'reference' values.
|
||||
|
||||
1- GEOMETRY DEFINITION
|
||||
|
||||
It is a single box of homogeneous medium.
|
||||
Two parameters define the geometry :
|
||||
- the material of the box,
|
||||
- the (full) size of the box.
|
||||
|
||||
The default geometry (1 cm of water) is constructed in DetectorConstruction,
|
||||
but the above parameters can be changed interactively via the commands
|
||||
defined in DetectorMessenger.
|
||||
|
||||
2- PHYSICS
|
||||
|
||||
The physics list contains the 'standard' electromagnetic processes.
|
||||
However the MultipleScattering is not registered, in order to focuse on
|
||||
fluctuations due to energy loss alone.
|
||||
|
||||
3- BEAM
|
||||
|
||||
The primary kinematic is a single particle starting at the edge
|
||||
of the box. The type of the particle and its energy are set in
|
||||
PrimaryGeneratorAction (e- 10 MeV), and can be changed via the G4
|
||||
build-in commands of ParticleGun class.
|
||||
|
||||
4- RUN
|
||||
|
||||
During the tracking of the incident particle, the secondary particles
|
||||
are immediately killed, after that their energy has been registered
|
||||
(see StackingAction).
|
||||
Therefore, we study here the total energy lost by the incident particle,
|
||||
not the energy deposited in a layer of finite thickness.
|
||||
|
||||
At EndOfRun, the above results are compared with 'reference' values,
|
||||
i.e. the values read from EnergyLoss tables.
|
||||
|
||||
5- HISTOGRAMS
|
||||
|
||||
The test contains 6 built-in 1D histograms, which are managed by the
|
||||
HistoManager class and its Messenger.
|
||||
|
||||
1 continuous energy loss along primary track
|
||||
2 energy from secondaries
|
||||
3 total energy lost by primary track (1+2)
|
||||
4 energy spectrum of e-+
|
||||
5 energy spectrum of gamma
|
||||
6 step size of primary track
|
||||
|
||||
The histos can be activated individually with the command :
|
||||
/testem/histo/setHisto id nbBins valMin valMax unit
|
||||
where 'unit' is the desired unit for the histo (MeV or KeV, cm or mm, etc..)
|
||||
|
||||
One can control the name and the type of the histograms file with
|
||||
the commands:
|
||||
/testem/histo/setFileName name (default testem18)
|
||||
/testem/histo/setFileType name (default hbook)
|
||||
|
||||
Note that, by default, histograms are disabled. To activate them, uncomment
|
||||
the flag G4ANALYSIS_USE in GNUmakefile.
|
||||
|
||||
6- VISUALIZATION
|
||||
|
||||
The Visualization Manager is set in the main().
|
||||
The initialisation of the drawing is done via the commands
|
||||
/vis/... in the macro vis.mac. To get visualisation:
|
||||
> /control/execute vis.mac
|
||||
|
||||
The detector has a default view which is a longitudinal view of the box.
|
||||
The tracks are drawn at the end of event, and erased at the end of run.
|
||||
|
||||
7- HOW TO START ?
|
||||
|
||||
compile and link to generate an executable
|
||||
% cd geant4/examples/extended/electromagnetic/TestEm18
|
||||
% gmake
|
||||
|
||||
execute TestEm18 in 'batch' mode from macro files :
|
||||
% TestEm18 electron.mac.mac
|
||||
|
||||
execute TestEm18 in 'interactive mode' with visualization :
|
||||
% TestEm18
|
||||
Idle> control/execute vis.mac
|
||||
....
|
||||
Idle> type your commands
|
||||
....
|
||||
Idle> exit
|
||||
|
||||
8- USING HISTOGRAMS
|
||||
|
||||
By default the histograms are not activated. To activate histograms
|
||||
the environment variable G4ANALYSIS_USE should be defined. For instance
|
||||
uncomment the flag G4ANALYSIS_USE in GNUmakefile.
|
||||
|
||||
Before compilation of the example it is optimal to clean up old files:
|
||||
gmake histclean
|
||||
gmake
|
||||
|
||||
To use histograms, at least one of the AIDA implementations should be
|
||||
available (see http://aida.freehep.org).
|
||||
|
||||
8a - PI
|
||||
|
||||
A package including AIDA and extended interfaces also using Python is PI,
|
||||
available from: http://cern.ch/pi
|
||||
|
||||
Once installed PI or PI-Lite in a specified local area $MYPY, it is required
|
||||
to add the installation path to $PATH, i.e. for example, for release 1.2.1 of
|
||||
PI:
|
||||
setenv PATH ${PATH}:$MYPI/1.2.1/app/releases/PI/PI_1_2_1/rh73_gcc32/bin
|
||||
|
||||
CERN users can use the PATH to the LCG area on AFS.
|
||||
Before running the example the command should be issued:
|
||||
eval `aida-config --runtime csh`
|
||||
|
||||
8b - OpenScientist
|
||||
|
||||
OpenScientist is available at http://OpenScientist.lal.in2p3.fr.
|
||||
|
||||
You have to "setup" the OpenScientist AIDA implementation before compiling
|
||||
(then with G4ANALYSIS_USE set) and running your Geant4 application.
|
||||
|
||||
On UNIX you setup, with a csh flavoured shell :
|
||||
csh> source <<OpenScientist install path>/aida-setup.csh
|
||||
or with a sh flavoured shell :
|
||||
sh> . <<OpenScientist install path>/aida-setup.sh
|
||||
On Windows :
|
||||
DOS> call <<OpenScientist install path>/aida-setup.bat
|
||||
|
||||
You can use various file formats for writing (AIDA-XML, hbook, root).
|
||||
These formats are readable by the Lab onx interactive program
|
||||
or the OpenPAW application. See the web pages.
|
||||
|
||||
|
||||
With OpenPAW, on a run.hbook file, one can view the histograms
|
||||
with something like :
|
||||
OS> opaw
|
||||
opaw> h/file 1 run.hbook ( or opaw> h/file 1 run.aida or run.root)
|
||||
opaw> zone 2 2
|
||||
opaw> h/plot 1
|
||||
opaw> h/plot 2
|
||||
@@ -0,0 +1,140 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: TestEm18.cc,v 1.1 2007/02/13 17:57:19 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4UIterminal.hh"
|
||||
#include "G4UItcsh.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
#include "G4VisExecutive.hh"
|
||||
#endif
|
||||
|
||||
#include "DetectorConstruction.hh"
|
||||
#include "PhysicsList.hh"
|
||||
#include "PrimaryGeneratorAction.hh"
|
||||
#include "RunAction.hh"
|
||||
#include "EventAction.hh"
|
||||
#include "SteppingAction.hh"
|
||||
#include "SteppingVerbose.hh"
|
||||
#include "StackingAction.hh"
|
||||
#include "HistoManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
int main(int argc,char** argv) {
|
||||
|
||||
//choose the Random engine
|
||||
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
|
||||
|
||||
//my Verbose output class
|
||||
G4VSteppingVerbose::SetInstance(new SteppingVerbose);
|
||||
|
||||
// Construct the default run manager
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
|
||||
// set mandatory initialization classes
|
||||
DetectorConstruction* detector;
|
||||
detector = new DetectorConstruction;
|
||||
runManager->SetUserInitialization(detector);
|
||||
runManager->SetUserInitialization(new PhysicsList());
|
||||
|
||||
G4VisManager* visManager = 0;
|
||||
|
||||
HistoManager* histo = new HistoManager();
|
||||
|
||||
// set user action classes
|
||||
//
|
||||
//primaryGenerator
|
||||
PrimaryGeneratorAction* primary = new PrimaryGeneratorAction(detector);
|
||||
runManager->SetUserAction(primary);
|
||||
|
||||
//runAction
|
||||
RunAction* runaction = new RunAction(detector,primary,histo);
|
||||
runManager->SetUserAction(runaction);
|
||||
|
||||
//eventAction
|
||||
EventAction* eventaction = new EventAction(runaction,histo);
|
||||
runManager->SetUserAction(eventaction);
|
||||
|
||||
//stepAction
|
||||
SteppingAction* steppingaction = new SteppingAction(runaction, eventaction,
|
||||
histo);
|
||||
runManager->SetUserAction(steppingaction);
|
||||
|
||||
//stackAction
|
||||
StackingAction* stackingaction = new StackingAction(runaction, eventaction,
|
||||
histo);
|
||||
runManager->SetUserAction(stackingaction);
|
||||
|
||||
// get the pointer to the User Interface manager
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
|
||||
if (argc==1) // Define UI terminal for interactive mode
|
||||
{
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
// visualization manager
|
||||
visManager = new G4VisExecutive;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
G4UIsession * session = 0;
|
||||
#ifdef G4UI_USE_TCSH
|
||||
session = new G4UIterminal(new G4UItcsh);
|
||||
#else
|
||||
session = new G4UIterminal();
|
||||
#endif
|
||||
session->SessionStart();
|
||||
delete session;
|
||||
}
|
||||
else // Batch mode
|
||||
{
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UI->ApplyCommand(command+fileName);
|
||||
}
|
||||
|
||||
// job termination
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
|
||||
delete histo;
|
||||
delete runManager;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# $Id: TestEm18.in,v 1.1 2007/02/13 17:57:19 maire Exp $
|
||||
#
|
||||
# macro file for TestEm18.cc
|
||||
#
|
||||
/control/verbose 2
|
||||
/run/verbose 2
|
||||
#
|
||||
/testem/det/setMat Water
|
||||
/testem/det/setSize 1 cm
|
||||
#
|
||||
/testem/phys/setCuts 1 mm
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 10 MeV
|
||||
#
|
||||
/run/beamOn 100000
|
||||
@@ -0,0 +1,282 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
*************************************************************
|
||||
|
||||
|
||||
***** Table : Nb of materials = 11 *****
|
||||
|
||||
Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m
|
||||
---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 %
|
||||
---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 %
|
||||
|
||||
Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm
|
||||
---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 %
|
||||
---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 %
|
||||
|
||||
Material: Water_vapor density: 1.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 360.925 m
|
||||
---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 %
|
||||
---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 %
|
||||
|
||||
Material: Carbon density: 2.267 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.833 cm
|
||||
---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm
|
||||
---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm
|
||||
---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm
|
||||
---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm
|
||||
---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
Material: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm
|
||||
---> Element: Germanium ( ) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm
|
||||
---> Element: Tungsten ( ) Z = 74.0 N = 183.8 A = 183.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm
|
||||
---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
|
||||
|
||||
|
||||
/run/verbose 2
|
||||
#
|
||||
/testem/det/setMat Water
|
||||
/testem/det/setSize 1 cm
|
||||
#
|
||||
/testem/phys/setCuts 1 mm
|
||||
#
|
||||
/run/initialize
|
||||
userDetector->Construct() start.
|
||||
|
||||
The Box is 1 cm of Water
|
||||
Water is registered to the default region.
|
||||
physicsList->Construct() start.
|
||||
physicsList->Construct() start.
|
||||
physicsList->setCut() start.
|
||||
PhysicsList::SetCuts:CutLength : 1 mm
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 10 MeV
|
||||
#
|
||||
/run/beamOn 100000
|
||||
|
||||
phot: Total cross sections from Sandia parametrisation.
|
||||
Sampling according PhotoElectric model
|
||||
|
||||
compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV
|
||||
Sampling according Klein-Nishina model
|
||||
tables are built for gamma
|
||||
Lambda tables from 100 eV to 100 GeV in 90 bins.
|
||||
|
||||
conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV for all Z;
|
||||
sampling secondary e+e- according Bethe-Heitler model
|
||||
tables are built for gamma
|
||||
Lambda tables from 1.022 MeV to 100 GeV in 100 bins.
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
tables are built for e+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below,
|
||||
radiative corrections for E > 1 GeV
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
muBrems: tables are built for mu+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Parametrised model
|
||||
|
||||
muPairProd: tables are built for mu+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Parametrised model
|
||||
|
||||
muIoni: tables are built for mu-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below,
|
||||
radiative corrections for E > 1 GeV
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
muBrems: tables are built for mu-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Parametrised model
|
||||
|
||||
muPairProd: tables are built for mu-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Parametrised model
|
||||
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
|
||||
Lambda tables from threshold to 100 TeV in 480 bins.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
CSDA range table up to 100 TeV in 480 bins.
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- appears in <Water> world volume
|
||||
Materials : Water
|
||||
Production cuts : gamma 1 mm e- 1 mm e+ 1 mm
|
||||
|
||||
========= Table of registered couples ==============================
|
||||
|
||||
Index : 0 used in the geometry : Yes recalculation needed : No
|
||||
Material : Water
|
||||
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
|
||||
Energy thresholds : gamma 2.90186 keV e- 347.138 keV e+ 338.695 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
|
||||
### Run 0 start.
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 9876, 54321
|
||||
----------------------------------------
|
||||
Start Run processing.
|
||||
|
||||
---> Begin of Event: 0
|
||||
|
||||
---> Begin of Event: 10000
|
||||
|
||||
---> Begin of Event: 20000
|
||||
|
||||
---> Begin of Event: 30000
|
||||
|
||||
---> Begin of Event: 40000
|
||||
|
||||
---> Begin of Event: 50000
|
||||
|
||||
---> Begin of Event: 60000
|
||||
|
||||
---> Begin of Event: 70000
|
||||
|
||||
---> Begin of Event: 80000
|
||||
|
||||
---> Begin of Event: 90000
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100000
|
||||
User=48.74s Real=48.78s Sys=0.02s
|
||||
|
||||
======================== run summary ======================
|
||||
|
||||
The run was 100000 e- of 10 MeV through 1 cm of Water (density: 1 g/cm3 )
|
||||
===========================================================
|
||||
|
||||
|
||||
trackLength= 1.0005 cm nb of steps= 1.5573 stepSize= 6.4242 mm
|
||||
|
||||
d-rays : eLoss/primary= 249.72 keV nb of d-rays= 0.23634 <Tkin>= 1.0566 MeV Tmin= 347.15 keV Tmax= 4.9638 MeV
|
||||
|
||||
brems : eLoss/primary= 173.41 keV nb of gammas= 0.30721 <Tkin>= 564.48 keV Tmin= 2.9024 keV Tmax= 9.6666 MeV
|
||||
|
||||
deposit : eLoss/primary= 1.7336 MeV <dEcut > table= 1.7348 MeV ---> simul/reference= 0.99936
|
||||
|
||||
total : eLoss/primary= 2.1568 MeV <dEfull> table= 2.1626 MeV ---> simul/reference= 0.99733
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 1637293684, 1659265773
|
||||
----------------------------------------
|
||||
UserDetectorConstruction deleted.
|
||||
UserPhysicsList deleted.
|
||||
UserRunAction deleted.
|
||||
UserPrimaryGenerator deleted.
|
||||
G4 kernel has come to Quit state.
|
||||
EventManager deleted.
|
||||
Default detector region deleted.
|
||||
UImanager deleted.
|
||||
Units table cleared.
|
||||
StateManager deleted.
|
||||
RunManagerKernel is deleted.
|
||||
RunManager is deleting.
|
||||
@@ -0,0 +1,26 @@
|
||||
# $Id: csda.mac,v 1.2 2007/02/16 11:59:47 maire Exp $
|
||||
#
|
||||
# macro file for TestEm18.cc
|
||||
#
|
||||
/control/verbose 2
|
||||
/run/verbose 2
|
||||
#
|
||||
/testem/det/setMat Water
|
||||
###/testem/det/setMat Water_vapor
|
||||
/testem/det/setSize 1 cm
|
||||
#
|
||||
/testem/phys/setCuts 100 km
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/fluct false
|
||||
/process/eLoss/StepFunction 1 1 mm
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 20 MeV
|
||||
#
|
||||
/run/beamOn 1
|
||||
#
|
||||
/testem/stepMax 10 um
|
||||
#
|
||||
/run/beamOn 1
|
||||
@@ -0,0 +1,28 @@
|
||||
# $Id: electron.mac,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
#
|
||||
# macro file for TestEm18.cc
|
||||
#
|
||||
/control/verbose 2
|
||||
/run/verbose 2
|
||||
#
|
||||
/testem/det/setMat Water
|
||||
/testem/det/setSize 1 cm
|
||||
#
|
||||
/testem/phys/setCuts 100 um
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 10 MeV
|
||||
#
|
||||
/testem/histo/setFileName electron
|
||||
/testem/histo/setHisto 1 100 0 10 MeV #continuous eLoss
|
||||
/testem/histo/setHisto 2 100 0 10 MeV #secondary eLoss
|
||||
/testem/histo/setHisto 3 100 0 10 MeV #total eLoss
|
||||
/testem/histo/setHisto 4 100 0 10 MeV #e- energy spectrum
|
||||
/testem/histo/setHisto 5 100 0 10 MeV #gamma energy spectrum
|
||||
/testem/histo/setHisto 6 100 0 10 mm #step size
|
||||
#
|
||||
/testem/event/printModulo 100000
|
||||
#
|
||||
/run/beamOn 1000000
|
||||
+48
-35
@@ -23,55 +23,68 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysListIonBinaryCascade.hh,v 1.6 2006/08/10 08:44:39 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// Class Description:
|
||||
// This class is an derived class of G4VPhysicsConstructor
|
||||
// It is provide PhysicsList for Binary Cascade for
|
||||
// protons and neutrons with the energy E<3 GeV
|
||||
//
|
||||
// $Id: DetectorConstruction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef PhysListIonBinaryCascade_h
|
||||
#define PhysListIonBinaryCascade_h 1
|
||||
#ifndef DetectorConstruction_h
|
||||
#define DetectorConstruction_h 1
|
||||
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4LogicalVolume;
|
||||
class G4Material;
|
||||
class DetectorMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4DeuteronInelasticProcess;
|
||||
class G4TritonInelasticProcess;
|
||||
class G4AlphaInelasticProcess;
|
||||
class G4HadronInelasticProcess;
|
||||
|
||||
class PhysListIonBinaryCascade : public G4VPhysicsConstructor
|
||||
class DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
PhysListIonBinaryCascade(const G4String& name = "binary_ion");
|
||||
virtual ~PhysListIonBinaryCascade();
|
||||
public:
|
||||
|
||||
DetectorConstruction();
|
||||
~DetectorConstruction();
|
||||
|
||||
public:
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
void ConstructParticle() {};
|
||||
public:
|
||||
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
void SetSize (G4double);
|
||||
void SetMaterial (G4String);
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess();
|
||||
|
||||
private:
|
||||
|
||||
G4DeuteronInelasticProcess* theIPdeuteron;
|
||||
G4TritonInelasticProcess* theIPtriton;
|
||||
G4AlphaInelasticProcess* theIPalpha;
|
||||
G4HadronInelasticProcess* theIPGenericIon;
|
||||
void UpdateGeometry();
|
||||
|
||||
public:
|
||||
|
||||
const
|
||||
G4VPhysicalVolume* GetWorld() {return pBox;};
|
||||
|
||||
G4double GetSize() {return BoxSize;};
|
||||
G4Material* GetMaterial() {return aMaterial;};
|
||||
|
||||
void PrintParameters();
|
||||
|
||||
private:
|
||||
|
||||
G4VPhysicalVolume* pBox;
|
||||
G4LogicalVolume* lBox;
|
||||
|
||||
G4double BoxSize;
|
||||
G4Material* aMaterial;
|
||||
|
||||
DetectorMessenger* detectorMessenger;
|
||||
|
||||
private:
|
||||
|
||||
void DefineMaterials();
|
||||
G4VPhysicalVolume* ConstructVolumes();
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: DetectorMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef DetectorMessenger_h
|
||||
#define DetectorMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class DetectorConstruction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
class G4UIcmdWithoutParameter;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class DetectorMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
|
||||
DetectorMessenger(DetectorConstruction* );
|
||||
~DetectorMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
|
||||
DetectorConstruction* Detector;
|
||||
|
||||
G4UIdirectory* testemDir;
|
||||
G4UIdirectory* detDir;
|
||||
G4UIcmdWithAString* MaterCmd;
|
||||
G4UIcmdWithADoubleAndUnit* SizeCmd;
|
||||
G4UIcmdWithoutParameter* UpdateCmd;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: EventAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef EventAction_h
|
||||
#define EventAction_h 1
|
||||
|
||||
#include "G4UserEventAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class RunAction;
|
||||
class HistoManager;
|
||||
class EventMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class EventAction : public G4UserEventAction
|
||||
{
|
||||
public:
|
||||
EventAction(RunAction* , HistoManager*);
|
||||
~EventAction();
|
||||
|
||||
public:
|
||||
void BeginOfEventAction(const G4Event*);
|
||||
void EndOfEventAction(const G4Event*);
|
||||
|
||||
void AddEnergyDeposit(G4double edep) {EnergyDeposit += edep;};
|
||||
void AddSecondary(G4double ekin) {EnergySecondary += ekin;};
|
||||
|
||||
void SetDrawFlag(G4String val) {drawFlag = val;};
|
||||
void SetPrintModulo(G4int val) {printModulo = val;};
|
||||
|
||||
private:
|
||||
RunAction* runaction;
|
||||
HistoManager* histoManager;
|
||||
|
||||
G4double EnergyDeposit;
|
||||
G4double EnergySecondary;
|
||||
|
||||
G4String drawFlag;
|
||||
G4int printModulo;
|
||||
|
||||
EventMessenger* eventMessenger;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: EventMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef EventMessenger_h
|
||||
#define EventMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class EventAction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithAnInteger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class EventMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
EventMessenger(EventAction*);
|
||||
~EventMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
EventAction* eventAction;
|
||||
G4UIdirectory* eventDir;
|
||||
G4UIcmdWithAString* DrawCmd;
|
||||
G4UIcmdWithAnInteger* PrintCmd;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -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: HistoManager.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef HistoManager_h
|
||||
#define HistoManager_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
namespace AIDA {
|
||||
class IAnalysisFactory;
|
||||
class ITree;
|
||||
class IHistogram1D;
|
||||
}
|
||||
|
||||
class HistoMessenger;
|
||||
|
||||
const G4int MaxHisto = 7;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class HistoManager
|
||||
{
|
||||
public:
|
||||
|
||||
HistoManager();
|
||||
~HistoManager();
|
||||
|
||||
void SetFileName (const G4String& name) { fileName[0] = name;};
|
||||
void SetFileType (const G4String& name) { fileType = name;};
|
||||
void SetFileOption (const G4String& name) { fileOption = name;};
|
||||
void book();
|
||||
void save();
|
||||
void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none");
|
||||
void FillHisto(G4int id, G4double e, G4double weight = 1.0);
|
||||
void RemoveHisto (G4int);
|
||||
|
||||
G4bool HistoExist (G4int id) {return exist[id];}
|
||||
G4double GetHistoUnit(G4int id) {return Unit[id];}
|
||||
G4double GetBinWidth (G4int id) {return Width[id];}
|
||||
|
||||
private:
|
||||
|
||||
G4String fileName[2];
|
||||
G4String fileType;
|
||||
G4String fileOption;
|
||||
AIDA::IAnalysisFactory* af;
|
||||
AIDA::ITree* tree;
|
||||
AIDA::IHistogram1D* histo[MaxHisto];
|
||||
G4bool exist[MaxHisto];
|
||||
G4String Label[MaxHisto];
|
||||
G4String Title[MaxHisto];
|
||||
G4int Nbins[MaxHisto];
|
||||
G4double Vmin [MaxHisto];
|
||||
G4double Vmax [MaxHisto];
|
||||
G4double Unit [MaxHisto];
|
||||
G4double Width[MaxHisto];
|
||||
G4bool factoryOn;
|
||||
HistoMessenger* histoMessenger;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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: HistoMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef HistoMessenger_h
|
||||
#define HistoMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class HistoManager;
|
||||
class G4UIdirectory;
|
||||
class G4UIcommand;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithAnInteger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class HistoMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
|
||||
HistoMessenger(HistoManager* );
|
||||
~HistoMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand* ,G4String );
|
||||
|
||||
private:
|
||||
|
||||
HistoManager* histoManager;
|
||||
|
||||
G4UIdirectory* histoDir;
|
||||
G4UIcmdWithAString* factoryCmd;
|
||||
G4UIcmdWithAString* typeCmd;
|
||||
G4UIcmdWithAString* optionCmd;
|
||||
G4UIcommand* histoCmd;
|
||||
G4UIcmdWithAnInteger* rmhistoCmd;
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
+8
-18
@@ -23,45 +23,35 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysListHadronElastic.hh,v 1.5 2006/08/10 08:44:39 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// Class Description:
|
||||
// This class is an derived class of G4VPhysicsConstructor
|
||||
// It is provide PhysicsList for hadron eleastic process
|
||||
// $Id: PhysListEmLivermore.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef PhysListHadronElastic_h
|
||||
#define PhysListHadronElastic_h 1
|
||||
#ifndef PhysListEmLivermore_h
|
||||
#define PhysListEmLivermore_h 1
|
||||
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4UHadronElasticProcess;
|
||||
|
||||
class PhysListHadronElastic : public G4VPhysicsConstructor
|
||||
class PhysListEmLivermore : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
PhysListHadronElastic(const G4String& name = "elastic");
|
||||
virtual ~PhysListHadronElastic();
|
||||
PhysListEmLivermore(const G4String& name = "Livermore");
|
||||
virtual ~PhysListEmLivermore();
|
||||
|
||||
public:
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
// This method is dummy for physics
|
||||
void ConstructParticle() {};
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess();
|
||||
|
||||
private:
|
||||
// Elastic Process
|
||||
G4UHadronElasticProcess* theElasticProcess;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
+11
-13
@@ -23,36 +23,34 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
// $Id: PhysListEmPenelope.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef exrdmPhysListEmStandard_h
|
||||
#define exrdmPhysListEmStandard_h 1
|
||||
#ifndef PhysListEmPenelope_h
|
||||
#define PhysListEmPenelope_h 1
|
||||
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class exrdmPhysListEmStandard : public G4VPhysicsConstructor
|
||||
class PhysListEmPenelope : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
exrdmPhysListEmStandard(const G4String& name = "standard");
|
||||
virtual ~exrdmPhysListEmStandard();
|
||||
PhysListEmPenelope(const G4String& name = "penelope");
|
||||
virtual ~PhysListEmPenelope();
|
||||
|
||||
public:
|
||||
// This method is dummy for physics
|
||||
virtual void ConstructParticle() {};
|
||||
void ConstructParticle() {};
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
virtual void ConstructProcess();
|
||||
|
||||
private:
|
||||
// name of used to differetiate usage with std-hadron phys
|
||||
G4String name;
|
||||
|
||||
void ConstructProcess();
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
+20
-30
@@ -23,54 +23,44 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysListBinaryCascade.hh,v 1.4 2006/08/10 08:44:39 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
//
|
||||
// Class Description:
|
||||
// This class is an derived class of G4VPhysicsConstructor
|
||||
// It is provide PhysicsList for Binary Cascade for
|
||||
// protons and neutrons with the energy E<3 GeV
|
||||
// $Id: PhysListEmStandard.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef PhysListBinaryCascade_h
|
||||
#define PhysListBinaryCascade_h 1
|
||||
#ifndef PhysListEmStandard_h
|
||||
#define PhysListEmStandard_h 1
|
||||
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4ProtonInelasticProcess;
|
||||
class G4NeutronInelasticProcess;
|
||||
class G4HadronFissionProcess;
|
||||
class G4HadronCaptureProcess;
|
||||
|
||||
class PhysListBinaryCascade : public G4VPhysicsConstructor
|
||||
class PhysListEmStandard : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
PhysListBinaryCascade(const G4String& name = "binary");
|
||||
virtual ~PhysListBinaryCascade();
|
||||
public:
|
||||
PhysListEmStandard(const G4String& name = "standard");
|
||||
virtual ~PhysListEmStandard();
|
||||
|
||||
public:
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
public:
|
||||
// This method is dummy for physics
|
||||
void ConstructParticle() {};
|
||||
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
// registered to the process manager of each particle type
|
||||
void ConstructProcess();
|
||||
|
||||
private:
|
||||
|
||||
G4ProtonInelasticProcess* theIPproton;
|
||||
G4NeutronInelasticProcess* theIPneutron;
|
||||
G4HadronFissionProcess* theFissionProcess;
|
||||
G4HadronCaptureProcess* theCaptureProcess;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: PhysicsList.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef PhysicsList_h
|
||||
#define PhysicsList_h 1
|
||||
|
||||
#include "G4VModularPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4VPhysicsConstructor;
|
||||
class PhysicsListMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class PhysicsList: public G4VModularPhysicsList
|
||||
{
|
||||
public:
|
||||
PhysicsList();
|
||||
~PhysicsList();
|
||||
|
||||
void ConstructParticle();
|
||||
void ConstructProcess();
|
||||
|
||||
void AddPhysicsList(const G4String& name);
|
||||
void AddStepMax();
|
||||
|
||||
void SetCuts();
|
||||
void SetCutForGamma(G4double);
|
||||
void SetCutForElectron(G4double);
|
||||
void SetCutForPositron(G4double);
|
||||
|
||||
private:
|
||||
|
||||
PhysicsListMessenger* pMessenger;
|
||||
|
||||
G4String emName;
|
||||
G4VPhysicsConstructor* emPhysicsList;
|
||||
|
||||
G4double cutForGamma;
|
||||
G4double cutForElectron;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysicsListMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef PhysicsListMessenger_h
|
||||
#define PhysicsListMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class PhysicsList;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class PhysicsListMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
|
||||
PhysicsListMessenger(PhysicsList* );
|
||||
~PhysicsListMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
|
||||
PhysicsList* pPhysicsList;
|
||||
|
||||
G4UIdirectory* physDir;
|
||||
G4UIcmdWithAString* pListCmd;
|
||||
G4UIcmdWithADoubleAndUnit* gammaCutCmd;
|
||||
G4UIcmdWithADoubleAndUnit* electCutCmd;
|
||||
G4UIcmdWithADoubleAndUnit* allCutCmd;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: PrimaryGeneratorAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef PrimaryGeneratorAction_h
|
||||
#define PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4Event;
|
||||
class DetectorConstruction;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
PrimaryGeneratorAction(DetectorConstruction*);
|
||||
~PrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event*);
|
||||
G4ParticleGun* GetParticleGun() {return particleGun;};
|
||||
|
||||
private:
|
||||
G4ParticleGun* particleGun;
|
||||
DetectorConstruction* detector;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: RunAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef RunAction_h
|
||||
#define RunAction_h 1
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4Run;
|
||||
class G4ParticleDefinition;
|
||||
class G4Material;
|
||||
|
||||
class DetectorConstruction;
|
||||
class PrimaryGeneratorAction;
|
||||
class HistoManager;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
RunAction(DetectorConstruction*, PrimaryGeneratorAction*, HistoManager*);
|
||||
~RunAction();
|
||||
|
||||
public:
|
||||
void BeginOfRunAction(const G4Run*);
|
||||
void EndOfRunAction(const G4Run*);
|
||||
|
||||
void AddEnergyDeposit (G4double edep)
|
||||
{energyDeposit += edep;};
|
||||
|
||||
void AddTrackLength (G4double step)
|
||||
{trackLength += step; nbSteps++;};
|
||||
|
||||
void AddChargedSecondary (G4double ekin)
|
||||
{energyCharged += ekin; nbCharged++;
|
||||
if (ekin<emin[0]) emin[0] = ekin;
|
||||
if (ekin>emax[0]) emax[0] = ekin;
|
||||
};
|
||||
|
||||
void AddNeutralSecondary (G4double ekin)
|
||||
{energyNeutral += ekin; nbNeutral++;
|
||||
if (ekin<emin[1]) emin[1] = ekin;
|
||||
if (ekin>emax[1]) emax[1] = ekin;
|
||||
};
|
||||
|
||||
public:
|
||||
G4double GetEnergyFromRestrictedRange
|
||||
(G4double,G4ParticleDefinition*,G4Material*,G4double);
|
||||
|
||||
G4double GetEnergyFromCSDARange
|
||||
(G4double,G4ParticleDefinition*,G4Material*,G4double);
|
||||
|
||||
private:
|
||||
G4double energyDeposit;
|
||||
G4double trackLength;
|
||||
G4double energyCharged, energyNeutral;
|
||||
G4double emin[2], emax[2];
|
||||
|
||||
G4long nbSteps;
|
||||
G4int nbCharged, nbNeutral;
|
||||
|
||||
DetectorConstruction* detector;
|
||||
PrimaryGeneratorAction* primary;
|
||||
HistoManager* histoManager;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#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: StackingAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef StackingAction_h
|
||||
#define StackingAction_h 1
|
||||
|
||||
#include "G4UserStackingAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class RunAction;
|
||||
class EventAction;
|
||||
class HistoManager;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class StackingAction : public G4UserStackingAction
|
||||
{
|
||||
public:
|
||||
StackingAction(RunAction*, EventAction*, HistoManager* );
|
||||
~StackingAction();
|
||||
|
||||
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track*);
|
||||
|
||||
private:
|
||||
RunAction* runaction;
|
||||
EventAction* eventaction;
|
||||
HistoManager* histoManager;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: StepMax.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef StepMax_h
|
||||
#define StepMax_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VDiscreteProcess.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4Step.hh"
|
||||
|
||||
class StepMaxMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class StepMax : public G4VDiscreteProcess
|
||||
{
|
||||
public:
|
||||
|
||||
StepMax(const G4String& processName ="UserStepMax");
|
||||
~StepMax();
|
||||
|
||||
G4bool IsApplicable(const G4ParticleDefinition&);
|
||||
void SetMaxStep(G4double);
|
||||
|
||||
G4double PostStepGetPhysicalInteractionLength( const G4Track& track,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition);
|
||||
|
||||
G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
|
||||
|
||||
G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*)
|
||||
{return DBL_MAX;}; // it is not needed here !
|
||||
|
||||
private:
|
||||
|
||||
G4double MaxChargedStep;
|
||||
StepMaxMessenger* pMess;
|
||||
};
|
||||
|
||||
//....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: StepMaxMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef StepMaxMessenger_h
|
||||
#define StepMaxMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class StepMax;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class StepMaxMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
StepMaxMessenger(StepMax*);
|
||||
~StepMaxMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
StepMax* pStepMax;
|
||||
G4UIcmdWithADoubleAndUnit* StepMaxCmd;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: SteppingAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef SteppingAction_h
|
||||
#define SteppingAction_h 1
|
||||
|
||||
#include "G4UserSteppingAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class RunAction;
|
||||
class EventAction;
|
||||
class HistoManager;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class SteppingAction : public G4UserSteppingAction
|
||||
{
|
||||
public:
|
||||
SteppingAction(RunAction*,EventAction*,HistoManager* );
|
||||
~SteppingAction();
|
||||
|
||||
void UserSteppingAction(const G4Step*);
|
||||
|
||||
private:
|
||||
RunAction* runaction;
|
||||
EventAction* eventaction;
|
||||
HistoManager* histoManager;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#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: SteppingVerbose.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
// This class manages the verbose outputs in G4SteppingManager.
|
||||
// It inherits from G4SteppingVerbose.
|
||||
// It shows how to extract informations during the tracking of a particle.
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#ifndef SteppingVerbose_h
|
||||
#define SteppingVerbose_h 1
|
||||
|
||||
#include "G4SteppingVerbose.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class SteppingVerbose : public G4SteppingVerbose {
|
||||
|
||||
public:
|
||||
|
||||
SteppingVerbose();
|
||||
~SteppingVerbose();
|
||||
|
||||
void StepInfo();
|
||||
void TrackingStarted();
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,27 @@
|
||||
# $Id: proton.mac,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
#
|
||||
# macro file for TestEm18.cc
|
||||
#
|
||||
/control/verbose 2
|
||||
/run/verbose 2
|
||||
#
|
||||
/testem/det/setMat Water
|
||||
/testem/det/setSize 1 cm
|
||||
#
|
||||
/testem/phys/setCuts 100 um
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/gun/particle proton
|
||||
/gun/energy 100 MeV
|
||||
#
|
||||
/testem/histo/setFileName proton
|
||||
/testem/histo/setHisto 1 100 0 10 MeV #continuous eLoss
|
||||
/testem/histo/setHisto 2 100 0 10 MeV #secondary eLoss
|
||||
/testem/histo/setHisto 3 100 0 10 MeV #total eLoss
|
||||
/testem/histo/setHisto 4 100 0 300 keV #e- energy spectrum
|
||||
/testem/histo/setHisto 6 100 0 10 mm #step size
|
||||
#
|
||||
/testem/event/printModulo 100000
|
||||
#
|
||||
/run/beamOn 1000000
|
||||
@@ -0,0 +1,193 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: DetectorConstruction.cc,v 1.2 2007/02/16 11:59:47 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "DetectorConstruction.hh"
|
||||
#include "DetectorMessenger.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
|
||||
#include "G4GeometryManager.hh"
|
||||
#include "G4PhysicalVolumeStore.hh"
|
||||
#include "G4LogicalVolumeStore.hh"
|
||||
#include "G4SolidStore.hh"
|
||||
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
DetectorConstruction::DetectorConstruction()
|
||||
:pBox(0), lBox(0), aMaterial(0)
|
||||
{
|
||||
BoxSize = 1*cm;
|
||||
DefineMaterials();
|
||||
SetMaterial("Water");
|
||||
detectorMessenger = new DetectorMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
DetectorConstruction::~DetectorConstruction()
|
||||
{ delete detectorMessenger;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VPhysicalVolume* DetectorConstruction::Construct()
|
||||
{
|
||||
return ConstructVolumes();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void DetectorConstruction::DefineMaterials()
|
||||
{
|
||||
//
|
||||
// define Elements
|
||||
//
|
||||
G4double z,a;
|
||||
|
||||
G4Element* H = new G4Element("Hydrogen" ,"H" , z= 1., a= 1.01*g/mole);
|
||||
G4Element* N = new G4Element("Nitrogen" ,"N" , z= 7., a= 14.01*g/mole);
|
||||
G4Element* O = new G4Element("Oxygen" ,"O" , z= 8., a= 16.00*g/mole);
|
||||
|
||||
//
|
||||
// define materials
|
||||
//
|
||||
G4double density;
|
||||
G4int ncomponents, natoms;
|
||||
G4double fractionmass;
|
||||
|
||||
G4Material* Air =
|
||||
new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2);
|
||||
Air->AddElement(N, fractionmass=70.*perCent);
|
||||
Air->AddElement(O, fractionmass=30.*perCent);
|
||||
|
||||
G4Material* H2O =
|
||||
new G4Material("Water", density= 1.000*g/cm3, ncomponents=2);
|
||||
H2O->AddElement(H, natoms=2);
|
||||
H2O->AddElement(O, natoms=1);
|
||||
H2O->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
|
||||
|
||||
G4Material* vapor =
|
||||
new G4Material("Water_vapor", density= 1.000*mg/cm3, ncomponents=2);
|
||||
vapor->AddElement(H, natoms=2);
|
||||
vapor->AddElement(O, natoms=1);
|
||||
vapor->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
|
||||
|
||||
new G4Material("Carbon" , z=6., a= 12.01*g/mole, density= 2.267*g/cm3);
|
||||
new G4Material("Aluminium" , z=13., a= 26.98*g/mole, density= 2.700*g/cm3);
|
||||
new G4Material("Silicon" , z=14., a= 28.09*g/mole, density= 2.330*g/cm3);
|
||||
new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);
|
||||
new G4Material("Iron" , z=26., a= 55.85*g/mole, density= 7.870*g/cm3);
|
||||
new G4Material("Germanium" , z=32., a= 72.61*g/mole, density= 5.323*g/cm3);
|
||||
new G4Material("Tungsten" , z=74., a=183.85*g/mole, density= 19.30*g/cm3);
|
||||
new G4Material("Lead" , z=82., a=207.19*g/mole, density= 11.35*g/cm3);
|
||||
|
||||
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VPhysicalVolume* DetectorConstruction::ConstructVolumes()
|
||||
{
|
||||
// Cleanup old geometry
|
||||
G4GeometryManager::GetInstance()->OpenGeometry();
|
||||
G4PhysicalVolumeStore::GetInstance()->Clean();
|
||||
G4LogicalVolumeStore::GetInstance()->Clean();
|
||||
G4SolidStore::GetInstance()->Clean();
|
||||
|
||||
G4Box*
|
||||
sBox = new G4Box("Container", //its name
|
||||
BoxSize/2,BoxSize/2,BoxSize/2); //its dimensions
|
||||
|
||||
lBox = new G4LogicalVolume(sBox, //its shape
|
||||
aMaterial, //its material
|
||||
aMaterial->GetName()); //its name
|
||||
|
||||
pBox = new G4PVPlacement(0, //no rotation
|
||||
G4ThreeVector(), //at (0,0,0)
|
||||
lBox, //its logical volume
|
||||
aMaterial->GetName(), //its name
|
||||
0, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
PrintParameters();
|
||||
|
||||
//always return the root volume
|
||||
//
|
||||
return pBox;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void DetectorConstruction::PrintParameters()
|
||||
{
|
||||
G4cout << "\n The Box is " << G4BestUnit(BoxSize,"Length")
|
||||
<< " of " << aMaterial->GetName() << G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void DetectorConstruction::SetMaterial(G4String materialChoice)
|
||||
{
|
||||
// search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
if (pttoMaterial) {
|
||||
aMaterial = pttoMaterial;
|
||||
UpdateGeometry();
|
||||
} else {
|
||||
G4cout << "\n--> warning from DetectorConstruction::SetMaterial : "
|
||||
<< materialChoice << " not found" << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void DetectorConstruction::SetSize(G4double value)
|
||||
{
|
||||
BoxSize = value;
|
||||
UpdateGeometry();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
void DetectorConstruction::UpdateGeometry()
|
||||
{
|
||||
if (pBox)
|
||||
G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,95 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: DetectorMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "DetectorMessenger.hh"
|
||||
|
||||
#include "DetectorConstruction.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
#include "G4UIcmdWithoutParameter.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
|
||||
:Detector(Det)
|
||||
{
|
||||
testemDir = new G4UIdirectory("/testem/");
|
||||
testemDir->SetGuidance("commands specific to this example");
|
||||
|
||||
detDir = new G4UIdirectory("/testem/det/");
|
||||
detDir->SetGuidance("detector construction");
|
||||
|
||||
MaterCmd = new G4UIcmdWithAString("/testem/det/setMat",this);
|
||||
MaterCmd->SetGuidance("Select material of the box.");
|
||||
MaterCmd->SetParameterName("choice",false);
|
||||
MaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
|
||||
|
||||
SizeCmd = new G4UIcmdWithADoubleAndUnit("/testem/det/setSize",this);
|
||||
SizeCmd->SetGuidance("Set size of the box");
|
||||
SizeCmd->SetParameterName("Size",false);
|
||||
SizeCmd->SetRange("Size>0.");
|
||||
SizeCmd->SetUnitCategory("Length");
|
||||
SizeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
|
||||
|
||||
UpdateCmd = new G4UIcmdWithoutParameter("/testem/det/update",this);
|
||||
UpdateCmd->SetGuidance("Update calorimeter geometry.");
|
||||
UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
|
||||
UpdateCmd->SetGuidance("if you changed geometrical value(s).");
|
||||
UpdateCmd->AvailableForStates(G4State_Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
DetectorMessenger::~DetectorMessenger()
|
||||
{
|
||||
delete MaterCmd;
|
||||
delete SizeCmd;
|
||||
delete UpdateCmd;
|
||||
delete detDir;
|
||||
delete testemDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
if( command == MaterCmd )
|
||||
{ Detector->SetMaterial(newValue);}
|
||||
|
||||
if( command == SizeCmd )
|
||||
{ Detector->SetSize(SizeCmd->GetNewDoubleValue(newValue));}
|
||||
|
||||
if( command == UpdateCmd )
|
||||
{ Detector->UpdateGeometry(); }
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
+57
-61
@@ -23,82 +23,78 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysListBinaryCascade.cc,v 1.4 2006/08/10 08:44:39 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: EventAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListBinaryCascade.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4LFission.hh"
|
||||
#include "G4LCapture.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
#include "EventAction.hh"
|
||||
|
||||
#include "G4ProtonInelasticProcess.hh"
|
||||
#include "G4NeutronInelasticProcess.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
#include "G4HadronFissionProcess.hh"
|
||||
#include "G4HadronCaptureProcess.hh"
|
||||
#include "RunAction.hh"
|
||||
#include "HistoManager.hh"
|
||||
#include "EventMessenger.hh"
|
||||
|
||||
#include "G4BinaryCascade.hh"
|
||||
#include "G4Event.hh"
|
||||
#include "G4TrajectoryContainer.hh"
|
||||
#include "G4Trajectory.hh"
|
||||
#include "G4VVisManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListBinaryCascade::PhysListBinaryCascade(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListBinaryCascade::~PhysListBinaryCascade()
|
||||
EventAction::EventAction(RunAction* RA, HistoManager* histo)
|
||||
:runaction(RA),histoManager(histo),
|
||||
drawFlag("none"),printModulo(10000)
|
||||
{
|
||||
delete theIPproton;
|
||||
delete theIPneutron;
|
||||
delete theFissionProcess;
|
||||
delete theCaptureProcess;
|
||||
eventMessenger = new EventMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListBinaryCascade::ConstructProcess()
|
||||
EventAction::~EventAction()
|
||||
{
|
||||
|
||||
// Binary Cascade
|
||||
G4ParticleDefinition* particle = 0;
|
||||
G4ProcessManager* pmanager = 0;
|
||||
G4BinaryCascade* theBC = 0;
|
||||
|
||||
// proton
|
||||
particle = G4Proton::Proton();
|
||||
pmanager = particle->GetProcessManager();
|
||||
theBC = new G4BinaryCascade();
|
||||
theIPproton = new G4ProtonInelasticProcess();
|
||||
theIPproton->RegisterMe(theBC);
|
||||
theIPproton->AddDataSet(new G4ProtonInelasticCrossSection);
|
||||
pmanager->AddDiscreteProcess(theIPproton);
|
||||
|
||||
// neutron
|
||||
particle = G4Neutron::Neutron();
|
||||
pmanager = particle->GetProcessManager();
|
||||
theBC = new G4BinaryCascade();
|
||||
theIPneutron = new G4NeutronInelasticProcess();
|
||||
theIPneutron->RegisterMe(theBC);
|
||||
theIPneutron->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
pmanager->AddDiscreteProcess(theIPneutron);
|
||||
// fission
|
||||
theFissionProcess = new G4HadronFissionProcess;
|
||||
G4LFission* theFissionModel = new G4LFission;
|
||||
theFissionProcess->RegisterMe(theFissionModel);
|
||||
pmanager->AddDiscreteProcess(theFissionProcess);
|
||||
// capture
|
||||
theCaptureProcess = new G4HadronCaptureProcess;
|
||||
G4LCapture* theCaptureModel = new G4LCapture;
|
||||
theCaptureProcess->RegisterMe(theCaptureModel);
|
||||
pmanager->AddDiscreteProcess(theCaptureProcess);
|
||||
delete eventMessenger;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void EventAction::BeginOfEventAction(const G4Event* evt)
|
||||
{
|
||||
G4int evtNb = evt->GetEventID();
|
||||
|
||||
//printing survey
|
||||
if (evtNb%printModulo == 0)
|
||||
G4cout << "\n---> Begin of Event: " << evtNb << G4endl;
|
||||
|
||||
// initialisation per event
|
||||
EnergyDeposit = EnergySecondary = 0.;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void EventAction::EndOfEventAction(const G4Event* evt)
|
||||
{
|
||||
runaction->AddEnergyDeposit(EnergyDeposit);
|
||||
histoManager->FillHisto(1, EnergyDeposit);
|
||||
histoManager->FillHisto(2, EnergySecondary);
|
||||
histoManager->FillHisto(3, EnergyDeposit+EnergySecondary);
|
||||
|
||||
if (G4VVisManager::GetConcreteInstance())
|
||||
{
|
||||
G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer();
|
||||
G4int n_trajectories = 0;
|
||||
if (trajectoryContainer) n_trajectories = trajectoryContainer->entries();
|
||||
for (G4int i=0; i<n_trajectories; i++)
|
||||
{ G4Trajectory* trj = (G4Trajectory*)
|
||||
((*(evt->GetTrajectoryContainer()))[i]);
|
||||
if (drawFlag == "all") trj->DrawTrajectory(1000);
|
||||
else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.))
|
||||
trj->DrawTrajectory(1000);
|
||||
else if ((drawFlag == "neutral")&&(trj->GetCharge() == 0.))
|
||||
trj->DrawTrajectory(1000);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,83 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: EventMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "EventMessenger.hh"
|
||||
|
||||
#include "EventAction.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
EventMessenger::EventMessenger(EventAction* EvAct)
|
||||
:eventAction(EvAct)
|
||||
{
|
||||
eventDir = new G4UIdirectory("/testem/event/");
|
||||
eventDir->SetGuidance("event control");
|
||||
|
||||
DrawCmd = new G4UIcmdWithAString("/testem/event/drawTracks",this);
|
||||
DrawCmd->SetGuidance("Draw the tracks in the event");
|
||||
DrawCmd->SetGuidance(" Choice : none,charged,neutral,all");
|
||||
DrawCmd->SetParameterName("choice",true);
|
||||
DrawCmd->SetDefaultValue("all");
|
||||
DrawCmd->SetCandidates("none charged neutral all");
|
||||
DrawCmd->AvailableForStates(G4State_Idle);
|
||||
|
||||
PrintCmd = new G4UIcmdWithAnInteger("/testem/event/printModulo",this);
|
||||
PrintCmd->SetGuidance("Print events modulo n");
|
||||
PrintCmd->SetParameterName("EventNb",false);
|
||||
PrintCmd->SetRange("EventNb>0");
|
||||
PrintCmd->AvailableForStates(G4State_Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
EventMessenger::~EventMessenger()
|
||||
{
|
||||
delete DrawCmd;
|
||||
delete PrintCmd;
|
||||
delete eventDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void EventMessenger::SetNewValue(G4UIcommand* command,
|
||||
G4String newValue)
|
||||
{
|
||||
if(command == DrawCmd)
|
||||
{eventAction->SetDrawFlag(newValue);}
|
||||
|
||||
if(command == PrintCmd)
|
||||
{eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,215 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: HistoManager.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "HistoManager.hh"
|
||||
#include "HistoMessenger.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
#include "AIDA/AIDA.h"
|
||||
#endif
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
HistoManager::HistoManager()
|
||||
:af(0),tree(0),factoryOn(false)
|
||||
{
|
||||
#ifdef G4ANALYSIS_USE
|
||||
// Creating the analysis factory
|
||||
af = AIDA_createAnalysisFactory();
|
||||
if(!af) {
|
||||
G4cout << " HistoManager::HistoManager() :"
|
||||
<< " problem creating the AIDA analysis factory."
|
||||
<< G4endl;
|
||||
}
|
||||
#endif
|
||||
|
||||
fileName[0] = "testem18";
|
||||
fileType = "hbook";
|
||||
fileOption = "--noErrors uncompress";
|
||||
// histograms
|
||||
for (G4int k=0; k<MaxHisto; k++) {
|
||||
histo[k] = 0;
|
||||
exist[k] = false;
|
||||
Unit[k] = 1.0;
|
||||
Width[k] = 1.0;
|
||||
}
|
||||
|
||||
histoMessenger = new HistoMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
HistoManager::~HistoManager()
|
||||
{
|
||||
delete histoMessenger;
|
||||
|
||||
#ifdef G4ANALYSIS_USE
|
||||
delete af;
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::book()
|
||||
{
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if(!af) return;
|
||||
|
||||
// Creating a tree mapped to an hbook file.
|
||||
fileName[1] = fileName[0] + "." + fileType;
|
||||
G4bool readOnly = false;
|
||||
G4bool createNew = true;
|
||||
AIDA::ITreeFactory* tf = af->createTreeFactory();
|
||||
tree = tf->create(fileName[1], fileType, readOnly, createNew, fileOption);
|
||||
delete tf;
|
||||
if(!tree) {
|
||||
G4cout << "HistoManager::book() :"
|
||||
<< " problem creating the AIDA tree with "
|
||||
<< " storeName = " << fileName[1]
|
||||
<< " storeType = " << fileType
|
||||
<< " readOnly = " << readOnly
|
||||
<< " createNew = " << createNew
|
||||
<< " options = " << fileOption
|
||||
<< G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// Creating a histogram factory, whose histograms will be handled by the tree
|
||||
AIDA::IHistogramFactory* hf = af->createHistogramFactory(*tree);
|
||||
|
||||
// create selected histograms
|
||||
for (G4int k=0; k<MaxHisto; k++) {
|
||||
if (exist[k]) {
|
||||
histo[k] = hf->createHistogram1D( Label[k], Title[k],
|
||||
Nbins[k], Vmin[k], Vmax[k]);
|
||||
factoryOn = true;
|
||||
}
|
||||
}
|
||||
delete hf;
|
||||
if(factoryOn)
|
||||
G4cout << "\n----> Histogram Tree is opened in " << fileName[1] << G4endl;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::save()
|
||||
{
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if (factoryOn) {
|
||||
tree->commit(); // Writing the histograms to the file
|
||||
tree->close(); // and closing the tree (and the file)
|
||||
G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl;
|
||||
|
||||
delete tree;
|
||||
tree = 0;
|
||||
factoryOn = false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::FillHisto(G4int ih, G4double e, G4double weight)
|
||||
{
|
||||
if (ih > MaxHisto) {
|
||||
G4cout << "---> warning from HistoManager::FillHisto() : histo " << ih
|
||||
<< "does not exist; e= " << e << " w= " << weight << G4endl;
|
||||
return;
|
||||
}
|
||||
#ifdef G4ANALYSIS_USE
|
||||
if(exist[ih]) histo[ih]->fill(e/Unit[ih], weight);
|
||||
#endif
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::SetHisto(G4int ih,
|
||||
G4int nbins, G4double valmin, G4double valmax, const G4String& unit)
|
||||
{
|
||||
if (ih > MaxHisto) {
|
||||
G4cout << "---> warning from HistoManager::SetHisto() : histo " << ih
|
||||
<< "does not exist" << G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
const G4String id[] = { "0", "1", "2", "3", "4", "5", "6" };
|
||||
const G4String title[] =
|
||||
{ "dummy", //0
|
||||
"continuous energy loss along primary track", //1
|
||||
"energy from secondaries", //2
|
||||
"total energy lost by primary track", //3
|
||||
"energy spectrum of e-+", //4
|
||||
"energy spectrum of gamma", //5
|
||||
"step size" //6
|
||||
};
|
||||
|
||||
G4String titl = title[ih];
|
||||
G4double vmin = valmin, vmax = valmax;
|
||||
Unit[ih] = 1.;
|
||||
|
||||
if (unit != "none") {
|
||||
titl = title[ih] + " (" + unit + ")";
|
||||
Unit[ih] = G4UnitDefinition::GetValueOf(unit);
|
||||
vmin = valmin/Unit[ih]; vmax = valmax/Unit[ih];
|
||||
}
|
||||
|
||||
exist[ih] = true;
|
||||
Label[ih] = id[ih];
|
||||
Title[ih] = titl;
|
||||
Nbins[ih] = nbins;
|
||||
Vmin[ih] = vmin;
|
||||
Vmax[ih] = vmax;
|
||||
Width[ih] = (valmax-valmin)/nbins;
|
||||
|
||||
G4cout << "----> SetHisto " << ih << ": " << titl << "; "
|
||||
<< nbins << " bins from "
|
||||
<< vmin << " " << unit << " to " << vmax << " " << unit << G4endl;
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoManager::RemoveHisto(G4int ih)
|
||||
{
|
||||
if (ih > MaxHisto) {
|
||||
G4cout << "---> warning from HistoManager::RemoveHisto() : histo " << ih
|
||||
<< "does not exist" << G4endl;
|
||||
return;
|
||||
}
|
||||
|
||||
histo[ih] = 0; exist[ih] = false;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: HistoMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "HistoMessenger.hh"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include "HistoManager.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
#include "G4UIparameter.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
HistoMessenger::HistoMessenger(HistoManager* manager)
|
||||
:histoManager (manager)
|
||||
{
|
||||
histoDir = new G4UIdirectory("/testem/histo/");
|
||||
histoDir->SetGuidance("histograms control");
|
||||
|
||||
factoryCmd = new G4UIcmdWithAString("/testem/histo/setFileName",this);
|
||||
factoryCmd->SetGuidance("set name for the histograms file");
|
||||
|
||||
typeCmd = new G4UIcmdWithAString("/testem/histo/setFileType",this);
|
||||
typeCmd->SetGuidance("set histograms file type: hbook, root, XML");
|
||||
typeCmd->SetCandidates("hbook root XML");
|
||||
|
||||
optionCmd = new G4UIcmdWithAString("/testem/histo/setFileOption",this);
|
||||
optionCmd->SetGuidance("set option for the histograms file");
|
||||
|
||||
histoCmd = new G4UIcommand("/testem/histo/setHisto",this);
|
||||
histoCmd->SetGuidance("Set bining of the histo number ih :");
|
||||
histoCmd->SetGuidance(" nbBins; valMin; valMax; unit (of vmin and vmax)");
|
||||
//
|
||||
G4UIparameter* ih = new G4UIparameter("ih",'i',false);
|
||||
ih->SetGuidance("histo number : from 1 to MaxHisto");
|
||||
ih->SetParameterRange("ih>0");
|
||||
histoCmd->SetParameter(ih);
|
||||
//
|
||||
G4UIparameter* nbBins = new G4UIparameter("nbBins",'i',false);
|
||||
nbBins->SetGuidance("number of bins");
|
||||
nbBins->SetParameterRange("nbBins>0");
|
||||
histoCmd->SetParameter(nbBins);
|
||||
//
|
||||
G4UIparameter* valMin = new G4UIparameter("valMin",'d',false);
|
||||
valMin->SetGuidance("valMin, expressed in unit");
|
||||
histoCmd->SetParameter(valMin);
|
||||
//
|
||||
G4UIparameter* valMax = new G4UIparameter("valMax",'d',false);
|
||||
valMax->SetGuidance("valMax, expressed in unit");
|
||||
histoCmd->SetParameter(valMax);
|
||||
//
|
||||
G4UIparameter* unit = new G4UIparameter("unit",'s',true);
|
||||
unit->SetGuidance("if omitted, vmin and vmax are assumed dimensionless");
|
||||
unit->SetDefaultValue("none");
|
||||
histoCmd->SetParameter(unit);
|
||||
|
||||
rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this);
|
||||
rmhistoCmd->SetGuidance("desactivate histo #id");
|
||||
rmhistoCmd->SetParameterName("id",false);
|
||||
rmhistoCmd->SetRange("id>0");
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
HistoMessenger::~HistoMessenger()
|
||||
{
|
||||
delete rmhistoCmd;
|
||||
delete histoCmd;
|
||||
delete optionCmd;
|
||||
delete typeCmd;
|
||||
delete factoryCmd;
|
||||
delete histoDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
|
||||
{
|
||||
if (command == factoryCmd)
|
||||
histoManager->SetFileName(newValues);
|
||||
|
||||
if (command == typeCmd)
|
||||
histoManager->SetFileType(newValues);
|
||||
|
||||
if (command == optionCmd)
|
||||
histoManager->SetFileOption(newValues);
|
||||
|
||||
if (command == histoCmd)
|
||||
{ G4int ih,nbBins; G4double vmin,vmax; char unts[30];
|
||||
const char* t = newValues;
|
||||
std::istringstream is(t);
|
||||
is >> ih >> nbBins >> vmin >> vmax >> unts;
|
||||
G4String unit = unts;
|
||||
G4double vUnit = 1. ;
|
||||
if (unit != "none") vUnit = G4UIcommand::ValueOf(unit);
|
||||
histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit);
|
||||
}
|
||||
|
||||
if (command == rmhistoCmd)
|
||||
histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues));
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: PhysListEmLivermore.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmLivermore.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4LowEnergyCompton.hh"
|
||||
#include "G4LowEnergyGammaConversion.hh"
|
||||
#include "G4LowEnergyPhotoElectric.hh"
|
||||
#include "G4LowEnergyRayleigh.hh"
|
||||
|
||||
#include "G4LowEnergyIonisation.hh"
|
||||
#include "G4LowEnergyBremsstrahlung.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hLowEnergyIonisation.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmLivermore::PhysListEmLivermore(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmLivermore::~PhysListEmLivermore()
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListEmLivermore::ConstructProcess()
|
||||
{
|
||||
// Add LowEn or standard EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyPhotoElectric);
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyCompton);
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion);
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
pmanager->AddProcess(new G4LowEnergyIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1,-1, 2);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 3);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 3, 3);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....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: PhysListEmPenelope.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListEmPenelope.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4PenelopeCompton.hh"
|
||||
#include "G4PenelopeGammaConversion.hh"
|
||||
#include "G4PenelopePhotoElectric.hh"
|
||||
#include "G4PenelopeRayleigh.hh"
|
||||
|
||||
#include "G4PenelopeIonisation.hh"
|
||||
#include "G4PenelopeBremsstrahlung.hh"
|
||||
#include "G4PenelopeAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmPenelope::PhysListEmPenelope(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListEmPenelope::~PhysListEmPenelope()
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListEmPenelope::ConstructProcess()
|
||||
{
|
||||
// Add Penelope or standard EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
pmanager->AddDiscreteProcess(new G4PenelopePhotoElectric);
|
||||
pmanager->AddDiscreteProcess(new G4PenelopeCompton);
|
||||
pmanager->AddDiscreteProcess(new G4PenelopeGammaConversion);
|
||||
pmanager->AddDiscreteProcess(new G4PenelopeRayleigh);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
pmanager->AddProcess(new G4PenelopeIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 2);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
pmanager->AddProcess(new G4PenelopeIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 2);
|
||||
pmanager->AddProcess(new G4PenelopeAnnihilation, 0,-1, 3);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 3, 3);
|
||||
|
||||
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 1,1);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
+34
-37
@@ -23,9 +23,13 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysListEmStandard.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "exrdmPhysListEmStandard.hh"
|
||||
#include "PhysListEmStandard.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
@@ -33,8 +37,6 @@
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
@@ -48,20 +50,21 @@
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
exrdmPhysListEmStandard::exrdmPhysListEmStandard(const G4String& na)
|
||||
: G4VPhysicsConstructor(na)
|
||||
{name = na;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
exrdmPhysListEmStandard::~exrdmPhysListEmStandard()
|
||||
PhysListEmStandard::PhysListEmStandard(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void exrdmPhysListEmStandard::ConstructProcess()
|
||||
PhysListEmStandard::~PhysListEmStandard()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListEmStandard::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
//
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
@@ -70,43 +73,37 @@ void exrdmPhysListEmStandard::ConstructProcess()
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
// gamma
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
|
||||
//electron
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 2,2);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
//positron
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 1,1);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 2,2);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,3);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1,2,2);
|
||||
//muon
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 1,1);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2,2);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 3,3);
|
||||
|
||||
} else if (particleName == "alpha" || particleName == "GenericIon" ) {
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 1,1);
|
||||
|
||||
} else if ((!particle->IsShortLived()) &&
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
// don't need these if standard hadron is used: std-h-em)
|
||||
if (name != "std-h-em") {
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1,2,2);
|
||||
}
|
||||
//all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4hIonisation, -1,1,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,246 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: PhysicsList.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysicsList.hh"
|
||||
#include "PhysicsListMessenger.hh"
|
||||
|
||||
#include "PhysListEmStandard.hh"
|
||||
#include "PhysListEmLivermore.hh"
|
||||
#include "PhysListEmPenelope.hh"
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysicsList::PhysicsList() : G4VModularPhysicsList()
|
||||
{
|
||||
G4LossTableManager::Instance();
|
||||
pMessenger = new PhysicsListMessenger(this);
|
||||
|
||||
// EM physics
|
||||
emName = G4String("standard");
|
||||
emPhysicsList = new PhysListEmStandard(emName);
|
||||
|
||||
defaultCutValue = 1.*mm;
|
||||
cutForGamma = defaultCutValue;
|
||||
cutForElectron = defaultCutValue;
|
||||
|
||||
SetVerboseLevel(1);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysicsList::~PhysicsList()
|
||||
{
|
||||
delete emPhysicsList;
|
||||
delete pMessenger;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsList::AddPhysicsList(const G4String& name)
|
||||
{
|
||||
if (verboseLevel>1) {
|
||||
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
|
||||
}
|
||||
|
||||
if (name == emName) return;
|
||||
|
||||
if (name == "standard") {
|
||||
|
||||
emName = name;
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new PhysListEmStandard(name);
|
||||
|
||||
} else if (name == "livermore") {
|
||||
|
||||
emName = name;
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new PhysListEmLivermore(name);
|
||||
|
||||
} else if (name == "penelope") {
|
||||
|
||||
emName = name;
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new PhysListEmPenelope(name);
|
||||
|
||||
} else {
|
||||
|
||||
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
|
||||
<< " is not defined"
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
// Bosons
|
||||
#include "G4ChargedGeantino.hh"
|
||||
#include "G4Geantino.hh"
|
||||
#include "G4Gamma.hh"
|
||||
|
||||
// leptons
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
|
||||
// Mesons
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
|
||||
// Baryons
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
#include "G4AntiNeutron.hh"
|
||||
|
||||
// Nuclei
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
void PhysicsList::ConstructParticle()
|
||||
{
|
||||
// pseudo-particles
|
||||
G4Geantino::GeantinoDefinition();
|
||||
G4ChargedGeantino::ChargedGeantinoDefinition();
|
||||
|
||||
// gamma
|
||||
G4Gamma::GammaDefinition();
|
||||
|
||||
// leptons
|
||||
G4Electron::ElectronDefinition();
|
||||
G4Positron::PositronDefinition();
|
||||
G4MuonPlus::MuonPlusDefinition();
|
||||
G4MuonMinus::MuonMinusDefinition();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
|
||||
// baryons
|
||||
G4Proton::ProtonDefinition();
|
||||
G4AntiProton::AntiProtonDefinition();
|
||||
G4Neutron::NeutronDefinition();
|
||||
G4AntiNeutron::AntiNeutronDefinition();
|
||||
|
||||
// ions
|
||||
G4Deuteron::DeuteronDefinition();
|
||||
G4Triton::TritonDefinition();
|
||||
G4Alpha::AlphaDefinition();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4EmProcessOptions.hh"
|
||||
|
||||
void PhysicsList::ConstructProcess()
|
||||
{
|
||||
AddTransportation();
|
||||
emPhysicsList->ConstructProcess();
|
||||
AddStepMax();
|
||||
|
||||
G4EmProcessOptions emOptions;
|
||||
emOptions.SetBuildCSDARange(true);
|
||||
emOptions.SetMaxEnergyForCSDARange(100*TeV);
|
||||
emOptions.SetDEDXBinningForCSDARange(480);
|
||||
emOptions.SetDEDXBinning(480);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "StepMax.hh"
|
||||
|
||||
void PhysicsList::AddStepMax()
|
||||
{
|
||||
// Step limitation seen as a process
|
||||
StepMax* stepMaxProcess = new StepMax();
|
||||
|
||||
theParticleIterator->reset();
|
||||
while ((*theParticleIterator)()){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
if (stepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived())
|
||||
{
|
||||
pmanager ->AddDiscreteProcess(stepMaxProcess);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsList::SetCuts()
|
||||
{
|
||||
|
||||
if (verboseLevel >0){
|
||||
G4cout << "PhysicsList::SetCuts:";
|
||||
G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
|
||||
}
|
||||
|
||||
// set cut values for gamma at first and for e- second and next for e+,
|
||||
// because some processes for e+/e- need cut values for gamma
|
||||
SetCutValue(cutForGamma, "gamma");
|
||||
SetCutValue(cutForElectron, "e-");
|
||||
SetCutValue(cutForElectron, "e+");
|
||||
|
||||
if (verboseLevel>0) DumpCutValuesTable();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsList::SetCutForGamma(G4double cut)
|
||||
{
|
||||
cutForGamma = cut;
|
||||
SetParticleCuts(cutForGamma, G4Gamma::Gamma());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsList::SetCutForElectron(G4double cut)
|
||||
{
|
||||
cutForElectron = cut;
|
||||
SetParticleCuts(cutForElectron, G4Electron::Electron());
|
||||
SetParticleCuts(cutForElectron, G4Positron::Positron());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -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: PhysicsListMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysicsListMessenger.hh"
|
||||
|
||||
#include "PhysicsList.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
|
||||
:pPhysicsList(pPhys)
|
||||
{
|
||||
physDir = new G4UIdirectory("/testem/phys/");
|
||||
physDir->SetGuidance("physics list commands");
|
||||
|
||||
pListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
|
||||
pListCmd->SetGuidance("Add modula physics list.");
|
||||
pListCmd->SetParameterName("PList",false);
|
||||
pListCmd->AvailableForStates(G4State_PreInit);
|
||||
|
||||
gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setGCut",this);
|
||||
gammaCutCmd->SetGuidance("Set gamma cut.");
|
||||
gammaCutCmd->SetParameterName("Gcut",false);
|
||||
gammaCutCmd->SetUnitCategory("Length");
|
||||
gammaCutCmd->SetRange("Gcut>0.0");
|
||||
gammaCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
|
||||
|
||||
electCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setECut",this);
|
||||
electCutCmd->SetGuidance("Set e-/e+ cut.");
|
||||
electCutCmd->SetParameterName("Ecut",false);
|
||||
electCutCmd->SetUnitCategory("Length");
|
||||
electCutCmd->SetRange("Ecut>0.0");
|
||||
electCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
|
||||
|
||||
allCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setCuts",this);
|
||||
allCutCmd->SetGuidance("Set cut for all.");
|
||||
allCutCmd->SetParameterName("cut",false);
|
||||
allCutCmd->SetUnitCategory("Length");
|
||||
allCutCmd->SetRange("cut>0.0");
|
||||
allCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysicsListMessenger::~PhysicsListMessenger()
|
||||
{
|
||||
delete pListCmd;
|
||||
delete gammaCutCmd;
|
||||
delete electCutCmd;
|
||||
delete allCutCmd;
|
||||
delete physDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysicsListMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
if (command == pListCmd)
|
||||
{pPhysicsList->AddPhysicsList(newValue);}
|
||||
|
||||
if (command == gammaCutCmd)
|
||||
{pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));}
|
||||
|
||||
if (command == electCutCmd)
|
||||
{pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));}
|
||||
|
||||
if (command == allCutCmd)
|
||||
{
|
||||
G4double cut = allCutCmd->GetNewDoubleValue(newValue);
|
||||
pPhysicsList->SetCutForGamma(cut);
|
||||
pPhysicsList->SetCutForElectron(cut);
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: PrimaryGeneratorAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "DetectorConstruction.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PrimaryGeneratorAction::PrimaryGeneratorAction(DetectorConstruction* det)
|
||||
:detector(det)
|
||||
{
|
||||
particleGun = new G4ParticleGun(1);
|
||||
G4ParticleDefinition* particle
|
||||
= G4ParticleTable::GetParticleTable()->FindParticle("e-");
|
||||
particleGun->SetParticleDefinition(particle);
|
||||
particleGun->SetParticleEnergy(10*MeV);
|
||||
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PrimaryGeneratorAction::~PrimaryGeneratorAction()
|
||||
{
|
||||
delete particleGun;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
//this function is called at the begining of event
|
||||
//
|
||||
G4double halfSize = 0.5*(detector->GetSize());
|
||||
G4double x0 = - halfSize;
|
||||
|
||||
//randomize (y0,z0)
|
||||
//
|
||||
G4double beam = 0.8*halfSize;
|
||||
G4double y0 = (2*G4UniformRand()-1.)*beam;
|
||||
G4double z0 = (2*G4UniformRand()-1.)*beam;
|
||||
|
||||
particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0));
|
||||
particleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,275 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: RunAction.cc,v 1.2 2007/02/16 11:59:47 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "RunAction.hh"
|
||||
#include "DetectorConstruction.hh"
|
||||
#include "PrimaryGeneratorAction.hh"
|
||||
#include "HistoManager.hh"
|
||||
|
||||
#include "G4Run.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4EmCalculator.hh"
|
||||
|
||||
#include "Randomize.hh"
|
||||
#include <iomanip>
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RunAction::RunAction(DetectorConstruction* det, PrimaryGeneratorAction* kin,
|
||||
HistoManager* histo)
|
||||
:detector(det), primary(kin), histoManager(histo)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RunAction::~RunAction()
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RunAction::BeginOfRunAction(const G4Run* run)
|
||||
{
|
||||
G4cout << "### Run " << run->GetRunID() << " start." << G4endl;
|
||||
|
||||
//initialisation
|
||||
//
|
||||
energyDeposit = 0.;
|
||||
|
||||
nbCharged = nbNeutral = 0;
|
||||
energyCharged = energyNeutral = 0.;
|
||||
emin[0] = emin[1] = DBL_MAX;
|
||||
emax[0] = emax[1] = 0.;
|
||||
|
||||
nbSteps = 0;
|
||||
trackLength = 0.;
|
||||
|
||||
histoManager->book();
|
||||
|
||||
// do not save Rndm status
|
||||
G4RunManager::GetRunManager()->SetRandomNumberStore(false);
|
||||
CLHEP::HepRandom::showEngineStatus();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RunAction::EndOfRunAction(const G4Run* aRun)
|
||||
{
|
||||
G4int nbEvents = aRun->GetNumberOfEvent();
|
||||
if (nbEvents == 0) return;
|
||||
|
||||
G4Material* material = detector->GetMaterial();
|
||||
G4double length = detector->GetSize();
|
||||
G4double density = material->GetDensity();
|
||||
|
||||
G4ParticleDefinition* particle = primary->GetParticleGun()
|
||||
->GetParticleDefinition();
|
||||
G4String partName = particle->GetParticleName();
|
||||
G4double eprimary = primary->GetParticleGun()->GetParticleEnergy();
|
||||
|
||||
G4int prec = G4cout.precision(3);
|
||||
G4cout << "\n ======================== run summary ======================\n";
|
||||
G4cout << "\n The run was " << nbEvents << " " << partName << " of "
|
||||
<< G4BestUnit(eprimary,"Energy") << " through "
|
||||
<< G4BestUnit(length,"Length") << " of "
|
||||
<< material->GetName() << " (density: "
|
||||
<< G4BestUnit(density,"Volumic Mass") << ")";
|
||||
G4cout << "\n ===========================================================\n";
|
||||
G4cout << G4endl;
|
||||
|
||||
if (particle->GetPDGCharge() == 0.) return;
|
||||
|
||||
G4cout.precision(5);
|
||||
|
||||
//track length
|
||||
//
|
||||
G4double trackLPerEvent = trackLength/nbEvents;
|
||||
G4double nbStepPerEvent = double(nbSteps)/nbEvents;
|
||||
G4double stepSize = trackLength/nbSteps;
|
||||
|
||||
G4cout
|
||||
<< "\n trackLength= "
|
||||
<< G4BestUnit(trackLPerEvent, "Length")
|
||||
<< "\t nb of steps= " << nbStepPerEvent
|
||||
<< " stepSize= " << G4BestUnit(stepSize, "Length")
|
||||
<< G4endl;
|
||||
|
||||
//charged secondaries (ionization, direct pair production)
|
||||
//
|
||||
G4double energyPerEvent = energyCharged/nbEvents;
|
||||
G4double nbPerEvent = double(nbCharged)/nbEvents;
|
||||
G4double meanEkin = 0.;
|
||||
if (nbCharged) meanEkin = energyCharged/nbCharged;
|
||||
|
||||
G4cout
|
||||
<< "\n d-rays : eLoss/primary= "
|
||||
<< G4BestUnit(energyPerEvent, "Energy")
|
||||
<< "\t nb of d-rays= " << nbPerEvent
|
||||
<< " <Tkin>= " << G4BestUnit(meanEkin, "Energy")
|
||||
<< " Tmin= " << G4BestUnit(emin[0], "Energy")
|
||||
<< " Tmax= " << G4BestUnit(emax[0], "Energy")
|
||||
<< G4endl;
|
||||
|
||||
//neutral secondaries (bremsstrahlung)
|
||||
//
|
||||
energyPerEvent = energyNeutral/nbEvents;
|
||||
nbPerEvent = double(nbNeutral)/nbEvents;
|
||||
meanEkin = 0.;
|
||||
if (nbNeutral) meanEkin = energyNeutral/nbNeutral;
|
||||
|
||||
G4cout
|
||||
<< "\n brems : eLoss/primary= "
|
||||
<< G4BestUnit(energyPerEvent, "Energy")
|
||||
<< "\t nb of gammas= " << nbPerEvent
|
||||
<< " <Tkin>= " << G4BestUnit(meanEkin, "Energy")
|
||||
<< " Tmin= " << G4BestUnit(emin[1], "Energy")
|
||||
<< " Tmax= " << G4BestUnit(emax[1], "Energy")
|
||||
<< G4endl;
|
||||
|
||||
|
||||
G4EmCalculator emCal;
|
||||
|
||||
//local energy deposit
|
||||
//
|
||||
energyPerEvent = energyDeposit/nbEvents;
|
||||
//
|
||||
G4double r0 = emCal.GetRangeFromRestricteDEDX(eprimary,particle,material);
|
||||
G4double r1 = r0 - trackLPerEvent;
|
||||
G4double etry = eprimary - energyPerEvent;
|
||||
G4double efinal = 0.;
|
||||
if (r1 > 0.) efinal = GetEnergyFromRestrictedRange(r1,particle,material,etry);
|
||||
G4double dEtable = eprimary - efinal;
|
||||
G4double ratio = 0.;
|
||||
if (dEtable > 0.) ratio = energyPerEvent/dEtable;
|
||||
|
||||
G4cout
|
||||
<< "\n deposit : eLoss/primary= "
|
||||
<< G4BestUnit(energyPerEvent, "Energy")
|
||||
<< "\t <dEcut > table= "
|
||||
<< G4BestUnit(dEtable, "Energy")
|
||||
<< " ---> simul/reference= " << ratio
|
||||
<< G4endl;
|
||||
|
||||
//total energy transferred
|
||||
//
|
||||
G4double energyTotal = energyDeposit + energyCharged + energyNeutral;
|
||||
energyPerEvent = energyTotal/nbEvents;
|
||||
//
|
||||
r0 = emCal.GetCSDARange(eprimary,particle,material);
|
||||
r1 = r0 - trackLPerEvent;
|
||||
etry = eprimary - energyPerEvent;
|
||||
efinal = 0.;
|
||||
if (r1 > 0.) efinal = GetEnergyFromCSDARange(r1,particle,material,etry);
|
||||
dEtable = eprimary - efinal;
|
||||
ratio = 0.;
|
||||
if (dEtable > 0.) ratio = energyPerEvent/dEtable;
|
||||
|
||||
G4cout
|
||||
<< "\n total : eLoss/primary= "
|
||||
<< G4BestUnit(energyPerEvent, "Energy")
|
||||
<< "\t <dEfull> table= "
|
||||
<< G4BestUnit(dEtable, "Energy")
|
||||
<< " ---> simul/reference= " << ratio
|
||||
<< G4endl;
|
||||
|
||||
G4cout.precision(prec);
|
||||
|
||||
histoManager->save();
|
||||
|
||||
// show Rndm status
|
||||
CLHEP::HepRandom::showEngineStatus();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double RunAction::GetEnergyFromRestrictedRange(G4double range,
|
||||
G4ParticleDefinition* particle, G4Material* material, G4double Etry)
|
||||
{
|
||||
G4EmCalculator emCal;
|
||||
|
||||
G4double Energy = Etry, dE = 0., dEdx;
|
||||
G4double r, dr;
|
||||
G4double err = 1., errmax = 0.00001;
|
||||
G4int iter = 0 , itermax = 10;
|
||||
while (err > errmax && iter < itermax) {
|
||||
iter++;
|
||||
Energy -= dE;
|
||||
r = emCal.GetRangeFromRestricteDEDX(Energy,particle,material);
|
||||
dr = r - range;
|
||||
dEdx = emCal.GetDEDX(Energy,particle,material);
|
||||
dE = dEdx*dr;
|
||||
err = std::abs(dE)/Energy;
|
||||
}
|
||||
if (iter == itermax) {
|
||||
G4cout
|
||||
<< "\n ---> warning: RunAction::GetEnergyFromRestRange() did not converge"
|
||||
<< " Etry = " << G4BestUnit(Etry,"Energy")
|
||||
<< " Energy = " << G4BestUnit(Energy,"Energy")
|
||||
<< " err = " << err
|
||||
<< " iter = " << iter << G4endl;
|
||||
}
|
||||
|
||||
return Energy;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double RunAction::GetEnergyFromCSDARange(G4double range,
|
||||
G4ParticleDefinition* particle, G4Material* material, G4double Etry)
|
||||
{
|
||||
G4EmCalculator emCal;
|
||||
|
||||
G4double Energy = Etry, dE = 0., dEdx;
|
||||
G4double r, dr;
|
||||
G4double err = 1., errmax = 0.00001;
|
||||
G4int iter = 0 , itermax = 10;
|
||||
while (err > errmax && iter < itermax) {
|
||||
iter++;
|
||||
Energy -= dE;
|
||||
r = emCal.GetCSDARange(Energy,particle,material);
|
||||
dr = r - range;
|
||||
dEdx = emCal.ComputeTotalDEDX(Energy,particle,material);
|
||||
dE = dEdx*dr;
|
||||
err = std::abs(dE)/Energy;
|
||||
}
|
||||
if (iter == itermax) {
|
||||
G4cout
|
||||
<< "\n ---> warning: RunAction::GetEnergyFromCSDARange() did not converge"
|
||||
<< " Etry = " << G4BestUnit(Etry,"Energy")
|
||||
<< " Energy = " << G4BestUnit(Energy,"Energy")
|
||||
<< " err = " << err
|
||||
<< " iter = " << iter << G4endl;
|
||||
}
|
||||
|
||||
return Energy;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
+31
-28
@@ -23,51 +23,54 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: PhysListHadronElastic.cc,v 1.7 2006/08/10 08:44:39 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: StackingAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "PhysListHadronElastic.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4UHadronElasticProcess.hh"
|
||||
#include "G4HadronElastic.hh"
|
||||
#include "StackingAction.hh"
|
||||
|
||||
#include "RunAction.hh"
|
||||
#include "EventAction.hh"
|
||||
#include "HistoManager.hh"
|
||||
|
||||
#include "G4Track.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListHadronElastic::PhysListHadronElastic(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
StackingAction::StackingAction(RunAction* RA,EventAction* EA, HistoManager* HM)
|
||||
:runaction(RA), eventaction(EA), histoManager(HM)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysListHadronElastic::~PhysListHadronElastic()
|
||||
{
|
||||
delete theElasticProcess;
|
||||
}
|
||||
StackingAction::~StackingAction()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void PhysListHadronElastic::ConstructProcess()
|
||||
G4ClassificationOfNewTrack
|
||||
StackingAction::ClassifyNewTrack(const G4Track* track)
|
||||
{
|
||||
|
||||
// Hadron elastic process
|
||||
theElasticProcess = new G4UHadronElasticProcess("hElastic");
|
||||
theElasticProcess->RegisterMe( new G4HadronElastic() );
|
||||
//keep primary particle
|
||||
if (track->GetParentID() == 0) return fUrgent;
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
if (theElasticProcess->IsApplicable(*particle)) {
|
||||
particle->GetProcessManager()->AddDiscreteProcess(theElasticProcess);
|
||||
G4cout << "### Elastic process is registered for "
|
||||
<< particle->GetParticleName()
|
||||
<< G4endl;
|
||||
}
|
||||
//energy spectrum of secondaries
|
||||
//
|
||||
G4double energy = track->GetKineticEnergy();
|
||||
G4bool charged = (track->GetDefinition()->GetPDGCharge() != 0.);
|
||||
|
||||
if (charged) {
|
||||
runaction->AddChargedSecondary(energy);
|
||||
histoManager->FillHisto(4,energy);
|
||||
} else {
|
||||
runaction->AddNeutralSecondary(energy);
|
||||
histoManager->FillHisto(5,energy);
|
||||
}
|
||||
|
||||
eventaction->AddSecondary(energy);
|
||||
return fKill;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: StepMax.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "StepMax.hh"
|
||||
#include "StepMaxMessenger.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
StepMax::StepMax(const G4String& processName)
|
||||
: G4VDiscreteProcess(processName),MaxChargedStep(DBL_MAX)
|
||||
{
|
||||
pMess = new StepMaxMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
StepMax::~StepMax() { delete pMess; }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4bool StepMax::IsApplicable(const G4ParticleDefinition& particle)
|
||||
{
|
||||
return (particle.GetPDGCharge() != 0.);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void StepMax::SetMaxStep(G4double step) {MaxChargedStep = step;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double StepMax::PostStepGetPhysicalInteractionLength(const G4Track&,
|
||||
G4double,
|
||||
G4ForceCondition* condition )
|
||||
{
|
||||
// condition is set to "Not Forced"
|
||||
*condition = NotForced;
|
||||
|
||||
return MaxChargedStep;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack, const G4Step&)
|
||||
{
|
||||
// do nothing
|
||||
aParticleChange.Initialize(aTrack);
|
||||
return &aParticleChange;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
@@ -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: StepMaxMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "StepMaxMessenger.hh"
|
||||
|
||||
#include "StepMax.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
StepMaxMessenger::StepMaxMessenger(StepMax* stepM)
|
||||
:pStepMax(stepM)
|
||||
{
|
||||
StepMaxCmd = new G4UIcmdWithADoubleAndUnit("/testem/stepMax",this);
|
||||
StepMaxCmd->SetGuidance("Set max allowed step length");
|
||||
StepMaxCmd->SetParameterName("mxStep",false);
|
||||
StepMaxCmd->SetRange("mxStep>0.");
|
||||
StepMaxCmd->SetUnitCategory("Length");
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
StepMaxMessenger::~StepMaxMessenger()
|
||||
{
|
||||
delete StepMaxCmd;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void StepMaxMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
if (command == StepMaxCmd)
|
||||
{ pStepMax->SetMaxStep(StepMaxCmd->GetNewDoubleValue(newValue));}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: SteppingAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "SteppingAction.hh"
|
||||
|
||||
#include "RunAction.hh"
|
||||
#include "EventAction.hh"
|
||||
#include "HistoManager.hh"
|
||||
|
||||
#include "G4Step.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
SteppingAction::SteppingAction(RunAction* RA, EventAction* EA, HistoManager* HM)
|
||||
:runaction(RA), eventaction(EA), histoManager(HM)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
SteppingAction::~SteppingAction()
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void SteppingAction::UserSteppingAction(const G4Step* step)
|
||||
{
|
||||
//continuous energy deposit per event
|
||||
eventaction->AddEnergyDeposit (step->GetTotalEnergyDeposit());
|
||||
|
||||
//step size
|
||||
G4double stepSize = step->GetStepLength();
|
||||
runaction->AddTrackLength(stepSize);
|
||||
histoManager->FillHisto(6,stepSize);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,180 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: SteppingVerbose.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "SteppingVerbose.hh"
|
||||
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
SteppingVerbose::SteppingVerbose()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
SteppingVerbose::~SteppingVerbose()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void SteppingVerbose::StepInfo()
|
||||
{
|
||||
CopyState();
|
||||
|
||||
G4int prec = G4cout.precision(3);
|
||||
|
||||
if( verboseLevel >= 1 ){
|
||||
if( verboseLevel >= 4 ) VerboseTrack();
|
||||
if( verboseLevel >= 3 ){
|
||||
G4cout << G4endl;
|
||||
G4cout << std::setw( 5) << "#Step#" << " "
|
||||
<< std::setw( 6) << "X" << " "
|
||||
<< std::setw( 6) << "Y" << " "
|
||||
<< std::setw( 6) << "Z" << " "
|
||||
<< std::setw( 9) << "KineE" << " "
|
||||
<< std::setw( 9) << "dEStep" << " "
|
||||
<< std::setw(10) << "StepLeng"
|
||||
<< std::setw(10) << "TrakLeng"
|
||||
<< std::setw(10) << "Volume" << " "
|
||||
<< std::setw(10) << "Process" << G4endl;
|
||||
}
|
||||
|
||||
G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " "
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
|
||||
<< std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
|
||||
<< std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
|
||||
<< " ";
|
||||
|
||||
// if( fStepStatus != fWorldBoundary){
|
||||
if( fTrack->GetNextVolume() != 0 ) {
|
||||
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
|
||||
} else {
|
||||
G4cout << std::setw(10) << "OutOfWorld";
|
||||
}
|
||||
|
||||
if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){
|
||||
G4cout << " "
|
||||
<< std::setw(10) << fStep->GetPostStepPoint()
|
||||
->GetProcessDefinedStep()->GetProcessName();
|
||||
} else {
|
||||
G4cout << " UserLimit";
|
||||
}
|
||||
|
||||
G4cout << G4endl;
|
||||
|
||||
if( verboseLevel == 2 ){
|
||||
G4int tN2ndariesTot = fN2ndariesAtRestDoIt +
|
||||
fN2ndariesAlongStepDoIt +
|
||||
fN2ndariesPostStepDoIt;
|
||||
if(tN2ndariesTot>0){
|
||||
G4cout << " :----- List of 2ndaries - "
|
||||
<< "#SpawnInStep=" << std::setw(3) << tN2ndariesTot
|
||||
<< "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt
|
||||
<< ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
|
||||
<< ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt
|
||||
<< "), "
|
||||
<< "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
|
||||
<< " ---------------"
|
||||
<< G4endl;
|
||||
|
||||
for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
|
||||
lp1<(*fSecondary).size(); lp1++){
|
||||
G4cout << " : "
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
|
||||
<< std::setw(6)
|
||||
<< G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
|
||||
<< std::setw(10)
|
||||
<< (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
|
||||
G4cout << G4endl;
|
||||
}
|
||||
|
||||
G4cout << " :-----------------------------"
|
||||
<< "----------------------------------"
|
||||
<< "-- EndOf2ndaries Info ---------------"
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
G4cout.precision(prec);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void SteppingVerbose::TrackingStarted()
|
||||
{
|
||||
|
||||
CopyState();
|
||||
G4int prec = G4cout.precision(3);
|
||||
if( verboseLevel > 0 ){
|
||||
|
||||
G4cout << std::setw( 5) << "Step#" << " "
|
||||
<< std::setw( 6) << "X" << " "
|
||||
<< std::setw( 6) << "Y" << " "
|
||||
<< std::setw( 6) << "Z" << " "
|
||||
<< std::setw( 9) << "KineE" << " "
|
||||
<< std::setw( 9) << "dEStep" << " "
|
||||
<< std::setw(10) << "StepLeng"
|
||||
<< std::setw(10) << "TrakLeng"
|
||||
<< std::setw(10) << "Volume" << " "
|
||||
<< std::setw(10) << "Process" << G4endl;
|
||||
|
||||
G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " "
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
|
||||
<< std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
|
||||
<< std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
|
||||
<< std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
|
||||
<< " ";
|
||||
|
||||
if(fTrack->GetNextVolume()){
|
||||
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
|
||||
} else {
|
||||
G4cout << std::setw(10) << "OutOfWorld";
|
||||
}
|
||||
G4cout << " initStep" << G4endl;
|
||||
}
|
||||
G4cout.precision(prec);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,28 @@
|
||||
#
|
||||
# Macro file for the initialization phase of "TestEm5.cc"
|
||||
# Sets some default verbose
|
||||
# and initializes the graphic.
|
||||
#
|
||||
/control/verbose 2
|
||||
/run/verbose 2
|
||||
/run/initialize
|
||||
#
|
||||
# Create empty scene ("world" is default)
|
||||
/vis/scene/create
|
||||
#
|
||||
# Create a scene handler for a specific graphics system
|
||||
# Edit the next line(s) to choose another graphic system
|
||||
#
|
||||
/vis/open DAWNFILE
|
||||
/vis/open OGLIX
|
||||
#
|
||||
# Draw scene
|
||||
/vis/viewer/zoom 1.4
|
||||
/vis/viewer/flush
|
||||
#
|
||||
# for drawing the tracks
|
||||
# if too many tracks cause core dump => storeTrajectory 0
|
||||
/tracking/storeTrajectory 1
|
||||
/vis/scene/endOfEventAction accumulate
|
||||
#
|
||||
/testem/event/drawTracks
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.66 2006/10/20 16:03:39 maire Exp $
|
||||
$Id: History,v 1.67 2007/01/08 16:32:20 vnivanch Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -14,6 +14,9 @@ track of all tags.
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
08-01-07 V.Ivant (testem2-V08-02-00)
|
||||
- Uncomment hadron ionisation in Livermore builder
|
||||
|
||||
20-10-06 mma (testem2-V08-01-00)
|
||||
- GNUmakefile : LOADLIBS
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
@@ -126,30 +126,33 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -158,35 +161,42 @@ annihil: Sampling according eplus2gg model
|
||||
|
||||
msc: Model variant of multiple scattering for proton
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for GenericIon
|
||||
LateralDisplacementFlag= 0 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
|
||||
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -226,19 +236,22 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for pi-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- appears in <Ecal> world volume
|
||||
@@ -281,25 +294,25 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100
|
||||
User=160.76s Real=178.85s Sys=16.33s
|
||||
User=251.23s Real=268.16s Sys=14.49s
|
||||
|
||||
SUMMARY
|
||||
|
||||
energy deposit : 94.82 % E0 +- 0.80 % E0
|
||||
charged traklen: 486.89 radl +- 4.33 radl
|
||||
neutral traklen: 4464.64 radl +- 136.84 radl
|
||||
energy deposit : 94.56 % E0 +- 0.81 % E0
|
||||
charged traklen: 482.86 radl +- 4.45 radl
|
||||
neutral traklen: 4468.40 radl +- 133.74 radl
|
||||
|
||||
90.00 % confinement: radius = 3.05 radl (2.72 cm )
|
||||
90.00 % confinement: radius = 3.13 radl (2.79 cm )
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 1762442429, 271121094
|
||||
Current couple of seeds = 1259944231, 254399950
|
||||
----------------------------------------
|
||||
|
||||
<<<<ACCEPTANCE>>>> 100 events for Total Energy in Absorber
|
||||
Edep: 0.94819548 delEdep= 0.0031954754 nrms= 3.3286202
|
||||
Erms: 0.0080173114 delErms= -0.0015826886 nrms= -1.648634
|
||||
<<<<END>>>> IS NOT ACCEPTED
|
||||
Edep: 0.94558756 delEdep= 0.00058755881 nrms= 0.61204043
|
||||
Erms: 0.0080584593 delErms= -0.0015415407 nrms= -1.6057716
|
||||
<<<<END>>>> IS ACCEPTED
|
||||
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: PhysListEmLivermore.cc,v 1.2 2006/06/29 16:50:30 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: PhysListEmLivermore.cc,v 1.3 2007/01/08 16:32:20 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -108,8 +108,8 @@ void PhysListEmLivermore::ConstructProcess()
|
||||
(particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
//all others charged particles except geantino
|
||||
///pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
///pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 2, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.95 2006/11/22 19:16:09 vnivanch Exp $
|
||||
$Id: History,v 1.102 2007/04/25 10:07:27 vnivanch Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -15,6 +15,29 @@ track of all tags.
|
||||
* Reverse chronological order (last date on top), please *
|
||||
---------------------------------------------------------
|
||||
|
||||
25-04-07 V.Ivant (testem3-V08-02-04)
|
||||
- fix compilation problem at SUN
|
||||
|
||||
24-04-07 V.Ivant (testem3-V08-02-03)
|
||||
- add command "/testem/run/limitEdep" allowing to compute restricted
|
||||
mean values to supress big statistical fluctuations
|
||||
- update command "/testem/run/acceptance"
|
||||
- skin=1 is a default PhysList
|
||||
|
||||
06-04-07 mma (testem3-V08-02-02)
|
||||
- add macro emtutor.mac
|
||||
- pl names : penelope, livermore
|
||||
- restaure random seed storage
|
||||
|
||||
19-03-07 V.Ivant (testem3-V08-02-01)
|
||||
return back Z-position computation;
|
||||
|
||||
19-03-07 V.Ivant (testem3-V08-02-00)
|
||||
- By default do not store random seed;
|
||||
add G4standard_exp PhysList;
|
||||
add material Lucite;
|
||||
do not activate VisManager in batch.
|
||||
|
||||
22-11-06 V.Ivant (testem3-V08-01-01)
|
||||
- Fix names of standard EM builders
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: TestEm3.cc,v 1.20 2006/06/29 16:51:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: TestEm3.cc,v 1.22 2007/04/06 17:41:54 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -70,16 +70,14 @@ int main(int argc,char** argv) {
|
||||
// histograms for this example
|
||||
HistoManager* histo = new HistoManager();
|
||||
|
||||
//
|
||||
// primary generator
|
||||
PrimaryGeneratorAction* primary = new PrimaryGeneratorAction(detector,histo);
|
||||
runManager->SetUserAction(primary);
|
||||
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
// visualization manager
|
||||
G4VisManager* visManager = new G4VisExecutive;
|
||||
visManager->Initialize();
|
||||
G4VisManager* visManager = 0;
|
||||
#endif
|
||||
|
||||
|
||||
// set user action classes
|
||||
RunAction* runAct = new RunAction(detector,primary,histo);
|
||||
EventAction* evtAct = new EventAction(detector,runAct,histo);
|
||||
@@ -96,6 +94,11 @@ int main(int argc,char** argv) {
|
||||
|
||||
if (argc==1) // Define UI session for interactive mode.
|
||||
{
|
||||
#ifdef G4VIS_USE
|
||||
// visualization manager
|
||||
visManager = new G4VisExecutive;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
// G4UIterminal is a (dumb) terminal.
|
||||
G4UIsession * session = 0;
|
||||
#ifdef G4UI_USE_TCSH
|
||||
@@ -116,7 +119,7 @@ int main(int argc,char** argv) {
|
||||
// job termination
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
if(visManager) delete visManager;
|
||||
#endif
|
||||
|
||||
delete histo;
|
||||
|
||||
@@ -1,42 +1,11 @@
|
||||
|
||||
*************************************************************
|
||||
Geant4 version Name: global-V08-01-05 (15-December-2006)
|
||||
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
|
||||
Copyright : Geant4 Collaboration
|
||||
Reference : NIM A 506 (2003), 250-303
|
||||
WWW : http://cern.ch/geant4
|
||||
*************************************************************
|
||||
|
||||
Visualization Manager instantiating...
|
||||
Visualization Manager initialising...
|
||||
Registering graphics systems...
|
||||
|
||||
You have successfully registered the following graphics systems.
|
||||
Current available graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
GAGTree (GAGTree)
|
||||
G4HepRep (HepRepXML)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
VRML1FILE (VRML1FILE)
|
||||
VRML2FILE (VRML2FILE)
|
||||
|
||||
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
|
||||
|
||||
/run/verbose 2
|
||||
#
|
||||
/testem/phys/addPhysics standard
|
||||
@@ -110,30 +79,33 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
|
||||
|
||||
msc: Model variant of multiple scattering for e-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 1
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
eIoni: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
eBrem: tables are built for e-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
eIoni: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
|
||||
Delta cross sections and sampling from MollerBhabha model
|
||||
Good description from 1 KeV to 100 GeV.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
eBrem: tables are built for e+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Total cross sections from a parametrisation based on the EEDL data library.
|
||||
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
|
||||
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
|
||||
|
||||
annihil: Sampling according eplus2gg model
|
||||
@@ -142,35 +114,42 @@ annihil: Sampling according eplus2gg model
|
||||
|
||||
msc: Model variant of multiple scattering for proton
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 1
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for GenericIon
|
||||
LateralDisplacementFlag= 0 Skin= 0
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
ionIoni: tables are built for GenericIon
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from BraggIon for protons below.
|
||||
|
||||
Stopping Power data for 8 ion/material pairs are used.
|
||||
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
|
||||
|
||||
hIoni: tables are built for anti_proton
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for mu+
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 1
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
muIoni: tables are built for mu+
|
||||
@@ -210,19 +189,22 @@ muPairProd: tables are built for mu-
|
||||
hIoni: tables are built for pi+
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
msc: Model variant of multiple scattering for pi-
|
||||
Lambda tables from 100 eV to 100 TeV in 120 bins.
|
||||
LateralDisplacementFlag= 1 Skin= 1
|
||||
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
|
||||
|
||||
hIoni: tables are built for pi-
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
|
||||
Lambda tables from threshold to 100 TeV in 120 bins.
|
||||
Scaling relation is used to proton dE/dx and range
|
||||
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
|
||||
Scaling relation is used from proton dE/dx and range.
|
||||
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
|
||||
Parametrisation from Bragg for protons below.
|
||||
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
|
||||
|
||||
Region <DefaultRegionForTheWorld> -- appears in <World> world volume
|
||||
@@ -258,18 +240,18 @@ Start closing geometry.
|
||||
G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
|
||||
Total memory consumed for geometry optimisation: 1 kByte
|
||||
Total CPU time elapsed for geometry optimisation: 0 seconds
|
||||
Total CPU time elapsed for geometry optimisation: 0.01 seconds
|
||||
|
||||
Voxelisation: top CPU users:
|
||||
Percent Total CPU System CPU Memory Volume
|
||||
------- ---------- ---------- -------- ----------
|
||||
0.00 0.00 0.00 2k Calorimeter
|
||||
100.00 0.01 0.00 2k Calorimeter
|
||||
0.00 0.00 0.00 0k Layer
|
||||
|
||||
Voxelisation: top memory users:
|
||||
Percent Memory Heads Nodes Pointers Total CPU Volume
|
||||
------- -------- ------ ------ -------- ---------- ----------
|
||||
91.70 1k 1 50 50 0.00 Calorimeter
|
||||
91.70 1k 1 50 50 0.01 Calorimeter
|
||||
8.30 0k 1 3 4 0.00 Layer
|
||||
### Run 0 start.
|
||||
|
||||
@@ -285,31 +267,29 @@ Start Run processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100
|
||||
User=100.2s Real=112.47s Sys=10.23s
|
||||
User=199.23s Real=228.98s Sys=28.48s
|
||||
|
||||
------------------------------------------------------------
|
||||
material Total Edep sqrt(E0(GeV))*rmsE/Emean total tracklen
|
||||
material Total Edep sqrt(E0(GeV))*rmsE/Emean total tracklen
|
||||
|
||||
Lead: 784.78 MeV +- 15.66 MeV 1.995 +- 0.1995 % 54.1 cm +- 1.2 cm
|
||||
liquidArgon: 205.09 MeV +- 14.75 MeV 7.192 +- 0.7192 % 1.02 m +- 7.72 cm
|
||||
Lead: 783.24 MeV +- 15.76 MeV 2.013 +- 0.2013 % 53.9 cm +- 1.2 cm
|
||||
liquidArgon: 204.82 MeV +- 14.94 MeV 7.296 +- 0.7296 % 1.01 m +- 7.72 cm
|
||||
|
||||
------------------------------------------------------------
|
||||
|
||||
Energy deposition from Energy flow balance :
|
||||
material Total Edep
|
||||
|
||||
Lead: 784.779 MeV
|
||||
liquidArgon: 205.104 MeV
|
||||
Lead: 783.237 MeV
|
||||
liquidArgon: 204.824 MeV
|
||||
|
||||
------------------------------------------------------------
|
||||
|
||||
|
||||
--------- Ranecu engine status ---------
|
||||
Initial seed (index) = 0
|
||||
Current couple of seeds = 474290945, 1957549042
|
||||
Current couple of seeds = 536502410, 2064128558
|
||||
----------------------------------------
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
UserDetectorConstruction deleted.
|
||||
UserPhysicsList deleted.
|
||||
UserRunAction deleted.
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# $Id: emtutor.mac,v 1.1 2007/04/06 17:41:54 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm3.cc"
|
||||
#
|
||||
# water 1 layer;
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/testem/det/setNbOfLayers 1
|
||||
/testem/det/setNbOfAbsor 1
|
||||
/testem/det/setAbsor 1 Aluminium 10 cm
|
||||
/testem/det/setSizeYZ 10 cm
|
||||
#
|
||||
/testem/phys/setCuts 2 cm
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/control/execute vis.mac
|
||||
#
|
||||
/testem/gun/setDefault
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: RunAction.hh,v 1.17 2006/06/29 16:52:07 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: RunAction.hh,v 1.18 2007/04/22 16:25:21 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -52,45 +52,49 @@ class G4Run;
|
||||
|
||||
class RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
RunAction(DetectorConstruction*, PrimaryGeneratorAction*, HistoManager*);
|
||||
~RunAction();
|
||||
RunAction(DetectorConstruction*, PrimaryGeneratorAction*, HistoManager*);
|
||||
virtual ~RunAction();
|
||||
|
||||
void BeginOfRunAction(const G4Run*);
|
||||
void EndOfRunAction(const G4Run*);
|
||||
void BeginOfRunAction(const G4Run*);
|
||||
void EndOfRunAction(const G4Run*);
|
||||
|
||||
void fillPerEvent(G4int,G4double,G4double);
|
||||
void fillPerEvent(G4int,G4double,G4double);
|
||||
|
||||
void sumEnergyFlow(G4int plane, G4double Eflow)
|
||||
void sumEnergyFlow(G4int plane, G4double Eflow)
|
||||
{EnergyFlow[plane] += Eflow;};
|
||||
void sumLateralEleak(G4int cell, G4double Eflow)
|
||||
void sumLateralEleak(G4int cell, G4double Eflow)
|
||||
{lateralEleak[cell] += Eflow;};
|
||||
|
||||
void PrintDedxTables();
|
||||
void PrintDedxTables();
|
||||
|
||||
// Acceptance parameters
|
||||
void SetEdepAndRMS(G4int, G4ThreeVector);
|
||||
G4double GetAverageEdep(G4int i) const {return edeptrue[i];};
|
||||
G4double GetRMSEdep(G4int i) const {return rmstrue[i];};
|
||||
G4double GetLimitEdep(G4int i) const {return limittrue[i];};
|
||||
|
||||
private:
|
||||
|
||||
DetectorConstruction* Detector;
|
||||
PrimaryGeneratorAction* Primary;
|
||||
RunActionMessenger* runMessenger;
|
||||
HistoManager* histoManager;
|
||||
// Acceptance parameters
|
||||
void SetEdepAndRMS(G4int, G4double, G4double, G4double);
|
||||
G4double GetAverageEdep(G4int i) const {return edeptrue[i];};
|
||||
G4double GetRMSEdep(G4int i) const {return rmstrue[i];};
|
||||
G4double GetLimitEdep(G4int i) const {return limittrue[i];};
|
||||
void SetApplyLimit(G4bool val) {applyLimit = val;};
|
||||
|
||||
G4double sumEAbs [MaxAbsor], sum2EAbs [MaxAbsor];
|
||||
G4double sumLAbs [MaxAbsor], sum2LAbs [MaxAbsor];
|
||||
private:
|
||||
|
||||
DetectorConstruction* Detector;
|
||||
PrimaryGeneratorAction* Primary;
|
||||
RunActionMessenger* runMessenger;
|
||||
HistoManager* histoManager;
|
||||
|
||||
G4double sumEAbs [MaxAbsor], sum2EAbs [MaxAbsor];
|
||||
G4double sumLAbs [MaxAbsor], sum2LAbs [MaxAbsor];
|
||||
|
||||
std::vector<G4double> EnergyFlow;
|
||||
std::vector<G4double> lateralEleak;
|
||||
std::vector<G4double> EnergyFlow;
|
||||
std::vector<G4double> lateralEleak;
|
||||
std::vector<G4double> energyDeposit[MaxAbsor];
|
||||
|
||||
G4double edeptrue [MaxAbsor];
|
||||
G4double rmstrue [MaxAbsor];
|
||||
G4double limittrue[MaxAbsor];
|
||||
G4double edeptrue [MaxAbsor];
|
||||
G4double rmstrue [MaxAbsor];
|
||||
G4double limittrue[MaxAbsor];
|
||||
|
||||
G4bool applyLimit;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user