Import Geant4 11.3.0.beta source tree
This commit is contained in:
@@ -31,90 +31,87 @@
|
||||
// GEANT 4 - example RE06
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#include "G4Types.hh"
|
||||
|
||||
#include "G4RunManagerFactory.hh"
|
||||
|
||||
#include "G4VisExecutive.hh"
|
||||
#include "G4UIExecutive.hh"
|
||||
|
||||
#include "G4UImanager.hh"
|
||||
#include "FTFP_BERT.hh"
|
||||
#include "G4ParallelWorldPhysics.hh"
|
||||
|
||||
#include "RE06ActionInitialization.hh"
|
||||
#include "RE06DetectorConstruction.hh"
|
||||
#include "RE06ParallelWorld.hh"
|
||||
#include "RE06PrimaryGeneratorAction.hh"
|
||||
#include "RE06RunAction.hh"
|
||||
#include "RE06SteppingVerbose.hh"
|
||||
#include "RE06ActionInitialization.hh"
|
||||
|
||||
int main(int argc,char** argv)
|
||||
#include "G4ParallelWorldPhysics.hh"
|
||||
#include "G4RunManagerFactory.hh"
|
||||
#include "G4Types.hh"
|
||||
#include "G4UIExecutive.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4VisExecutive.hh"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
// Instantiate G4UIExecutive if there are no arguments (interactive mode)
|
||||
G4UIExecutive* ui = nullptr;
|
||||
if ( argc == 1 ) {
|
||||
ui = new G4UIExecutive(argc, argv);
|
||||
}
|
||||
// Instantiate G4UIExecutive if there are no arguments (interactive mode)
|
||||
G4UIExecutive* ui = nullptr;
|
||||
if (argc == 1) {
|
||||
ui = new G4UIExecutive(argc, argv);
|
||||
}
|
||||
|
||||
// Construct the stepping verbose class
|
||||
//
|
||||
auto verbosity = new RE06SteppingVerbose;
|
||||
// Construct the stepping verbose class
|
||||
//
|
||||
auto verbosity = new RE06SteppingVerbose;
|
||||
|
||||
// Construct the run manager
|
||||
//
|
||||
auto runManager = G4RunManagerFactory::CreateRunManager();
|
||||
// Construct the run manager
|
||||
//
|
||||
auto runManager = G4RunManagerFactory::CreateRunManager();
|
||||
|
||||
// Set mandatory initialization classes
|
||||
//
|
||||
G4String parallelWorldName = "ParallelScoringWorld";
|
||||
auto detector = new RE06DetectorConstruction;
|
||||
detector->RegisterParallelWorld(new RE06ParallelWorld(parallelWorldName));
|
||||
runManager->SetUserInitialization(detector);
|
||||
//
|
||||
auto physics = new FTFP_BERT;
|
||||
physics->RegisterPhysics(new G4ParallelWorldPhysics(parallelWorldName));
|
||||
runManager->SetUserInitialization(physics);
|
||||
// Set mandatory initialization classes
|
||||
//
|
||||
G4String parallelWorldName = "ParallelScoringWorld";
|
||||
auto detector = new RE06DetectorConstruction;
|
||||
detector->RegisterParallelWorld(new RE06ParallelWorld(parallelWorldName));
|
||||
runManager->SetUserInitialization(detector);
|
||||
//
|
||||
auto physics = new FTFP_BERT;
|
||||
physics->RegisterPhysics(new G4ParallelWorldPhysics(parallelWorldName));
|
||||
runManager->SetUserInitialization(physics);
|
||||
|
||||
// Set user action classes
|
||||
//
|
||||
runManager->SetUserInitialization(new RE06ActionInitialization);
|
||||
// Set user action classes
|
||||
//
|
||||
runManager->SetUserInitialization(new RE06ActionInitialization);
|
||||
|
||||
// Visualization manager
|
||||
//
|
||||
auto visManager = new G4VisExecutive;
|
||||
visManager->Initialize();
|
||||
// Visualization manager
|
||||
//
|
||||
auto visManager = new G4VisExecutive;
|
||||
visManager->Initialize();
|
||||
|
||||
// Initialize G4 kernel
|
||||
//
|
||||
runManager->Initialize();
|
||||
// Initialize G4 kernel
|
||||
//
|
||||
runManager->Initialize();
|
||||
|
||||
// Get the pointer to the User Interface manager
|
||||
//
|
||||
auto UImanager = G4UImanager::GetUIpointer();
|
||||
// Get the pointer to the User Interface manager
|
||||
//
|
||||
auto UImanager = G4UImanager::GetUIpointer();
|
||||
|
||||
if (ui) // Define UI session for interactive mode
|
||||
{
|
||||
UImanager->ApplyCommand("/control/execute vis.mac");
|
||||
ui->SessionStart();
|
||||
delete ui;
|
||||
}
|
||||
else // Batch mode
|
||||
{
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UImanager->ApplyCommand(command+fileName);
|
||||
}
|
||||
if (ui) // Define UI session for interactive mode
|
||||
{
|
||||
UImanager->ApplyCommand("/control/execute vis.mac");
|
||||
ui->SessionStart();
|
||||
delete ui;
|
||||
}
|
||||
else // Batch mode
|
||||
{
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UImanager->ApplyCommand(command + fileName);
|
||||
}
|
||||
|
||||
// Job termination
|
||||
// Free the store:
|
||||
// user actions, physics_list and detector_description are
|
||||
// owned and deleted by the run manager, so they should not
|
||||
// be deleted in the main() program !
|
||||
// Job termination
|
||||
// Free the store:
|
||||
// user actions, physics_list and detector_description are
|
||||
// owned and deleted by the run manager, so they should not
|
||||
// be deleted in the main() program !
|
||||
|
||||
delete verbosity;
|
||||
delete visManager;
|
||||
delete runManager;
|
||||
delete verbosity;
|
||||
delete visManager;
|
||||
delete runManager;
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-02-patch-02 (21-June-2024)
|
||||
Geant4 version Name: geant4-11-02-ref-06 (28-June-2024)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -44,14 +44,21 @@ Registered graphics systems are:
|
||||
RayTracerX (RayTracerX)
|
||||
Qt3D (Qt3D)
|
||||
TOOLSSG_X11_GLES (TSG_X11_GLES, TSGX11, TSG_XT_GLES_FALLBACK)
|
||||
TOOLSSG_X11_ZB (TSG_X11_ZB, TSGX11ZB)
|
||||
TOOLSSG_XT_GLES (TSG_XT_GLES, TSGXt, TSG_QT_GLES_FALLBACK)
|
||||
TOOLSSG_XT_ZB (TSG_XT_ZB, TSGXtZB)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
Default graphics system is: TSG_OFFSCREEN (based on batch session).
|
||||
Default window size hint is: 600x600-0+0 (based on G4VisManager initialisation).
|
||||
Note: Parameters specified on the command line will override these defaults.
|
||||
Use "vis/open" without parameters to get these defaults.
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
or you may omit the driver parameter and choose at run time:
|
||||
- by argument in the construction of G4VisExecutive
|
||||
- by environment variable "G4VIS_DEFAULT_DRIVER"
|
||||
- by entry in "~/.g4session"
|
||||
- by build flags.
|
||||
- Note: This feature is not allowed in batch mode.
|
||||
For further information see "examples/basic/B1/exampleB1.cc"
|
||||
and "vis.mac".
|
||||
|
||||
Registering model factories...
|
||||
|
||||
@@ -364,7 +371,7 @@ eBrem: for e+ XStype:4 SubType=3
|
||||
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
|
||||
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
|
||||
|
||||
annihil: for e+ XStype:2 SubType=5 BuildTable=0
|
||||
annihil: for e+ XStype:2 SubType=5 AtRestModel:Simple BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eplus2gg : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
@@ -920,7 +927,7 @@ Min energy per nucleon for multifragmentation 200 GeV
|
||||
Limit excitation energy for Fermi BreakUp 20 MeV
|
||||
Level density (1/MeV) 0.075
|
||||
Use simple level density model 1
|
||||
Use discrete excitation energy of the residual 1
|
||||
Use discrete excitation energy of the residual 0
|
||||
Time limit for long lived isomeres 1 ns
|
||||
Isomer production flag 1
|
||||
Internal e- conversion flag 1
|
||||
@@ -988,7 +995,7 @@ See commands in /vis/modeling/trajectories/ for other options.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=4.860000s Real=6.764999s Sys=1.230000s
|
||||
User=1.750000s Real=2.184577s Sys=0.410000s
|
||||
############################################################
|
||||
Run Summary - Number of events : 10
|
||||
############################################################
|
||||
@@ -996,124 +1003,124 @@ Region : Calor-A
|
||||
Production thresholds :
|
||||
gamma 1 mm e- 1 mm e+ 1 mm
|
||||
Energy deposition in an event :
|
||||
Absorber 5.59095 GeV Gap 757.087 MeV
|
||||
Absorber 3.51595 GeV Gap 430.1 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 1921.2 in Gap 160.6
|
||||
e- in Absorber 3236 in Gap 382.8
|
||||
e+ in Absorber 193.5 in Gap 6.3
|
||||
gamma in Absorber 1167 in Gap 68.5
|
||||
e- in Absorber 1939.8 in Gap 229.3
|
||||
e+ in Absorber 123 in Gap 5.2
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 15.404 keV in Gap 740.555 eV
|
||||
e- in Absorber 144.378 eV in Gap 134.664 eV
|
||||
e+ in Absorber 3.3096 keV in Gap 185.452 keV
|
||||
gamma in Absorber 74.3309 keV in Gap 6.20089 keV
|
||||
e- in Absorber 130.866 eV in Gap 155.591 eV
|
||||
e+ in Absorber 1.38592 keV in Gap 264.96 keV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 2.31013 m Gap 1.67968 m
|
||||
Absorber 1.54706 m Gap 1.12973 m
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 7885.4 Gap 1269.4
|
||||
Absorber 4908.4 Gap 784.9
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 4848.21 1474.6 2108.3 141.4 2982.23 5809.5
|
||||
1 531.903 207.4 591.6 27.3 486.298 1393.6
|
||||
2 231.399 93.9 253.2 10 195.221 593.2
|
||||
3 161.728 55.1 153.1 5.3 90.2625 327.3
|
||||
4 121.405 33.1 84.6 2.6 37.1431 172.9
|
||||
5 78.0517 31.6 69.7 2.8 40.5455 153.2
|
||||
6 61.8611 35 63.8 2.2 32.3853 137.9
|
||||
7 76.6699 22.7 52.1 1.8 23.2543 99.4
|
||||
8 74.7552 23.5 39.8 1.5 18.054 82.2
|
||||
9 16.1334 15.2 28.7 0.6 11.3018 56.3
|
||||
10 23.4865 16.9 31.9 1.2 11.7254 63.3
|
||||
11 19.4147 17.9 31.6 0.4 13.4851 60.8
|
||||
12 22.1726 12.1 25.1 0.4 10.6578 43.4
|
||||
13 9.00592 7.6 14.5 0.5 4.5326 25.5
|
||||
14 10.2168 8.4 17.8 0.5 5.4269 33.5
|
||||
15 33.3177 6.6 14.4 0.2 4.64751 26.5
|
||||
16 7.84153 4.9 9.5 0.2 8.60256 21.9
|
||||
17 6.73884 4.4 10.1 0.2 4.75306 18.9
|
||||
18 6.39909 4.4 7.3 0.3 4.67792 15.1
|
||||
19 2.84218 3.3 4.1 0.2 1.48596 7.4
|
||||
0 3622.61 1118 1652 109.8 2300.66 4519.3
|
||||
1 210.485 79.1 316.6 12.8 252.242 725.1
|
||||
2 70.0401 25 121 4.3 72.0837 257.8
|
||||
3 25.8252 8.7 45.7 0.7 31.9651 102.9
|
||||
4 7.49327 2.4 15.8 0.4 7.95217 40.7
|
||||
5 3.84692 0.7 6.7 0.1 4.70212 16.6
|
||||
6 2.80424 1 5.7 0.1 2.43257 12.2
|
||||
7 1.1175 0.3 1.6 0 1.44473 6.6
|
||||
8 0.886249 0.1 1.5 0 2.22005 3.3
|
||||
9 0.187115 0.2 1 0 0.264642 1.5
|
||||
10 0.10403 0 0.6 0 0.0913423 0.8
|
||||
11 0.119413 0 0.3 0 0.281045 5.2
|
||||
12 5.23038e-05 0 0 0 0 0
|
||||
13 0.0239362 0 0.1 0 2e-10 0.1
|
||||
14 0.143443 0 0.2 0 0.0797181 0.5
|
||||
15 0.211948 0 0.1 0 0.170528 0.3
|
||||
16 0.0273946 0 0 0 0 0
|
||||
17 0.00889872 0 0 0 0 0
|
||||
18 0.00461777 0 0 0 0 0
|
||||
19 0.0963197 0 0.2 0 0.202528 0.4
|
||||
############################################################
|
||||
Region : Calor-B
|
||||
Production thresholds :
|
||||
gamma 1 mm e- 1 mm e+ 1 mm
|
||||
Energy deposition in an event :
|
||||
Absorber 8.2714 GeV Gap 865.381 MeV
|
||||
Absorber 2.50588 GeV Gap 338.302 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 3847.2 in Gap 211.5
|
||||
e- in Absorber 6275 in Gap 687.7
|
||||
e+ in Absorber 410.3 in Gap 14.4
|
||||
gamma in Absorber 600.7 in Gap 41.5
|
||||
e- in Absorber 1023.1 in Gap 137.2
|
||||
e+ in Absorber 59.4 in Gap 1.4
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 98.2519 keV in Gap 6.19562 keV
|
||||
e- in Absorber 36.0534 eV in Gap 111.782 eV
|
||||
e+ in Absorber 7.45175 keV in Gap 21.1566 keV
|
||||
gamma in Absorber 101.801 keV in Gap 6.27151 keV
|
||||
e- in Absorber 86.0243 eV in Gap 198.099 eV
|
||||
e+ in Absorber 15.1188 keV in Gap 188.924 keV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 4.92192 m Gap 3.20871 m
|
||||
Absorber 82.4956 cm Gap 69.2715 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 15867.5 Gap 2277.3
|
||||
Absorber 2608.2 Gap 478.1
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 8106.08 3669.6 5213.6 361.9 7004.33 14275.1
|
||||
1 657.5 252.6 1083.7 38.7 719.587 2406.3
|
||||
2 218.306 78.3 375.8 14.9 257.31 846.1
|
||||
3 85.8597 31.5 156.7 6.7 83.1715 325.4
|
||||
4 27.5656 9.2 54 1.2 26.2531 115.7
|
||||
5 11.8924 2.8 23.1 0.4 10.9757 51.8
|
||||
6 4.80438 1.2 10.1 0.1 4.09405 19.3
|
||||
7 4.91487 1.9 8.2 0.2 5.8086 22.2
|
||||
8 2.42577 1.7 5.2 0 1.73056 11.7
|
||||
9 1.95715 0.5 3.9 0.3 1.75952 10.3
|
||||
10 3.44391 1.4 5.4 0 6.15621 14.1
|
||||
11 1.04608 0.2 2.5 0 1.07685 7
|
||||
12 0.898602 0 1.8 0 1.42762 3
|
||||
13 0.335844 0.1 0.6 0 0.102883 1.1
|
||||
14 1.22 0.7 2.9 0 0.854639 6.2
|
||||
15 1.49946 1.6 2.9 0 0.985332 5.1
|
||||
16 0.736339 0.4 1.6 0.1 0.509527 2.9
|
||||
17 0.790691 0.7 1.3 0 0.28395 2
|
||||
18 1.39165 0.3 2.2 0.1 1.62254 3.7
|
||||
19 1.57515 1.9 2.5 0.1 0.930516 4.9
|
||||
0 2695.45 587.8 903 51.8 1356.71 2537
|
||||
1 104.012 42.3 166.5 6.8 113.754 366.4
|
||||
2 26.1599 7.7 53.4 1.3 28.0599 107.4
|
||||
3 10.6515 2.8 20.8 0.7 11.4314 44.3
|
||||
4 3.56363 0.7 7.2 0.1 3.6462 14.2
|
||||
5 1.99408 0.3 4.1 0 1.31958 7.2
|
||||
6 1.11427 0.4 2.3 0.1 1.26135 4.4
|
||||
7 0.347129 0.1 1.3 0 0.528245 2
|
||||
8 0.333488 0.1 0.9 0 0.267746 1.8
|
||||
9 0.00374173 0 0 0 0 0
|
||||
10 0.00154999 0 0.1 0 2e-10 0.1
|
||||
11 0.12681 0 0.3 0 0.107547 0.6
|
||||
12 0.00952587 0 0 0 0 0
|
||||
13 0.00998503 0 0 0 0 0
|
||||
14 0.00609542 0 0 0 0 0
|
||||
15 0.00165323 0 0 0 0 0
|
||||
16 0.00531636 0 0 0 0 0
|
||||
17 0.00592735 0 0 0 0 0
|
||||
18 0.13265 0 0.3 0 0.417284 0.6
|
||||
19 0.243684 0 0.1 0 0.169071 0.3
|
||||
############################################################
|
||||
Region : Calor-C
|
||||
Production thresholds :
|
||||
gamma 10 cm e- 10 cm e+ 10 cm
|
||||
Energy deposition in an event :
|
||||
Absorber 4.11955 GeV Gap 396.767 MeV
|
||||
Absorber 7.44596 GeV Gap 696.852 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 418.1 in Gap 42.4
|
||||
e- in Absorber 750.8 in Gap 75.5
|
||||
e+ in Absorber 119.1 in Gap 4
|
||||
gamma in Absorber 1119.7 in Gap 106.9
|
||||
e- in Absorber 2008.6 in Gap 204.6
|
||||
e+ in Absorber 314.1 in Gap 11
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 102.879 keV in Gap 56.8711 keV
|
||||
e- in Absorber 135.951 eV in Gap 385.493 eV
|
||||
e+ in Absorber 54.1003 keV in Gap 384.223 keV
|
||||
gamma in Absorber 94.0849 keV in Gap 56.7587 keV
|
||||
e- in Absorber 133.747 eV in Gap 154.071 eV
|
||||
e+ in Absorber 1.12006 keV in Gap 226.208 keV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 1.22207 m Gap 71.4943 cm
|
||||
Absorber 3.20789 m Gap 2.08336 m
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 2141.3 Gap 330
|
||||
Absorber 5664.3 Gap 948.7
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 4272.85 413.7 584.2 105.3 1720.45 1882.5
|
||||
1 169.196 32.1 148.5 11.3 153.744 369.4
|
||||
2 46.8757 8.4 53.9 4 41.7905 129.2
|
||||
3 13.2997 2.7 20 0.9 10.2989 43.9
|
||||
4 7.00209 1.8 9.5 1.2 5.31103 22.9
|
||||
5 4.45589 0.9 4.3 0.2 3.21741 11.7
|
||||
6 1.61167 0.3 3.2 0.1 1.63628 6.4
|
||||
7 0.31815 0 0.6 0 0.178712 1.6
|
||||
8 0.389836 0.6 1.1 0.1 0.264068 1.9
|
||||
9 0.102517 0 0.3 0 0.0553098 0.8
|
||||
10 0.0997716 0 0.6 0 0.0540464 0.8
|
||||
11 0.00976431 0 0 0 0 0
|
||||
12 0.044184 0 0.1 0 0.0115988 0.2
|
||||
13 0.00942315 0 0 0 0 0
|
||||
14 0.00617085 0 0 0 0 0
|
||||
15 0.00461697 0 0 0 0 0
|
||||
16 0.00584329 0 0 0 0 0
|
||||
17 0.0073336 0 0 0 0 0
|
||||
18 0.00791239 0 0 0 0 0
|
||||
19 0.00352834 0 0 0 0 0
|
||||
0 7515.76 1111.3 1559.1 280.9 4615.69 5042.6
|
||||
1 421.528 80.6 396.7 31.7 445.084 954.9
|
||||
2 131.049 22.5 146.6 8.4 143.35 366.9
|
||||
3 40.7884 6.7 61.1 2.4 49.0819 133
|
||||
4 18.8301 2.9 23.6 0.9 21.3203 54.2
|
||||
5 6.63767 1 11 0.5 5.79485 23.6
|
||||
6 3.21668 0.4 5 0.1 4.37159 12.4
|
||||
7 1.84418 0.2 3.3 0.1 1.77136 7.6
|
||||
8 0.943877 0.3 2.2 0.1 1.04861 5
|
||||
9 0.449625 0.3 1.6 0 0.254414 2.4
|
||||
10 0.117694 0 0.3 0 0.142076 0.5
|
||||
11 0.0478391 0 0.1 0 2e-10 0.1
|
||||
12 0.0629301 0 0.1 0 0.0239835 0.2
|
||||
13 0.25279 0.2 0.5 0 0.110795 0.8
|
||||
14 0.194673 0 0.3 0 0.0633209 3
|
||||
15 0.112699 0.2 0.7 0 0.0394254 1
|
||||
16 0.0269466 0 0 0 0 0
|
||||
17 0.0437307 0 0.1 0 0.0788128 0.1
|
||||
18 0.035382 0 0.2 0 0.00771517 0.3
|
||||
19 0.6334 0 0.2 0 2.46487 3.6
|
||||
############################################################
|
||||
/run/dumpCouples
|
||||
|
||||
@@ -1271,7 +1278,7 @@ Index : 6 used in the geometry : Yes
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=0.930000s Real=1.236041s Sys=0.250000s
|
||||
User=1.040000s Real=1.319878s Sys=0.260000s
|
||||
############################################################
|
||||
Run Summary - Number of events : 10
|
||||
############################################################
|
||||
@@ -1279,124 +1286,124 @@ Region : Calor-A
|
||||
Production thresholds :
|
||||
gamma 200 um e- 200 um e+ 200 um
|
||||
Energy deposition in an event :
|
||||
Absorber 2.28444 GeV Gap 302.344 MeV
|
||||
Absorber 2.35676 GeV Gap 312.872 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 654.8 in Gap 36.3
|
||||
e- in Absorber 1195.8 in Gap 194.7
|
||||
e+ in Absorber 47.2 in Gap 1.9
|
||||
gamma in Absorber 686.1 in Gap 42
|
||||
e- in Absorber 1245.1 in Gap 199.3
|
||||
e+ in Absorber 51.1 in Gap 2.4
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 47.494 keV in Gap 2.87381 keV
|
||||
e- in Absorber 19.6443 eV in Gap 18.7318 eV
|
||||
e+ in Absorber 33.6759 keV in Gap 94.8372 keV
|
||||
gamma in Absorber 47.4775 keV in Gap 2.83143 keV
|
||||
e- in Absorber 66.8787 eV in Gap 70.6487 eV
|
||||
e+ in Absorber 1.69049 keV in Gap 76.7562 keV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 74.9643 cm Gap 53.8089 cm
|
||||
Absorber 80.5644 cm Gap 59.9107 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 2842.5 Gap 513.7
|
||||
Absorber 2998.4 Gap 561.8
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 2479.39 637.8 1182.5 42.3 1173.7 2899.2
|
||||
1 70.3302 35.9 132.8 4.5 78.4735 296.9
|
||||
2 20.774 9.5 42.2 1.4 21.2616 90
|
||||
3 9.24242 4 16.6 0.5 7.50502 35.3
|
||||
4 2.39644 1.1 5.8 0.1 1.7277 12
|
||||
5 1.94294 1.2 4.2 0.2 1.4385 9
|
||||
6 1.64203 1.3 3.9 0.1 2.13893 8.6
|
||||
7 0.563449 0.3 1.3 0 0.372606 2.6
|
||||
8 0.159714 0 0.7 0 0.0971076 1
|
||||
9 0.19163 0 0.3 0 0.629226 0.9
|
||||
10 0.143474 0 0.2 0 0.389614 0.7
|
||||
11 0.000143461 0 0 0 0 0
|
||||
12 4.60683e-05 0 0 0 0 0
|
||||
13 0.00040092 0 0 0 0 0
|
||||
14 0.000822608 0 0 0 0 0
|
||||
15 0.000597364 0 0 0 0 0
|
||||
16 0.00014122 0 0 0 0 0
|
||||
17 6.56146e-05 0 0 0 0 0
|
||||
18 1.77564e-05 0 0 0 0 0
|
||||
19 0 0 0 0 0 0
|
||||
0 2515.44 656.6 1178.1 44.3 1218.45 2940.4
|
||||
1 94.4831 43 152.4 5.6 117.841 363.3
|
||||
2 34.2231 15.7 63.9 1.8 39.8797 145.1
|
||||
3 13.0579 6.1 25.4 0.8 15.9169 52.6
|
||||
4 6.55783 3.4 13.1 0.6 4.84422 27.6
|
||||
5 3.16038 1.9 6.2 0.4 4.97648 17.7
|
||||
6 1.81612 1.3 2.8 0 1.39118 6.2
|
||||
7 0.200922 0 0.6 0 0.182898 0.9
|
||||
8 0.245685 0.1 0.9 0 0.245414 1.3
|
||||
9 0.085782 0 0.2 0 0.0415116 0.6
|
||||
10 0.146339 0 0.1 0 0.793075 0.5
|
||||
11 0.0122637 0 0 0 0.00384434 0.2
|
||||
12 0.116132 0 0.5 0 0.0613172 0.6
|
||||
13 4.06557e-05 0 0 0 0 0
|
||||
14 0.0159857 0 0 0 0.00516883 0.2
|
||||
15 0.074705 0 0.2 0 0.114416 3
|
||||
16 1.72068e-05 0 0 0 0 0
|
||||
17 0.000388452 0 0 0 0 0
|
||||
18 0.000412273 0 0 0 0 0
|
||||
19 0.000273591 0 0 0 0 0
|
||||
############################################################
|
||||
Region : Calor-B
|
||||
Production thresholds :
|
||||
gamma 2 mm e- 2 mm e+ 2 mm
|
||||
Energy deposition in an event :
|
||||
Absorber 2.72799 GeV Gap 340.868 MeV
|
||||
Absorber 2.89718 GeV Gap 379.681 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 669.9 in Gap 41.1
|
||||
e- in Absorber 1111.9 in Gap 141.2
|
||||
e+ in Absorber 74.7 in Gap 2.8
|
||||
gamma in Absorber 773.6 in Gap 51
|
||||
e- in Absorber 1313.2 in Gap 149.7
|
||||
e+ in Absorber 88.3 in Gap 2
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 120.854 keV in Gap 9.1823 keV
|
||||
e- in Absorber 99.2475 eV in Gap 350.96 eV
|
||||
e+ in Absorber 3.6732 keV in Gap 125.386 keV
|
||||
gamma in Absorber 104.566 keV in Gap 8.7207 keV
|
||||
e- in Absorber 122.378 eV in Gap 129.757 eV
|
||||
e+ in Absorber 1.16212 keV in Gap 666.532 keV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 93.4715 cm Gap 67.7513 cm
|
||||
Absorber 1.05758 m Gap 86.5915 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 2833.8 Gap 475.6
|
||||
Absorber 3285.6 Gap 534.7
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 2890.63 653.7 956.8 67 1411.8 2656.2
|
||||
1 118.318 42.3 181.9 7.3 125.266 403.3
|
||||
2 37.8188 11.1 67 2.7 42.9352 150.6
|
||||
3 13.7156 2.5 27.4 0.4 21.5128 57.2
|
||||
4 3.1632 0.4 8.5 0 3.42317 18.9
|
||||
5 2.24179 0.4 4.8 0 2.20937 9.1
|
||||
6 1.02182 0.2 2.1 0 3.28067 6.1
|
||||
7 0.444821 0 2 0 0.530892 2.7
|
||||
8 0.829354 0.4 0.7 0.1 0.615102 1.8
|
||||
9 0.255581 0 0.6 0 0.143562 0.8
|
||||
10 0.11905 0 0.3 0 0.0546002 0.7
|
||||
11 0.0242537 0 0.2 0 0.00723512 0.2
|
||||
12 0.100209 0 0.4 0 0.0412594 0.8
|
||||
13 0.125858 0 0.4 0 0.411563 1
|
||||
14 0.00867256 0 0 0 0 0
|
||||
15 0.00592569 0 0 0 0 0
|
||||
16 0.000589544 0 0 0 0 0
|
||||
17 0.0078643 0 0 0 0 0
|
||||
18 0.00178084 0 0 0 0 0
|
||||
19 0.00664617 0 0 0 0 0
|
||||
0 3052.17 739.2 1077.9 73.4 1678 2982.5
|
||||
1 140.86 56.5 231.1 10.7 152.19 508
|
||||
2 49.6219 17.3 89.9 3.5 59.2571 197.1
|
||||
3 20.0712 6.3 37.4 1.6 19.4108 73.7
|
||||
4 7.00851 2.5 14.2 0.5 8.33857 29.4
|
||||
5 3.94424 1.1 6.2 0.3 3.49376 14.4
|
||||
6 0.969004 0.9 2.5 0.1 1.00776 7.9
|
||||
7 0.69263 0.2 1.2 0 0.549521 1.9
|
||||
8 0.234692 0 0.7 0 0.33146 1.3
|
||||
9 0.0833363 0 0.5 0.1 0.0252937 0.8
|
||||
10 0.462815 0.4 0.5 0 0.396742 1.6
|
||||
11 0.181688 0 0.4 0 0.081444 0.7
|
||||
12 0.465569 0.2 0.2 0.1 0.379656 0.7
|
||||
13 0.0069727 0 0 0 0 0
|
||||
14 0.0666902 0 0.2 0 0.0288629 0.3
|
||||
15 0.0110645 0 0 0 0 0
|
||||
16 0.00173297 0 0 0 0 0
|
||||
17 0.00100675 0 0 0 0 0
|
||||
18 0.00125766 0 0 0 0 0
|
||||
19 0.00157924 0 0 0 0 0
|
||||
############################################################
|
||||
Region : Calor-C
|
||||
Production thresholds :
|
||||
gamma 2 cm e- 2 cm e+ 2 cm
|
||||
Energy deposition in an event :
|
||||
Absorber 2.69811 GeV Gap 331.001 MeV
|
||||
Absorber 2.57293 GeV Gap 327.452 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 366 in Gap 31.1
|
||||
e- in Absorber 680.6 in Gap 78.9
|
||||
e+ in Absorber 63.6 in Gap 2.8
|
||||
gamma in Absorber 324.5 in Gap 24.5
|
||||
e- in Absorber 589.5 in Gap 66.1
|
||||
e+ in Absorber 57.7 in Gap 1.9
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 272.041 keV in Gap 27.1112 keV
|
||||
e- in Absorber 211.776 eV in Gap 266.523 eV
|
||||
e+ in Absorber 13.0415 keV in Gap 481.385 keV
|
||||
gamma in Absorber 127.262 keV in Gap 27.6407 keV
|
||||
e- in Absorber 292.534 eV in Gap 160.624 eV
|
||||
e+ in Absorber 12.1745 keV in Gap 628.554 keV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 71.057 cm Gap 52.2911 cm
|
||||
Absorber 63.0645 cm Gap 49.245 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 1708.4 Gap 305.5
|
||||
Absorber 1487.3 Gap 243.6
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 2878.16 366.7 545.9 57.9 1045.91 1518.9
|
||||
1 100.059 21.3 133.9 5.4 126.643 311
|
||||
2 28.0979 4.6 45.4 1.4 35.757 102.1
|
||||
3 12.7696 2.5 19.1 1 13.3559 42.7
|
||||
4 5.65786 1 8.4 0.4 6.80213 20.6
|
||||
5 2.1913 0.7 2.9 0.2 2.17141 7.1
|
||||
6 0.978105 0.2 1.6 0.1 0.797781 3.4
|
||||
7 0.68025 0.1 1.4 0 0.581572 6.1
|
||||
8 0.127926 0 0.2 0 0.0814885 0.4
|
||||
9 0.000461862 0 0 0 0 0
|
||||
10 0.00897187 0 0 0 0 0
|
||||
11 0.0596251 0 0.2 0 0.124943 0.3
|
||||
12 0.225674 0 0 0 1.19108 0.6
|
||||
13 0.0321175 0 0.3 0 0.0403869 0.4
|
||||
14 0.0578369 0 0.2 0 0.0221246 0.3
|
||||
15 5.49712e-05 0 0 0 0 0
|
||||
16 0.000244824 0 0 0 0 0
|
||||
17 0 0 0 0 0 0
|
||||
18 0 0 0 0 0 0
|
||||
19 0 0 0 0 0 0
|
||||
0 2752.33 316.3 463.2 50.6 973.732 1302
|
||||
1 97.2515 23.2 115.3 5.9 92.7208 252.6
|
||||
2 29.4896 5.9 42.1 2.1 31.2259 97.8
|
||||
3 13.0743 2.4 18 0.7 18.0929 41.2
|
||||
4 4.10576 0.6 7.2 0.1 3.23873 19.8
|
||||
5 1.43047 0 3.6 0 1.05382 5.9
|
||||
6 1.11786 0.2 2.5 0.1 0.916494 4.3
|
||||
7 0.904183 0.2 1.5 0 1.59479 3.3
|
||||
8 0.397341 0 1.3 0.1 0.233396 2
|
||||
9 0.216863 0.2 0.7 0 0.228991 1.7
|
||||
10 0.00824454 0 0 0 0 0
|
||||
11 0.0465633 0 0.2 0 0.0571178 0.3
|
||||
12 0.000417693 0 0 0 0 0
|
||||
13 0.00177108 0 0 0 0 0
|
||||
14 0.00162389 0 0 0 0 0
|
||||
15 0.00128484 0 0 0 0 0
|
||||
16 0.00229253 0 0 0 0 0
|
||||
17 0.00422385 0 0 0 0 0
|
||||
18 0.000425203 0 0 0 0 0
|
||||
19 0.000154072 0 0 0 0 0
|
||||
############################################################
|
||||
/run/dumpCouples
|
||||
|
||||
@@ -1585,7 +1592,7 @@ Index : 12 used in the geometry : Yes
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=0.240000s Real=0.337231s Sys=0.060000s
|
||||
User=0.270000s Real=0.336694s Sys=0.060000s
|
||||
############################################################
|
||||
Run Summary - Number of events : 10
|
||||
############################################################
|
||||
@@ -1593,39 +1600,39 @@ Region : Calor-A
|
||||
Production thresholds :
|
||||
gamma 200 um e- 200 um e+ 200 um
|
||||
Energy deposition in an event :
|
||||
Absorber 547.727 MeV Gap 239.71 MeV
|
||||
Absorber 574.963 MeV Gap 256.608 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 36.4 in Gap 9.3
|
||||
e- in Absorber 260.3 in Gap 139.2
|
||||
e+ in Absorber 0.9 in Gap 0.2
|
||||
gamma in Absorber 45.1 in Gap 11.8
|
||||
e- in Absorber 294.1 in Gap 161.8
|
||||
e+ in Absorber 1.5 in Gap 0.4
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 3.29585 keV in Gap 1.60318 keV
|
||||
e- in Absorber 103.773 eV in Gap 177.711 eV
|
||||
e+ in Absorber 1.2084 MeV in Gap 2.18636 MeV
|
||||
gamma in Absorber 3.27132 keV in Gap 1.56242 keV
|
||||
e- in Absorber 109.101 eV in Gap 109.566 eV
|
||||
e+ in Absorber 422.018 keV in Gap 3.65354 MeV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 37.8518 cm Gap 35.2216 cm
|
||||
Absorber 44.8759 cm Gap 44.9326 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 530.5 Gap 293.9
|
||||
Absorber 594.6 Gap 347.9
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 750.216 36.7 259.4 0.3 616.25 587.9
|
||||
1 16.3634 4.7 41.7 0.3 51.7365 75.8
|
||||
2 6.95178 1.1 26.5 0.2 20.3241 45.7
|
||||
3 2.17308 0.8 21.3 0.1 5.1904 32
|
||||
4 3.84622 0.9 16.9 0 12.7544 27.2
|
||||
5 0.440578 0 8.9 0 0.366438 13.8
|
||||
6 0.386611 0.2 5.4 0 0.683251 7.9
|
||||
7 2.41046 0.5 4.5 0.1 10.1586 8.7
|
||||
8 0.298105 0.2 3.3 0 0.856717 4.8
|
||||
9 0.172768 0 2.6 0 0.230466 3.1
|
||||
10 0.154857 0 1.6 0 0.189624 2.8
|
||||
11 0.182433 0 1.4 0 0.26853 2.5
|
||||
12 0.225573 0.1 0.8 0.1 0.543819 1.3
|
||||
13 2.40958 0.4 1.8 0 8.00951 5.2
|
||||
14 0.988365 0.1 1 0 2.49436 2.2
|
||||
15 0.0469255 0 1.1 0 0.0439754 1.6
|
||||
16 0.15565 0 1 0 0.625129 1.5
|
||||
0 783.271 44.6 270.5 1.2 755.209 635.5
|
||||
1 29.1309 8.7 49.2 0.2 96.3126 100.2
|
||||
2 6.72706 1.9 35.6 0.2 17.2468 56
|
||||
3 5.71914 0.5 31.3 0.1 17.3505 51.4
|
||||
4 1.61237 0.2 18.7 0 2.95587 27.1
|
||||
5 1.86979 0.3 10.5 0 3.85348 15.8
|
||||
6 0.541665 0 12.7 0 0.494243 16.3
|
||||
7 1.35372 0.4 12.2 0.2 2.40079 18.2
|
||||
8 0.761487 0.1 5.7 0 1.5253 8.5
|
||||
9 0.281812 0.1 3.2 0 0.39854 4.8
|
||||
10 0.0753452 0 3.1 0 0.0508583 4
|
||||
11 0.0471282 0 0.8 0 0.047796 1.3
|
||||
12 0.0371467 0 0.4 0 0.0323118 0.6
|
||||
13 0.0203389 0 0.4 0 0.0136764 0.5
|
||||
14 0.0348675 0 0.4 0 0.029938 0.8
|
||||
15 0.0842676 0.1 0.9 0 0.161192 1.2
|
||||
16 0.00378608 0 0.3 0 0.00171383 0.3
|
||||
17 0 0 0 0 0 0
|
||||
18 0 0 0 0 0 0
|
||||
19 0 0 0 0 0 0
|
||||
@@ -1634,40 +1641,40 @@ Region : Calor-B
|
||||
Production thresholds :
|
||||
gamma 2 mm e- 2 mm e+ 2 mm
|
||||
Energy deposition in an event :
|
||||
Absorber 558.065 MeV Gap 248.277 MeV
|
||||
Absorber 588.43 MeV Gap 255.749 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 27.5 in Gap 11.6
|
||||
e- in Absorber 154.9 in Gap 76.4
|
||||
e+ in Absorber 1 in Gap 0.1
|
||||
gamma in Absorber 41.2 in Gap 9.7
|
||||
e- in Absorber 200.8 in Gap 93.7
|
||||
e+ in Absorber 2 in Gap 0.5
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 9.82762 keV in Gap 4.01497 keV
|
||||
e- in Absorber 116.158 eV in Gap 109.378 eV
|
||||
e+ in Absorber 806.52 keV in Gap 16.3583 MeV
|
||||
gamma in Absorber 9.96549 keV in Gap 4.46544 keV
|
||||
e- in Absorber 100.495 eV in Gap 123.271 eV
|
||||
e+ in Absorber 626.439 keV in Gap 6.63155 MeV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 33.8519 cm Gap 35.3691 cm
|
||||
Absorber 41.16 cm Gap 40.6868 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 351.9 Gap 194
|
||||
Absorber 455.3 Gap 224.4
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 769.777 32.1 87.5 0.8 585.504 320.6
|
||||
1 15.7176 3.7 42.6 0.2 46.1063 74.6
|
||||
2 8.98734 1.8 30.4 0.1 30.1371 47.4
|
||||
3 5.50461 0.9 24 0 14.1843 34.9
|
||||
4 3.74285 0.4 17.3 0 11.7234 27.8
|
||||
5 1.59208 0.1 10.6 0 3.40358 16.1
|
||||
6 0.268104 0 6.4 0 0.282668 7.3
|
||||
7 0.300467 0 2.5 0 0.419641 4.1
|
||||
8 0.192186 0 3.3 0 0.21774 4.8
|
||||
9 0.101168 0 3.8 0 0.0510232 4.7
|
||||
10 0.0956109 0 1.8 0 0.0937927 2.2
|
||||
11 0.0626463 0.1 1 0 0.0864704 1.3
|
||||
12 0.000660315 0 0.1 0 0.00012031 0.1
|
||||
13 0 0 0 0 0 0
|
||||
0 788.055 35.9 89.6 1.1 651.797 341.2
|
||||
1 18.1746 6.8 48.1 0.7 53.054 90.5
|
||||
2 12.2075 2.6 43.6 0.3 39.9699 70.2
|
||||
3 11.8744 2.6 40 0.2 36.541 60.8
|
||||
4 5.09139 1.3 28 0.1 14.7855 42
|
||||
5 2.4465 0.3 12.3 0 6.53251 21.4
|
||||
6 2.24678 0.2 9.6 0.1 5.90098 14.6
|
||||
7 2.35452 0.7 7.7 0 5.43807 15.8
|
||||
8 0.676396 0.3 5.3 0 2.72812 8.6
|
||||
9 0.299043 0.1 4.4 0 0.404717 5.8
|
||||
10 0.137221 0 2.8 0 0.11224 3.6
|
||||
11 0.0887552 0 1 0 0.0716904 1.7
|
||||
12 0.0960644 0 1.3 0 0.092786 1.8
|
||||
13 0.339452 0.1 0.4 0 0.894337 0.9
|
||||
14 0 0 0 0 0 0
|
||||
15 0 0 0 0 0 0
|
||||
16 0 0 0 0 0 0
|
||||
17 0 0 0 0 0 0
|
||||
15 0.0180647 0 0.1 0 0.0183624 0.2
|
||||
16 0.073545 0 0.2 0 0.127342 0.5
|
||||
17 4.19403e-10 0 0.1 0 2e-10 0.1
|
||||
18 0 0 0 0 0 0
|
||||
19 0 0 0 0 0 0
|
||||
############################################################
|
||||
@@ -1675,41 +1682,41 @@ Region : Calor-C
|
||||
Production thresholds :
|
||||
gamma 2 cm e- 2 cm e+ 2 cm
|
||||
Energy deposition in an event :
|
||||
Absorber 601.2 MeV Gap 261.233 MeV
|
||||
Absorber 607.3 MeV Gap 256.767 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 23.6 in Gap 7.3
|
||||
e- in Absorber 140.5 in Gap 61.9
|
||||
e+ in Absorber 1.7 in Gap 0.5
|
||||
gamma in Absorber 26.1 in Gap 9.8
|
||||
e- in Absorber 159.5 in Gap 68.2
|
||||
e+ in Absorber 1.8 in Gap 0.6
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 28.3235 keV in Gap 10.7149 keV
|
||||
e- in Absorber 126.719 eV in Gap 103.954 eV
|
||||
e+ in Absorber 3.70294 MeV in Gap 1.30454 MeV
|
||||
gamma in Absorber 29.0808 keV in Gap 10.7742 keV
|
||||
e- in Absorber 107.557 eV in Gap 121.145 eV
|
||||
e+ in Absorber 2.39766 MeV in Gap 1.34047 MeV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 30.752 cm Gap 30.8758 cm
|
||||
Absorber 32.7119 cm Gap 31.4611 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 286.7 Gap 140.6
|
||||
Absorber 315.2 Gap 140.8
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 803.02 21.9 37.6 1 443.081 145.2
|
||||
1 39.5335 5.8 43.6 0.8 122.08 89
|
||||
2 6.56526 0.7 29.1 0.2 17.4204 55.3
|
||||
3 5.21487 1 26.3 0.1 15.0884 38.9
|
||||
4 2.3272 0.1 18.8 0 5.42748 26.4
|
||||
5 1.09098 0.3 13.3 0.1 1.69426 22
|
||||
6 3.2028 1 9.3 0 9.48703 17
|
||||
7 0.362978 0 6.4 0 0.465288 7.6
|
||||
8 0.227463 0 5.8 0 0.170595 8.1
|
||||
9 0.296027 0.1 4.8 0 0.376947 7.5
|
||||
10 0.0719489 0 1.8 0 0.0390654 3
|
||||
11 0.051035 0 1.2 0 0.0371712 1.3
|
||||
12 0.147825 0 2.3 0 0.214739 2.6
|
||||
13 0.0516852 0 1.2 0 0.0650437 1.3
|
||||
14 0.00847446 0 0.4 0 0.00315503 0.5
|
||||
15 0.00509108 0 0.2 0 0.00186089 0.2
|
||||
16 0.0176979 0 0.2 0 0.0484563 0.2
|
||||
17 0.237216 0 0 0 0.576194 1.1
|
||||
18 0.00168261 0 0.1 0 0.000621952 0.1
|
||||
0 818.733 24.2 47.4 1.3 524.574 175.9
|
||||
1 24.4553 7.6 50.9 0.4 70.0452 90.5
|
||||
2 11.1385 3.1 34.7 0.5 28.0935 54.7
|
||||
3 2.03285 0.1 25 0 3.21627 35.1
|
||||
4 3.23788 0.7 18.1 0.2 7.96546 27.8
|
||||
5 0.660805 0.1 14.8 0 0.915429 20.2
|
||||
6 0.957613 0.1 11 0 2.15675 15.5
|
||||
7 0.604576 0 5.5 0 1.12255 7.4
|
||||
8 0.285969 0 4.9 0 0.290904 7.7
|
||||
9 0.905558 0 4.7 0 1.67733 7
|
||||
10 0.116731 0 3.7 0 0.0767542 4.1
|
||||
11 0.0925933 0 1.7 0 0.075255 2.5
|
||||
12 0.183859 0 1.8 0 0.266164 2.5
|
||||
13 0.0938043 0 1.6 0 0.121559 1.6
|
||||
14 0.123224 0 0.6 0 0.182949 0.8
|
||||
15 0.122022 0 0.3 0 0.242798 0.5
|
||||
16 0 0 0 0 0 0
|
||||
17 0.0102773 0 0.1 0 0.00698539 0.3
|
||||
18 0.117538 0 0.7 0 0.238301 0.9
|
||||
19 0 0 0 0 0 0
|
||||
############################################################
|
||||
/run/dumpCouples
|
||||
@@ -1928,7 +1935,7 @@ Index : 12 used in the geometry : Yes
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=0.620000s Real=0.809851s Sys=0.170000s
|
||||
User=0.510000s Real=0.635749s Sys=0.120000s
|
||||
############################################################
|
||||
Run Summary - Number of events : 10
|
||||
############################################################
|
||||
@@ -1936,124 +1943,124 @@ Region : Calor-A
|
||||
Production thresholds :
|
||||
gamma 10 um e- 10 um e+ 10 um
|
||||
Energy deposition in an event :
|
||||
Absorber 571.512 MeV Gap 246.327 MeV
|
||||
Absorber 510.753 MeV Gap 228.914 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 58.1 in Gap 14.5
|
||||
e- in Absorber 1028.1 in Gap 978.4
|
||||
e+ in Absorber 1.6 in Gap 0.3
|
||||
gamma in Absorber 38.8 in Gap 10.3
|
||||
e- in Absorber 877 in Gap 883
|
||||
e+ in Absorber 1.1 in Gap 0.1
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 1.00102 keV in Gap 999.974 eV
|
||||
e- in Absorber 16.4879 eV in Gap 125.18 eV
|
||||
e+ in Absorber 373.36 keV in Gap 2.10955 MeV
|
||||
gamma in Absorber 1.02181 keV in Gap 1.00765 keV
|
||||
e- in Absorber 102.534 eV in Gap 106.216 eV
|
||||
e+ in Absorber 777.294 keV in Gap 1.2631 MeV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 47.1715 cm Gap 41.2534 cm
|
||||
Absorber 31.648 cm Gap 31.8526 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 1553 Gap 1392.1
|
||||
Absorber 1265 Gap 1220.3
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 763.445 59.2 1713.3 1.1 712.698 2428.2
|
||||
1 21.7419 5.6 94.5 0.2 72.0433 182.1
|
||||
2 17.1099 4.3 78.5 0.3 53.0228 142.5
|
||||
3 5.00157 0.6 40.2 0.1 15.8746 67.6
|
||||
4 6.39691 2.1 30.7 0.2 21.1014 54.9
|
||||
5 2.12624 0.7 18.3 0 6.15947 27.7
|
||||
6 0.303676 0 7.8 0 0.225075 10.2
|
||||
7 0.873381 0.1 7.6 0 2.07862 11.6
|
||||
8 0.367694 0 6.2 0 0.60009 8.5
|
||||
9 0.214107 0 3.3 0 0.229997 4.8
|
||||
10 0.113297 0 2.1 0 0.113792 2.5
|
||||
11 0.0473753 0 1.7 0 0.0251031 1.9
|
||||
12 0.0370985 0 0.6 0 0.035254 0.8
|
||||
13 0.0173789 0 0.5 0 0.0185565 0.5
|
||||
14 0.0001564 0 0 0 0 0
|
||||
15 0.0098044 0 0.2 0 0.00603221 0.3
|
||||
16 0.000649902 0 0.2 0 4.63373e-05 0.2
|
||||
17 0.012251 0 0.3 0 0.00689445 0.3
|
||||
18 0.0134592 0 0.3 0 0.00693467 0.3
|
||||
19 0.00722108 0 0.2 0 0.00281244 0.2
|
||||
0 725.792 45.5 1638.9 0.9 595.606 2289.3
|
||||
1 8.78244 2.3 51.9 0.2 28.5502 93.5
|
||||
2 2.24672 0.6 22.1 0 5.38699 35.9
|
||||
3 0.82241 0.4 15.6 0.1 1.38541 21
|
||||
4 0.688117 0.2 10.4 0 1.21196 13.9
|
||||
5 0.209652 0 5.3 0 0.170993 7.4
|
||||
6 0.604953 0.1 6.1 0 2.08664 9.7
|
||||
7 0.183476 0 4.1 0 0.144037 5.4
|
||||
8 0.227954 0 2.3 0 0.400459 3.3
|
||||
9 0.0529837 0 1.6 0 0.0273007 2.2
|
||||
10 0.0308319 0 0.7 0 0.0226261 1
|
||||
11 0.00550395 0 0.4 0 0.00130228 0.6
|
||||
12 0.00517608 0 0.3 0 0.00286511 1.6
|
||||
13 0.0152791 0 0.3 0 0.00942075 0.5
|
||||
14 0 0 0 0 0 0
|
||||
15 0 0 0 0 0 0
|
||||
16 0 0 0 0 0 0
|
||||
17 0 0 0 0 0 0
|
||||
18 0 0 0 0 0 0
|
||||
19 0 0 0 0 0 0
|
||||
############################################################
|
||||
Region : Calor-B
|
||||
Production thresholds :
|
||||
gamma 100 um e- 100 um e+ 100 um
|
||||
Energy deposition in an event :
|
||||
Absorber 555.055 MeV Gap 245.587 MeV
|
||||
Absorber 563.826 MeV Gap 243.621 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 41.8 in Gap 13.3
|
||||
e- in Absorber 353.5 in Gap 197.4
|
||||
e+ in Absorber 1.1 in Gap 0
|
||||
gamma in Absorber 38.5 in Gap 9.9
|
||||
e- in Absorber 341.3 in Gap 184.8
|
||||
e+ in Absorber 1 in Gap 0.3
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 2.35416 keV in Gap 1.17996 keV
|
||||
e- in Absorber 111.707 eV in Gap 101.785 eV
|
||||
e+ in Absorber 251.373 keV in Gap 2.88022e+295 J
|
||||
gamma in Absorber 2.35255 keV in Gap 1.21022 keV
|
||||
e- in Absorber 116.104 eV in Gap 174.054 eV
|
||||
e+ in Absorber 524.043 keV in Gap 7.30517 MeV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 41.0097 cm Gap 39.1589 cm
|
||||
Absorber 43.2866 cm Gap 38.3183 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 665.4 Gap 391.4
|
||||
Absorber 633 Gap 349.7
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 764.189 45.6 386.2 0.5 688.792 784.1
|
||||
1 24.178 6.9 57 0.4 84.1024 120.3
|
||||
2 6.14675 1.4 30.8 0 16.6353 48.6
|
||||
3 1.77497 0.2 23.5 0.1 2.77551 30.8
|
||||
4 1.76499 0.5 16.2 0.1 4.87015 22.8
|
||||
5 0.974751 0.4 12 0 1.78972 15.3
|
||||
6 0.499603 0 7.3 0 0.788749 10.1
|
||||
7 0.304885 0 7.9 0 0.232462 9.7
|
||||
8 0.299621 0 4 0 0.525558 5.2
|
||||
9 0.205295 0.1 1.7 0 0.298156 3.3
|
||||
10 0.0226641 0 1.1 0 0.00771914 1.5
|
||||
11 0.185344 0 0.8 0 0.780871 1.5
|
||||
12 0.0604532 0 1 0 0.0698145 1.5
|
||||
13 0.0173368 0 0.7 0 0.00800342 1.1
|
||||
14 0.00376035 0 0.1 0 0.00129518 0.3
|
||||
15 0.00470942 0 0.1 0 0.0038399 0.1
|
||||
16 0 0 0 0 0 0
|
||||
17 0 0 0 0 0 0
|
||||
18 0.00321293 0 0.3 0 0.000661821 0.3
|
||||
19 0.00743328 0 0.2 0 0.00366691 0.3
|
||||
0 784.38 43.3 385.2 0.9 753.846 768.4
|
||||
1 12.6253 3.5 42 0.3 39.0546 73
|
||||
2 3.4078 0.4 29.6 0 8.55091 45.4
|
||||
3 1.29291 0.2 19.4 0 2.05099 25.8
|
||||
4 1.62055 0.1 10.1 0 3.48552 14.6
|
||||
5 1.26973 0.5 9.2 0.1 2.84673 13.3
|
||||
6 0.459649 0 8.5 0 0.61566 10.7
|
||||
7 0.333237 0 5.7 0 0.4184 7.3
|
||||
8 0.426331 0.1 5.6 0 0.604749 8.1
|
||||
9 0.631078 0.2 3.8 0 2.63031 5.8
|
||||
10 0.0605363 0 1.4 0 0.0321362 2.5
|
||||
11 0.259815 0 2 0 0.417449 2.6
|
||||
12 0.138079 0 0.8 0 0.237169 1.2
|
||||
13 0.00921794 0 0.5 0 0.00417594 0.6
|
||||
14 0.0164513 0 1 0 0.00632266 1.3
|
||||
15 0.00925828 0 0.5 0 0.00339674 0.6
|
||||
16 0.109336 0.1 0.2 0 0.254422 0.5
|
||||
17 0.00822373 0 0.2 0 0.00449973 0.2
|
||||
18 0.390242 0 0.4 0 0.9859 0.8
|
||||
19 0 0 0 0 0 0
|
||||
############################################################
|
||||
Region : Calor-C
|
||||
Production thresholds :
|
||||
gamma 1 mm e- 1 mm e+ 1 mm
|
||||
Energy deposition in an event :
|
||||
Absorber 850.266 MeV Gap 395.217 MeV
|
||||
Absorber 603.381 MeV Gap 259.29 MeV
|
||||
Number of secondaries in an event :
|
||||
gamma in Absorber 116 in Gap 36.6
|
||||
e- in Absorber 470.5 in Gap 216.8
|
||||
e+ in Absorber 6.3 in Gap 2.9
|
||||
gamma in Absorber 41.9 in Gap 13.6
|
||||
e- in Absorber 236.2 in Gap 105.3
|
||||
e+ in Absorber 2.1 in Gap 0.2
|
||||
Minimum kinetic energy of generated secondaries :
|
||||
gamma in Absorber 6.94537 keV in Gap 3.05592 keV
|
||||
e- in Absorber 105.821 eV in Gap 154.098 eV
|
||||
e+ in Absorber 705.65 keV in Gap 457.994 keV
|
||||
gamma in Absorber 7.04285 keV in Gap 3.02435 keV
|
||||
e- in Absorber 117.756 eV in Gap 130.376 eV
|
||||
e+ in Absorber 600.069 keV in Gap 119.639 MeV
|
||||
Total track length of e+/e- in an event :
|
||||
Absorber 1.06558 m Gap 1.1707 m
|
||||
Absorber 46.7178 cm Gap 44.1633 cm
|
||||
Total number of steps of e+/e- in an event :
|
||||
Absorber 1032.6 Gap 541.2
|
||||
Absorber 511.2 Gap 259.5
|
||||
------------------------------------------------------------
|
||||
Scores in parallel geometry
|
||||
layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt
|
||||
0 1173.01 134.6 270.6 8.3 2026.47 934.6
|
||||
1 32.5826 11.5 117.7 0.5 100.438 201
|
||||
2 17.9538 4.3 92 0.2 51.711 141.3
|
||||
3 9.31696 1.2 62 0 26.4342 90.4
|
||||
4 2.79313 0.3 37.4 0.1 6.12946 53.2
|
||||
5 3.97398 0.5 28.5 0.1 10.1293 46.9
|
||||
6 1.17924 0 20.9 0 1.72564 28.1
|
||||
7 1.18708 0.1 16.3 0 3.60993 20.5
|
||||
8 0.691589 0 11.6 0 1.29639 14.9
|
||||
9 0.305952 0 8.7 0 0.247686 11.8
|
||||
10 0.623792 0 5.8 0 1.67086 8.5
|
||||
11 0.186381 0 3.8 0 0.152632 5.7
|
||||
12 0.249784 0 2.9 0 0.411147 4.5
|
||||
13 0.0847466 0 2.1 0 0.0705516 2.4
|
||||
14 0.1216 0 1.9 0 0.134425 2.2
|
||||
15 0.671788 0.1 1.4 0 3.28491 2.7
|
||||
16 0.0262515 0 0.9 0 0.0147189 1.2
|
||||
17 0.463143 0 0.6 0 2.29859 1.4
|
||||
18 0.0117042 0 0.6 0 0.00407988 0.7
|
||||
19 0.0535949 0 1.5 0 0.0364927 1.7
|
||||
0 777.346 35.9 119.5 0.8 643.354 385.7
|
||||
1 56.7132 14.5 63.6 1.1 184.362 138.8
|
||||
2 17.4935 3.8 47.5 0.2 55.5527 87.1
|
||||
3 4.569 0.9 34.5 0.1 11.3443 51.7
|
||||
4 1.25088 0.1 25.1 0 1.60978 34.2
|
||||
5 2.45582 0 18.5 0 7.3503 26
|
||||
6 0.643661 0.2 9.1 0.1 0.966367 13.1
|
||||
7 0.32479 0 5.8 0 0.343339 9.2
|
||||
8 0.49492 0 5.1 0 0.832534 6.4
|
||||
9 0.485973 0.1 5.6 0 0.709295 7.9
|
||||
10 0.365862 0 2.6 0 0.562562 4.9
|
||||
11 0.0764414 0 2.5 0 0.0537617 2.6
|
||||
12 0.305442 0 0.6 0 1.56225 1.3
|
||||
13 0.0189797 0 0.2 0 0.0166497 0.3
|
||||
14 0 0 0 0 0 0
|
||||
15 0.013102 0 0.8 0 0.00407577 0.9
|
||||
16 0.0182918 0 0.2 0 0.0122939 0.2
|
||||
17 0.0856356 0 0.2 0 0.168732 0.3
|
||||
18 0.00962494 0 0.1 0 0.00651627 0.1
|
||||
19 0 0 0 0 0 0
|
||||
############################################################
|
||||
/run/dumpCouples
|
||||
|
||||
@@ -2143,6 +2150,6 @@ Index : 12 used in the geometry : Yes
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
================== Deleting memory pools ===================
|
||||
Number of memory pools allocated: 14 of which, static: 0
|
||||
Dynamic pools deleted: 14 / Total memory freed: 0.78 MB
|
||||
Number of memory pools allocated: 12 of which, static: 0
|
||||
Dynamic pools deleted: 12 / Total memory freed: 0.77 MB
|
||||
============================================================
|
||||
|
||||
@@ -31,21 +31,20 @@
|
||||
#ifndef RE06ActionInitialization_H
|
||||
#define RE06ActionInitialization_H 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VUserActionInitialization.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class RE06ActionInitialization : public G4VUserActionInitialization
|
||||
{
|
||||
public:
|
||||
RE06ActionInitialization();//G4bool bParallelWorld);
|
||||
RE06ActionInitialization(); // G4bool bParallelWorld);
|
||||
virtual ~RE06ActionInitialization();
|
||||
|
||||
virtual void Build() const;
|
||||
virtual void BuildForMaster() const;
|
||||
|
||||
private:
|
||||
//G4bool m_bParallelWorld;
|
||||
private:
|
||||
// G4bool m_bParallelWorld;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/// \file RE06/include/RE06DetectorConstruction.hh
|
||||
/// \brief Definition of the RE06DetectorConstruction class
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef RE06DetectorConstruction_h
|
||||
#define RE06DetectorConstruction_h 1
|
||||
@@ -48,65 +48,62 @@ class RE06DetectorConstruction : public G4VUserDetectorConstruction
|
||||
virtual ~RE06DetectorConstruction();
|
||||
|
||||
virtual G4VPhysicalVolume* Construct();
|
||||
|
||||
|
||||
void ConstructSDandField();
|
||||
|
||||
|
||||
void PrintCalorParameters() const;
|
||||
void SetAbsorberMaterial(G4String materialChoice);
|
||||
void SetAbsorberMaterial(G4String materialChoice);
|
||||
G4String GetAbsorberMaterial() const;
|
||||
void SetGapMaterial(G4String materialChoice);
|
||||
void SetGapMaterial(G4String materialChoice);
|
||||
G4String GetGapMaterial() const;
|
||||
void SetSerialGeometry(G4bool ser);
|
||||
void SetNumberOfLayers(G4int nl);
|
||||
G4int GetNumberOfLayers() const { return fNumberOfLayers; }
|
||||
G4bool IsSerial() const { return fSerial; }
|
||||
|
||||
void AddMaterial();
|
||||
|
||||
G4int GetVerboseLevel() const { return fVerboseLevel; }
|
||||
void AddMaterial();
|
||||
|
||||
G4int GetVerboseLevel() const { return fVerboseLevel; }
|
||||
void SetVerboseLevel(G4int val) { fVerboseLevel = val; }
|
||||
|
||||
|
||||
private:
|
||||
void DefineMaterials();
|
||||
void SetupGeometry();
|
||||
void SetupDetectors();
|
||||
|
||||
// data members
|
||||
G4int fNumberOfLayers;
|
||||
G4int fNumberOfLayers;
|
||||
|
||||
G4double fTotalThickness; ///< total thinkness of one calorimeter
|
||||
G4double fLayerThickness; ///< = fTotalThickness / fNumberOfLayers
|
||||
G4double fTotalThickness; ///< total thinkness of one calorimeter
|
||||
G4double fLayerThickness; ///< = fTotalThickness / fNumberOfLayers
|
||||
|
||||
G4bool fConstructed;
|
||||
G4bool fConstructed;
|
||||
static G4ThreadLocal G4bool fConstructedSDandField;
|
||||
|
||||
G4String fCalName[3];
|
||||
|
||||
G4Material* fWorldMaterial;
|
||||
G4Material* fAbsorberMaterial;
|
||||
G4Material* fGapMaterial;
|
||||
G4String fCalName[3];
|
||||
|
||||
G4Box* fLayerSolid;
|
||||
G4Box* fGapSolid;
|
||||
G4Material* fWorldMaterial;
|
||||
G4Material* fAbsorberMaterial;
|
||||
G4Material* fGapMaterial;
|
||||
|
||||
G4LogicalVolume* fWorldLogical;
|
||||
G4LogicalVolume* fCalorLogical[3];
|
||||
G4LogicalVolume* fLayerLogical[3];
|
||||
G4LogicalVolume* fGapLogical[3];
|
||||
G4Box* fLayerSolid;
|
||||
G4Box* fGapSolid;
|
||||
|
||||
G4LogicalVolume* fWorldLogical;
|
||||
G4LogicalVolume* fCalorLogical[3];
|
||||
G4LogicalVolume* fLayerLogical[3];
|
||||
G4LogicalVolume* fGapLogical[3];
|
||||
|
||||
G4VPhysicalVolume* fWorldPhysical;
|
||||
G4VPhysicalVolume* fCalorPhysical[3];
|
||||
G4PVReplica* fLayerPhysical[3];
|
||||
G4PVReplica* fLayerPhysical[3];
|
||||
G4VPhysicalVolume* fGapPhysical[3];
|
||||
|
||||
G4bool fSerial;
|
||||
G4bool fSerial;
|
||||
|
||||
RE06DetectorMessenger* fDetectorMessenger;
|
||||
|
||||
G4int fVerboseLevel;
|
||||
|
||||
RE06DetectorMessenger* fDetectorMessenger;
|
||||
|
||||
G4int fVerboseLevel;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
#ifndef RE06DetectorMessenger_h
|
||||
#define RE06DetectorMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class RE06DetectorConstruction;
|
||||
class G4UIdirectory;
|
||||
@@ -40,29 +40,27 @@ class G4UIcmdWithAString;
|
||||
class G4UIcmdWithABool;
|
||||
class G4UIcmdWithAnInteger;
|
||||
|
||||
class RE06DetectorMessenger: public G4UImessenger
|
||||
class RE06DetectorMessenger : public G4UImessenger
|
||||
{
|
||||
public:
|
||||
RE06DetectorMessenger(RE06DetectorConstruction* );
|
||||
RE06DetectorMessenger(RE06DetectorConstruction*);
|
||||
virtual ~RE06DetectorMessenger();
|
||||
|
||||
|
||||
virtual void SetNewValue(G4UIcommand*, G4String);
|
||||
virtual G4String GetCurrentValue(G4UIcommand * command);
|
||||
|
||||
virtual G4String GetCurrentValue(G4UIcommand* command);
|
||||
|
||||
private:
|
||||
void UpdateMaterialList();
|
||||
|
||||
RE06DetectorConstruction* fDetector;
|
||||
|
||||
G4UIdirectory* fDirectory;
|
||||
G4UIcmdWithAString* fAbsMaterialCmd;
|
||||
G4UIcmdWithAString* fGapMaterialCmd;
|
||||
G4UIcmdWithAnInteger* fNumLayerCmd;
|
||||
G4UIcmdWithABool* fSerialCmd;
|
||||
G4UIcmdWithAnInteger* fVerboseCmd;
|
||||
G4UIcmdWithABool* fAddMaterialCmd;
|
||||
|
||||
G4UIdirectory* fDirectory;
|
||||
G4UIcmdWithAString* fAbsMaterialCmd;
|
||||
G4UIcmdWithAString* fGapMaterialCmd;
|
||||
G4UIcmdWithAnInteger* fNumLayerCmd;
|
||||
G4UIcmdWithABool* fSerialCmd;
|
||||
G4UIcmdWithAnInteger* fVerboseCmd;
|
||||
G4UIcmdWithABool* fAddMaterialCmd;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/// \file RE06/include/RE06ParallelWorld.hh
|
||||
/// \brief Definition of the RE06ParallelWorld class
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef RE06ParallelWorld_h
|
||||
#define RE06ParallelWorld_h 1
|
||||
@@ -45,26 +45,24 @@ class RE06ParallelWorld : public G4VUserParallelWorld
|
||||
|
||||
virtual void Construct();
|
||||
virtual void ConstructSD();
|
||||
|
||||
|
||||
void SetSerialGeometry(G4bool ser);
|
||||
G4bool IsSerial() const { return fSerial; }
|
||||
|
||||
private:
|
||||
void SetupGeometry();
|
||||
void SetupDetectors();
|
||||
|
||||
G4LogicalVolume* fCalorLogical[3];
|
||||
G4LogicalVolume* fLayerLogical[3];
|
||||
|
||||
G4LogicalVolume* fCalorLogical[3];
|
||||
G4LogicalVolume* fLayerLogical[3];
|
||||
G4VPhysicalVolume* fCalorPhysical[3];
|
||||
G4VPhysicalVolume* fLayerPhysical[3];
|
||||
G4String fCalName[3];
|
||||
G4bool fConstructed;
|
||||
G4String fCalName[3];
|
||||
G4bool fConstructed;
|
||||
static G4ThreadLocal G4bool fSDConstructed;
|
||||
G4bool fSerial;
|
||||
G4double fTotalThickness;
|
||||
G4int fNumberOfLayers;
|
||||
G4bool fSerial;
|
||||
G4double fTotalThickness;
|
||||
G4int fNumberOfLayers;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ class G4Event;
|
||||
class RE06PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
RE06PrimaryGeneratorAction();
|
||||
RE06PrimaryGeneratorAction();
|
||||
virtual ~RE06PrimaryGeneratorAction();
|
||||
|
||||
virtual void GeneratePrimaries(G4Event*);
|
||||
@@ -49,10 +49,7 @@ class RE06PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
|
||||
private:
|
||||
G4ParticleGun* fParticleGun;
|
||||
G4bool fSerial;
|
||||
G4bool fSerial;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -31,77 +31,74 @@
|
||||
#ifndef RE06Run_h
|
||||
#define RE06Run_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4Run.hh"
|
||||
|
||||
#include "G4THitsMap.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4Event;
|
||||
|
||||
class RE06Run : public G4Run
|
||||
{
|
||||
public:
|
||||
RE06Run();
|
||||
virtual ~RE06Run();
|
||||
|
||||
virtual void RecordEvent(const G4Event*);
|
||||
virtual void Merge(const G4Run*);
|
||||
|
||||
G4double GetTotalE(G4int i) const { return GetTotal(fMapSum[i][0]); }
|
||||
G4double GetNGamma(G4int i) const { return GetTotal(fMapSum[i][1]); }
|
||||
G4double GetNElectron(G4int i) const { return GetTotal(fMapSum[i][2]); }
|
||||
G4double GetNPositron(G4int i) const { return GetTotal(fMapSum[i][3]); }
|
||||
G4double GetTotalL(G4int i) const { return GetTotal(fMapSum[i][4]); }
|
||||
G4double GetNStep(G4int i) const { return GetTotal(fMapSum[i][5]); }
|
||||
|
||||
G4double GetEMinGamma(G4int i) const { return FindMinimum(fMapMin[i][0]);}
|
||||
G4double GetEMinElectron(G4int i) const { return FindMinimum(fMapMin[i][1]);}
|
||||
G4double GetEMinPositron(G4int i) const { return FindMinimum(fMapMin[i][2]);}
|
||||
|
||||
G4double GetParaValue(G4int i,G4int j,G4int k) const
|
||||
{
|
||||
G4double* p = fMapPara[i][j][k];
|
||||
if(p) return *p;
|
||||
return 0.;
|
||||
}
|
||||
|
||||
private:
|
||||
G4double GetTotal(const G4THitsMap<G4double> &map) const;
|
||||
G4double FindMinimum(const G4THitsMap<G4double> &map) const;
|
||||
|
||||
// Maps for accumulation
|
||||
// fMapSum[i][j]
|
||||
// i = 0 : Calor-A_abs j = 0 : total eDep
|
||||
// i = 1 : Calor-A_gap j = 1 : number of gamma
|
||||
// i = 2 : Calor-B_abs j = 2 : number of electron
|
||||
// i = 3 : Calor-B_gap j = 3 : number of positron
|
||||
// i = 4 : Calor-C_abs j = 4 : total step length for e+/e-
|
||||
// i = 5 : Calor-C_gap j = 5 : total number of steps for e+/e-
|
||||
G4THitsMap<G4double> fMapSum[6][6];
|
||||
G4int fColIDSum[6][6];
|
||||
|
||||
// Maps for minimum value
|
||||
// i = 0 : Calor-A_abs j = 0 : minimum kinE at generation for gamma
|
||||
// i = 1 : Calor-A_gap j = 1 : minimum kinE at generation for electron
|
||||
// i = 2 : Calor-B_abs j = 2 : minimum kinE at generation for positron
|
||||
// i = 3 : Calor-B_gap
|
||||
// i = 4 : Calor-C_abs
|
||||
// i = 5 : Calor-C_gap
|
||||
G4THitsMap<G4double> fMapMin[6][3];
|
||||
G4int fColIDMin[6][3];
|
||||
|
||||
// Maps for accumulation in parallel world
|
||||
// fMapPara[i][j]
|
||||
// i = 0 : Calor-AP_para j = 0 : total eDep
|
||||
// i = 1 : Calor-BP_para j = 1 : number of gamma
|
||||
// i = 2 : Calor-CP_para j = 2 : number of electron
|
||||
// j = 3 : number of positron
|
||||
// j = 4 : total step length for e+/e-
|
||||
// j = 5 : total number of steps for e+/e-
|
||||
G4THitsMap<G4double> fMapPara[3][6];
|
||||
G4int fColIDPara[3][6];
|
||||
|
||||
public:
|
||||
RE06Run();
|
||||
virtual ~RE06Run();
|
||||
|
||||
virtual void RecordEvent(const G4Event*);
|
||||
virtual void Merge(const G4Run*);
|
||||
|
||||
G4double GetTotalE(G4int i) const { return GetTotal(fMapSum[i][0]); }
|
||||
G4double GetNGamma(G4int i) const { return GetTotal(fMapSum[i][1]); }
|
||||
G4double GetNElectron(G4int i) const { return GetTotal(fMapSum[i][2]); }
|
||||
G4double GetNPositron(G4int i) const { return GetTotal(fMapSum[i][3]); }
|
||||
G4double GetTotalL(G4int i) const { return GetTotal(fMapSum[i][4]); }
|
||||
G4double GetNStep(G4int i) const { return GetTotal(fMapSum[i][5]); }
|
||||
|
||||
G4double GetEMinGamma(G4int i) const { return FindMinimum(fMapMin[i][0]); }
|
||||
G4double GetEMinElectron(G4int i) const { return FindMinimum(fMapMin[i][1]); }
|
||||
G4double GetEMinPositron(G4int i) const { return FindMinimum(fMapMin[i][2]); }
|
||||
|
||||
G4double GetParaValue(G4int i, G4int j, G4int k) const
|
||||
{
|
||||
G4double* p = fMapPara[i][j][k];
|
||||
if (p) return *p;
|
||||
return 0.;
|
||||
}
|
||||
|
||||
private:
|
||||
G4double GetTotal(const G4THitsMap<G4double>& map) const;
|
||||
G4double FindMinimum(const G4THitsMap<G4double>& map) const;
|
||||
|
||||
// Maps for accumulation
|
||||
// fMapSum[i][j]
|
||||
// i = 0 : Calor-A_abs j = 0 : total eDep
|
||||
// i = 1 : Calor-A_gap j = 1 : number of gamma
|
||||
// i = 2 : Calor-B_abs j = 2 : number of electron
|
||||
// i = 3 : Calor-B_gap j = 3 : number of positron
|
||||
// i = 4 : Calor-C_abs j = 4 : total step length for e+/e-
|
||||
// i = 5 : Calor-C_gap j = 5 : total number of steps for e+/e-
|
||||
G4THitsMap<G4double> fMapSum[6][6];
|
||||
G4int fColIDSum[6][6];
|
||||
|
||||
// Maps for minimum value
|
||||
// i = 0 : Calor-A_abs j = 0 : minimum kinE at generation for gamma
|
||||
// i = 1 : Calor-A_gap j = 1 : minimum kinE at generation for electron
|
||||
// i = 2 : Calor-B_abs j = 2 : minimum kinE at generation for positron
|
||||
// i = 3 : Calor-B_gap
|
||||
// i = 4 : Calor-C_abs
|
||||
// i = 5 : Calor-C_gap
|
||||
G4THitsMap<G4double> fMapMin[6][3];
|
||||
G4int fColIDMin[6][3];
|
||||
|
||||
// Maps for accumulation in parallel world
|
||||
// fMapPara[i][j]
|
||||
// i = 0 : Calor-AP_para j = 0 : total eDep
|
||||
// i = 1 : Calor-BP_para j = 1 : number of gamma
|
||||
// i = 2 : Calor-CP_para j = 2 : number of electron
|
||||
// j = 3 : number of positron
|
||||
// j = 4 : total step length for e+/e-
|
||||
// j = 5 : total number of steps for e+/e-
|
||||
G4THitsMap<G4double> fMapPara[3][6];
|
||||
G4int fColIDPara[3][6];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -49,4 +49,3 @@ class RE06RunAction : public G4UserRunAction
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -33,51 +33,50 @@ class RE06SteppingVerbose;
|
||||
#ifndef RE06SteppingVerbose_h
|
||||
#define RE06SteppingVerbose_h 1
|
||||
|
||||
#include <vector>
|
||||
#include "G4VSteppingVerbose.hh"
|
||||
#include "G4SliceTimer.hh"
|
||||
#include "G4VSteppingVerbose.hh"
|
||||
|
||||
#include <vector>
|
||||
|
||||
class G4Region;
|
||||
|
||||
class RE06SteppingVerbose : public G4VSteppingVerbose
|
||||
{
|
||||
public:
|
||||
RE06SteppingVerbose();
|
||||
virtual ~RE06SteppingVerbose();
|
||||
public:
|
||||
RE06SteppingVerbose();
|
||||
virtual ~RE06SteppingVerbose();
|
||||
|
||||
virtual G4VSteppingVerbose* Clone()
|
||||
{ return new RE06SteppingVerbose; }
|
||||
virtual G4VSteppingVerbose* Clone() { return new RE06SteppingVerbose; }
|
||||
|
||||
void InitializeTimers();
|
||||
void Report();
|
||||
void InitializeTimers();
|
||||
void Report();
|
||||
|
||||
virtual void NewStep();
|
||||
virtual void StepInfo();
|
||||
virtual void NewStep();
|
||||
virtual void StepInfo();
|
||||
|
||||
// Following methods are not used
|
||||
virtual void TrackBanner() {}
|
||||
virtual void AtRestDoItInvoked() {}
|
||||
virtual void AlongStepDoItAllDone() {}
|
||||
virtual void PostStepDoItAllDone() {}
|
||||
virtual void AlongStepDoItOneByOne() {}
|
||||
virtual void PostStepDoItOneByOne() {}
|
||||
virtual void TrackingStarted() {}
|
||||
virtual void DPSLStarted() {}
|
||||
virtual void DPSLUserLimit() {}
|
||||
virtual void DPSLPostStep() {}
|
||||
virtual void DPSLAlongStep() {}
|
||||
virtual void VerboseTrack() {}
|
||||
virtual void VerboseParticleChange() {}
|
||||
// Following methods are not used
|
||||
virtual void TrackBanner() {}
|
||||
virtual void AtRestDoItInvoked() {}
|
||||
virtual void AlongStepDoItAllDone() {}
|
||||
virtual void PostStepDoItAllDone() {}
|
||||
virtual void AlongStepDoItOneByOne() {}
|
||||
virtual void PostStepDoItOneByOne() {}
|
||||
virtual void TrackingStarted() {}
|
||||
virtual void DPSLStarted() {}
|
||||
virtual void DPSLUserLimit() {}
|
||||
virtual void DPSLPostStep() {}
|
||||
virtual void DPSLAlongStep() {}
|
||||
virtual void VerboseTrack() {}
|
||||
virtual void VerboseParticleChange() {}
|
||||
|
||||
private:
|
||||
G4int FindRegion(G4Region*);
|
||||
private:
|
||||
G4int FindRegion(G4Region*);
|
||||
|
||||
std::vector<G4SliceTimer*> fTimers;
|
||||
G4int fNofRegions;
|
||||
G4int fNofTimers;
|
||||
G4int fRegIdx;
|
||||
G4bool fEp;
|
||||
std::vector<G4SliceTimer*> fTimers;
|
||||
G4int fNofRegions;
|
||||
G4int fNofTimers;
|
||||
G4int fRegIdx;
|
||||
G4bool fEp;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,18 +29,23 @@
|
||||
//
|
||||
|
||||
#include "RE06ActionInitialization.hh"
|
||||
|
||||
#include "RE06PrimaryGeneratorAction.hh"
|
||||
#include "RE06RunAction.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06ActionInitialization::RE06ActionInitialization()
|
||||
{;}
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06ActionInitialization::~RE06ActionInitialization()
|
||||
{;}
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -50,7 +55,6 @@ void RE06ActionInitialization::Build() const
|
||||
SetUserAction(new RE06PrimaryGeneratorAction);
|
||||
//
|
||||
SetUserAction(new RE06RunAction);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -26,65 +26,60 @@
|
||||
/// \file RE06/src/RE06DetectorConstruction.cc
|
||||
/// \brief Implementation of the RE06DetectorConstruction class
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "RE06DetectorConstruction.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "RE06DetectorMessenger.hh"
|
||||
#include "RE06ParallelWorld.hh"
|
||||
#include "RE06PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Colour.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4MultiFunctionalDetector.hh"
|
||||
#include "G4PSEnergyDeposit.hh"
|
||||
#include "G4PSMinKinEAtGeneration.hh"
|
||||
#include "G4PSNofSecondary.hh"
|
||||
#include "G4PSNofStep.hh"
|
||||
#include "G4PSTrackLength.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4PVReplica.hh"
|
||||
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
|
||||
#include "G4SDManager.hh"
|
||||
#include "G4MultiFunctionalDetector.hh"
|
||||
#include "G4VPrimitiveScorer.hh"
|
||||
#include "G4PSEnergyDeposit.hh"
|
||||
#include "G4PSNofSecondary.hh"
|
||||
#include "G4PSTrackLength.hh"
|
||||
#include "G4PSNofStep.hh"
|
||||
#include "G4PSMinKinEAtGeneration.hh"
|
||||
#include "G4VSDFilter.hh"
|
||||
#include "G4SDParticleFilter.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
#include "RE06DetectorMessenger.hh"
|
||||
#include "RE06PrimaryGeneratorAction.hh"
|
||||
#include "RE06ParallelWorld.hh"
|
||||
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4SDManager.hh"
|
||||
#include "G4SDParticleFilter.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4VPrimitiveScorer.hh"
|
||||
#include "G4VSDFilter.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4ThreadLocal G4bool RE06DetectorConstruction::fConstructedSDandField = false;
|
||||
|
||||
RE06DetectorConstruction::RE06DetectorConstruction()
|
||||
: G4VUserDetectorConstruction(),
|
||||
fNumberOfLayers(40),
|
||||
fTotalThickness (2.0*m),
|
||||
fLayerThickness(0.),
|
||||
fConstructed(false),
|
||||
fWorldMaterial(0),
|
||||
fAbsorberMaterial(0),
|
||||
fGapMaterial(0),
|
||||
fLayerSolid(0),
|
||||
fGapSolid(0),
|
||||
fWorldLogical(0),
|
||||
fWorldPhysical(0),
|
||||
fSerial(false),
|
||||
fDetectorMessenger(0),
|
||||
fVerboseLevel(1)
|
||||
: G4VUserDetectorConstruction(),
|
||||
fNumberOfLayers(40),
|
||||
fTotalThickness(2.0 * m),
|
||||
fLayerThickness(0.),
|
||||
fConstructed(false),
|
||||
fWorldMaterial(0),
|
||||
fAbsorberMaterial(0),
|
||||
fGapMaterial(0),
|
||||
fLayerSolid(0),
|
||||
fGapSolid(0),
|
||||
fWorldLogical(0),
|
||||
fWorldPhysical(0),
|
||||
fSerial(false),
|
||||
fDetectorMessenger(0),
|
||||
fVerboseLevel(1)
|
||||
{
|
||||
fLayerThickness = fTotalThickness / fNumberOfLayers;
|
||||
|
||||
for(size_t i=0;i<3;i++)
|
||||
{
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
fCalorLogical[i] = 0;
|
||||
fLayerLogical[i] = 0;
|
||||
fGapLogical[i] = 0;
|
||||
@@ -103,26 +98,26 @@ RE06DetectorConstruction::RE06DetectorConstruction()
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06DetectorConstruction::~RE06DetectorConstruction()
|
||||
{ delete fDetectorMessenger;}
|
||||
{
|
||||
delete fDetectorMessenger;
|
||||
}
|
||||
|
||||
G4VPhysicalVolume* RE06DetectorConstruction::Construct()
|
||||
{
|
||||
if(!fConstructed)
|
||||
{
|
||||
if (!fConstructed) {
|
||||
fConstructed = true;
|
||||
DefineMaterials();
|
||||
SetupGeometry();
|
||||
}
|
||||
if (GetVerboseLevel()>0) {
|
||||
if (GetVerboseLevel() > 0) {
|
||||
PrintCalorParameters();
|
||||
}
|
||||
return fWorldPhysical;
|
||||
}
|
||||
|
||||
void RE06DetectorConstruction::ConstructSDandField()
|
||||
void RE06DetectorConstruction::ConstructSDandField()
|
||||
{
|
||||
if(!fConstructedSDandField)
|
||||
{
|
||||
if (!fConstructedSDandField) {
|
||||
fConstructedSDandField = true;
|
||||
SetupDetectors();
|
||||
}
|
||||
@@ -131,11 +126,11 @@ void RE06DetectorConstruction::ConstructSDandField()
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06DetectorConstruction::DefineMaterials()
|
||||
{
|
||||
G4String name, symbol; //a=mass of a mole;
|
||||
G4double a, z, density; //z=mean number of protons;
|
||||
G4int iz; //iz=number of protons in an isotope;
|
||||
G4int n; // n=number of nucleons in an isotope;
|
||||
{
|
||||
G4String name, symbol; // a=mass of a mole;
|
||||
G4double a, z, density; // z=mean number of protons;
|
||||
G4int iz; // iz=number of protons in an isotope;
|
||||
G4int n; // n=number of nucleons in an isotope;
|
||||
|
||||
G4int ncomponents, natoms;
|
||||
G4double abundance, fractionmass;
|
||||
@@ -145,172 +140,161 @@ void RE06DetectorConstruction::DefineMaterials()
|
||||
// define Elements
|
||||
//
|
||||
|
||||
a = 1.01*g/mole;
|
||||
G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
|
||||
a = 1.01 * g / mole;
|
||||
G4Element* H = new G4Element(name = "Hydrogen", symbol = "H", z = 1., a);
|
||||
|
||||
a = 12.01*g/mole;
|
||||
G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a);
|
||||
a = 12.01 * g / mole;
|
||||
G4Element* C = new G4Element(name = "Carbon", symbol = "C", z = 6., a);
|
||||
|
||||
a = 14.01*g/mole;
|
||||
G4Element* N = new G4Element(name="Nitrogen",symbol="N" , z= 7., a);
|
||||
a = 14.01 * g / mole;
|
||||
G4Element* N = new G4Element(name = "Nitrogen", symbol = "N", z = 7., a);
|
||||
|
||||
a = 16.00*g/mole;
|
||||
G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a);
|
||||
a = 16.00 * g / mole;
|
||||
G4Element* O = new G4Element(name = "Oxygen", symbol = "O", z = 8., a);
|
||||
|
||||
//
|
||||
// define an Element from isotopes, by relative abundance
|
||||
// define an Element from isotopes, by relative abundance
|
||||
//
|
||||
|
||||
G4Isotope* U5 = new G4Isotope(name="U235", iz=92, n=235, a=235.01*g/mole);
|
||||
G4Isotope* U8 = new G4Isotope(name="U238", iz=92, n=238, a=238.03*g/mole);
|
||||
G4Isotope* U5 = new G4Isotope(name = "U235", iz = 92, n = 235, a = 235.01 * g / mole);
|
||||
G4Isotope* U8 = new G4Isotope(name = "U238", iz = 92, n = 238, a = 238.03 * g / mole);
|
||||
|
||||
G4Element* U = new G4Element(name="enriched Uranium",symbol="U",ncomponents=2);
|
||||
U->AddIsotope(U5, abundance= 90.*perCent);
|
||||
U->AddIsotope(U8, abundance= 10.*perCent);
|
||||
G4Element* U = new G4Element(name = "enriched Uranium", symbol = "U", ncomponents = 2);
|
||||
U->AddIsotope(U5, abundance = 90. * perCent);
|
||||
U->AddIsotope(U8, abundance = 10. * perCent);
|
||||
|
||||
//
|
||||
// define simple materials
|
||||
//
|
||||
|
||||
new G4Material(name="Aluminium", z=13., a=26.98*g/mole, density=2.700*g/cm3);
|
||||
new G4Material(name="Silicon", z=14., a= 28.09*g/mole, density= 2.33*g/cm3);
|
||||
new G4Material(name="Iron", z=26., a=55.85*g/mole, density=7.87*g/cm3);
|
||||
new G4Material(name="ArgonGas",z=18., a= 39.95*g/mole, density=1.782*mg/cm3);
|
||||
new G4Material(name="He", z=2., a=4.0*g/mole, density=0.1786e-03*g/cm3);
|
||||
new G4Material(name = "Aluminium", z = 13., a = 26.98 * g / mole, density = 2.700 * g / cm3);
|
||||
new G4Material(name = "Silicon", z = 14., a = 28.09 * g / mole, density = 2.33 * g / cm3);
|
||||
new G4Material(name = "Iron", z = 26., a = 55.85 * g / mole, density = 7.87 * g / cm3);
|
||||
new G4Material(name = "ArgonGas", z = 18., a = 39.95 * g / mole, density = 1.782 * mg / cm3);
|
||||
new G4Material(name = "He", z = 2., a = 4.0 * g / mole, density = 0.1786e-03 * g / cm3);
|
||||
|
||||
density = 1.390*g/cm3;
|
||||
a = 39.95*g/mole;
|
||||
G4Material* lAr = new G4Material(name="liquidArgon", z=18., a, density);
|
||||
density = 1.390 * g / cm3;
|
||||
a = 39.95 * g / mole;
|
||||
G4Material* lAr = new G4Material(name = "liquidArgon", z = 18., a, density);
|
||||
|
||||
density = 11.35*g/cm3;
|
||||
a = 207.19*g/mole;
|
||||
G4Material* Pb = new G4Material(name="Lead" , z=82., a, density);
|
||||
density = 11.35 * g / cm3;
|
||||
a = 207.19 * g / mole;
|
||||
G4Material* Pb = new G4Material(name = "Lead", z = 82., a, density);
|
||||
|
||||
//
|
||||
// define a material from elements. case 1: chemical molecule
|
||||
//
|
||||
|
||||
density = 1.000*g/cm3;
|
||||
G4Material* H2O = new G4Material(name="Water", density, ncomponents=2);
|
||||
H2O->AddElement(H, natoms=2);
|
||||
H2O->AddElement(O, natoms=1);
|
||||
|
||||
density = 1.032*g/cm3;
|
||||
G4Material* Sci = new G4Material(name="Scintillator", density, ncomponents=2);
|
||||
Sci->AddElement(C, natoms=9);
|
||||
Sci->AddElement(H, natoms=10);
|
||||
density = 1.000 * g / cm3;
|
||||
G4Material* H2O = new G4Material(name = "Water", density, ncomponents = 2);
|
||||
H2O->AddElement(H, natoms = 2);
|
||||
H2O->AddElement(O, natoms = 1);
|
||||
|
||||
density = 1.032 * g / cm3;
|
||||
G4Material* Sci = new G4Material(name = "Scintillator", density, ncomponents = 2);
|
||||
Sci->AddElement(C, natoms = 9);
|
||||
Sci->AddElement(H, natoms = 10);
|
||||
|
||||
//
|
||||
// define a material from elements. case 2: mixture by fractional mass
|
||||
//
|
||||
|
||||
density = 1.290*mg/cm3;
|
||||
G4Material* Air = new G4Material(name="Air" , density, ncomponents=2);
|
||||
Air->AddElement(N, fractionmass=0.7);
|
||||
Air->AddElement(O, fractionmass=0.3);
|
||||
density = 1.290 * mg / cm3;
|
||||
G4Material* Air = new G4Material(name = "Air", density, ncomponents = 2);
|
||||
Air->AddElement(N, fractionmass = 0.7);
|
||||
Air->AddElement(O, fractionmass = 0.3);
|
||||
|
||||
//
|
||||
// examples of vacuum
|
||||
//
|
||||
|
||||
density = universe_mean_density;
|
||||
pressure = 3.e-18*pascal;
|
||||
temperature = 2.73*kelvin;
|
||||
G4Material* Vacuum = new G4Material(name="Galactic", z=1., a=1.01*g/mole,
|
||||
density,kStateGas,temperature,pressure);
|
||||
density = universe_mean_density;
|
||||
pressure = 3.e-18 * pascal;
|
||||
temperature = 2.73 * kelvin;
|
||||
G4Material* Vacuum = new G4Material(name = "Galactic", z = 1., a = 1.01 * g / mole, density,
|
||||
kStateGas, temperature, pressure);
|
||||
|
||||
if (GetVerboseLevel()>1) {
|
||||
if (GetVerboseLevel() > 1) {
|
||||
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
|
||||
}
|
||||
|
||||
//default materials of the calorimeter
|
||||
fWorldMaterial = Vacuum;
|
||||
// default materials of the calorimeter
|
||||
fWorldMaterial = Vacuum;
|
||||
fAbsorberMaterial = Pb;
|
||||
fGapMaterial = lAr;
|
||||
fGapMaterial = lAr;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06DetectorConstruction::SetupGeometry()
|
||||
{
|
||||
//
|
||||
//
|
||||
// World
|
||||
//
|
||||
G4VSolid* worldSolid = new G4Box("World",2.*m,2.*m,fTotalThickness*2.);
|
||||
fWorldLogical = new G4LogicalVolume(worldSolid,fWorldMaterial,"World");
|
||||
fWorldPhysical = new G4PVPlacement(0,G4ThreeVector(),fWorldLogical,"World",
|
||||
0,false,0);
|
||||
|
||||
//
|
||||
G4VSolid* worldSolid = new G4Box("World", 2. * m, 2. * m, fTotalThickness * 2.);
|
||||
fWorldLogical = new G4LogicalVolume(worldSolid, fWorldMaterial, "World");
|
||||
fWorldPhysical = new G4PVPlacement(0, G4ThreeVector(), fWorldLogical, "World", 0, false, 0);
|
||||
|
||||
//
|
||||
// Calorimeter
|
||||
//
|
||||
G4VSolid* calorSolid = new G4Box("Calor",0.5*m,0.5*m,fTotalThickness/2.);
|
||||
//
|
||||
G4VSolid* calorSolid = new G4Box("Calor", 0.5 * m, 0.5 * m, fTotalThickness / 2.);
|
||||
G4int i;
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
fCalorLogical[i]
|
||||
= new G4LogicalVolume(calorSolid,fAbsorberMaterial,fCalName[i]);
|
||||
if(fSerial)
|
||||
{
|
||||
fCalorPhysical[i] = new G4PVPlacement(0,
|
||||
G4ThreeVector(0.,0.,G4double(i-1)*fTotalThickness),
|
||||
fCalorLogical[i],fCalName[i],fWorldLogical,false,i);
|
||||
for (i = 0; i < 3; i++) {
|
||||
fCalorLogical[i] = new G4LogicalVolume(calorSolid, fAbsorberMaterial, fCalName[i]);
|
||||
if (fSerial) {
|
||||
fCalorPhysical[i] =
|
||||
new G4PVPlacement(0, G4ThreeVector(0., 0., G4double(i - 1) * fTotalThickness),
|
||||
fCalorLogical[i], fCalName[i], fWorldLogical, false, i);
|
||||
}
|
||||
else
|
||||
{
|
||||
fCalorPhysical[i] = new G4PVPlacement(0,
|
||||
G4ThreeVector(0.,G4double(i-1)*m,0.),
|
||||
fCalorLogical[i],fCalName[i],fWorldLogical,false,i);
|
||||
else {
|
||||
fCalorPhysical[i] = new G4PVPlacement(0, G4ThreeVector(0., G4double(i - 1) * m, 0.),
|
||||
fCalorLogical[i], fCalName[i], fWorldLogical, false, i);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
//
|
||||
// Layers --- as absorbers
|
||||
//
|
||||
fLayerSolid = new G4Box("Layer",0.5*m,0.5*m,fLayerThickness/2.);
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
fLayerLogical[i]
|
||||
= new G4LogicalVolume(fLayerSolid,fAbsorberMaterial,fCalName[i]+"_LayerLog");
|
||||
fLayerPhysical[i]
|
||||
= new G4PVReplica(fCalName[i]+"_Layer",fLayerLogical[i],fCalorLogical[i],
|
||||
kZAxis,fNumberOfLayers,fLayerThickness);
|
||||
fLayerSolid = new G4Box("Layer", 0.5 * m, 0.5 * m, fLayerThickness / 2.);
|
||||
for (i = 0; i < 3; i++) {
|
||||
fLayerLogical[i] =
|
||||
new G4LogicalVolume(fLayerSolid, fAbsorberMaterial, fCalName[i] + "_LayerLog");
|
||||
fLayerPhysical[i] = new G4PVReplica(fCalName[i] + "_Layer", fLayerLogical[i], fCalorLogical[i],
|
||||
kZAxis, fNumberOfLayers, fLayerThickness);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Gap
|
||||
//
|
||||
fGapSolid = new G4Box("Gap",0.5*m,0.5*m,fLayerThickness/4.);
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
fGapLogical[i] = new G4LogicalVolume(fGapSolid,fGapMaterial,fCalName[i]+"_Gap");
|
||||
fGapPhysical[i] = new G4PVPlacement(0,G4ThreeVector(0.,0.,fLayerThickness/4.),
|
||||
fGapLogical[i],fCalName[i]+"_gap",fLayerLogical[i],false,0);
|
||||
fGapSolid = new G4Box("Gap", 0.5 * m, 0.5 * m, fLayerThickness / 4.);
|
||||
for (i = 0; i < 3; i++) {
|
||||
fGapLogical[i] = new G4LogicalVolume(fGapSolid, fGapMaterial, fCalName[i] + "_Gap");
|
||||
fGapPhysical[i] =
|
||||
new G4PVPlacement(0, G4ThreeVector(0., 0., fLayerThickness / 4.), fGapLogical[i],
|
||||
fCalName[i] + "_gap", fLayerLogical[i], false, 0);
|
||||
}
|
||||
|
||||
//
|
||||
// Regions
|
||||
//
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
for (i = 0; i < 3; i++) {
|
||||
G4Region* aRegion = new G4Region(fCalName[i]);
|
||||
fCalorLogical[i]->SetRegion(aRegion);
|
||||
aRegion->AddRootLogicalVolume(fCalorLogical[i]);
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
// Visualization attributes
|
||||
//
|
||||
fWorldLogical->SetVisAttributes(G4VisAttributes::GetInvisible());
|
||||
G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0));
|
||||
G4VisAttributes* simpleBoxVisAtt = new G4VisAttributes(G4Colour(1.0, 1.0, 1.0));
|
||||
simpleBoxVisAtt->SetVisibility(true);
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
for (i = 0; i < 3; i++) {
|
||||
fCalorLogical[i]->SetVisAttributes(simpleBoxVisAtt);
|
||||
fLayerLogical[i]->SetVisAttributes(simpleBoxVisAtt);
|
||||
fGapLogical[i]->SetVisAttributes(simpleBoxVisAtt);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -320,168 +304,163 @@ void RE06DetectorConstruction::SetupDetectors()
|
||||
G4SDManager::GetSDMpointer()->SetVerboseLevel(1);
|
||||
G4String filterName, particleName;
|
||||
|
||||
G4SDParticleFilter* gammaFilter
|
||||
= new G4SDParticleFilter(filterName="gammaFilter",particleName="gamma");
|
||||
G4SDParticleFilter* electronFilter
|
||||
= new G4SDParticleFilter(filterName="electronFilter",particleName="e-");
|
||||
G4SDParticleFilter* positronFilter
|
||||
= new G4SDParticleFilter(filterName="positronFilter",particleName="e+");
|
||||
G4SDParticleFilter* epFilter
|
||||
= new G4SDParticleFilter(filterName="epFilter");
|
||||
epFilter->add(particleName="e-");
|
||||
epFilter->add(particleName="e+");
|
||||
G4SDParticleFilter* gammaFilter =
|
||||
new G4SDParticleFilter(filterName = "gammaFilter", particleName = "gamma");
|
||||
G4SDParticleFilter* electronFilter =
|
||||
new G4SDParticleFilter(filterName = "electronFilter", particleName = "e-");
|
||||
G4SDParticleFilter* positronFilter =
|
||||
new G4SDParticleFilter(filterName = "positronFilter", particleName = "e+");
|
||||
G4SDParticleFilter* epFilter = new G4SDParticleFilter(filterName = "epFilter");
|
||||
epFilter->add(particleName = "e-");
|
||||
epFilter->add(particleName = "e+");
|
||||
|
||||
for (G4int i = 0; i < 3; i++) {
|
||||
for (G4int j = 0; j < 2; j++) {
|
||||
// Loop counter j = 0 : absorber
|
||||
// = 1 : gap
|
||||
G4String detName = fCalName[i];
|
||||
if (j == 0) {
|
||||
detName += "_abs";
|
||||
}
|
||||
else {
|
||||
detName += "_gap";
|
||||
}
|
||||
G4MultiFunctionalDetector* det = new G4MultiFunctionalDetector(detName);
|
||||
G4SDManager::GetSDMpointer()->AddNewDetector(det);
|
||||
|
||||
for(G4int i=0;i<3;i++)
|
||||
{
|
||||
for(G4int j=0;j<2;j++)
|
||||
{
|
||||
// Loop counter j = 0 : absorber
|
||||
// = 1 : gap
|
||||
G4String detName = fCalName[i];
|
||||
if(j==0)
|
||||
{ detName += "_abs"; }
|
||||
else
|
||||
{ detName += "_gap"; }
|
||||
G4MultiFunctionalDetector* det = new G4MultiFunctionalDetector(detName);
|
||||
G4SDManager::GetSDMpointer()->AddNewDetector(det);
|
||||
// The second argument in each primitive means the "level" of geometrical
|
||||
// hierarchy, the copy number of that level is used as the key of the
|
||||
// G4THitsMap.
|
||||
// For absorber (j = 0), the copy number of its own physical volume is used.
|
||||
// For gap (j = 1), the copy number of its mother physical volume is used,
|
||||
// since there is only one physical volume of gap is placed with respect
|
||||
// to its mother.
|
||||
G4VPrimitiveScorer* primitive;
|
||||
primitive = new G4PSEnergyDeposit("eDep", j);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSNofSecondary("nGamma", j);
|
||||
primitive->SetFilter(gammaFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSNofSecondary("nElectron", j);
|
||||
primitive->SetFilter(electronFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSNofSecondary("nPositron", j);
|
||||
primitive->SetFilter(positronFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSMinKinEAtGeneration("minEkinGamma", j);
|
||||
primitive->SetFilter(gammaFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSMinKinEAtGeneration("minEkinElectron", j);
|
||||
primitive->SetFilter(electronFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSMinKinEAtGeneration("minEkinPositron", j);
|
||||
primitive->SetFilter(positronFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSTrackLength("trackLength", j);
|
||||
primitive->SetFilter(epFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSNofStep("nStep", j);
|
||||
primitive->SetFilter(epFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
|
||||
// The second argument in each primitive means the "level" of geometrical
|
||||
// hierarchy, the copy number of that level is used as the key of the
|
||||
// G4THitsMap.
|
||||
// For absorber (j = 0), the copy number of its own physical volume is used.
|
||||
// For gap (j = 1), the copy number of its mother physical volume is used,
|
||||
// since there is only one physical volume of gap is placed with respect
|
||||
// to its mother.
|
||||
G4VPrimitiveScorer* primitive;
|
||||
primitive = new G4PSEnergyDeposit("eDep",j);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSNofSecondary("nGamma",j);
|
||||
primitive->SetFilter(gammaFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSNofSecondary("nElectron",j);
|
||||
primitive->SetFilter(electronFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSNofSecondary("nPositron",j);
|
||||
primitive->SetFilter(positronFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSMinKinEAtGeneration("minEkinGamma",j);
|
||||
primitive->SetFilter(gammaFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSMinKinEAtGeneration("minEkinElectron",j);
|
||||
primitive->SetFilter(electronFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSMinKinEAtGeneration("minEkinPositron",j);
|
||||
primitive->SetFilter(positronFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSTrackLength("trackLength",j);
|
||||
primitive->SetFilter(epFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
primitive = new G4PSNofStep("nStep",j);
|
||||
primitive->SetFilter(epFilter);
|
||||
det->RegisterPrimitive(primitive);
|
||||
|
||||
if(j==0)
|
||||
{ SetSensitiveDetector(fLayerLogical[i], det); }
|
||||
else
|
||||
{ SetSensitiveDetector(fGapLogical[i], det);}
|
||||
}
|
||||
if (j == 0) {
|
||||
SetSensitiveDetector(fLayerLogical[i], det);
|
||||
}
|
||||
else {
|
||||
SetSensitiveDetector(fGapLogical[i], det);
|
||||
}
|
||||
}
|
||||
}
|
||||
G4SDManager::GetSDMpointer()->SetVerboseLevel(0);
|
||||
}
|
||||
|
||||
void RE06DetectorConstruction::PrintCalorParameters() const
|
||||
{
|
||||
G4cout
|
||||
<< "--------------------------------------------------------" << G4endl;
|
||||
if(fSerial)
|
||||
{ G4cout << " Calorimeters are placed in serial." << G4endl; }
|
||||
else
|
||||
{ G4cout << " Calorimeters are placed in parallel." << G4endl; }
|
||||
G4cout
|
||||
<< " Absorber is made of " << fAbsorberMaterial->GetName() << G4endl
|
||||
<< " Gap is made of " << fGapMaterial->GetName() << G4endl
|
||||
<< "--------------------------------------------------------" << G4endl;
|
||||
G4cout << "--------------------------------------------------------" << G4endl;
|
||||
if (fSerial) {
|
||||
G4cout << " Calorimeters are placed in serial." << G4endl;
|
||||
}
|
||||
else {
|
||||
G4cout << " Calorimeters are placed in parallel." << G4endl;
|
||||
}
|
||||
G4cout << " Absorber is made of " << fAbsorberMaterial->GetName() << G4endl << " Gap is made of "
|
||||
<< fGapMaterial->GetName() << G4endl
|
||||
<< "--------------------------------------------------------" << G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06DetectorConstruction::SetAbsorberMaterial(G4String materialChoice)
|
||||
{
|
||||
// search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
if(pttoMaterial)
|
||||
{
|
||||
// search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
if (pttoMaterial) {
|
||||
fAbsorberMaterial = pttoMaterial;
|
||||
if(fConstructed) for(size_t i=0;i<3;i++)
|
||||
{
|
||||
fCalorLogical[i]->SetMaterial(fAbsorberMaterial);
|
||||
fLayerLogical[i]->SetMaterial(fAbsorberMaterial);
|
||||
}
|
||||
if (fConstructed)
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
fCalorLogical[i]->SetMaterial(fAbsorberMaterial);
|
||||
fLayerLogical[i]->SetMaterial(fAbsorberMaterial);
|
||||
}
|
||||
G4RunManager::GetRunManager()->GeometryHasBeenModified();
|
||||
if (GetVerboseLevel()>1) {
|
||||
if (GetVerboseLevel() > 1) {
|
||||
PrintCalorParameters();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr
|
||||
<< materialChoice << " is not defined. - Command is ignored." << G4endl;
|
||||
else {
|
||||
G4cerr << materialChoice << " is not defined. - Command is ignored." << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4String RE06DetectorConstruction::GetAbsorberMaterial() const
|
||||
{ return fAbsorberMaterial->GetName(); }
|
||||
{
|
||||
return fAbsorberMaterial->GetName();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06DetectorConstruction::SetGapMaterial(G4String materialChoice)
|
||||
{
|
||||
// search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
if(pttoMaterial)
|
||||
{
|
||||
// search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
if (pttoMaterial) {
|
||||
fGapMaterial = pttoMaterial;
|
||||
if(fConstructed) for(size_t i=0;i<3;i++)
|
||||
{ fGapLogical[i]->SetMaterial(fGapMaterial); }
|
||||
if (fConstructed)
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
fGapLogical[i]->SetMaterial(fGapMaterial);
|
||||
}
|
||||
G4RunManager::GetRunManager()->GeometryHasBeenModified();
|
||||
if (GetVerboseLevel()>1) {
|
||||
if (GetVerboseLevel() > 1) {
|
||||
PrintCalorParameters();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
G4cerr
|
||||
<< materialChoice << " is not defined. - Command is ignored." << G4endl;
|
||||
}
|
||||
else {
|
||||
G4cerr << materialChoice << " is not defined. - Command is ignored." << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
G4String RE06DetectorConstruction::GetGapMaterial() const
|
||||
{ return fGapMaterial->GetName(); }
|
||||
{
|
||||
return fGapMaterial->GetName();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06DetectorConstruction::SetSerialGeometry(G4bool serial)
|
||||
{
|
||||
if(fSerial==serial) return;
|
||||
fSerial=serial;
|
||||
RE06PrimaryGeneratorAction* gen = (RE06PrimaryGeneratorAction*)
|
||||
(G4RunManager::GetRunManager()->GetUserPrimaryGeneratorAction());
|
||||
if(gen) gen->SetSerial(fSerial);
|
||||
if(!fConstructed) return;
|
||||
for(G4int i=0;i<3;i++)
|
||||
{
|
||||
if(fSerial)
|
||||
{
|
||||
fCalorPhysical[i]
|
||||
->SetTranslation(G4ThreeVector(0.,0.,G4double(i-1)*2.*m));
|
||||
if (fSerial == serial) return;
|
||||
fSerial = serial;
|
||||
RE06PrimaryGeneratorAction* gen =
|
||||
(RE06PrimaryGeneratorAction*)(G4RunManager::GetRunManager()->GetUserPrimaryGeneratorAction());
|
||||
if (gen) gen->SetSerial(fSerial);
|
||||
if (!fConstructed) return;
|
||||
for (G4int i = 0; i < 3; i++) {
|
||||
if (fSerial) {
|
||||
fCalorPhysical[i]->SetTranslation(G4ThreeVector(0., 0., G4double(i - 1) * 2. * m));
|
||||
}
|
||||
else
|
||||
{
|
||||
fCalorPhysical[i]
|
||||
->SetTranslation(G4ThreeVector(0.,G4double(i-1)*m,0.));
|
||||
else {
|
||||
fCalorPhysical[i]->SetTranslation(G4ThreeVector(0., G4double(i - 1) * m, 0.));
|
||||
}
|
||||
}
|
||||
((RE06ParallelWorld*)GetParallelWorld(0))->SetSerialGeometry(serial);
|
||||
@@ -493,33 +472,31 @@ void RE06DetectorConstruction::SetSerialGeometry(G4bool serial)
|
||||
void RE06DetectorConstruction::SetNumberOfLayers(G4int nl)
|
||||
{
|
||||
fNumberOfLayers = nl;
|
||||
fLayerThickness = fTotalThickness/fNumberOfLayers;
|
||||
if(!fConstructed) return;
|
||||
fLayerThickness = fTotalThickness / fNumberOfLayers;
|
||||
if (!fConstructed) return;
|
||||
|
||||
fLayerSolid->SetZHalfLength(fLayerThickness/2.);
|
||||
fGapSolid->SetZHalfLength(fLayerThickness/4.);
|
||||
for(size_t i=0;i<3;i++)
|
||||
{
|
||||
fLayerSolid->SetZHalfLength(fLayerThickness / 2.);
|
||||
fGapSolid->SetZHalfLength(fLayerThickness / 4.);
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
fCalorLogical[i]->RemoveDaughter(fLayerPhysical[i]);
|
||||
delete fLayerPhysical[i];
|
||||
fLayerPhysical[i]
|
||||
= new G4PVReplica(fCalName[i]+"_Layer",fLayerLogical[i],fCalorLogical[i],
|
||||
kZAxis,fNumberOfLayers,fLayerThickness);
|
||||
fGapPhysical[i]->SetTranslation(G4ThreeVector(0.,0.,fLayerThickness/4.));
|
||||
fLayerPhysical[i] = new G4PVReplica(fCalName[i] + "_Layer", fLayerLogical[i], fCalorLogical[i],
|
||||
kZAxis, fNumberOfLayers, fLayerThickness);
|
||||
fGapPhysical[i]->SetTranslation(G4ThreeVector(0., 0., fLayerThickness / 4.));
|
||||
}
|
||||
G4RunManager::GetRunManager()->GeometryHasBeenModified();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06DetectorConstruction::AddMaterial()
|
||||
void RE06DetectorConstruction::AddMaterial()
|
||||
{
|
||||
static G4bool isAdded = false;
|
||||
static G4bool isAdded = false;
|
||||
|
||||
if( isAdded ) return;
|
||||
if (isAdded) return;
|
||||
|
||||
G4String name, symbol; //a=mass of a mole;
|
||||
G4double a, z, density; //z=mean number of protons;
|
||||
G4String name, symbol; // a=mass of a mole;
|
||||
G4double a, z, density; // z=mean number of protons;
|
||||
|
||||
G4int ncomponents, natoms;
|
||||
|
||||
@@ -527,21 +504,18 @@ void RE06DetectorConstruction::AddMaterial()
|
||||
// define simple materials
|
||||
//
|
||||
|
||||
new G4Material(name="Copper", z=29., a=63.546*g/mole, density=8.96*g/cm3);
|
||||
new G4Material(name="Tungsten", z=74., a=183.84*g/mole, density=19.3*g/cm3);
|
||||
new G4Material(name = "Copper", z = 29., a = 63.546 * g / mole, density = 8.96 * g / cm3);
|
||||
new G4Material(name = "Tungsten", z = 74., a = 183.84 * g / mole, density = 19.3 * g / cm3);
|
||||
|
||||
G4Element* C = G4Element::GetElement("Carbon");
|
||||
G4Element* O = G4Element::GetElement("Oxygen");
|
||||
|
||||
|
||||
G4Material* CO2 =
|
||||
new G4Material("CarbonicGas", density= 27.*mg/cm3, ncomponents=2,
|
||||
kStateGas, 325.*kelvin, 50.*atmosphere);
|
||||
CO2->AddElement(C, natoms=1);
|
||||
CO2->AddElement(O, natoms=2);
|
||||
G4Material* CO2 = new G4Material("CarbonicGas", density = 27. * mg / cm3, ncomponents = 2,
|
||||
kStateGas, 325. * kelvin, 50. * atmosphere);
|
||||
CO2->AddElement(C, natoms = 1);
|
||||
CO2->AddElement(O, natoms = 2);
|
||||
|
||||
isAdded = true;
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -31,69 +31,68 @@
|
||||
#include "RE06DetectorMessenger.hh"
|
||||
|
||||
#include "RE06DetectorConstruction.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithABool.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4UIcmdWithABool.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06DetectorMessenger::RE06DetectorMessenger(RE06DetectorConstruction* det)
|
||||
: G4UImessenger(),
|
||||
fDetector(det),
|
||||
fDirectory(0),
|
||||
fAbsMaterialCmd(0),
|
||||
fGapMaterialCmd(0),
|
||||
fNumLayerCmd(0),
|
||||
fSerialCmd(0),
|
||||
fVerboseCmd(0),
|
||||
fAddMaterialCmd(0)
|
||||
{
|
||||
: G4UImessenger(),
|
||||
fDetector(det),
|
||||
fDirectory(0),
|
||||
fAbsMaterialCmd(0),
|
||||
fGapMaterialCmd(0),
|
||||
fNumLayerCmd(0),
|
||||
fSerialCmd(0),
|
||||
fVerboseCmd(0),
|
||||
fAddMaterialCmd(0)
|
||||
{
|
||||
fDirectory = new G4UIdirectory("/RE06/");
|
||||
fDirectory->SetGuidance("UI commands of this example");
|
||||
|
||||
|
||||
G4String matList;
|
||||
const G4MaterialTable* matTbl = G4Material::GetMaterialTable();
|
||||
for(size_t i=0;i<G4Material::GetNumberOfMaterials();i++)
|
||||
{
|
||||
for (size_t i = 0; i < G4Material::GetNumberOfMaterials(); i++) {
|
||||
matList += (*matTbl)[i]->GetName();
|
||||
matList += " ";
|
||||
}
|
||||
|
||||
fAbsMaterialCmd = new G4UIcmdWithAString("/RE06/setAbsMat",this);
|
||||
fAbsMaterialCmd = new G4UIcmdWithAString("/RE06/setAbsMat", this);
|
||||
fAbsMaterialCmd->SetGuidance("Select Material of the Absorber.");
|
||||
fAbsMaterialCmd->SetParameterName("choice",false);
|
||||
fAbsMaterialCmd->SetParameterName("choice", false);
|
||||
fAbsMaterialCmd->AvailableForStates(G4State_Idle);
|
||||
fAbsMaterialCmd->SetCandidates(matList);
|
||||
|
||||
fGapMaterialCmd = new G4UIcmdWithAString("/RE06/setGapMat",this);
|
||||
|
||||
fGapMaterialCmd = new G4UIcmdWithAString("/RE06/setGapMat", this);
|
||||
fGapMaterialCmd->SetGuidance("Select Material of the Gap.");
|
||||
fGapMaterialCmd->SetParameterName("choice",false);
|
||||
fGapMaterialCmd->SetParameterName("choice", false);
|
||||
fGapMaterialCmd->AvailableForStates(G4State_Idle);
|
||||
fGapMaterialCmd->SetCandidates(matList);
|
||||
|
||||
fNumLayerCmd = new G4UIcmdWithAnInteger("/RE06/numberOfLayers",this);
|
||||
fNumLayerCmd = new G4UIcmdWithAnInteger("/RE06/numberOfLayers", this);
|
||||
fNumLayerCmd->SetGuidance("Set number of layers.");
|
||||
fNumLayerCmd->SetParameterName("nl",false);
|
||||
fNumLayerCmd->SetParameterName("nl", false);
|
||||
fNumLayerCmd->AvailableForStates(G4State_Idle);
|
||||
fNumLayerCmd->SetRange("nl>0");
|
||||
|
||||
fSerialCmd = new G4UIcmdWithABool("/RE06/serialGeometry",this);
|
||||
fSerialCmd
|
||||
->SetGuidance("Select calorimeters to be placed in serial or parallel.");
|
||||
fSerialCmd->SetParameterName("serialize",false);
|
||||
|
||||
fSerialCmd = new G4UIcmdWithABool("/RE06/serialGeometry", this);
|
||||
fSerialCmd->SetGuidance("Select calorimeters to be placed in serial or parallel.");
|
||||
fSerialCmd->SetParameterName("serialize", false);
|
||||
fSerialCmd->AvailableForStates(G4State_Idle);
|
||||
|
||||
fVerboseCmd = new G4UIcmdWithAnInteger("/RE06/verbose",this);
|
||||
fVerboseCmd = new G4UIcmdWithAnInteger("/RE06/verbose", this);
|
||||
fVerboseCmd->SetGuidance("Set verbosity level");
|
||||
fVerboseCmd->SetParameterName("verbose",false);
|
||||
fVerboseCmd->SetParameterName("verbose", false);
|
||||
fVerboseCmd->AvailableForStates(G4State_Idle);
|
||||
fVerboseCmd->SetRange("verbose>=0");
|
||||
|
||||
fAddMaterialCmd = new G4UIcmdWithABool("/RE06/AddMaterial",this);
|
||||
|
||||
fAddMaterialCmd = new G4UIcmdWithABool("/RE06/AddMaterial", this);
|
||||
fAddMaterialCmd->SetGuidance("Add materials ");
|
||||
fAddMaterialCmd->SetParameterName("dummy",true);
|
||||
fAddMaterialCmd->SetParameterName("dummy", true);
|
||||
fAddMaterialCmd->AvailableForStates(G4State_Idle);
|
||||
}
|
||||
|
||||
@@ -105,75 +104,73 @@ RE06DetectorMessenger::~RE06DetectorMessenger()
|
||||
delete fGapMaterialCmd;
|
||||
delete fNumLayerCmd;
|
||||
delete fSerialCmd;
|
||||
delete fDirectory;
|
||||
delete fDirectory;
|
||||
}
|
||||
|
||||
void RE06DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
{
|
||||
if( command == fAbsMaterialCmd ) {
|
||||
void RE06DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
if (command == fAbsMaterialCmd) {
|
||||
fDetector->SetAbsorberMaterial(newValue);
|
||||
|
||||
} else if( command == fGapMaterialCmd ){
|
||||
}
|
||||
else if (command == fGapMaterialCmd) {
|
||||
fDetector->SetGapMaterial(newValue);
|
||||
|
||||
} else if( command == fNumLayerCmd ) {
|
||||
}
|
||||
else if (command == fNumLayerCmd) {
|
||||
fDetector->SetNumberOfLayers(fNumLayerCmd->GetNewIntValue(newValue));
|
||||
|
||||
} else if( command == fSerialCmd ) {
|
||||
}
|
||||
else if (command == fSerialCmd) {
|
||||
fDetector->SetSerialGeometry(fSerialCmd->GetNewBoolValue(newValue));
|
||||
|
||||
} else if( command == fVerboseCmd ) {
|
||||
}
|
||||
else if (command == fVerboseCmd) {
|
||||
fDetector->SetVerboseLevel(fVerboseCmd->GetNewIntValue(newValue));
|
||||
|
||||
} else if( command == fAddMaterialCmd ) {
|
||||
}
|
||||
else if (command == fAddMaterialCmd) {
|
||||
fDetector->AddMaterial();
|
||||
UpdateMaterialList();
|
||||
UpdateMaterialList();
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4String RE06DetectorMessenger::GetCurrentValue(G4UIcommand * command)
|
||||
G4String RE06DetectorMessenger::GetCurrentValue(G4UIcommand* command)
|
||||
{
|
||||
G4String ans;
|
||||
if( command == fAbsMaterialCmd ){
|
||||
ans=fDetector->GetAbsorberMaterial();
|
||||
|
||||
} else if( command == fGapMaterialCmd ){
|
||||
ans=fDetector->GetGapMaterial();
|
||||
|
||||
} else if( command == fNumLayerCmd ) {
|
||||
ans=fNumLayerCmd->ConvertToString(fDetector->GetNumberOfLayers());
|
||||
|
||||
} else if( command == fSerialCmd ){
|
||||
ans=fSerialCmd->ConvertToString(fDetector->IsSerial());
|
||||
|
||||
} else if( command == fSerialCmd ) {
|
||||
ans=fSerialCmd->ConvertToString(fDetector->IsSerial());
|
||||
|
||||
} else if( command == fVerboseCmd ) {
|
||||
ans=fVerboseCmd->ConvertToString(fDetector->GetVerboseLevel());
|
||||
|
||||
if (command == fAbsMaterialCmd) {
|
||||
ans = fDetector->GetAbsorberMaterial();
|
||||
}
|
||||
else if (command == fGapMaterialCmd) {
|
||||
ans = fDetector->GetGapMaterial();
|
||||
}
|
||||
else if (command == fNumLayerCmd) {
|
||||
ans = fNumLayerCmd->ConvertToString(fDetector->GetNumberOfLayers());
|
||||
}
|
||||
else if (command == fSerialCmd) {
|
||||
ans = fSerialCmd->ConvertToString(fDetector->IsSerial());
|
||||
}
|
||||
else if (command == fSerialCmd) {
|
||||
ans = fSerialCmd->ConvertToString(fDetector->IsSerial());
|
||||
}
|
||||
else if (command == fVerboseCmd) {
|
||||
ans = fVerboseCmd->ConvertToString(fDetector->GetVerboseLevel());
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06DetectorMessenger::UpdateMaterialList()
|
||||
void RE06DetectorMessenger::UpdateMaterialList()
|
||||
{
|
||||
G4String matList;
|
||||
const G4MaterialTable* matTbl = G4Material::GetMaterialTable();
|
||||
for(size_t i=0;i<G4Material::GetNumberOfMaterials();i++)
|
||||
{
|
||||
for (size_t i = 0; i < G4Material::GetNumberOfMaterials(); i++) {
|
||||
matList += (*matTbl)[i]->GetName();
|
||||
matList += " ";
|
||||
}
|
||||
|
||||
if(fAbsMaterialCmd !=0) {
|
||||
if (fAbsMaterialCmd != 0) {
|
||||
fAbsMaterialCmd->SetCandidates(matList);
|
||||
}
|
||||
if (fGapMaterialCmd !=0) {
|
||||
if (fGapMaterialCmd != 0) {
|
||||
fGapMaterialCmd->SetCandidates(matList);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,41 +26,39 @@
|
||||
/// \file RE06/src/RE06ParallelWorld.cc
|
||||
/// \brief Implementation of the RE06ParallelWorld class
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "RE06ParallelWorld.hh"
|
||||
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4MultiFunctionalDetector.hh"
|
||||
#include "G4PSEnergyDeposit.hh"
|
||||
#include "G4PSMinKinEAtGeneration.hh"
|
||||
#include "G4PSNofSecondary.hh"
|
||||
#include "G4PSNofStep.hh"
|
||||
#include "G4PSTrackLength.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4PVReplica.hh"
|
||||
|
||||
#include "G4SDManager.hh"
|
||||
#include "G4MultiFunctionalDetector.hh"
|
||||
#include "G4VPrimitiveScorer.hh"
|
||||
#include "G4PSEnergyDeposit.hh"
|
||||
#include "G4PSNofSecondary.hh"
|
||||
#include "G4PSTrackLength.hh"
|
||||
#include "G4PSNofStep.hh"
|
||||
#include "G4PSMinKinEAtGeneration.hh"
|
||||
#include "G4VSDFilter.hh"
|
||||
#include "G4SDParticleFilter.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4VPrimitiveScorer.hh"
|
||||
#include "G4VSDFilter.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4ThreadLocal G4bool RE06ParallelWorld::fSDConstructed = false;
|
||||
|
||||
RE06ParallelWorld::RE06ParallelWorld(G4String worldName)
|
||||
:G4VUserParallelWorld(worldName),
|
||||
fConstructed(false),
|
||||
fSerial(false),
|
||||
fTotalThickness(2.0*m),
|
||||
fNumberOfLayers(20)
|
||||
: G4VUserParallelWorld(worldName),
|
||||
fConstructed(false),
|
||||
fSerial(false),
|
||||
fTotalThickness(2.0 * m),
|
||||
fNumberOfLayers(20)
|
||||
{
|
||||
for(size_t i=0;i<3;i++)
|
||||
{
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
fCalorLogical[i] = 0;
|
||||
fLayerLogical[i] = 0;
|
||||
fCalorPhysical[i] = 0;
|
||||
@@ -74,14 +72,15 @@ RE06ParallelWorld::RE06ParallelWorld(G4String worldName)
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06ParallelWorld::~RE06ParallelWorld()
|
||||
{;}
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06ParallelWorld::Construct()
|
||||
{
|
||||
if(!fConstructed)
|
||||
{
|
||||
if (!fConstructed) {
|
||||
fConstructed = true;
|
||||
SetupGeometry();
|
||||
}
|
||||
@@ -91,8 +90,7 @@ void RE06ParallelWorld::Construct()
|
||||
|
||||
void RE06ParallelWorld::ConstructSD()
|
||||
{
|
||||
if(!fSDConstructed)
|
||||
{
|
||||
if (!fSDConstructed) {
|
||||
fSDConstructed = true;
|
||||
SetupDetectors();
|
||||
}
|
||||
@@ -101,49 +99,39 @@ void RE06ParallelWorld::ConstructSD()
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void RE06ParallelWorld::SetupGeometry()
|
||||
{
|
||||
//
|
||||
//
|
||||
// World
|
||||
//
|
||||
G4VPhysicalVolume* ghostWorld = GetWorld();
|
||||
G4LogicalVolume* worldLogical = ghostWorld->GetLogicalVolume();
|
||||
|
||||
//
|
||||
|
||||
//
|
||||
// Calorimeter
|
||||
//
|
||||
G4VSolid* calorSolid
|
||||
= new G4Tubs("Calor",0.0,0.5*m,fTotalThickness/2.,0.0,360.*deg);
|
||||
//
|
||||
G4VSolid* calorSolid = new G4Tubs("Calor", 0.0, 0.5 * m, fTotalThickness / 2., 0.0, 360. * deg);
|
||||
G4int i;
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
fCalorLogical[i] = new G4LogicalVolume(calorSolid,0,fCalName[i]);
|
||||
if(fSerial)
|
||||
{
|
||||
fCalorPhysical[i] = new G4PVPlacement(0,
|
||||
G4ThreeVector(0.,0.,G4double(i-1)*fTotalThickness),
|
||||
fCalorLogical[i],fCalName[i],worldLogical,false,i);
|
||||
for (i = 0; i < 3; i++) {
|
||||
fCalorLogical[i] = new G4LogicalVolume(calorSolid, 0, fCalName[i]);
|
||||
if (fSerial) {
|
||||
fCalorPhysical[i] =
|
||||
new G4PVPlacement(0, G4ThreeVector(0., 0., G4double(i - 1) * fTotalThickness),
|
||||
fCalorLogical[i], fCalName[i], worldLogical, false, i);
|
||||
}
|
||||
else
|
||||
{
|
||||
fCalorPhysical[i] = new G4PVPlacement(0,
|
||||
G4ThreeVector(0.,G4double(i-1)*m,0.),
|
||||
fCalorLogical[i],fCalName[i],worldLogical,false,i);
|
||||
else {
|
||||
fCalorPhysical[i] = new G4PVPlacement(0, G4ThreeVector(0., G4double(i - 1) * m, 0.),
|
||||
fCalorLogical[i], fCalName[i], worldLogical, false, i);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
//
|
||||
// Layers --- as absorbers
|
||||
//
|
||||
G4VSolid* layerSolid
|
||||
= new G4Tubs("Layer",0.0,0.5*m,fTotalThickness/2.,0.0,360.*deg);
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
fLayerLogical[i]
|
||||
= new G4LogicalVolume(layerSolid,0,fCalName[i]+"_LayerLog");
|
||||
fLayerPhysical[i]
|
||||
= new G4PVReplica(fCalName[i]+"_Layer",fLayerLogical[i],fCalorLogical[i],
|
||||
kRho,fNumberOfLayers,0.5*m/fNumberOfLayers);
|
||||
G4VSolid* layerSolid = new G4Tubs("Layer", 0.0, 0.5 * m, fTotalThickness / 2., 0.0, 360. * deg);
|
||||
for (i = 0; i < 3; i++) {
|
||||
fLayerLogical[i] = new G4LogicalVolume(layerSolid, 0, fCalName[i] + "_LayerLog");
|
||||
fLayerPhysical[i] = new G4PVReplica(fCalName[i] + "_Layer", fLayerLogical[i], fCalorLogical[i],
|
||||
kRho, fNumberOfLayers, 0.5 * m / fNumberOfLayers);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -153,20 +141,18 @@ void RE06ParallelWorld::SetupDetectors()
|
||||
G4SDManager::GetSDMpointer()->SetVerboseLevel(1);
|
||||
G4String filterName, particleName;
|
||||
|
||||
G4SDParticleFilter* gammaFilter
|
||||
= new G4SDParticleFilter(filterName="gammaFilter",particleName="gamma");
|
||||
G4SDParticleFilter* electronFilter
|
||||
= new G4SDParticleFilter(filterName="electronFilter",particleName="e-");
|
||||
G4SDParticleFilter* positronFilter
|
||||
= new G4SDParticleFilter(filterName="positronFilter",particleName="e+");
|
||||
G4SDParticleFilter* epFilter
|
||||
= new G4SDParticleFilter(filterName="epFilter");
|
||||
epFilter->add(particleName="e-");
|
||||
epFilter->add(particleName="e+");
|
||||
G4SDParticleFilter* gammaFilter =
|
||||
new G4SDParticleFilter(filterName = "gammaFilter", particleName = "gamma");
|
||||
G4SDParticleFilter* electronFilter =
|
||||
new G4SDParticleFilter(filterName = "electronFilter", particleName = "e-");
|
||||
G4SDParticleFilter* positronFilter =
|
||||
new G4SDParticleFilter(filterName = "positronFilter", particleName = "e+");
|
||||
G4SDParticleFilter* epFilter = new G4SDParticleFilter(filterName = "epFilter");
|
||||
epFilter->add(particleName = "e-");
|
||||
epFilter->add(particleName = "e+");
|
||||
|
||||
for(G4int i=0;i<3;i++)
|
||||
{
|
||||
G4String detName = fCalName[i]+"_para";
|
||||
for (G4int i = 0; i < 3; i++) {
|
||||
G4String detName = fCalName[i] + "_para";
|
||||
G4MultiFunctionalDetector* det = new G4MultiFunctionalDetector(detName);
|
||||
|
||||
G4VPrimitiveScorer* primitive;
|
||||
@@ -192,27 +178,21 @@ void RE06ParallelWorld::SetupDetectors()
|
||||
SetSensitiveDetector(fLayerLogical[i], det);
|
||||
}
|
||||
G4SDManager::GetSDMpointer()->SetVerboseLevel(0);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06ParallelWorld::SetSerialGeometry(G4bool serial)
|
||||
{
|
||||
if(fSerial==serial) return;
|
||||
fSerial=serial;
|
||||
if(!fConstructed) return;
|
||||
for(G4int i=0;i<3;i++)
|
||||
{
|
||||
if(fSerial)
|
||||
{
|
||||
fCalorPhysical[i]
|
||||
->SetTranslation(G4ThreeVector(0.,0.,G4double(i-1)*2.*m));
|
||||
if (fSerial == serial) return;
|
||||
fSerial = serial;
|
||||
if (!fConstructed) return;
|
||||
for (G4int i = 0; i < 3; i++) {
|
||||
if (fSerial) {
|
||||
fCalorPhysical[i]->SetTranslation(G4ThreeVector(0., 0., G4double(i - 1) * 2. * m));
|
||||
}
|
||||
else
|
||||
{
|
||||
fCalorPhysical[i]
|
||||
->SetTranslation(G4ThreeVector(0.,G4double(i-1)*m,0.));
|
||||
else {
|
||||
fCalorPhysical[i]->SetTranslation(G4ThreeVector(0., G4double(i - 1) * m, 0.));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,29 +31,26 @@
|
||||
#include "RE06PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06PrimaryGeneratorAction::RE06PrimaryGeneratorAction()
|
||||
: G4VUserPrimaryGeneratorAction(),
|
||||
fParticleGun(0),
|
||||
fSerial(false)
|
||||
: G4VUserPrimaryGeneratorAction(), fParticleGun(0), fSerial(false)
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
fParticleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
fParticleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
// default particle kinematic
|
||||
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
|
||||
G4String particleName;
|
||||
G4ParticleDefinition* particle
|
||||
= particleTable->FindParticle(particleName="mu-");
|
||||
G4ParticleDefinition* particle = particleTable->FindParticle(particleName = "mu-");
|
||||
fParticleGun->SetParticleDefinition(particle);
|
||||
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
|
||||
fParticleGun->SetParticleEnergy(100.*GeV);
|
||||
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0., 0., 1.));
|
||||
fParticleGun->SetParticleEnergy(100. * GeV);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -67,17 +64,13 @@ RE06PrimaryGeneratorAction::~RE06PrimaryGeneratorAction()
|
||||
|
||||
void RE06PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
if(fSerial)
|
||||
{
|
||||
fParticleGun->SetParticlePosition(G4ThreeVector(0.,0.,-3.5*m));
|
||||
if (fSerial) {
|
||||
fParticleGun->SetParticlePosition(G4ThreeVector(0., 0., -3.5 * m));
|
||||
fParticleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
for(G4int i=0;i<3;i++)
|
||||
{
|
||||
fParticleGun
|
||||
->SetParticlePosition(G4ThreeVector(0.,G4double(i-1)*m,-1.5*m));
|
||||
else {
|
||||
for (G4int i = 0; i < 3; i++) {
|
||||
fParticleGun->SetParticlePosition(G4ThreeVector(0., G4double(i - 1) * m, -1.5 * m));
|
||||
fParticleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,155 +29,139 @@
|
||||
//
|
||||
|
||||
#include "RE06Run.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4HCofThisEvent.hh"
|
||||
#include "G4SDManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06Run::RE06Run()
|
||||
: G4Run()
|
||||
RE06Run::RE06Run() : G4Run()
|
||||
{
|
||||
G4String detName[6]
|
||||
= {"Calor-A_abs","Calor-A_gap",
|
||||
"Calor-B_abs","Calor-B_gap",
|
||||
"Calor-C_abs","Calor-C_gap"};
|
||||
|
||||
G4String primNameSum[6]
|
||||
= {"eDep","nGamma","nElectron","nPositron","trackLength","nStep"};
|
||||
|
||||
G4String primNameMin[3]
|
||||
= {"minEkinGamma","minEkinElectron","minEkinPositron"};
|
||||
G4String detName[6] = {"Calor-A_abs", "Calor-A_gap", "Calor-B_abs",
|
||||
"Calor-B_gap", "Calor-C_abs", "Calor-C_gap"};
|
||||
|
||||
G4String paraName[3]
|
||||
= {"Calor-AP_para","Calor-BP_para","Calor-CP_para"};
|
||||
G4String primNameSum[6] = {"eDep", "nGamma", "nElectron", "nPositron", "trackLength", "nStep"};
|
||||
|
||||
G4String primNameMin[3] = {"minEkinGamma", "minEkinElectron", "minEkinPositron"};
|
||||
|
||||
G4String paraName[3] = {"Calor-AP_para", "Calor-BP_para", "Calor-CP_para"};
|
||||
|
||||
G4SDManager* SDMan = G4SDManager::GetSDMpointer();
|
||||
G4String fullName;
|
||||
size_t i,j;
|
||||
for(i=0;i<6;i++)
|
||||
{
|
||||
for(j=0;j<6;j++)
|
||||
{
|
||||
fullName = detName[i]+"/"+primNameSum[j];
|
||||
size_t i, j;
|
||||
for (i = 0; i < 6; i++) {
|
||||
for (j = 0; j < 6; j++) {
|
||||
fullName = detName[i] + "/" + primNameSum[j];
|
||||
fColIDSum[i][j] = SDMan->GetCollectionID(fullName);
|
||||
}
|
||||
for(j=0;j<3;j++)
|
||||
{
|
||||
fullName = detName[i]+"/"+primNameMin[j];
|
||||
for (j = 0; j < 3; j++) {
|
||||
fullName = detName[i] + "/" + primNameMin[j];
|
||||
fColIDMin[i][j] = SDMan->GetCollectionID(fullName);
|
||||
}
|
||||
}
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
for(j=0;j<6;j++)
|
||||
{
|
||||
fullName = paraName[i]+"/"+primNameSum[j];
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (j = 0; j < 6; j++) {
|
||||
fullName = paraName[i] + "/" + primNameSum[j];
|
||||
fColIDPara[i][j] = SDMan->GetCollectionID(fullName);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06Run::~RE06Run()
|
||||
{;}
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06Run::RecordEvent(const G4Event* evt)
|
||||
{
|
||||
G4HCofThisEvent* HCE = evt->GetHCofThisEvent();
|
||||
if(!HCE) return;
|
||||
if (!HCE) return;
|
||||
numberOfEvent++;
|
||||
size_t i,j;
|
||||
for(i=0;i<6;i++)
|
||||
{
|
||||
for(j=0;j<6;j++)
|
||||
{
|
||||
G4THitsMap<G4double>* evtMap
|
||||
= (G4THitsMap<G4double>*)(HCE->GetHC(fColIDSum[i][j]));
|
||||
size_t i, j;
|
||||
for (i = 0; i < 6; i++) {
|
||||
for (j = 0; j < 6; j++) {
|
||||
G4THitsMap<G4double>* evtMap = (G4THitsMap<G4double>*)(HCE->GetHC(fColIDSum[i][j]));
|
||||
fMapSum[i][j] += *evtMap;
|
||||
}
|
||||
|
||||
for(j=0;j<3;j++)
|
||||
{
|
||||
G4THitsMap<G4double>* evtMap
|
||||
= (G4THitsMap<G4double>*)(HCE->GetHC(fColIDMin[i][j]));
|
||||
std::map<G4int,G4double*>::iterator itr = evtMap->GetMap()->begin();
|
||||
for(; itr != evtMap->GetMap()->end(); itr++)
|
||||
{
|
||||
for (j = 0; j < 3; j++) {
|
||||
G4THitsMap<G4double>* evtMap = (G4THitsMap<G4double>*)(HCE->GetHC(fColIDMin[i][j]));
|
||||
std::map<G4int, G4double*>::iterator itr = evtMap->GetMap()->begin();
|
||||
for (; itr != evtMap->GetMap()->end(); itr++) {
|
||||
G4int key = (itr->first);
|
||||
G4double val = *(itr->second);
|
||||
G4double* mapP = fMapMin[i][j][key];
|
||||
if( mapP && (val>*mapP) ) continue;
|
||||
fMapMin[i][j].set(key,val);
|
||||
if (mapP && (val > *mapP)) continue;
|
||||
fMapMin[i][j].set(key, val);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
for(j=0;j<6;j++)
|
||||
{
|
||||
G4THitsMap<G4double>* evtMap
|
||||
= (G4THitsMap<G4double>*)(HCE->GetHC(fColIDPara[i][j]));
|
||||
for (i = 0; i < 3; i++) {
|
||||
for (j = 0; j < 6; j++) {
|
||||
G4THitsMap<G4double>* evtMap = (G4THitsMap<G4double>*)(HCE->GetHC(fColIDPara[i][j]));
|
||||
fMapPara[i][j] += *evtMap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void RE06Run::Merge(const G4Run * aRun) {
|
||||
const RE06Run * localRun = static_cast<const RE06Run *>(aRun);
|
||||
|
||||
for(G4int i = 0; i < 6; i++) {
|
||||
for(G4int j = 0; j < 6; j++) {
|
||||
void RE06Run::Merge(const G4Run* aRun)
|
||||
{
|
||||
const RE06Run* localRun = static_cast<const RE06Run*>(aRun);
|
||||
|
||||
for (G4int i = 0; i < 6; i++) {
|
||||
for (G4int j = 0; j < 6; j++) {
|
||||
fMapSum[i][j] += localRun->fMapSum[i][j];
|
||||
}
|
||||
|
||||
for(G4int j = 0; j < 3; j++) {
|
||||
for (G4int j = 0; j < 3; j++) {
|
||||
std::map<G4int, G4double*>::iterator itr = localRun->fMapMin[i][j].GetMap()->begin();
|
||||
for(; itr != localRun->fMapMin[i][j].GetMap()->end(); itr++) {
|
||||
for (; itr != localRun->fMapMin[i][j].GetMap()->end(); itr++) {
|
||||
G4int key = itr->first;
|
||||
G4double val = *(itr->second);
|
||||
G4double * mapP = fMapMin[i][j][key];
|
||||
if(!mapP || val < *mapP) fMapMin[i][j].set(key, val);
|
||||
G4double* mapP = fMapMin[i][j][key];
|
||||
if (!mapP || val < *mapP) fMapMin[i][j].set(key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(G4int i = 0; i < 3; i++) {
|
||||
for(G4int j = 0; j < 6; j++) {
|
||||
fMapPara[i][j] += localRun->fMapPara[i][j];
|
||||
}
|
||||
for (G4int i = 0; i < 3; i++) {
|
||||
for (G4int j = 0; j < 6; j++) {
|
||||
fMapPara[i][j] += localRun->fMapPara[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
G4Run::Merge(aRun);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
G4double RE06Run::GetTotal(const G4THitsMap<G4double> &map) const
|
||||
G4double RE06Run::GetTotal(const G4THitsMap<G4double>& map) const
|
||||
{
|
||||
G4double tot = 0.;
|
||||
if(map.GetSize()==0) return tot;
|
||||
std::map<G4int,G4double*>::iterator itr = map.GetMap()->begin();
|
||||
for(; itr != map.GetMap()->end(); itr++)
|
||||
{ tot += *(itr->second); }
|
||||
if (map.GetSize() == 0) return tot;
|
||||
std::map<G4int, G4double*>::iterator itr = map.GetMap()->begin();
|
||||
for (; itr != map.GetMap()->end(); itr++) {
|
||||
tot += *(itr->second);
|
||||
}
|
||||
return tot;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4double RE06Run::FindMinimum(const G4THitsMap<G4double> &map) const
|
||||
G4double RE06Run::FindMinimum(const G4THitsMap<G4double>& map) const
|
||||
{
|
||||
G4double val = DBL_MAX;
|
||||
|
||||
if(map.GetSize()==0) return val;
|
||||
std::map<G4int,G4double*>::iterator itr = map.GetMap()->begin();
|
||||
for(; itr != map.GetMap()->end(); itr++)
|
||||
{ if(val>*(itr->second)) val = *(itr->second); }
|
||||
if (map.GetSize() == 0) return val;
|
||||
std::map<G4int, G4double*>::iterator itr = map.GetMap()->begin();
|
||||
for (; itr != map.GetMap()->end(); itr++) {
|
||||
if (val > *(itr->second)) val = *(itr->second);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,136 +29,113 @@
|
||||
//
|
||||
|
||||
#include "RE06RunAction.hh"
|
||||
|
||||
#include "RE06Run.hh"
|
||||
|
||||
#include "G4RegionStore.hh"
|
||||
#include "G4Region.hh"
|
||||
#include "G4ProductionCuts.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
#include "G4VSteppingVerbose.hh"
|
||||
#include "RE06SteppingVerbose.hh"
|
||||
|
||||
#include "G4ProductionCuts.hh"
|
||||
#include "G4Region.hh"
|
||||
#include "G4RegionStore.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4VSteppingVerbose.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06RunAction::RE06RunAction()
|
||||
: G4UserRunAction()
|
||||
{;}
|
||||
RE06RunAction::RE06RunAction() : G4UserRunAction()
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06RunAction::~RE06RunAction()
|
||||
{;}
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4Run* RE06RunAction::GenerateRun()
|
||||
{ return new RE06Run; }
|
||||
{
|
||||
return new RE06Run;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06RunAction::BeginOfRunAction(const G4Run*)
|
||||
{
|
||||
RE06SteppingVerbose* sv
|
||||
= (RE06SteppingVerbose*)(G4VSteppingVerbose::GetInstance());
|
||||
|
||||
RE06SteppingVerbose* sv = (RE06SteppingVerbose*)(G4VSteppingVerbose::GetInstance());
|
||||
|
||||
sv->InitializeTimers();
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06RunAction::EndOfRunAction(const G4Run* aRun)
|
||||
{
|
||||
static G4String regName[3] = {"Calor-A","Calor-B","Calor-C"};
|
||||
|
||||
static G4String regName[3] = {"Calor-A", "Calor-B", "Calor-C"};
|
||||
|
||||
const RE06Run* theRun = (const RE06Run*)aRun;
|
||||
|
||||
if(IsMaster()) {
|
||||
|
||||
G4cout
|
||||
<< "############################################################" << G4endl;
|
||||
G4cout
|
||||
<< " Run Summary - Number of events : " << theRun->GetNumberOfEvent()
|
||||
<< G4endl;
|
||||
G4cout
|
||||
<< "############################################################" << G4endl;
|
||||
|
||||
|
||||
if (IsMaster()) {
|
||||
G4cout << "############################################################" << G4endl;
|
||||
G4cout << " Run Summary - Number of events : " << theRun->GetNumberOfEvent() << G4endl;
|
||||
G4cout << "############################################################" << G4endl;
|
||||
|
||||
G4double nEvt = (G4double)(theRun->GetNumberOfEvent());
|
||||
for(size_t i=0;i<3;i++)
|
||||
{
|
||||
size_t ih1 = 2*i;
|
||||
size_t ih2 = 2*i+1;
|
||||
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
size_t ih1 = 2 * i;
|
||||
size_t ih2 = 2 * i + 1;
|
||||
|
||||
G4Region* region = G4RegionStore::GetInstance()->GetRegion(regName[i]);
|
||||
G4ProductionCuts* cuts = region->GetProductionCuts();
|
||||
G4cout << "Region : " << region->GetName() << G4endl;
|
||||
G4cout << " Production thresholds :" << G4endl << " "
|
||||
<< " gamma " << G4BestUnit(cuts->GetProductionCut("gamma"),"Length")
|
||||
<< " e- " << G4BestUnit(cuts->GetProductionCut("e-"),"Length")
|
||||
<< " e+ " << G4BestUnit(cuts->GetProductionCut("e+"),"Length")
|
||||
<< G4endl;
|
||||
<< " gamma " << G4BestUnit(cuts->GetProductionCut("gamma"), "Length") << " e- "
|
||||
<< G4BestUnit(cuts->GetProductionCut("e-"), "Length") << " e+ "
|
||||
<< G4BestUnit(cuts->GetProductionCut("e+"), "Length") << G4endl;
|
||||
G4cout << " Energy deposition in an event :" << G4endl << " "
|
||||
<< " Absorber " << G4BestUnit((theRun->GetTotalE(ih1))/nEvt,"Energy")
|
||||
<< " Gap " << G4BestUnit((theRun->GetTotalE(ih2))/nEvt,"Energy")
|
||||
<< G4endl;
|
||||
<< " Absorber " << G4BestUnit((theRun->GetTotalE(ih1)) / nEvt, "Energy")
|
||||
<< " Gap " << G4BestUnit((theRun->GetTotalE(ih2)) / nEvt, "Energy") << G4endl;
|
||||
G4cout << " Number of secondaries in an event :" << G4endl << " "
|
||||
<< " gamma in Absorber " << (theRun->GetNGamma(ih1))/nEvt
|
||||
<< " in Gap " << (theRun->GetNGamma(ih2))/nEvt << G4endl << " "
|
||||
<< " e- in Absorber " << (theRun->GetNElectron(ih1))/nEvt
|
||||
<< " in Gap " << (theRun->GetNElectron(ih2))/nEvt << G4endl << " "
|
||||
<< " e+ in Absorber " << (theRun->GetNPositron(ih1))/nEvt
|
||||
<< " in Gap " << (theRun->GetNPositron(ih2))/nEvt << G4endl;
|
||||
G4cout << " Minimum kinetic energy of generated secondaries :" << G4endl
|
||||
<< " " << " gamma in Absorber "
|
||||
<< G4BestUnit(theRun->GetEMinGamma(ih1),"Energy")
|
||||
<< " in Gap " << G4BestUnit(theRun->GetEMinGamma(ih2),"Energy")
|
||||
<< G4endl << " "
|
||||
<< " e- in Absorber "
|
||||
<< G4BestUnit(theRun->GetEMinElectron(ih1),"Energy")
|
||||
<< " in Gap " << G4BestUnit(theRun->GetEMinElectron(ih2),"Energy")
|
||||
<< G4endl << " "
|
||||
<< " e+ in Absorber "
|
||||
<< G4BestUnit(theRun->GetEMinPositron(ih1),"Energy")
|
||||
<< " in Gap " << G4BestUnit(theRun->GetEMinPositron(ih2),"Energy")
|
||||
<< G4endl;
|
||||
G4cout << " Total track length of e+/e- in an event :" << G4endl
|
||||
<< " "
|
||||
<< " Absorber " << G4BestUnit((theRun->GetTotalL(ih1))/nEvt,"Length")
|
||||
<< " Gap " << G4BestUnit((theRun->GetTotalL(ih2))/nEvt,"Length")
|
||||
<< G4endl;
|
||||
G4cout << " Total number of steps of e+/e- in an event :" << G4endl
|
||||
<< " "
|
||||
<< " Absorber " << (theRun->GetNStep(ih1))/nEvt
|
||||
<< " Gap " << (theRun->GetNStep(ih2))/nEvt
|
||||
<< G4endl;
|
||||
G4cout
|
||||
<< "------------------------------------------------------------"
|
||||
<< G4endl;
|
||||
<< " gamma in Absorber " << (theRun->GetNGamma(ih1)) / nEvt << " in Gap "
|
||||
<< (theRun->GetNGamma(ih2)) / nEvt << G4endl << " "
|
||||
<< " e- in Absorber " << (theRun->GetNElectron(ih1)) / nEvt << " in Gap "
|
||||
<< (theRun->GetNElectron(ih2)) / nEvt << G4endl << " "
|
||||
<< " e+ in Absorber " << (theRun->GetNPositron(ih1)) / nEvt << " in Gap "
|
||||
<< (theRun->GetNPositron(ih2)) / nEvt << G4endl;
|
||||
G4cout << " Minimum kinetic energy of generated secondaries :" << G4endl << " "
|
||||
<< " gamma in Absorber " << G4BestUnit(theRun->GetEMinGamma(ih1), "Energy")
|
||||
<< " in Gap " << G4BestUnit(theRun->GetEMinGamma(ih2), "Energy") << G4endl << " "
|
||||
<< " e- in Absorber " << G4BestUnit(theRun->GetEMinElectron(ih1), "Energy")
|
||||
<< " in Gap " << G4BestUnit(theRun->GetEMinElectron(ih2), "Energy") << G4endl
|
||||
<< " "
|
||||
<< " e+ in Absorber " << G4BestUnit(theRun->GetEMinPositron(ih1), "Energy")
|
||||
<< " in Gap " << G4BestUnit(theRun->GetEMinPositron(ih2), "Energy") << G4endl;
|
||||
G4cout << " Total track length of e+/e- in an event :" << G4endl << " "
|
||||
<< " Absorber " << G4BestUnit((theRun->GetTotalL(ih1)) / nEvt, "Length")
|
||||
<< " Gap " << G4BestUnit((theRun->GetTotalL(ih2)) / nEvt, "Length") << G4endl;
|
||||
G4cout << " Total number of steps of e+/e- in an event :" << G4endl << " "
|
||||
<< " Absorber " << (theRun->GetNStep(ih1)) / nEvt << " Gap "
|
||||
<< (theRun->GetNStep(ih2)) / nEvt << G4endl;
|
||||
G4cout << "------------------------------------------------------------" << G4endl;
|
||||
G4cout << "Scores in parallel geometry" << G4endl;
|
||||
G4cout
|
||||
<< "layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt"
|
||||
<< G4endl;
|
||||
for(size_t k=0;k<20;k++)
|
||||
{
|
||||
G4cout << "layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt" << G4endl;
|
||||
for (size_t k = 0; k < 20; k++) {
|
||||
G4cout << std::setw(8) << k;
|
||||
for(size_t j=0;j<6;j++) {
|
||||
G4cout << " " << std::setw(10) << (theRun->GetParaValue(i,j,k))/nEvt;
|
||||
for (size_t j = 0; j < 6; j++) {
|
||||
G4cout << " " << std::setw(10) << (theRun->GetParaValue(i, j, k)) / nEvt;
|
||||
}
|
||||
G4cout << G4endl;
|
||||
}
|
||||
G4cout
|
||||
<< "############################################################"
|
||||
<< G4endl;
|
||||
G4cout << "############################################################" << G4endl;
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
else {
|
||||
G4cout << "CPU Time spent by each region" << G4endl;
|
||||
RE06SteppingVerbose* sv
|
||||
= (RE06SteppingVerbose*)(G4VSteppingVerbose::GetInstance());
|
||||
RE06SteppingVerbose* sv = (RE06SteppingVerbose*)(G4VSteppingVerbose::GetInstance());
|
||||
sv->Report();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,31 +30,28 @@
|
||||
|
||||
#include "RE06SteppingVerbose.hh"
|
||||
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4RegionStore.hh"
|
||||
#include "G4Region.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4Region.hh"
|
||||
#include "G4RegionStore.hh"
|
||||
#include "G4RunManagerKernel.hh"
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4TrackingManager.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06SteppingVerbose::RE06SteppingVerbose()
|
||||
: G4VSteppingVerbose(),
|
||||
fTimers(),
|
||||
fNofTimers(0),
|
||||
fRegIdx(-1),
|
||||
fEp(false)
|
||||
: G4VSteppingVerbose(), fTimers(), fNofTimers(0), fRegIdx(-1), fEp(false)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
RE06SteppingVerbose::~RE06SteppingVerbose()
|
||||
{
|
||||
for(G4int j=0;j<fNofTimers;j++)
|
||||
{ delete fTimers[j]; }
|
||||
for (G4int j = 0; j < fNofTimers; j++) {
|
||||
delete fTimers[j];
|
||||
}
|
||||
fTimers.clear();
|
||||
}
|
||||
|
||||
@@ -66,13 +63,14 @@ void RE06SteppingVerbose::InitializeTimers()
|
||||
fNofRegions = regionStore->size();
|
||||
fNofTimers = 2 * fNofRegions;
|
||||
G4int nEnt = fTimers.size();
|
||||
if(nEnt<fNofTimers)
|
||||
{
|
||||
for(G4int i=nEnt;i<fNofTimers;i++)
|
||||
{ fTimers.push_back(new G4SliceTimer); }
|
||||
if (nEnt < fNofTimers) {
|
||||
for (G4int i = nEnt; i < fNofTimers; i++) {
|
||||
fTimers.push_back(new G4SliceTimer);
|
||||
}
|
||||
}
|
||||
for (G4int j = 0; j < fNofTimers; j++) {
|
||||
fTimers[j]->Clear();
|
||||
}
|
||||
for(G4int j=0;j<fNofTimers;j++)
|
||||
{ fTimers[j]->Clear(); }
|
||||
fRegIdx = -1;
|
||||
fEp = false;
|
||||
|
||||
@@ -87,17 +85,15 @@ void RE06SteppingVerbose::InitializeTimers()
|
||||
|
||||
void RE06SteppingVerbose::Report()
|
||||
{
|
||||
for(G4int i=0;i<fNofRegions;i++)
|
||||
{
|
||||
for (G4int i = 0; i < fNofRegions; i++) {
|
||||
G4cout << G4endl;
|
||||
G4cout << "Region <"
|
||||
<< (*G4RegionStore::GetInstance())[i]->GetName() << ">" << G4endl;
|
||||
G4cout << "Region <" << (*G4RegionStore::GetInstance())[i]->GetName() << ">" << G4endl;
|
||||
G4cout << " All particles : User=" << fTimers[i]->GetUserElapsed()
|
||||
<< " Real=" << fTimers[i]->GetRealElapsed()
|
||||
<< " Sys=" << fTimers[i]->GetSystemElapsed() << G4endl;
|
||||
G4cout << " e+ / e- : User=" << fTimers[fNofRegions+i]->GetUserElapsed()
|
||||
<< " Real=" << fTimers[fNofRegions+i]->GetRealElapsed()
|
||||
<< " Sys=" << fTimers[fNofRegions+i]->GetSystemElapsed() << G4endl;
|
||||
<< " Real=" << fTimers[i]->GetRealElapsed()
|
||||
<< " Sys=" << fTimers[i]->GetSystemElapsed() << G4endl;
|
||||
G4cout << " e+ / e- : User=" << fTimers[fNofRegions + i]->GetUserElapsed()
|
||||
<< " Real=" << fTimers[fNofRegions + i]->GetRealElapsed()
|
||||
<< " Sys=" << fTimers[fNofRegions + i]->GetSystemElapsed() << G4endl;
|
||||
}
|
||||
G4cout << G4endl;
|
||||
}
|
||||
@@ -107,24 +103,22 @@ void RE06SteppingVerbose::Report()
|
||||
void RE06SteppingVerbose::NewStep()
|
||||
{
|
||||
CopyState();
|
||||
G4Region* reg = fTrack->GetStep()->GetPreStepPoint()
|
||||
->GetPhysicalVolume()->GetLogicalVolume()->GetRegion();
|
||||
G4Region* reg =
|
||||
fTrack->GetStep()->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetRegion();
|
||||
fRegIdx = FindRegion(reg);
|
||||
fTimers[fRegIdx]->Start();
|
||||
G4ParticleDefinition* pd = fTrack->GetDefinition();
|
||||
if(pd==G4Electron::ElectronDefinition() ||
|
||||
pd==G4Positron::PositronDefinition()) fEp = true;
|
||||
if(fEp) fTimers[fNofRegions+fRegIdx]->Start();
|
||||
}
|
||||
if (pd == G4Electron::ElectronDefinition() || pd == G4Positron::PositronDefinition()) fEp = true;
|
||||
if (fEp) fTimers[fNofRegions + fRegIdx]->Start();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void RE06SteppingVerbose::StepInfo()
|
||||
{
|
||||
fTimers[fRegIdx]->Stop();
|
||||
if(fEp)
|
||||
{
|
||||
fTimers[fNofRegions+fRegIdx]->Stop();
|
||||
if (fEp) {
|
||||
fTimers[fNofRegions + fRegIdx]->Stop();
|
||||
fEp = false;
|
||||
}
|
||||
fRegIdx = -1;
|
||||
@@ -136,8 +130,9 @@ G4int RE06SteppingVerbose::FindRegion(G4Region* rgn)
|
||||
{
|
||||
G4RegionStore* regionStore = G4RegionStore::GetInstance();
|
||||
G4int sz = regionStore->size();
|
||||
for(G4int i=0;i<sz;i++)
|
||||
{ if(rgn==(*regionStore)[i]) return i; }
|
||||
for (G4int i = 0; i < sz; i++) {
|
||||
if (rgn == (*regionStore)[i]) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user